From: Vadim Zeitlin Date: Fri, 10 Sep 2010 17:25:35 +0000 (+0000) Subject: Add a possibility to show a progress dialog on dialog sample startup. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/f434800ca3dab21d1e4e6ec8b11c3245b9dfe5b5 Add a possibility to show a progress dialog on dialog sample startup. Add a command line option to the dialogs sample to allow testing of different wxProgressDialog styles more easily. This also tests for showing them before the main event loop is started (see r65499). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/doxygen/mainpages/samples.h b/docs/doxygen/mainpages/samples.h index ae268507bc..29807d67ff 100644 --- a/docs/doxygen/mainpages/samples.h +++ b/docs/doxygen/mainpages/samples.h @@ -301,6 +301,11 @@ wxDebugReportUpload will report an error. This sample shows how to use the common dialogs available from wxWidgets. These dialogs are described in detail in the @ref overview_cmndlg. +In addition to the dialogs accessible from the sample menus, you can also run +it with a --progress=style command line option to show a +wxProgressDialog with the given style (try 0 for the default style) on program +startup, before the main window is shown. + @sampledir{dialogs} @section page_samples_dialup Dialup Sample diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 3abb136139..53fd1a8c46 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -277,12 +277,63 @@ BEGIN_EVENT_TABLE(StdButtonSizerDialog, wxDialog) EVT_RADIOBUTTON(wxID_ANY, StdButtonSizerDialog::OnEvent) END_EVENT_TABLE() +#if wxUSE_CMDLINE_PARSER + +#include "wx/cmdline.h" + +static const char *PROGRESS_SWITCH = "progress"; + +void MyApp::OnInitCmdLine(wxCmdLineParser& parser) +{ + wxApp::OnInitCmdLine(parser); + + parser.AddOption("", PROGRESS_SWITCH, + "Style for the startup progress dialog (wxPD_XXX)", + wxCMD_LINE_VAL_NUMBER); +} + +bool MyApp::OnCmdLineParsed(wxCmdLineParser& parser) +{ + if ( !wxApp::OnCmdLineParsed(parser) ) + return false; + + parser.Found(PROGRESS_SWITCH, &m_startupProgressStyle); + + return true; +} + +#endif // wxUSE_CMDLINE_PARSER + // `Main program' equivalent, creating windows and returning main app frame bool MyApp::OnInit() { if ( !wxApp::OnInit() ) return false; +#if wxUSE_PROGRESSDLG + if ( m_startupProgressStyle != -1 ) + { + // Show a test progress dialog before the main event loop is started: + // it should still work. + const int PROGRESS_COUNT = 100; + wxProgressDialog dlg + ( + "Progress in progress", + "Please wait, starting...", + PROGRESS_COUNT, + NULL, + m_startupProgressStyle + ); + for ( int i = 0; i <= PROGRESS_COUNT; i++ ) + { + if ( !dlg.Update(i) ) + break; + + wxMilliSleep(50); + } + } +#endif // wxUSE_PROGRESSDLG + #if wxUSE_IMAGE wxInitAllImageHandlers(); #endif diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h index d63cd1717b..71a1f53b61 100644 --- a/samples/dialogs/dialogs.h +++ b/samples/dialogs/dialogs.h @@ -115,12 +115,26 @@ public: class MyApp: public wxApp { public: + MyApp() { m_startupProgressStyle = -1; } + virtual bool OnInit(); +#if wxUSE_CMDLINE_PARSER + virtual void OnInitCmdLine(wxCmdLineParser& parser); + virtual bool OnCmdLineParsed(wxCmdLineParser& parser); +#endif // wxUSE_CMDLINE_PARSER + protected: #if wxUSE_LOG virtual wxAppTraits *CreateTraits() { return new MyAppTraits; } #endif // wxUSE_LOG + +private: + // Flag set to a valid value if command line option "progress" is used, + // this allows testing of wxProgressDialog before the main event loop is + // started. If this option is not specified it is set to -1 by default + // meaning that progress dialog shouldn't be shown at all. + long m_startupProgressStyle; }; #if USE_MODAL_PRESENTATION