diff --git a/src/generic/filedlgg.cpp b/src/generic/filedlgg.cpp index 3d8f64be4c..5c2e65da86 100644 --- a/src/generic/filedlgg.cpp +++ b/src/generic/filedlgg.cpp @@ -336,9 +336,35 @@ void wxGenericFileDialog::OnOk( wxCommandEvent &WXUNUSED(event) ) if (selectedFiles.Count() == 0) return; + const wxString& path = selectedFiles[0]; + if (selectedFiles.Count() == 1) { - SetPath( selectedFiles[0] ); + SetPath(path); + } + + // check that the file [doesn't] exist if necessary + if ( HasFdFlag(wxFD_SAVE) && HasFdFlag(wxFD_OVERWRITE_PROMPT) && + wxFileExists(path) ) + { + if ( wxMessageBox + ( + wxString::Format + ( + _("File '%s' already exists, do you really want to overwrite it?"), + path + ), + _("Confirm"), + wxYES_NO + ) != wxYES) + return; + } + else if ( HasFdFlag(wxFD_OPEN) && HasFdFlag(wxFD_FILE_MUST_EXIST) && + !wxFileExists(path) ) + { + wxMessageBox(_("Please choose an existing file."), _("Error"), + wxOK | wxICON_ERROR ); + return; } EndModal(wxID_OK);