]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dialogs/dialogs.cpp
moving to gcc 4.0 exclusively, 10.4 minimum system
[wxWidgets.git] / samples / dialogs / dialogs.cpp
index 6b837a6dfe6ac6a517a6ffa48f31f05bf63cb0e6..29195ad6dfc566b7327b5830c8e8edc1a03dd744 100644 (file)
@@ -29,6 +29,7 @@
 #include "wx/imaglist.h"
 #include "wx/minifram.h"
 #include "wx/sysopt.h"
+#include "wx/notifmsg.h"
 
 #if wxUSE_COLOURDLG
     #include "wx/colordlg.h"
@@ -115,8 +116,10 @@ END_EVENT_TABLE()
 
 
 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+#if wxUSE_MSGDLG
     EVT_MENU(DIALOGS_MESSAGE_BOX,                   MyFrame::MessageBox)
-
+    EVT_MENU(DIALOGS_MESSAGE_BOX_WXINFO,            MyFrame::MessageBoxInfo)
+#endif // wxUSE_MSGDLG
 #if wxUSE_COLOURDLG
     EVT_MENU(DIALOGS_CHOOSE_COLOUR,                 MyFrame::ChooseColour)
     EVT_MENU(DIALOGS_GET_COLOUR,                    MyFrame::GetColour)
@@ -217,10 +220,16 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(DIALOGS_PROPERTY_SHEET,                MyFrame::OnPropertySheet)
     EVT_MENU(DIALOGS_PROPERTY_SHEET_TOOLBOOK,       MyFrame::OnPropertySheet)
     EVT_MENU(DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK, MyFrame::OnPropertySheet)
-#endif
+#endif // USE_SETTINGS_DIALOG
 
     EVT_MENU(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG,  MyFrame::OnStandardButtonsSizerDialog)
+
     EVT_MENU(DIALOGS_REQUEST,                       MyFrame::OnRequestUserAttention)
+#if wxUSE_NOTIFICATION_MESSAGE
+    EVT_MENU(DIALOGS_NOTIFY_AUTO,                   MyFrame::OnNotifMsgAuto)
+    EVT_MENU(DIALOGS_NOTIFY_SHOW,                   MyFrame::OnNotifMsgShow)
+    EVT_MENU(DIALOGS_NOTIFY_HIDE,                   MyFrame::OnNotifMsgHide)
+#endif // wxUSE_NOTIFICATION_MESSAGE
 
     EVT_MENU(wxID_EXIT,                             MyFrame::OnExit)
 END_EVENT_TABLE()
@@ -353,7 +362,11 @@ bool MyApp::OnInit()
 #endif // wxUSE_DIRDLG
 
 
-#if wxUSE_STARTUP_TIPS || wxUSE_PROGRESSDLG || wxUSE_BUSYINFO || wxUSE_LOG_DIALOG
+#if wxUSE_STARTUP_TIPS || \
+    wxUSE_PROGRESSDLG || \
+    wxUSE_BUSYINFO || \
+    wxUSE_LOG_DIALOG || \
+    wxUSE_MSGDLG
 
     wxMenu *info_menu = new wxMenu;
 
@@ -373,6 +386,11 @@ bool MyApp::OnInit()
        info_menu->Append(DIALOGS_LOG_DIALOG, _T("&Log dialog\tCtrl-L"));
     #endif // wxUSE_LOG_DIALOG
 
+    #if wxUSE_MSGDLG
+        info_menu->Append(DIALOGS_MESSAGE_BOX_WXINFO,
+                             _T("&wxWidgets information\tCtrl-I"));
+    #endif // wxUSE_MSGDLG
+
     menuDlg->Append(wxID_ANY,_T("&Informative dialogs"),info_menu);
 
 #endif // wxUSE_STARTUP_TIPS || wxUSE_PROGRESSDLG || wxUSE_BUSYINFO || wxUSE_LOG_DIALOG
@@ -411,9 +429,16 @@ bool MyApp::OnInit()
     menuDlg->Append(wxID_ANY, _T("&Property sheets"), sheet_menu);
 #endif // USE_SETTINGS_DIALOG
 
