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 <code>--progress=style</code> 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
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
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