X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/21977bac1ae09f726d1437b1b7092ae5b3f99119..67d947ba89b176c05c7707f44e4381bdef0f21c8:/samples/dialogs/dialogs.cpp diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index 1e087c45e7..18d11c2249 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -38,13 +38,14 @@ #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" @@ -70,7 +71,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(DIALOGS_FILES_OPEN, MyFrame::FilesOpen) EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) +#if defined(__WXMSW__) || defined(__WXMAC__) EVT_MENU(DIALOGS_GENERIC_DIR_CHOOSE, MyFrame::GenericDirChoose) +#endif // wxMSW || wxMAC EVT_MENU(DIALOGS_MODAL, MyFrame::ModalDlg) EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg) EVT_MENU(DIALOGS_TIP, MyFrame::ShowTip) @@ -157,7 +160,9 @@ bool MyApp::OnInit() file_menu->Append(DIALOGS_FILES_OPEN, "Open &files\tCtrl-Q"); file_menu->Append(DIALOGS_FILE_SAVE, "Sa&ve file\tCtrl-S"); file_menu->Append(DIALOGS_DIR_CHOOSE, "&Choose a directory\tCtrl-D"); +#if defined(__WXMSW__) || defined(__WXMAC__) file_menu->Append(DIALOGS_GENERIC_DIR_CHOOSE, "&Choose a directory (generic implementation)"); +#endif // wxMSW || wxMAC #if wxUSE_PROGRESSDLG file_menu->Append(DIALOGS_PROGRESS, "Pro&gress dialog\tCtrl-G"); #endif // wxUSE_PROGRESSDLG @@ -165,11 +170,11 @@ bool MyApp::OnInit() 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"); + file_menu->Append(DIALOGS_MODAL, "Mo&dal dialog\tCtrl-W"); file_menu->Append(DIALOGS_MODELESS, "Modeless &dialog\tCtrl-Z", "", TRUE); file_menu->AppendSeparator(); file_menu->Append(wxID_EXIT, "E&xit\tAlt-X"); @@ -199,12 +204,20 @@ MyFrame::MyFrame(wxWindow *parent, { 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++) { @@ -212,17 +225,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) ) @@ -369,10 +381,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); @@ -385,15 +399,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 ) { @@ -411,9 +429,14 @@ void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) ) void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) { - wxFileDialog dialog(this, "Testing open file dialog", - "", "", - "C++ files (*.h;*.cpp)|*.h;*.cpp"); + wxFileDialog dialog + ( + this, + _T("Testing open file dialog"), + _T(""), + _T(""), + _T("C++ files (*.h;*.cpp)|*.h;*.cpp") + ); if (dialog.ShowModal() == wxID_OK) { @@ -440,7 +463,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 ); @@ -512,6 +535,8 @@ void MyFrame::DirChoose(wxCommandEvent& WXUNUSED(event) ) } } +#if defined(__WXMSW__) || defined(__WXMAC__) + void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) ) { #if !defined(__WXMSW__) || defined(wxUSE_DIRDLGG) && wxUSE_DIRDLGG @@ -532,6 +557,8 @@ void MyFrame::GenericDirChoose(wxCommandEvent& WXUNUSED(event) ) #endif } +#endif // wxMSW || wxMAC + void MyFrame::ModalDlg(wxCommandEvent& WXUNUSED(event)) { MyModalDialog dlg(this); @@ -643,7 +670,7 @@ void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event)) { wxWindowDisabler disableAll; - wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...", this); + wxBusyInfo info("Working, please wait...", this); for ( int i = 0; i < 30; i++ ) { @@ -658,27 +685,45 @@ void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event)) 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) @@ -714,9 +759,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 { @@ -791,8 +856,10 @@ MyModalDialog::MyModalDialog(wxWindow *parent) m_btnFocused = new wxButton(this, -1, "Default button"); m_btnDelete = new wxButton(this, -1, "&Delete button"); + wxButton *btnOk = new wxButton(this, wxID_CANCEL, "&Close"); sizerTop->Add(m_btnFocused, 0, wxALIGN_CENTER | wxALL, 5); sizerTop->Add(m_btnDelete, 0, wxALIGN_CENTER | wxALL, 5); + sizerTop->Add(btnOk, 0, wxALIGN_CENTER | wxALL, 5); SetAutoLayout(TRUE); SetSizer(sizerTop);