X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/761989ffb536ab51e977142aa018064ef32b539b..cb69afe081994cc75654d5813981172fa194f86f:/samples/dialogs/dialogs.cpp diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 08d8abd3c7..712e9b35bb 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -33,6 +33,7 @@ #include "wx/tipdlg.h" #include "wx/progdlg.h" #include "wx/fdrepdlg.h" +#include "wx/busyinfo.h" #define wxTEST_GENERIC_DIALOGS_IN_MSW 0 @@ -77,9 +78,15 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) 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 // wxUSE_PROGRESSDLG + +#if wxUSE_BUSYINFO + EVT_MENU(DIALOGS_BUSYINFO, MyFrame::ShowBusyInfo) +#endif // wxUSE_BUSYINFO + #if wxUSE_FINDREPLDLG EVT_MENU(DIALOGS_FIND, MyFrame::ShowFindDialog) EVT_MENU(DIALOGS_REPLACE, MyFrame::ShowReplaceDialog) @@ -91,8 +98,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_FIND_CLOSE(-1, MyFrame::OnFindDialog) #endif // wxUSE_FINDREPLDLG EVT_MENU(wxID_EXIT, MyFrame::OnExit) - - EVT_BUTTON(DIALOGS_MODELESS_BTN, MyFrame::OnButton) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyModalDialog, wxDialog) @@ -100,6 +105,8 @@ BEGIN_EVENT_TABLE(MyModalDialog, wxDialog) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyModelessDialog, wxDialog) + EVT_BUTTON(DIALOGS_MODELESS_BTN, MyModelessDialog::OnButton) + EVT_CLOSE(MyModelessDialog::OnClose) END_EVENT_TABLE() @@ -154,9 +161,12 @@ bool MyApp::OnInit() #if wxUSE_PROGRESSDLG file_menu->Append(DIALOGS_PROGRESS, "Pro&gress dialog\tCtrl-G"); #endif // wxUSE_PROGRESSDLG +#if wxUSE_BUSYINFO + file_menu->Append(DIALOGS_BUSYINFO, "&Busy info dialog\tCtrl-B"); +#endif // wxUSE_BUSYINFO #if wxUSE_FINDREPLDLG - file_menu->Append(DIALOGS_FIND, "&Find dialog\tCtrl-F"); - file_menu->Append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F"); + file_menu->Append(DIALOGS_FIND, "&Find dialog\tCtrl-F", "", TRUE); + file_menu->Append(DIALOGS_REPLACE, "Find and &replace dialog\tShift-Ctrl-F", "", TRUE); #endif // wxUSE_FINDREPLDLG file_menu->AppendSeparator(); file_menu->Append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-D"); @@ -188,11 +198,21 @@ MyFrame::MyFrame(wxWindow *parent, : wxFrame(parent, -1, title, pos, size) { m_dialog = (MyModelessDialog *)NULL; + +#if wxUSE_FINDREPLDLG + m_dlgFind = + m_dlgReplace = NULL; +#endif + + CreateStatusBar(); } void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) { + wxColour col = myCanvas->GetBackgroundColour(); + wxColourData data; + data.SetColour(col); data.SetChooseFull(TRUE); for (int i = 0; i < 16; i++) { @@ -200,17 +220,16 @@ void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) data.SetCustomColour(i, colour); } - wxColourDialog *dialog = new wxColourDialog(this, &data); - dialog->SetTitle("Choose the background colour"); - if (dialog->ShowModal() == wxID_OK) + wxColourDialog dialog(this, &data); + dialog.SetTitle("Choose the background colour"); + if (dialog.ShowModal() == wxID_OK) { - wxColourData retData = dialog->GetColourData(); - wxColour col = retData.GetColour(); + wxColourData retData = dialog.GetColourData(); + col = retData.GetColour(); myCanvas->SetBackgroundColour(col); myCanvas->Clear(); myCanvas->Refresh(); } - dialog->Destroy(); } void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) ) @@ -278,20 +297,20 @@ void MyFrame::LogDialog(wxCommandEvent& event) // 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!"); + wxLogMessage(wxT("This is some message - everything is ok so far.")); + wxLogMessage(wxT("Another message...\n... this one is on multiple lines")); + wxLogWarning(wxT("And then something went wrong!")); // and if ~wxBusyCursor doesn't do it, then call it manually wxYield(); } - wxLogError("Intermediary error handler decided to abort."); - wxLogError("The top level caller detected an unrecoverable error."); + wxLogError(wxT("Intermediary error handler decided to abort.")); + wxLogError(wxT("The top level caller detected an unrecoverable error.")); wxLog::FlushActive(); - wxLogMessage("And this is the same dialog but with only one message."); + wxLogMessage(wxT("And this is the same dialog but with only one message.")); } void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) ) @@ -333,7 +352,7 @@ void MyFrame::PasswordEntry(wxCommandEvent& WXUNUSED(event)) this); if ( !!pwd ) { - wxMessageBox(wxString::Format("Your password is '%s'", pwd.c_str()), + wxMessageBox(wxString::Format(wxT("Your password is '%s'"), pwd.c_str()), "Got password", wxOK | wxICON_INFORMATION, this); } } @@ -357,10 +376,12 @@ void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event)) void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) ) { const wxString choices[] = { "One", "Two", "Three", "Four", "Five" } ; - int n = 5; - wxSingleChoiceDialog dialog(this, "This is a small sample\nA single-choice convenience dialog", - "Please select a value", n, (const wxString *)choices); + wxSingleChoiceDialog dialog(this, + "This is a small sample\n" + "A single-choice convenience dialog", + "Please select a value", + WXSIZEOF(choices), choices); dialog.SetSelection(2); @@ -373,23 +394,27 @@ void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) ) void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) ) { - const wxString choices[] = { "One", "Two", "Three", "Four", "Five" } ; - int n = 5; + const wxString choices[] = + { + "One", "Two", "Three", "Four", "Five", + "Six", "Seven", "Eight", "Nine", "Ten", + "Eleven", "Twelve", "Seventeen", + }; wxArrayInt selections; size_t count = wxGetMultipleChoices(selections, "This is a small sample\n" "A multi-choice convenience dialog", "Please select a value", - n, (const wxString *)choices, + WXSIZEOF(choices), choices, this); if ( count ) { wxString msg; - msg.Printf("You selected %u items:\n", count); + msg.Printf(wxT("You selected %u items:\n"), count); for ( size_t n = 0; n < count; n++ ) { - msg += wxString::Format("\t%u: %u (%s)\n", n, selections[n], + msg += wxString::Format(wxT("\t%u: %u (%s)\n"), n, selections[n], choices[selections[n]].c_str()); } wxLogMessage(msg); @@ -399,7 +424,14 @@ void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) ) void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) { - wxFileDialog dialog(this, "Testing open file dialog", "", "", "*.txt", 0); + wxFileDialog dialog + ( + this, + _T("Testing open file dialog"), + _T(""), + _T(""), + _T("C++ files (*.h;*.cpp)|*.h;*.cpp") + ); if (dialog.ShowModal() == wxID_OK) { @@ -426,7 +458,7 @@ void MyFrame::FileOpen2(wxCommandEvent& WXUNUSED(event) ) _T(""), _T(""), s_extDef, _T("Waveform (*.wav)|*.wav|Plain text (*.txt)|*.txt|All files (*.*)|*.*"), - 0, + wxCHANGE_DIR, this ); @@ -513,8 +545,8 @@ void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) ) dialog2.ShowModal(); } #else - wxLogError("Sorry, generic dir dialog not available:\n" - "set wxUSE_DIRDLGG to 1 and recompile"); + wxLogError(wxT("Sorry, generic dir dialog not available:\n") + wxT("set wxUSE_DIRDLGG to 1 and recompile")); #endif } @@ -543,12 +575,6 @@ void MyFrame::ModelessDlg(wxCommandEvent& event) } } -void MyFrame::OnButton(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageBox("Button pressed in modeless dialog", "Info", - wxOK | wxICON_INFORMATION, this); -} - void MyFrame::ShowTip(wxCommandEvent& event) { #if wxUSE_STARTUP_TIPS @@ -619,41 +645,76 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) if ( !cont ) { - wxLogStatus("Progress dialog aborted!"); + wxLogStatus(wxT("Progress dialog aborted!")); } else { - wxLogStatus("Countdown from %d finished", max); + wxLogStatus(wxT("Countdown from %d finished"), max); } } #endif // wxUSE_PROGRESSDLG +#if wxUSE_BUSYINFO + +void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event)) +{ + wxWindowDisabler disableAll; + + wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...", this); + + for ( int i = 0; i < 30; i++ ) + { + wxUsleep(100); + wxTheApp->Yield(); + } +} + +#endif // wxUSE_BUSYINFO + #if wxUSE_FINDREPLDLG void MyFrame::ShowReplaceDialog( wxCommandEvent& WXUNUSED(event) ) { - wxFindReplaceDialog *dialog = new wxFindReplaceDialog - ( - this, - &m_findData, - "Find and replace dialog", - wxFR_REPLACEDIALOG - ); - dialog->Show(); + if ( m_dlgReplace ) + { + delete m_dlgReplace; + m_dlgReplace = NULL; + } + else + { + m_dlgReplace = new wxFindReplaceDialog + ( + this, + &m_findData, + "Find and replace dialog", + wxFR_REPLACEDIALOG + ); + + m_dlgReplace->Show(TRUE); + } } void MyFrame::ShowFindDialog( wxCommandEvent& WXUNUSED(event) ) { - wxFindReplaceDialog *dialog = new wxFindReplaceDialog - ( - this, - &m_findData, - "Find dialog", - // just for testing - wxFR_NOWHOLEWORD - ); - dialog->Show(); + if ( m_dlgFind ) + { + delete m_dlgFind; + m_dlgFind = NULL; + } + else + { + m_dlgFind = new wxFindReplaceDialog + ( + this, + &m_findData, + "Find dialog", + // just for testing + wxFR_NOWHOLEWORD + ); + + m_dlgFind->Show(TRUE); + } } static wxString DecodeFindDialogEventFlags(int flags) @@ -673,7 +734,7 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) if ( type == wxEVT_COMMAND_FIND || type == wxEVT_COMMAND_FIND_NEXT ) { - wxLogMessage("Find %s'%s' (flags: %s)", + wxLogMessage(wxT("Find %s'%s' (flags: %s)"), type == wxEVT_COMMAND_FIND_NEXT ? "next " : "", event.GetFindString().c_str(), DecodeFindDialogEventFlags(event.GetFlags()).c_str()); @@ -681,7 +742,7 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) else if ( type == wxEVT_COMMAND_FIND_REPLACE || type == wxEVT_COMMAND_FIND_REPLACE_ALL ) { - wxLogMessage("Replace %s'%s' with '%s' (flags: %s)", + wxLogMessage(wxT("Replace %s'%s' with '%s' (flags: %s)"), type == wxEVT_COMMAND_FIND_REPLACE_ALL ? "all " : "", event.GetFindString().c_str(), event.GetReplaceString().c_str(), @@ -689,13 +750,33 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) } else if ( type == wxEVT_COMMAND_FIND_CLOSE ) { - wxLogMessage("Find dialog is being closed."); + wxFindReplaceDialog *dlg = event.GetDialog(); + + const wxChar *txt; + if ( dlg == m_dlgFind ) + { + txt = _T("Find"); + m_dlgFind = NULL; + } + else if ( dlg == m_dlgReplace ) + { + txt = _T("Replace"); + m_dlgReplace = NULL; + } + else + { + txt = _T("Unknown"); + + wxFAIL_MSG( _T("unexecpted event") ); + } - event.GetDialog()->Destroy(); + wxLogMessage(wxT("%s dialog is being closed."), txt), + + dlg->Destroy(); } else { - wxLogError("Unknown find dialog event!"); + wxLogError(wxT("Unknown find dialog event!")); } } @@ -737,6 +818,12 @@ MyModelessDialog::MyModelessDialog(wxWindow *parent) sizerTop->Fit(this); } +void MyModelessDialog::OnButton(wxCommandEvent& WXUNUSED(event)) +{ + wxMessageBox("Button pressed in modeless dialog", "Info", + wxOK | wxICON_INFORMATION, this); +} + void MyModelessDialog::OnClose(wxCloseEvent& event) { if ( event.CanVeto() )