X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4c45f240f689efee80acca96aefb76bfe500d703..bd4d918f36b7df736e63f9aa934d479e4f3ff346:/samples/dialogs/dialogs.cpp?ds=sidebyside diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index f961b7ca09..432115cd90 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -31,6 +31,7 @@ #include "wx/fontdlg.h" #include "wx/choicdlg.h" #include "wx/tipdlg.h" +#include "wx/progdlg.h" #define wxTEST_GENERIC_DIALOGS_IN_MSW 0 @@ -65,11 +66,19 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) #if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric) EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric) +#endif +#if wxUSE_PROGRESSDLG + EVT_MENU(DIALOGS_PROGRESS, MyFrame::ShowProgress) #endif EVT_MENU(wxID_EXIT, MyFrame::OnExit) EVT_BUTTON(DIALOGS_MODELESS_BTN, MyFrame::OnButton) END_EVENT_TABLE() + +BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog) + EVT_CLOSE(MyModelessDialog::OnClose) +END_EVENT_TABLE() + MyCanvas *myCanvas = (MyCanvas *) NULL; // `Main program' equivalent, creating windows and returning main app frame @@ -116,6 +125,9 @@ bool MyApp::OnInit() 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->Append(DIALOGS_MODELESS, "Modeless &dialog\tCtrl-Z", "", TRUE); file_menu->AppendSeparator(); file_menu->Append(wxID_EXIT, "E&xit\tAlt-X"); @@ -230,15 +242,21 @@ void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) ) void MyFrame::LogDialog(wxCommandEvent& event) { - wxLogMessage("This is some message - everything is ok so far."); - wxLogMessage("Another message..."); - wxLogWarning("And then something went wrong!"); + // calling wxYield() (as ~wxBusyCursor does) shouldn't result in messages + // being flushed -- test it + { + wxBusyCursor bc; + wxLogMessage("This is some message - everything is ok so far."); + wxLogMessage("Another message...\n... this one is on multiple lines"); + wxLogWarning("And then something went wrong!"); + } + wxLogError("Intermediary error handler decided to abort."); - wxLogError("The top level caller detected an error."); + wxLogError("The top level caller detected an unrecoverable error."); wxLog::FlushActive(); - wxLogMessage("And this is the same dialog but with onle one message"); + wxLogMessage("And this is the same dialog but with only one message."); } void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) ) @@ -453,6 +471,56 @@ void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) ) Close(TRUE); } +#if wxUSE_PROGRESSDLG + +void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) +{ + static const int max = 10; + + wxProgressDialog dialog("Progress dialog example", + "An informative message", + max, // range + this, // parent + wxPD_CAN_ABORT | + wxPD_APP_MODAL | + wxPD_ELAPSED_TIME | + wxPD_ESTIMATED_TIME | + wxPD_REMAINING_TIME); + + bool cont = TRUE; + for ( int i = 0; i <= max && cont; i++ ) + { + wxSleep(1); + if ( i == max ) + { + cont = dialog.Update(i, "That's all, folks!"); + } + else if ( i == max / 2 ) + { + cont = dialog.Update(i, "Only a half left (very long message)!"); + } + else + { + cont = dialog.Update(i); + } + } + + if ( !cont ) + { + wxLogStatus("Progress dialog aborted!"); + } + else + { + wxLogStatus("Countdown from %d finished", max); + } +} + +#endif // wxUSE_PROGRESSDLG + +// ---------------------------------------------------------------------------- +// MyCanvas +// ---------------------------------------------------------------------------- + void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) ) { wxPaintDC dc(this); @@ -473,3 +541,16 @@ MyModelessDialog::MyModelessDialog(wxWindow *parent) Fit(); Centre(); } + +void MyModelessDialog::OnClose(wxCloseEvent& event) +{ + if ( event.CanVeto() ) + { + wxMessageBox("Use the menu item to close this dialog", + "Modeless dialog", + wxOK | wxICON_INFORMATION, this); + + event.Veto(); + } +} +