X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d987909a83e885eca7bd281c912dfb522a0e074..60df0f96859fb0131ddfa8b477612a15f4a43790:/samples/dialogs/dialogs.cpp?ds=sidebyside diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 0e04f3effa..9e8b340bfa 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -33,17 +33,19 @@ #include "wx/tipdlg.h" #include "wx/progdlg.h" #include "wx/fdrepdlg.h" +#include "wx/busyinfo.h" #define wxTEST_GENERIC_DIALOGS_IN_MSW 0 #if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW -#include -#include +#include "wx/generic/colrdlgg.h" +#include "wx/generic/fontdlgg.h" #endif +#define wxUSE_DIRDLGG 0 + #if !defined(__WXMSW__) || defined(wxUSE_DIRDLGG) && wxUSE_DIRDLGG -// New wxGenericDirCtrl -#include "wx/dirctrl.h" +#include "wx/generic/dirdlgg.h" #endif #include "dialogs.h" @@ -77,9 +79,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 +162,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 +199,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 +221,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 +298,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 +353,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 +377,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 +395,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,9 +425,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) { @@ -422,16 +453,13 @@ void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) // one will use it by default void MyFrame::FileOpen2(wxCommandEvent& WXUNUSED(event) ) { - wxOnAssert( "Test assert.txt", 20, "Test" ); - return; - static wxString s_extDef; wxString path = wxFileSelector( _T("Select the file to load"), _T(""), _T(""), s_extDef, _T("Waveform (*.wav)|*.wav|Plain text (*.txt)|*.txt|All files (*.*)|*.*"), - 0, + wxCHANGE_DIR, this ); @@ -518,8 +546,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 } @@ -618,41 +646,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) @@ -672,7 +735,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()); @@ -680,7 +743,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(), @@ -688,13 +751,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") ); + } + + wxLogMessage(wxT("%s dialog is being closed."), txt), - event.GetDialog()->Destroy(); + dlg->Destroy(); } else { - wxLogError("Unknown find dialog event!"); + wxLogError(wxT("Unknown find dialog event!")); } }