]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dialogs/dialogs.cpp
adding instantiated xcodeproj
[wxWidgets.git] / samples / dialogs / dialogs.cpp
index 2a0a1b95e27800aab969485f97552ef7443b458d..1c020573f544381590927e8bea5c7178b383e7ee 100644 (file)
@@ -152,6 +152,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 #endif // wxUSE_INFOBAR
 
 #if wxUSE_TEXTDLG
+    EVT_MENU(DIALOGS_LINE_ENTRY,                    MyFrame::LineEntry)
     EVT_MENU(DIALOGS_TEXT_ENTRY,                    MyFrame::TextEntry)
     EVT_MENU(DIALOGS_PASSWORD_ENTRY,                MyFrame::PasswordEntry)
 #endif // wxUSE_TEXTDLG
@@ -277,12 +278,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
@@ -344,7 +396,8 @@ bool MyApp::OnInit()
     wxMenu *entry_menu = new wxMenu;
 
     #if wxUSE_TEXTDLG
-        entry_menu->Append(DIALOGS_TEXT_ENTRY,  wxT("Text &entry\tCtrl-E"));
+        entry_menu->Append(DIALOGS_LINE_ENTRY,  wxT("Single line &entry\tCtrl-E"));
+        entry_menu->Append(DIALOGS_TEXT_ENTRY,  wxT("Multi line text &entry\tShift-Ctrl-E"));
         entry_menu->Append(DIALOGS_PASSWORD_ENTRY,  wxT("&Password entry\tCtrl-P"));
     #endif // wxUSE_TEXTDLG
 
@@ -488,8 +541,23 @@ bool MyApp::OnInit()
     menuHelp->Append(DIALOGS_ABOUTDLG_CUSTOM, wxT("About (&custom)...\tCtrl-Shift-F1"));
 #endif // wxUSE_ABOUTDLG
 
+    wxMenu* editMenu = new wxMenu;
+    editMenu->Append(wxID_UNDO, _("&Undo\tCtrl+Z"));
+    editMenu->Append(wxID_REDO, _("&Redo\tCtrl+Y"));
+    editMenu->AppendSeparator();
+    editMenu->Append(wxID_CUT, _("Cu&t\tCtrl+X"));
+    editMenu->Append(wxID_COPY, _("&Copy\tCtrl+C"));
+    editMenu->Append(wxID_PASTE, _("&Paste\tCtrl+V"));
+    editMenu->Append(wxID_CLEAR, _("&Delete"));
+    
+    editMenu->AppendSeparator();
+    editMenu->Append(wxID_SELECTALL, _("Select All\tCtrl+A"));
+
     wxMenuBar *menubar = new wxMenuBar;
     menubar->Append(menuDlg, wxT("&Dialogs"));
+    
+    menubar->Append(editMenu, wxT("&Edit"));
+    
 #if wxUSE_ABOUTDLG
     menubar->Append(menuHelp, wxT("&Help"));
 #endif // wxUSE_ABOUTDLG
@@ -758,7 +826,7 @@ void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event))
                            wxCENTER |
                            wxNO_DEFAULT | wxYES_NO | wxCANCEL |
                            wxICON_INFORMATION);
-    
+
     wxString extmsg;
     if ( dialog.SetYesNoCancelLabels
         (
@@ -776,21 +844,21 @@ void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event))
         "so the default \"Yes\"/\"No\"/\"Cancel\" buttons are used.";
     }
     dialog.SetExtendedMessage(extmsg);
-    
+
     switch ( dialog.ShowModal() )
     {
         case wxID_YES:
             wxLogStatus(wxT("You pressed \"Yes\""));
             break;
-            
+
         case wxID_NO:
             wxLogStatus(wxT("You pressed \"No\""));
             break;
-            
+
         case wxID_CANCEL:
             wxLogStatus(wxT("You pressed \"Cancel\""));
             break;
-            
+
         default:
             wxLogError(wxT("Unexpected wxMessageDialog return code!"));
     }
@@ -912,7 +980,7 @@ void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event))
     }
 }
 
