#include "wx/bookctrl.h"
#include "wx/artprov.h"
#include "wx/imaglist.h"
+#include "wx/minifram.h"
#include "wx/sysopt.h"
+#include "wx/notifmsg.h"
#if wxUSE_COLOURDLG
#include "wx/colordlg.h"
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)
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
#if USE_MODAL_PRESENTATION
EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg)
+#endif // USE_MODAL_PRESENTATION
EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg)
EVT_MENU(DIALOGS_CENTRE_SCREEN, MyFrame::DlgCenteredScreen)
EVT_MENU(DIALOGS_CENTRE_PARENT, MyFrame::DlgCenteredParent)
-#endif // USE_MODAL
+ EVT_MENU(DIALOGS_MINIFRAME, MyFrame::MiniFrame)
+ EVT_MENU(DIALOGS_ONTOP, MyFrame::DlgOnTop)
#if wxUSE_STARTUP_TIPS
EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip)
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()
wxMenu *choices_menu = new wxMenu;
#if wxUSE_COLOURDLG
- choices_menu->Append(DIALOGS_CHOOSE_COLOUR, _T("&Choose colour"));
+ choices_menu->Append(DIALOGS_CHOOSE_COLOUR, _T("&Choose bg colour"));
+ choices_menu->Append(DIALOGS_GET_COLOUR, _T("&Choose fg colour"));
#endif // wxUSE_COLOURDLG
#if wxUSE_FONTDLG
#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;
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
menuDlg->Append(wxID_ANY,_T("&Searching"),find_menu);
#endif // wxUSE_FINDREPLDLG
-#if USE_MODAL_PRESENTATION
wxMenu *dialogs_menu = new wxMenu;
+#if USE_MODAL_PRESENTATION
dialogs_menu->Append(DIALOGS_MODAL, _T("&Modal dialog\tCtrl-W"));
+#endif // USE_MODAL_PRESENTATION
dialogs_menu->AppendCheckItem(DIALOGS_MODELESS, _T("Mode&less dialog\tCtrl-Z"));
dialogs_menu->Append(DIALOGS_CENTRE_SCREEN, _T("Centered on &screen\tShift-Ctrl-1"));
dialogs_menu->Append(DIALOGS_CENTRE_PARENT, _T("Centered on &parent\tShift-Ctrl-2"));
+ dialogs_menu->Append(DIALOGS_MINIFRAME, _T("&Mini frame"));
+ dialogs_menu->Append(DIALOGS_ONTOP, _T("Dialog staying on &top"));
menuDlg->Append(wxID_ANY, _T("&Generic dialogs"), dialogs_menu);
-#endif // USE_MODAL_PRESENTATION
#if USE_SETTINGS_DIALOG
wxMenu *sheet_menu = new wxMenu;
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"));
#if wxUSE_COLOURDLG
m_clrData.SetChooseFull(true);
- for (int i = 0; i < 16; i++)
+ for (int i = 0; i < wxColourData::NUM_CUSTOM; i++)
{
- m_clrData.SetCustomColour(
- i,
- wxColour(
- (unsigned char)(i*16),
- (unsigned char)(i*16),
- (unsigned char)(i*16)
- )
- );
+ unsigned char n = i*16;
+ m_clrData.SetCustomColour(i, wxColour(n, n, n));
}
#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) )
+
+void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event))
{
m_clrData.SetColour(myCanvas->GetBackgroundColour());
wxColourDialog dialog(this, &m_clrData);
- dialog.SetTitle(_T("Choose the background colour"));
- if (dialog.ShowModal() == wxID_OK)
+ dialog.SetTitle(_("Please choose the background colour"));
+ if ( dialog.ShowModal() == wxID_OK )
{
m_clrData = dialog.GetColourData();
myCanvas->SetBackgroundColour(m_clrData.GetColour());
myCanvas->Refresh();
}
}
+
+void MyFrame::GetColour(wxCommandEvent& WXUNUSED(event))
+{
+ wxColour clr = wxGetColourFromUser
+ (
+ this,
+ wxGetApp().m_canvasTextColour,
+ "Please choose the foreground colour"
+ );
+ if ( clr.IsOk() )
+ {
+ wxGetApp().m_canvasTextColour = clr;
+ myCanvas->Refresh();
+ }
+ //else: dialog cancelled by user
+}
+
#endif // wxUSE_COLOURDLG
+
#if USE_COLOURDLG_GENERIC
void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event))
{
}
#endif // wxUSE_LOG_DIALOG
+#if wxUSE_MSGDLG
void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) )
{
wxMessageDialog dialog(NULL,
}
}
+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."),
MyModalDialog dlg(this);
dlg.ShowModal();
}
+#endif // USE_MODAL_PRESENTATION
void MyFrame::ModelessDlg(wxCommandEvent& event)
{
dlg.ShowModal();
}
-#endif // USE_MODAL_PRESENTATION
+void MyFrame::MiniFrame(wxCommandEvent& WXUNUSED(event))
+{
+ wxFrame *frame = new wxMiniFrame(this, wxID_ANY, _T("Mini frame"),
+ wxDefaultPosition, wxSize(300, 100),
+ wxCAPTION | wxCLOSE_BOX);
+ new wxStaticText(frame,
+ wxID_ANY,
+ _T("Mini frames have slightly different appearance"),
+ wxPoint(5, 5));
+ new wxStaticText(frame,
+ wxID_ANY,
+ _T("from the normal frames but that's the only difference."),
+ wxPoint(5, 25));
+
+ frame->CentreOnParent();
+ frame->Show();
+}
+
+void MyFrame::DlgOnTop(wxCommandEvent& WXUNUSED(event))
+{
+ wxDialog dlg(this, wxID_ANY, _T("Dialog staying on top of other windows"),
+ wxDefaultPosition, wxSize(300, 100),
+ wxDEFAULT_DIALOG_STYLE | wxSTAY_ON_TOP);
+ (new wxButton(&dlg, wxID_OK, _T("Close")))->Centre();
+ dlg.ShowModal();
+}
#if wxUSE_STARTUP_TIPS
void MyFrame::ShowTip(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);