From 088b3be208e059b33232049d6ca76df3dc234484 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 17 Mar 2015 23:45:46 +0100 Subject: [PATCH] Extend the example with custom controls in wxFileDialog in the sample. Test using wxTextCtrl in the sample too to demonstrate that currently we need to get the text contents from the event handler, retrieving it once the dialog closes doesn't work, at least under MSW. --- samples/dialogs/dialogs.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp index f4b133a366..9922892584 100644 --- a/samples/dialogs/dialogs.cpp +++ b/samples/dialogs/dialogs.cpp @@ -1436,11 +1436,21 @@ public: MyExtraPanel(wxWindow *parent); wxString GetInfo() const { - return wxString::Format("checkbox value = %d", (int) m_cb->GetValue()); + return wxString::Format("checkbox=%d, text=\"%s\"", m_checked, m_str); } private: - void OnCheckBox(wxCommandEvent& event) { m_btn->Enable(event.IsChecked()); } + void OnCheckBox(wxCommandEvent& event) + { + m_checked = event.IsChecked(); + m_btn->Enable(m_checked); + } + + void OnText(wxCommandEvent& event) + { + m_str = event.GetString(); + } + void OnUpdateLabelUI(wxUpdateUIEvent& event) { wxFileDialog* const dialog = wxStaticCast(GetParent(), wxFileDialog); @@ -1459,13 +1469,19 @@ private: event.SetText(msg + " selected"); } + wxString m_str; + bool m_checked; + wxButton *m_btn; wxCheckBox *m_cb; wxStaticText *m_label; + wxTextCtrl *m_text; }; MyExtraPanel::MyExtraPanel(wxWindow *parent) - : wxPanel(parent) + : wxPanel(parent), + m_str("extra text"), + m_checked(false) { m_btn = new wxButton(this, -1, wxT("Custom Button")); m_btn->Enable(false); @@ -1477,11 +1493,19 @@ MyExtraPanel::MyExtraPanel(wxWindow *parent) wxUpdateUIEventHandler(MyExtraPanel::OnUpdateLabelUI), NULL, this); + m_text = new wxTextCtrl(this, -1, m_str, + wxDefaultPosition, wxSize(40*GetCharWidth(), -1)); + m_text->Bind(wxEVT_TEXT, &MyExtraPanel::OnText, this); + wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL); + sizerTop->Add(new wxStaticText(this, wxID_ANY, "Just some extra text:"), + wxSizerFlags().Centre().Border()); + sizerTop->Add(m_text, wxSizerFlags(1).Centre().Border()); + sizerTop->AddSpacer(10); sizerTop->Add(m_cb, wxSizerFlags().Centre().Border()); - sizerTop->AddStretchSpacer(); + sizerTop->AddSpacer(5); sizerTop->Add(m_btn, wxSizerFlags().Centre().Border()); - sizerTop->AddStretchSpacer(); + sizerTop->AddSpacer(5); sizerTop->Add(m_label, wxSizerFlags().Centre().Border()); SetSizerAndFit(sizerTop);