]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/dialog.cpp
Version 0.4 of wxPython for MSW.
[wxWidgets.git] / src / gtk1 / dialog.cpp
index 6411ba19302f836e7a5db86312cefe0263ad1c1c..73ae00a02b40b5746350640e9e2f7ad115160987 100644 (file)
@@ -22,7 +22,8 @@
 extern wxList wxPendingDelete;
 
 //-----------------------------------------------------------------------------
-// delete
+// "delete_event"
+//-----------------------------------------------------------------------------
 
 bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win )
 { 
@@ -36,27 +37,27 @@ bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED
   win->Close();
 
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // wxDialog
 //-----------------------------------------------------------------------------
 
-BEGIN_EVENT_TABLE(wxDialog,wxWindow)
-  EVT_BUTTON  (wxID_OK,       wxDialog::OnOk)
+BEGIN_EVENT_TABLE(wxDialog,wxPanel)
+  EVT_BUTTON  (wxID_OK,       wxDialog::OnOK)
   EVT_BUTTON  (wxID_CANCEL,   wxDialog::OnCancel)
   EVT_BUTTON  (wxID_APPLY,    wxDialog::OnApply)
   EVT_CLOSE   (wxDialog::OnCloseWindow)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxWindow)
+IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxPanel)
 
 wxDialog::wxDialog(void)
 {
   m_title = "";
   m_modalShowing = FALSE;
   wxTopLevelWindows.Insert( this );
-};
+}
 
 wxDialog::wxDialog( wxWindow *parent, 
       wxWindowID id, const wxString &title,
@@ -66,7 +67,7 @@ wxDialog::wxDialog( wxWindow *parent,
   m_modalShowing = FALSE;
   wxTopLevelWindows.Insert( this );
   Create( parent, id, title, pos, size, style, name );
-};
+}
 
 bool wxDialog::Create( wxWindow *parent,
       wxWindowID id, const wxString &title,
@@ -93,32 +94,38 @@ bool wxDialog::Create( wxWindow *parent,
   
   SetTitle( title );
   
+  if ((m_x != -1) || (m_y != -1))
+     gtk_widget_set_uposition( m_widget, m_x, m_y );
+     
+  gtk_widget_set_usize( m_widget, m_width, m_height );
+     
   PostCreation();
   
   return TRUE;
-};
+}
 
 wxDialog::~wxDialog(void)
 {
   wxTopLevelWindows.DeleteObject( this );
   if (wxTopLevelWindows.Number() == 0) wxTheApp->ExitMainLoop();
-};
+}
 
 void wxDialog::SetTitle(const wxString& title )
 {
   m_title = title;
+  if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), m_title );
-};
+}
 
 wxString wxDialog::GetTitle(void) const
 {
   return (wxString&)m_title;
-};
+}
 
 void wxDialog::OnApply( wxCommandEvent &WXUNUSED(event) )
 {
   if (Validate()) TransferDataFromWindow();
-};
+}
 
 void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) )
 {
@@ -130,10 +137,10 @@ void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) )
   {
     SetReturnCode(wxID_CANCEL);
     this->Show(FALSE);
-  };
-};
+  }
+}
 
-void wxDialog::OnOk( wxCommandEvent &WXUNUSED(event) )
+void wxDialog::OnOK( wxCommandEvent &WXUNUSED(event) )
 {
   if ( Validate() && TransferDataFromWindow())
   {
@@ -145,14 +152,14 @@ void wxDialog::OnOk( wxCommandEvent &WXUNUSED(event) )
     {
       SetReturnCode(wxID_OK);
       this->Show(FALSE);
-    };
-  };
-};
+    }
+  }
+}
 
 void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) )
 {
   // yes
-};
+}
 
 bool wxDialog::OnClose(void)
 {
@@ -183,26 +190,59 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event)
   if (GetEventHandler()->OnClose() || event.GetForce())
   {
     this->Destroy();
-  };
-};
+  }
+}
+
+void wxDialog::ImplementSetPosition(void)
+{
+  if ((m_x != -1) || (m_y != -1))
+     gtk_widget_set_uposition( m_widget, m_x, m_y );
+}
+
+void wxDialog::Centre( int direction )
+{
+  if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
+  if (direction & wxVERTICAL == wxVERTICAL) m_y = (gdk_screen_height () - m_height) / 2;
+  ImplementSetPosition();
+}
 
 bool wxDialog::Show( bool show )
 {
-  if (!show && IsModal() && m_modalShowing)
+  if (!show && IsModal())
   {
     EndModal( wxID_CANCEL );
-  };
+  }
 
   wxWindow::Show( show );
   
   if (show) InitDialog();
   
   return TRUE;
-};
+}
+
+bool wxDialog::IsModal(void) const
+{
+  return m_modalShowing;
+}
+
+void wxDialog::SetModal( bool WXUNUSED(flag) )
+{
+/*
+  if (flag)
+    m_windowStyle |= wxDIALOG_MODAL;
+  else
+    if (m_windowStyle & wxDIALOG_MODAL) m_windowStyle -= wxDIALOG_MODAL;
+*/
+  wxFAIL_MSG( "wxDialog:SetModal obsolete now" );
+}
 
 int wxDialog::ShowModal(void)
 {
-  if (m_modalShowing) return GetReturnCode();
+  if (IsModal())
+  {
+    wxFAIL_MSG( "wxDialog:ShowModal called twice" );
+    return GetReturnCode();
+  }
 
   Show( TRUE );
   
@@ -213,20 +253,40 @@ int wxDialog::ShowModal(void)
   gtk_grab_remove( m_widget );
   
   return GetReturnCode();
-};
+}
 
 void wxDialog::EndModal( int retCode )
 {
   SetReturnCode( retCode );
   
-  if (!m_modalShowing) return;
+  if (!IsModal())
+  {
+     wxFAIL_MSG( "wxDialog:EndModal called twice" );
+     return;
+  }
+  
   m_modalShowing = FALSE;
   
   gtk_main_quit();
-};
+  
+  Show( FALSE );
+}
 
 void wxDialog::InitDialog(void)
 {
   wxWindow::InitDialog();
-};
+}
+
+void wxDialog::SetIcon( const wxIcon &icon )
+{
+  m_icon = icon;
+  if (!icon.Ok()) return;
+  
+  wxMask *mask = icon.GetMask();
+  GdkBitmap *bm = (GdkBitmap *) NULL;
+  if (mask) bm = mask->GetBitmap();
+  
+  gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
+}
+