]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/filedlgg.cpp
reSWIGged
[wxWidgets.git] / src / generic / filedlgg.cpp
index 64480c1d6a4554ed9a0cbd4245b41834d5b4af02..4f6f0d3ec213e6d8fcd85e0d22de31c067583b55 100644 (file)
@@ -20,7 +20,7 @@
 #pragma hdrstop
 #endif
 
-#if wxUSE_FILEDLG
+#if wxUSE_FILEDLG && !defined(__WXGTK24__)
 
 // NOTE : it probably also supports MAC, untested
 #if !defined(__UNIX__) && !defined(__DOS__) && !defined(__WIN32__) && !defined(__OS2__)
@@ -200,7 +200,13 @@ void wxFileData::ReadData()
     lstat( m_filePath.fn_str(), &buff );
     m_type |= S_ISLNK( buff.st_mode ) != 0 ? is_link : 0;
 #else // no lstat()
+    // only translate to file charset if we don't go by our
+    // wxStat implementation
+#ifndef wxNEED_WX_UNISTD_H
+    wxStat( m_filePath.fn_str() , &buff );
+#else
     wxStat( m_filePath, &buff );
+#endif
 #endif
 
     m_type |= (buff.st_mode & S_IFDIR) != 0 ? is_dir : 0;
@@ -218,7 +224,7 @@ void wxFileData::ReadData()
         }
     }
 
-    m_size = buff.st_size;
+    m_size = (long)buff.st_size;
 
     m_dateTime = buff.st_mtime;
 
@@ -903,13 +909,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 +977,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 +1020,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 +1088,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 );
@@ -1190,7 +1204,7 @@ void wxGenericFileDialog::HandleAction( const wxString &fn )
 
     if (filename.BeforeFirst(wxT('/')) == wxT("~"))
     {
-        filename = wxGetUserHome() + filename.Remove(0, 1);
+        filename = wxString(wxGetUserHome()) + filename.Remove(0, 1);
     }
 #endif // __UNIX__
 
@@ -1402,5 +1416,5 @@ IMPLEMENT_DYNAMIC_CLASS(wxFileDialog, wxGenericFileDialog);
 
 #endif // USE_GENERIC_FILEDIALOG
 
-#endif // wxUSE_FILEDLG
+#endif // wxUSE_FILEDLG && !defined(__WXGTK24__)