+
+ wxString defaultFileNameWithExt = defaultFileName;
+ if ( !wildCard.empty() && !defaultFileName.empty() &&
+ !wxFileName(defaultFileName).HasExt() )
+ {
+ // append the default extension, if any, to the initial file name: GTK
+ // won't do it for us by default (unlike e.g. MSW)
+ const wxFileName fnWC(m_fc.GetCurrentWildCard());
+ if ( fnWC.HasExt() )
+ {
+ // Notice that we shouldn't append the extension if it's a wildcard
+ // because this is not useful: the user would need to change it to use
+ // some fixed extension anyhow.
+ const wxString& ext = fnWC.GetExt();
+ if ( ext.find_first_of("?*") == wxString::npos )
+ defaultFileNameWithExt << "." << ext;
+ }
+ }
+
+
+ // if defaultDir is specified it should contain the directory and
+ // defaultFileName should contain the default name of the file, however if
+ // directory is not given, defaultFileName contains both
+ wxFileName fn;
+ if ( defaultDir.empty() )
+ fn.Assign(defaultFileNameWithExt);
+ else if ( !defaultFileNameWithExt.empty() )
+ fn.Assign(defaultDir, defaultFileNameWithExt);
+ else
+ fn.AssignDir(defaultDir);
+
+ // set the initial file name and/or directory
+ fn.MakeAbsolute(); // GTK+ needs absolute path
+ const wxString dir = fn.GetPath();
+ if ( !dir.empty() )
+ {
+ gtk_file_chooser_set_current_folder(file_chooser, wxGTK_CONV_FN(dir));
+ }
+
+ const wxString fname = fn.GetFullName();
+ if ( style & wxFD_SAVE )
+ {
+ if ( !fname.empty() )
+ {
+ gtk_file_chooser_set_current_name(file_chooser, wxGTK_CONV_FN(fname));
+ }
+
+#if GTK_CHECK_VERSION(2,7,3)
+ if ((style & wxFD_OVERWRITE_PROMPT)
+#ifndef __WXGTK3__
+ && gtk_check_version(2,7,3) == NULL