X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2748d25157097ce4126afcf5052315b368bfbc44..86a9c8e02f2a24d6b81009d5a6dd9ef1b6c3ed7e:/src/gtk/filedlg.cpp diff --git a/src/gtk/filedlg.cpp b/src/gtk/filedlg.cpp index 88fb8defb7..a6be245b23 100644 --- a/src/gtk/filedlg.cpp +++ b/src/gtk/filedlg.cpp @@ -46,11 +46,11 @@ void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFileDialog *dial { int style = dialog->GetStyle(); - if ((style&wxSAVE)&&(style&wxOVERWRITE_PROMPT)) - { - char *filename = gtk_file_selection_get_filename( - GTK_FILE_SELECTION(dialog->m_widget) ); + GtkFileSelection *filedlg = GTK_FILE_SELECTION(dialog->m_widget); + char *filename = gtk_file_selection_get_filename(filedlg); + if ( (style & wxSAVE) && ( style & wxOVERWRITE_PROMPT ) ) + { if (wxFileExists( filename )) { wxString msg; @@ -61,10 +61,19 @@ void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFileDialog *dial return; } } + else if ( (style & wxOPEN) && ( style & wxFILE_MUST_EXIST) ) + { + if ( !wxFileExists( filename ) ) + { + wxMessageBox(_("Please choose an existing file."), _("Error"), wxOK); - dialog->SetPath( gtk_file_selection_get_filename( GTK_FILE_SELECTION(dialog->m_widget) ) ); - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED,wxID_OK); + return; + } + } + + dialog->SetPath( filename ); + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK); event.SetEventObject( dialog ); dialog->GetEventHandler()->ProcessEvent( event ); } @@ -74,9 +83,9 @@ void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFileDialog *dial //----------------------------------------------------------------------------- static -void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data ) +void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(w), wxFileDialog *dialog ) { - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED,wxID_CANCEL); + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); event.SetEventObject( dialog ); dialog->GetEventHandler()->ProcessEvent( event ); } @@ -110,6 +119,7 @@ wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, gtk_widget_set_uposition( m_widget, x, y ); GtkFileSelection *sel = GTK_FILE_SELECTION(m_widget); + gtk_file_selection_hide_fileop_buttons( sel ); // they don't work anyway m_path.Append(m_dir); if(! m_path.IsEmpty() && m_path.Last()!='/') m_path.Append('/'); @@ -120,9 +130,15 @@ wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); + // strange way to internationalize + gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->ok_button)->child ), _("OK") ); + gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); - + + // strange way to internationalize + gtk_label_set( GTK_LABEL( GTK_BUTTON(sel->cancel_button)->child ), _("Cancel") ); + gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", GTK_SIGNAL_FUNC(gtk_filedialog_delete_callback), (gpointer)this ); }