]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dialogs/dialogs.cpp
changes to wx-config --static to allow static linkage in presence of shared library
[wxWidgets.git] / samples / dialogs / dialogs.cpp
index 2fe34c932b38fbba33f08144caf5f0dfaea3b42f..023abe5e4d15812287d2d35e337cc5fb814684cd 100644 (file)
@@ -165,8 +165,8 @@ bool MyApp::OnInit()
   file_menu->Append(DIALOGS_BUSYINFO, "&Busy info dialog\tCtrl-B");
 #endif // wxUSE_BUSYINFO
 #if wxUSE_FINDREPLDLG
-  file_menu->Append(DIALOGS_FIND, "&Find dialog\tCtrl-F");
-  file_menu->Append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F");
+  file_menu->Append(DIALOGS_FIND, "&Find dialog\tCtrl-F", "", TRUE);
+  file_menu->Append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F", "", TRUE);
 #endif // wxUSE_FINDREPLDLG
   file_menu->AppendSeparator();
   file_menu->Append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-D");
@@ -199,6 +199,9 @@ MyFrame::MyFrame(wxWindow *parent,
 {
     m_dialog = (MyModelessDialog *)NULL;
 
+    m_dlgFind =
+    m_dlgReplace = NULL;
+
     CreateStatusBar();
 }
 
@@ -641,7 +644,9 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
 
 void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event))
 {
-    wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...\n... a bit more");
+    wxWindowDisabler disableAll;
+
+    wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...", this);
 
     for ( int i = 0; i < 30; i++ )
     {
@@ -656,27 +661,45 @@ void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event))
 
 void MyFrame::ShowReplaceDialog( wxCommandEvent& WXUNUSED(event) )
 {
-    wxFindReplaceDialog *dialog = new wxFindReplaceDialog
-                                      (
-                                        this,
-                                        &m_findData,
-                                        "Find and replace dialog",
-                                        wxFR_REPLACEDIALOG
-                                      );
-    dialog->Show(TRUE);
+    if ( m_dlgReplace )
+    {
+        delete m_dlgReplace;
+        m_dlgReplace = NULL;
+    }
+    else
+    {
+        m_dlgReplace = new wxFindReplaceDialog
+                           (
+                            this,
+                            &m_findData,
+                            "Find and replace dialog",
+                            wxFR_REPLACEDIALOG
+                           );
+
+        m_dlgReplace->Show(TRUE);
+    }
 }
 
 void MyFrame::ShowFindDialog( wxCommandEvent& WXUNUSED(event) )
 {
-    wxFindReplaceDialog *dialog = new wxFindReplaceDialog
-                                      (
-                                        this,
-                                        &m_findData,
-                                        "Find dialog",
-                                        // just for testing
-                                        wxFR_NOWHOLEWORD
-                                      );
-    dialog->Show(TRUE);
+    if ( m_dlgFind )
+    {
+        delete m_dlgFind;
+        m_dlgFind = NULL;
+    }
+    else
+    {
+        m_dlgFind = new wxFindReplaceDialog
+                        (
+                            this,
+                            &m_findData,
+                            "Find dialog",
+                            // just for testing
+                            wxFR_NOWHOLEWORD
+                        );
+
+        m_dlgFind->Show(TRUE);
+    }
 }
 
 static wxString DecodeFindDialogEventFlags(int flags)
@@ -712,9 +735,29 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event)
     }
     else if ( type == wxEVT_COMMAND_FIND_CLOSE )
     {
-        wxLogMessage(wxT("Find dialog is being closed."));
+        wxFindReplaceDialog *dlg = event.GetDialog();
+
+        const wxChar *txt;
+        if ( dlg == m_dlgFind )
+        {
+            txt = _T("Find");
+            m_dlgFind = NULL;
+        }
+        else if ( dlg == m_dlgReplace )
+        {
+            txt = _T("Replace");
+            m_dlgReplace = NULL;
+        }
+        else
+        {
+            txt = _T("Unknown");
+
+            wxFAIL_MSG( _T("unexecpted event") );
+        }
+
+        wxLogMessage(wxT("%s dialog is being closed."), txt),
 
-        event.GetDialog()->Destroy();
+        dlg->Destroy();
     }
     else
     {