]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
fixes to ShowFullScreen (KDE 3.1)
[wxWidgets.git] / src / generic / filedlgg.cpp
index 1d6430340f91bbd2dd6823a19810c3e022c560c5..10a1c4f423bbb5044cd3bd338a6782f9d766f66b 100644 (file)
@@ -1540,50 +1540,98 @@ void wxFileDialog::GetFilenames(wxArrayString& files) const
 // global functions
 // ----------------------------------------------------------------------------
 
+// common part of both wxFileSelectorEx() and wxFileSelector()
+static wxString
+DoSelectFile(const wxChar *title,
+             const wxChar *defaultDir,
+             const wxChar *defaultFileName,
+             const wxChar *defaultExtension,
+             int *indexDefaultExtension,
+             const wxChar *filter,
+             int flags,
+             wxWindow *parent,
+             int x,
+             int y)
+{
+    // the filter may be either given explicitly or created automatically from
+    // the default extension
+    wxString filterReal;
+    if ( filter )
+    {
+        // the user has specified the filter explicitly, use it
+        filterReal = filter;
+    }
+    else if ( !wxIsEmpty(defaultExtension) )
+    {
+        // create the filter to match the given extension
+        filterReal << wxT("*.") << defaultExtension;
+    }
+
+    wxFileDialog fileDialog(parent,
+                            title,
+                            defaultDir,
+                            defaultFileName,
+                            filterReal,
+                            flags,
+                            wxPoint(x, y));
+
+    wxString path;
+    if ( fileDialog.ShowModal() == wxID_OK )
+    {
+        path = fileDialog.GetPath();
+        if ( indexDefaultExtension )
+        {
+            *indexDefaultExtension = fileDialog.GetFilterIndex();
+        }
+    }
+
+    return path;
+}
+
 wxString
-wxFileSelectorEx(const wxChar *message,
-                 const wxChar *default_path,
-                 const wxChar *default_filename,
-                 int *WXUNUSED(indexDefaultExtension),
-                 const wxChar *wildcard,
+wxFileSelectorEx(const wxChar *title,
+                 const wxChar *defaultDir,
+                 const wxChar *defaultFileName,
+                 int *indexDefaultExtension,
+                 const wxChar *filter,
                  int flags,
                  wxWindow *parent,
-                 int x, int y)
+                 int x,
+                 int y)
 {
-    // TODO: implement this somehow
-    return wxFileSelector(message, default_path, default_filename, wxT(""),
-                          wildcard, flags, parent, x, y);
+    return DoSelectFile(title,
+                        defaultDir,
+                        defaultFileName,
+                        wxT(""),                // def ext determined by index
+                        indexDefaultExtension,
+                        filter,
+                        flags,
+                        parent,
+                        x,
+                        y);
 }
 
-wxString wxFileSelector( const wxChar *title,
-                      const wxChar *defaultDir, const wxChar *defaultFileName,
-                      const wxChar *defaultExtension, const wxChar *filter, int flags,
-                      wxWindow *parent, int x, int y )
+wxString
+wxFileSelector(const wxChar *title,
+               const wxChar *defaultDir,
+               const wxChar *defaultFileName,
+               const wxChar *defaultExtension,
+               const wxChar *filter,
+               int flags,
+               wxWindow *parent,
+               int x,
+               int y)
 {
-    wxString filter2;
-    if ( defaultExtension && !filter )
-        filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
-    else if ( filter )
-        filter2 = filter;
-
-    wxString defaultDirString;
-    if (defaultDir)
-        defaultDirString = defaultDir;
-
-    wxString defaultFilenameString;
-    if (defaultFileName)
-        defaultFilenameString = defaultFileName;
-
-    wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) );
-
-    if ( fileDialog.ShowModal() == wxID_OK )
-    {
-        return fileDialog.GetPath();
-    }
-    else
-    {
-        return wxEmptyString;
-    }
+    return DoSelectFile(title,
+                        defaultDir,
+                        defaultFileName,
+                        defaultExtension,
+                        NULL,               // not interested in filter index
+                        filter,
+                        flags,
+                        parent,
+                        x,
+                        y);
 }
 
 static wxString GetWildcardString(const wxChar *ext)