X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/260020e39271329f71d1ef7912e3dc8216a2e924..1bd122ddfa1d4d3e5f87ecb1e7dd317439fb6593:/src/gtk/filectrl.cpp diff --git a/src/gtk/filectrl.cpp b/src/gtk/filectrl.cpp index 6b2a0001df..f670e07350 100644 --- a/src/gtk/filectrl.cpp +++ b/src/gtk/filectrl.cpp @@ -16,7 +16,7 @@ #include "wx/filectrl.h" -#if defined(__WXGTK24__) && !defined(__WXUNIVERSAL__) +#if wxUSE_FILECTRL && !defined(__WXUNIVERSAL__) #ifndef WX_PRECOMP # include "wx/sizer.h" @@ -47,7 +47,7 @@ wxString wxGtkFileChooser::GetPath() const wxString string; if (str.c_str() != NULL) - string = wxConvFileName->cMB2WX(str); + string = wxString::FromUTF8(str); return string; } @@ -70,7 +70,7 @@ void wxGtkFileChooser::GetPaths( wxArrayString& paths ) const GSList *gpaths = gpathsi; while ( gpathsi ) { - wxString file( wxConvFileName->cMB2WX( ( gchar* ) gpathsi->data ) ); + wxString file(wxString::FromUTF8(static_cast(gpathsi->data))); paths.Add( file ); g_free( gpathsi->data ); gpathsi = gpathsi->next; @@ -84,24 +84,21 @@ void wxGtkFileChooser::GetPaths( wxArrayString& paths ) const bool wxGtkFileChooser::SetPath( const wxString& path ) { - if ( path.empty() ) return true; + if ( path.empty() ) + return true; - return gtk_file_chooser_set_filename( m_widget, - wxConvFileName->cWX2MB( path.c_str() ) ); + return gtk_file_chooser_set_filename( m_widget, path.utf8_str() ); } bool wxGtkFileChooser::SetDirectory( const wxString& dir ) { - const gboolean b = - gtk_file_chooser_set_current_folder( m_widget, - wxConvFileName->cWX2MB( dir.c_str() ) ); - return b != 0; + return gtk_file_chooser_set_current_folder( m_widget, dir.utf8_str() ) != 0; } wxString wxGtkFileChooser::GetDirectory() const { const wxGtkString str( gtk_file_chooser_get_current_folder( m_widget ) ); - return wxString( str, *wxConvFileName ); + return wxString::FromUTF8(str); } wxString wxGtkFileChooser::GetFilename() const @@ -111,6 +108,8 @@ wxString wxGtkFileChooser::GetFilename() const void wxGtkFileChooser::SetWildcard( const wxString& wildCard ) { + m_wildcards.Empty(); + // parse filters wxArrayString wildDescriptions, wildFilters; @@ -144,10 +143,16 @@ void wxGtkFileChooser::SetWildcard( const wxString& wildCard ) gtk_file_filter_set_name( filter, wxGTK_CONV_SYS( wildDescriptions[n] ) ); wxStringTokenizer exttok( wildFilters[n], wxT( ";" ) ); + + int n1 = 1; while ( exttok.HasMoreTokens() ) { wxString token = exttok.GetNextToken(); gtk_file_filter_add_pattern( filter, wxGTK_CONV_SYS( token ) ); + + if (n1 == 1) + m_wildcards.Add( token ); // Only add first pattern to list, used later when saving + n1++; } gtk_file_chooser_add_filter( chooser, filter ); @@ -194,7 +199,7 @@ int wxGtkFileChooser::GetFilterIndex() const } else return index; -}; +} //----------------------------------------------------------------------------- // end wxGtkFileChooser Implementation @@ -258,7 +263,6 @@ IMPLEMENT_DYNAMIC_CLASS( wxGtkFileCtrl, wxControl ) void wxGtkFileCtrl::Init() { - m_hasFocus = false; m_checkNextSelEvent = false; // ignore the first folder change event which is fired upon startup. @@ -288,6 +292,7 @@ bool wxGtkFileCtrl::Create( wxWindow *parent, gtkAction = GTK_FILE_CHOOSER_ACTION_SAVE; m_widget = gtk_alignment_new ( 0, 0, 1, 1 ); + g_object_ref(m_widget); m_fcWidget = GTK_FILE_CHOOSER( gtk_file_chooser_widget_new(gtkAction) ); gtk_widget_show ( GTK_WIDGET( m_fcWidget ) ); gtk_container_add ( GTK_CONTAINER ( m_widget ), GTK_WIDGET( m_fcWidget ) ); @@ -369,18 +374,13 @@ bool wxGtkFileCtrl::SetDirectory( const wxString& dir ) bool wxGtkFileCtrl::SetFilename( const wxString& name ) { - if ( !gtk_check_version( 2, 4, 0 ) ) + if ( HasFlag( wxFC_SAVE ) ) { - if ( HasFlag( wxFC_SAVE ) ) - { - gtk_file_chooser_set_current_name( m_fcWidget, wxGTK_CONV( name ) ); - return true; - } - else - return SetPath( wxFileName( GetDirectory(), name ).GetFullPath() ); + gtk_file_chooser_set_current_name( m_fcWidget, wxGTK_CONV( name ) ); + return true; } - - return false; + else + return SetPath( wxFileName( GetDirectory(), name ).GetFullPath() ); } void wxGtkFileCtrl::SetWildcard( const wxString& wildCard ) @@ -422,11 +422,10 @@ void wxGtkFileCtrl::GetFilenames( wxArrayString& files ) const void wxGtkFileCtrl::ShowHidden(bool show) { - gtk_file_chooser_set_show_hidden(m_fcWidget, show); + // gtk_file_chooser_set_show_hidden() is new in 2.6 + g_object_set (G_OBJECT (m_fcWidget), "show-hidden", show, NULL); } -#endif - // wxUSE_FILECTRL +#endif // wxUSE_FILECTRL -#endif - // if defined(__WXGTK24__) && !defined(__WXUNIVERSAL__) +#endif // wxUSE_FILECTRL && !defined(__WXUNIVERSAL__)