X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4693b20c7500190c3cc8c02919c45436bf5efbc9..cb69afe081994cc75654d5813981172fa194f86f:/samples/dialogs/dialogs.cpp diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 1420859da4..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) @@ -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) ) @@ -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,15 +394,19 @@ 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 ) { @@ -399,9 +424,14 @@ void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) ) void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) { -// wxFAIL_MSG( "Test assert" ); - - 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) { @@ -428,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 ); @@ -625,31 +655,66 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) ) #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(TRUE); + 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(TRUE); + 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) @@ -685,9 +750,29 @@ void MyFrame::OnFindDialog(wxFindDialogEvent& event) } else if ( type == wxEVT_COMMAND_FIND_CLOSE ) { - wxLogMessage(wxT("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") ); + } + + wxLogMessage(wxT("%s dialog is being closed."), txt), - event.GetDialog()->Destroy(); + dlg->Destroy(); } else {