-    menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
+    wxMenu *menuNotif = new wxMenu;
+    menuNotif->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+#if wxUSE_NOTIFICATION_MESSAGE
+    menuNotif->Append(DIALOGS_NOTIFY_AUTO, "&Automatically hidden notification");
+    menuNotif->Append(DIALOGS_NOTIFY_SHOW, "&Show manual notification");
+    menuNotif->Append(DIALOGS_NOTIFY_HIDE, "&Hide manual notification");
+#endif // wxUSE_NOTIFICATION_MESSAGE
+    menuDlg->AppendSubMenu(menuNotif, "&User notifications");
 
-    menuDlg->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
+    menuDlg->Append(DIALOGS_STANDARD_BUTTON_SIZER_DIALOG, _T("&Standard Buttons Sizer Dialog"));
 
     menuDlg->AppendSeparator();
     menuDlg->Append(wxID_EXIT, _T("E&xit\tAlt-X"));
@@ -472,11 +497,22 @@ MyFrame::MyFrame(wxWindow *parent,
     }
 #endif // wxUSE_COLOURDLG
 
+#if wxUSE_NOTIFICATION_MESSAGE
+    m_notifMsg = NULL;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
 #if wxUSE_STATUSBAR
     CreateStatusBar();
 #endif // wxUSE_STATUSBAR
 }
 
+MyFrame::~MyFrame()
+{
+#if wxUSE_NOTIFICATION_MESSAGE
+    delete m_notifMsg;
+#endif // wxUSE_NOTIFICATION_MESSAGE
+}
+
 #if wxUSE_COLOURDLG
 
 void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event))
@@ -611,6 +647,7 @@ void MyFrame::LogDialog(wxCommandEvent& WXUNUSED(event))
 }
 #endif // wxUSE_LOG_DIALOG
 
+#if wxUSE_MSGDLG
 void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) )
 {
     wxMessageDialog dialog(NULL,
@@ -646,8 +683,14 @@ void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) )
     }
 }
 
+void MyFrame::MessageBoxInfo(wxCommandEvent& WXUNUSED(event))
+{
+    ::wxInfoMessageBox(this);
+}
+#endif // wxUSE_MSGDLG
+
 #if wxUSE_NUMBERDLG
-void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event) )
+void MyFrame::NumericEntry(wxCommandEvent& WXUNUSED(event))
 {
     long res = wxGetNumberFromUser( _T("This is some text, actually a lot of text.\n")
                                     _T("Even two rows of text."),
@@ -1129,6 +1172,50 @@ void MyFrame::OnRequestUserAttention(wxCommandEvent& WXUNUSED(event))
     RequestUserAttention(wxUSER_ATTENTION_ERROR);
 }
 
+#if wxUSE_NOTIFICATION_MESSAGE
+
+void MyFrame::OnNotifMsgAuto(wxCommandEvent& WXUNUSED(event))
+{
+    if ( !wxNotificationMessage
+          (
+            "Automatic Notification",
+            "Nothing important has happened\n"
+            "this notification will disappear soon."
+          ).Show() )
+    {
+        wxLogStatus("Failed to show notification message");
+    }
+}
+
+void MyFrame::OnNotifMsgShow(wxCommandEvent& WXUNUSED(event))
+{
+    if ( !m_notifMsg )
+    {
+        m_notifMsg = new wxNotificationMessage
+                         (
+                            "wxWidgets Manual Notification",
+                            "You can hide this notification from the menu",
+                            this
+                         );
+    }
+
+    if ( !m_notifMsg->Show(wxNotificationMessage::Timeout_Never) )
+    {
+        wxLogStatus("Failed to show manual notification message");
+    }
+}
+
+void MyFrame::OnNotifMsgHide(wxCommandEvent& WXUNUSED(event))
+{
+    if ( m_notifMsg )
+    {
+        if ( !m_notifMsg->Close() )
+            wxLogStatus("Failed to hide manual notification message");
+    }
+}
+
+#endif // wxUSE_NOTIFICATION_MESSAGE
+
 void MyFrame::OnStandardButtonsSizerDialog(wxCommandEvent& WXUNUSED(event))
 {
     StdButtonSizerDialog  dialog(this);