From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Fri, 15 Oct 2004 22:55:13 +0000 (+0000)
Subject: implemented SetWildcard()
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b4cfe261db9bec8cdfb2664ed3f50e3e8350bbde

implemented SetWildcard()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---

diff --git a/docs/changes.txt b/docs/changes.txt
index 48b6cb15d3..62a64151e4 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -214,6 +214,11 @@ Unix:
 
 - wxPuts() now correctly outputs trailing new line in Unicode build
 
+wxGTK:
+
+- fixed wxFileDialog::SetWildcard()
+
+
 2.5.3
 -----
 
diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h
index e94d7d5468..23203759db 100644
--- a/include/wx/generic/filedlgg.h
+++ b/include/wx/generic/filedlgg.h
@@ -59,6 +59,7 @@ public:
     virtual void SetMessage(const wxString& message) { SetTitle(message); }
     virtual void SetPath(const wxString& path);
     virtual void SetFilterIndex(int filterIndex);
+    virtual void SetWildcard(const wxString& wildCard);
 
     // for multiple file selection
     virtual void GetPaths(wxArrayString& paths) const;
diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp
index 4380c60f36..a39f76d034 100644
--- a/src/generic/filedlgg.cpp
+++ b/src/generic/filedlgg.cpp
@@ -903,13 +903,6 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
     m_path += defaultFile;
     m_filterExtension = wxEmptyString;
 
-    // interpret wildcards
-    wxArrayString wildDescriptions, wildFilters;
-    if ( !wxParseCommonDialogsFilter(m_wildCard, wildDescriptions, wildFilters) )
-    {
-        wxFAIL_MSG( wxT("Wrong file type description") );
-    }
-
     // layout
 
     bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
@@ -978,7 +971,7 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
         style2 |= wxLC_SINGLE_SEL;
 
     m_list = new wxFileCtrl( this, ID_LIST_CTRL,
-                             wildFilters[0], ms_lastShowHidden,
+                             _T(""), ms_lastShowHidden,
                              wxDefaultPosition, wxSize(540,200),
                              style2);
 
@@ -1021,11 +1014,7 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
         mainsizer->Add( choicesizer, 0, wxEXPAND );
     }
 
-    for (size_t n=0; n<wildFilters.GetCount(); n++)
-    {
-        m_choice->Append( wildDescriptions[n], (void*) new wxString( wildFilters[n] ) );
-    }
-    SetFilterIndex( 0 );
+    SetWildcard(wildCard);
 
     SetAutoLayout( true );
     SetSizer( mainsizer );
@@ -1093,6 +1082,25 @@ void wxGenericFileDialog::DoSetFilterIndex(int filterindex)
     }
 }
 
+void wxGenericFileDialog::SetWildcard(const wxString& wildCard)
+{
+    wxFileDialogBase::SetWildcard(wildCard);
+
+    wxArrayString wildDescriptions, wildFilters;
+    const size_t count = wxParseCommonDialogsFilter(m_wildCard,
+                                                    wildDescriptions,
+                                                    wildFilters);
+    wxCHECK_RET( count, wxT("wxFileDialog: bad wildcard string") );
+
+    m_choice->Clear();
+    for ( size_t n = 0; n < count; n++ )
+    {
+        m_choice->Append( wildDescriptions[n], new wxString( wildFilters[n] ) );
+    }
+
+    SetFilterIndex( 0 );
+}
+
 void wxGenericFileDialog::SetFilterIndex( int filterindex )
 {
     m_choice->SetSelection( filterindex );