-void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event))
+void MyFrame::LineEntry(wxCommandEvent& WXUNUSED(event))
 {
     wxTextEntryDialog dialog(this,
                              wxT("This is a small sample\n")
@@ -926,6 +994,19 @@ void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event))
         wxMessageBox(dialog.GetValue(), wxT("Got string"), wxOK | wxICON_INFORMATION, this);
     }
 }
+
+void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event))
+{
+    wxTextEntryDialog dialog(this, "You can enter a multiline string here.",
+                             "Please enter some text",
+                             "First line\nSecond one\nAnd another one too",
+                             wxOK | wxCANCEL | wxTE_MULTILINE);
+
+    if (dialog.ShowModal() == wxID_OK)
+    {
+        wxMessageBox(dialog.GetValue(), wxT("Got text"), wxOK | wxICON_INFORMATION, this);
+    }
+}
 #endif // wxUSE_TEXTDLG
 
 #if wxUSE_CHOICEDLG
@@ -1756,25 +1837,26 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
 {
     static const int max = 100;
 
-    wxProgressDialog dialog(wxT("Progress dialog example"),
-                            wxT("An informative message"),
+    wxProgressDialog dialog("Progress dialog example",
+                            // "Reserve" enough space for the multiline
+                            // messages below, we'll change it anyhow
+                            // immediately in the loop below
+                            wxString(' ', 100) + "\n\n\n\n",
                             max,    // range
                             this,   // parent
                             wxPD_CAN_ABORT |
                             wxPD_CAN_SKIP |
                             wxPD_APP_MODAL |
-                            // wxPD_AUTO_HIDE | -- try this as well
+                            //wxPD_AUTO_HIDE | // -- try this as well
                             wxPD_ELAPSED_TIME |
                             wxPD_ESTIMATED_TIME |
-                            wxPD_REMAINING_TIME
-                            wxPD_SMOOTH // - makes indeterminate mode bar on WinXP very small
+                            wxPD_REMAINING_TIME |
+                            wxPD_SMOOTH // - makes indeterminate mode bar on WinXP very small
                             );
 
     bool cont = true;
     for ( int i = 0; i <= max; i++ )
     {
-        wxMilliSleep(200);
-
         wxString msg;
 
         // test both modes of wxProgressDialog behaviour: start in
@@ -1783,15 +1865,25 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
 
         if ( i == max )
         {
-            msg = wxT("That's all, folks!");
+            msg = "That's all, folks!\n"
+                  "\n"
+                  "Nothing to see here any more.";
         }
         else if ( !determinate )
         {
-            msg = wxT("Testing indeterminate mode");
+            msg = "Testing indeterminate mode\n"
+                  "\n"
+                  "This mode allows you to show to the user\n"
+                  "that something is going on even if you don't know\n"
+                  "when exactly will you finish.";
         }
         else if ( determinate )
         {
-            msg = wxT("Now in standard determinate mode");
+            msg = "Now in standard determinate mode\n"
+                  "\n"
+                  "This is the standard usage mode in which you\n"
+                  "update the dialog after performing each new step of work.\n"
+                  "It requires knowing the total number of steps in advance.";
         }
 
         // will be set to true if "Skip" button was pressed
@@ -1807,8 +1899,13 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
 
         // each skip will move progress about quarter forward
         if ( skip )
+        {
             i += max/4;
 
+            if ( i >= 100 )
+                i = 99;
+        }
+
         if ( !cont )
         {
             if ( wxMessageBox(wxT("Do you really want to cancel?"),
@@ -1819,6 +1916,8 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
             cont = true;
             dialog.Resume();
         }
+
+        wxMilliSleep(200);
     }
 
     if ( !cont )
@@ -2626,7 +2725,7 @@ bool TestMessageBoxDialog::Create()
     };
 
    wxCOMPILE_TIME_ASSERT( WXSIZEOF(icons) == MsgDlgIcon_Max, IconMismatch );
-   
+
     m_icons = new wxRadioBox(this, wxID_ANY, "&Icon style",
                              wxDefaultPosition, wxDefaultSize,
                              WXSIZEOF(icons), icons,