From 82f640ebc28436f5aea03eb90ce0f71f96fb957a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 8 Apr 2000 21:50:29 +0000 Subject: [PATCH] added a modal dialog test git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/dialogs/dialogs.cpp | 52 ++++++++++++++++++++++++++++++++++++- samples/dialogs/dialogs.h | 19 +++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 2f194b38be..417481e984 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -61,6 +61,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen) EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) + EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg) EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg) EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip) #if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW @@ -75,6 +76,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_BUTTON(DIALOGS_MODELESS_BTN, MyFrame::OnButton) END_EVENT_TABLE() +BEGIN_EVENT_TABLE(MyModalDialog, wxDialog) + EVT_BUTTON(-1, MyModalDialog::OnButton) +END_EVENT_TABLE() + BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog) EVT_CLOSE(MyModelessDialog::OnClose) END_EVENT_TABLE() @@ -124,10 +129,11 @@ bool MyApp::OnInit() file_menu->Append(DIALOGS_FILES_OPEN, "Open &files\tCtrl-Q"); file_menu->Append(DIALOGS_FILE_SAVE, "Sa&ve file\tCtrl-S"); file_menu->Append(DIALOGS_DIR_CHOOSE, "&Choose a directory\tCtrl-D"); - file_menu->AppendSeparator(); #if wxUSE_PROGRESSDLG file_menu->Append(DIALOGS_PROGRESS, "Pro&gress dialog\tCtrl-G"); #endif // wxUSE_PROGRESSDLG + file_menu->AppendSeparator(); + file_menu->Append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-F"); file_menu->Append(DIALOGS_MODELESS, "Modeless &dialog\tCtrl-Z", "", TRUE); file_menu->AppendSeparator(); file_menu->Append(wxID_EXIT, "E&xit\tAlt-X"); @@ -412,6 +418,12 @@ void MyFrame::DirChoose(wxCommandEvent& WXUNUSED(event) ) } } +void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event)) +{ + MyModalDialog dlg(this); + dlg.ShowModal(); +} + void MyFrame::ModelessDlg(wxCommandEvent& event) { bool show = GetMenuBar()->IsChecked(event.GetInt()); @@ -565,3 +577,41 @@ void MyModelessDialog::OnClose(wxCloseEvent& event) } } +// ---------------------------------------------------------------------------- +// MyModalDialog +// ---------------------------------------------------------------------------- + +MyModalDialog::MyModalDialog(wxWindow *parent) + : wxDialog(parent, -1, wxString("Modal dialog")) +{ + wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); + + m_btnFocused = new wxButton(this, -1, "Default button"); + m_btnDelete = new wxButton(this, -1, "&Delete button"); + sizerTop->Add(m_btnFocused, 0, wxALIGN_CENTER | wxALL, 5); + sizerTop->Add(m_btnDelete, 0, wxALIGN_CENTER | wxALL, 5); + + SetAutoLayout(TRUE); + SetSizer(sizerTop); + + sizerTop->SetSizeHints(this); + sizerTop->Fit(this); + + m_btnFocused->SetFocus(); + m_btnFocused->SetDefault(); +} + +void MyModalDialog::OnButton(wxCommandEvent& event) +{ + if ( event.GetEventObject() == m_btnDelete ) + { + delete m_btnFocused; + m_btnFocused = NULL; + + m_btnDelete->Disable(); + } + else + { + event.Skip(); + } +} diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h index d0e114f6b9..d8e4665ab9 100644 --- a/samples/dialogs/dialogs.h +++ b/samples/dialogs/dialogs.h @@ -22,7 +22,7 @@ public: wxColour m_canvasTextColour; }; -// A modeless dialog +// A custom modeless dialog class MyModelessDialog : public wxDialog { public: @@ -34,6 +34,21 @@ private: DECLARE_EVENT_TABLE() }; +// A custom modal dialog +class MyModalDialog : public wxDialog +{ +public: + MyModalDialog(wxWindow *parent); + + void OnButton(wxCommandEvent& event); + +private: + wxButton *m_btnFocused; + wxButton *m_btnDelete; + + DECLARE_EVENT_TABLE() +}; + // Define a new frame type class MyFrame: public wxFrame { @@ -54,6 +69,7 @@ public: void FileSave(wxCommandEvent& event); void DirChoose(wxCommandEvent& event); void ShowTip(wxCommandEvent& event); + void ModalDlg(wxCommandEvent& event); void ModelessDlg(wxCommandEvent& event); void ShowProgress(wxCommandEvent& event); @@ -101,6 +117,7 @@ enum DIALOGS_TIP, DIALOGS_NUM_ENTRY, DIALOGS_LOG_DIALOG, + DIALOGS_MODAL, DIALOGS_MODELESS, DIALOGS_MODELESS_BTN, DIALOGS_PROGRESS