]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/filedlg.cpp
several fixes
[wxWidgets.git] / src / gtk1 / filedlg.cpp
index 1f16d2d1cdc69a9438b0873acb51347d06226f20..b4d0ed159285c7b8ceeffbde3446047df4150114 100644 (file)
@@ -15,6 +15,7 @@
 #include "wx/filedlg.h"
 #include "wx/utils.h"
 #include "wx/intl.h"
 #include "wx/filedlg.h"
 #include "wx/utils.h"
 #include "wx/intl.h"
+#include "wx/generic/msgdlgg.h"
 
 //-----------------------------------------------------------------------------
 // wxFileDialog
 
 //-----------------------------------------------------------------------------
 // wxFileDialog
 void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), gpointer data )
 {
   wxFileDialog *dialog = (wxFileDialog*)data;
 void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), gpointer data )
 {
   wxFileDialog *dialog = (wxFileDialog*)data;
-  wxCommandEvent event(0);
+  wxCommandEvent event(wxEVT_NULL);
+  int style;
+
+  style=dialog->GetStyle();
+
+  if((style&wxSAVE)&&(style&wxOVERWRITE_PROMPT))
+       if(wxFileExists(gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->m_widget) ))) {
+         if(wxMessageBox("File exists. Overwrite?","Confirm",wxYES_NO)!=wxYES)
+               return;
+       }
+
   dialog->OnOk( event );
 };
 
 void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data )
 {
   wxFileDialog *dialog = (wxFileDialog*)data;
   dialog->OnOk( event );
 };
 
 void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data )
 {
   wxFileDialog *dialog = (wxFileDialog*)data;
-  wxCommandEvent event(0);
+  wxCommandEvent event(wxEVT_NULL);
   dialog->OnCancel( event );
 };
 
   dialog->OnCancel( event );
 };
 
@@ -43,17 +54,28 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
 {
   m_needParent = FALSE;
   
 {
   m_needParent = FALSE;
   
-  PreCreation( parent, -1, pos, wxDefaultSize, style, "filedialog" );
+  PreCreation( parent, -1, pos, wxDefaultSize, style | wxDIALOG_MODAL, "filedialog" );
   m_message = message;
   m_path = "";
   m_fileName = defaultFileName;
   m_dir = defaultDir;
   m_wildCard = wildCard;
   m_message = message;
   m_path = "";
   m_fileName = defaultFileName;
   m_dir = defaultDir;
   m_wildCard = wildCard;
+  m_dialogStyle = style;
   m_filterIndex = 1;
   
   m_widget = gtk_file_selection_new( "File selection" );
   
   m_filterIndex = 1;
   
   m_widget = gtk_file_selection_new( "File selection" );
   
+  int x = (gdk_screen_width () - 400) / 2;
+  int y = (gdk_screen_height () - 400) / 2;
+  gtk_widget_set_uposition( m_widget, x, y );
+  
   GtkFileSelection *sel = GTK_FILE_SELECTION(m_widget);
   GtkFileSelection *sel = GTK_FILE_SELECTION(m_widget);
+
+  m_path.Append(m_dir);
+  if(! m_path.IsEmpty() && m_path.Last()!='/') m_path.Append('/');
+  m_path.Append(m_fileName);
+
+  if(m_path.Length()>1) gtk_file_selection_set_filename(sel,m_path);
   
   gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", 
     GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this );
   
   gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", 
     GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this );
@@ -65,6 +87,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
 int wxFileDialog::ShowModal(void)
 {
   int ret = wxDialog::ShowModal();
 int wxFileDialog::ShowModal(void)
 {
   int ret = wxDialog::ShowModal();
+
   if (ret == wxID_OK)
   {
     m_fileName = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) );
   if (ret == wxID_OK)
   {
     m_fileName = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) );