X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5a5f305a0f1cdd740d7ca299764755a62108fbda..d02852036df240b17f3164a940383502829435a4:/samples/dialogs/dialogs.cpp diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index d0c0c6a8d8..59197b7642 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -148,7 +148,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(DIALOGS_MULTI_CHOICE, MyFrame::MultiChoice) #endif // wxUSE_CHOICEDLG +#if wxUSE_REARRANGECTRL EVT_MENU(DIALOGS_REARRANGE, MyFrame::Rearrange) +#endif // wxUSE_REARRANGECTRL #if wxUSE_FILEDLG EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen) @@ -174,7 +176,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(DIALOGS_MODELESS, MyFrame::ModelessDlg) EVT_MENU(DIALOGS_CENTRE_SCREEN, MyFrame::DlgCenteredScreen) EVT_MENU(DIALOGS_CENTRE_PARENT, MyFrame::DlgCenteredParent) +#if wxUSE_MINIFRAME EVT_MENU(DIALOGS_MINIFRAME, MyFrame::MiniFrame) +#endif // wxUSE_MINIFRAME EVT_MENU(DIALOGS_ONTOP, MyFrame::DlgOnTop) #if wxUSE_STARTUP_TIPS @@ -299,7 +303,9 @@ bool MyApp::OnInit() choices_menu->Append(DIALOGS_MULTI_CHOICE, _T("M&ultiple choice\tCtrl-U")); #endif // wxUSE_CHOICEDLG + #if wxUSE_REARRANGECTRL choices_menu->Append(DIALOGS_REARRANGE, _T("&Rearrange dialog\tCtrl-R")); + #endif // wxUSE_REARRANGECTRL #if USE_COLOURDLG_GENERIC || USE_FONTDLG_GENERIC choices_menu->AppendSeparator(); @@ -417,7 +423,9 @@ bool MyApp::OnInit() dialogs_menu->AppendCheckItem(DIALOGS_MODELESS, _T("Mode&less dialog\tCtrl-Z")); dialogs_menu->Append(DIALOGS_CENTRE_SCREEN, _T("Centered on &screen\tShift-Ctrl-1")); dialogs_menu->Append(DIALOGS_CENTRE_PARENT, _T("Centered on &parent\tShift-Ctrl-2")); +#if wxUSE_MINIFRAME dialogs_menu->Append(DIALOGS_MINIFRAME, _T("&Mini frame")); +#endif // wxUSE_MINIFRAME dialogs_menu->Append(DIALOGS_ONTOP, _T("Dialog staying on &top")); menuDlg->Append(wxID_ANY, _T("&Generic dialogs"), dialogs_menu); @@ -823,6 +831,7 @@ void MyFrame::MultiChoice(wxCommandEvent& WXUNUSED(event) ) } #endif // wxUSE_CHOICEDLG +#if wxUSE_REARRANGECTRL // custom rearrange dialog: it adds the possibility to rename an item to the // base class functionality class MyRearrangeDialog : public wxRearrangeDialog @@ -867,16 +876,37 @@ public: DoUpdateExtraControls(GetList()->GetSelection()); AddExtraControls(panel); + + + // another customization not directly supported by the dialog: add a + // custom button + wxWindow * const btnOk = FindWindow(wxID_OK); + wxCHECK_RET( btnOk, "no Ok button?" ); + + wxSizer * const sizerBtns = btnOk->GetContainingSizer(); + wxCHECK_RET( sizerBtns, "no buttons sizer?" ); + + sizerBtns->Add(new wxButton(this, wxID_RESET, "&Reset all"), + wxSizerFlags().Border(wxLEFT)); } // call this instead of ShowModal() to update order and labels array in // case the dialog was not cancelled bool Rearrange() { - if ( ShowModal() == wxID_CANCEL ) - return false; + switch ( ShowModal() ) + { + case wxID_CANCEL: + return false; - m_order = GetOrder(); + case wxID_OK: + m_order = GetOrder(); + break; + + case wxID_RESET: + // order already reset + break; + } return true; } @@ -901,6 +931,21 @@ private: GetList()->SetString(m_sel, m_labels[m_sel]); } + void OnReset(wxCommandEvent& WXUNUSED(event)) + { + // in a real program we should probably ask if the user really wants to + // do this but here we just go ahead and reset all columns labels and + // their order without confirmation + const unsigned count = m_order.size(); + for ( unsigned n = 0; n < count; n++ ) + { + m_order[n] = n; + m_labels[n] = m_labelsOrig[n]; + } + + EndModal(wxID_RESET); + } + bool CanRename() const { // only allow renaming if the user modified the currently selected item @@ -935,14 +980,17 @@ private: wxTextCtrl *m_text; DECLARE_EVENT_TABLE() - DECLARE_NO_COPY_CLASS(MyRearrangeDialog) + wxDECLARE_NO_COPY_CLASS(MyRearrangeDialog); }; BEGIN_EVENT_TABLE(MyRearrangeDialog, wxRearrangeDialog) EVT_LISTBOX(wxID_ANY, MyRearrangeDialog::OnSelChange) + EVT_UPDATE_UI(wxID_APPLY, MyRearrangeDialog::OnUpdateUIRename) - EVT_BUTTON(wxID_APPLY, MyRearrangeDialog::OnRename) + EVT_TEXT_ENTER(wxID_ANY, MyRearrangeDialog::OnRename) + EVT_BUTTON(wxID_APPLY, MyRearrangeDialog::OnRename) + EVT_BUTTON(wxID_RESET, MyRearrangeDialog::OnReset) END_EVENT_TABLE() void MyFrame::Rearrange(wxCommandEvent& WXUNUSED(event)) @@ -1008,6 +1056,7 @@ void MyFrame::Rearrange(wxCommandEvent& WXUNUSED(event)) wxLogMessage("The columns order now is:%s", columns); } +#endif // wxUSE_REARRANGECTRL #if wxUSE_FILEDLG @@ -1355,6 +1404,7 @@ void MyFrame::DlgCenteredParent(wxCommandEvent& WXUNUSED(event)) dlg.ShowModal(); } +#if wxUSE_MINIFRAME void MyFrame::MiniFrame(wxCommandEvent& WXUNUSED(event)) { wxFrame *frame = new wxMiniFrame(this, wxID_ANY, _T("Mini frame"), @@ -1372,6 +1422,7 @@ void MyFrame::MiniFrame(wxCommandEvent& WXUNUSED(event)) frame->CentreOnParent(); frame->Show(); } +#endif // wxUSE_MINIFRAME void MyFrame::DlgOnTop(wxCommandEvent& WXUNUSED(event)) { @@ -1497,12 +1548,14 @@ TestDefaultActionDialog::TestDefaultActionDialog( wxWindow *parent ) : wxFlexGridSizer *grid_sizer = new wxFlexGridSizer( 2, 5, 5 ); +#if wxUSE_LISTBOX wxListBox *listbox = new wxListBox( this, ID_LISTBOX ); listbox->Append( "String 1" ); listbox->Append( "String 2" ); listbox->Append( "String 3" ); listbox->Append( "String 4" ); grid_sizer->Add( listbox ); +#endif // wxUSE_LISTBOX grid_sizer->Add( new wxCheckBox( this, ID_CATCH_LISTBOX_DCLICK, "Catch DoubleClick from wxListBox" ), 0, wxALIGN_CENTRE_VERTICAL ); @@ -1739,7 +1792,7 @@ void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event)) for ( int i = 0; i < 18; i++ ) { - //wxUsleep(100); + wxMilliSleep(100); wxTheApp->Yield(); }