filedlg_menu->Append(DIALOGS_FILES_OPEN, _T("Open &files\tCtrl-Q"));
filedlg_menu->Append(DIALOGS_FILE_SAVE, _T("Sa&ve file\tCtrl-S"));
- #if USE_FILEDLG_GENERIC
- filedlg_menu->AppendSeparator();
- filedlg_menu->Append(DIALOGS_FILE_OPEN_GENERIC, _T("&Open file (generic)"));
- filedlg_menu->Append(DIALOGS_FILES_OPEN_GENERIC, _T("Open &files (generic)"));
- filedlg_menu->Append(DIALOGS_FILE_SAVE_GENERIC, _T("Sa&ve file (generic)"));
- #endif // USE_FILEDLG_GENERIC
+#if USE_FILEDLG_GENERIC
+ filedlg_menu->AppendSeparator();
+ filedlg_menu->Append(DIALOGS_FILE_OPEN_GENERIC, _T("&Open file (generic)"));
+ filedlg_menu->Append(DIALOGS_FILES_OPEN_GENERIC, _T("Open &files (generic)"));
+ filedlg_menu->Append(DIALOGS_FILE_SAVE_GENERIC, _T("Sa&ve file (generic)"));
+#endif // USE_FILEDLG_GENERIC
menuDlg->Append(wxID_ANY,_T("&File operations"),filedlg_menu);
#endif // wxUSE_CHOICEDLG
#if wxUSE_FILEDLG
+
+// panel with custom controls for file dialog
+class MyExtraPanel : public wxPanel
+{
+public:
+ MyExtraPanel(wxWindow *parent);
+ void OnCheckBox(wxCommandEvent& event) { m_btn->Enable(event.IsChecked()); }
+ wxString GetInfo() const
+ {
+ return wxString::Format("checkbox value = %d", (int) m_cb->GetValue());
+ }
+private:
+ wxButton *m_btn;
+ wxCheckBox *m_cb;
+};
+
+MyExtraPanel::MyExtraPanel(wxWindow *parent)
+ : wxPanel(parent)
+{
+ m_btn = new wxButton(this, -1, _T("Custom Button"));
+ m_btn->Enable(false);
+ m_cb = new wxCheckBox(this, -1, _T("Enable Custom Button"));
+ m_cb->Connect(wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED,
+ wxCommandEventHandler(MyExtraPanel::OnCheckBox), NULL, this);
+ wxBoxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
+ sizerTop->Add(m_cb, wxSizerFlags().Centre().Border());
+ sizerTop->AddStretchSpacer();
+ sizerTop->Add(m_btn, wxSizerFlags().Right().Border());
+ SetSizerAndFit(sizerTop);
+}
+
+// a static method can be used instead of a function with most of compilers
+static wxWindow* createMyExtraPanel(wxWindow *parent)
+{
+ return new MyExtraPanel(parent);
+}
+
void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) )
{
wxFileDialog dialog
#endif
);
+ dialog.SetExtraControlCreator(&createMyExtraPanel);
dialog.CentreOnParent();
dialog.SetDirectory(wxGetHomeDir());
if (dialog.ShowModal() == wxID_OK)
{
wxString info;
+ MyExtraPanel *extra_panel
+ = static_cast<MyExtraPanel*>(dialog.GetExtraControl());
info.Printf(_T("Full file name: %s\n")
_T("Path: %s\n")
- _T("Name: %s"),
+ _T("Name: %s\n")
+ _T("Custom window: %s"),
dialog.GetPath().c_str(),
dialog.GetDirectory().c_str(),
- dialog.GetFilename().c_str());
+ dialog.GetFilename().c_str(),
+ extra_panel->GetInfo().c_str());
wxMessageDialog dialog2(this, info, _T("Selected file"));
dialog2.ShowModal();
}
_T("C++ files (*.cpp;*.h)|*.cpp;*.h")
);
+ dialog.SetExtraControlCreator(&createMyExtraPanel);
dialog.SetDirectory(wxGetHomeDir());
if (dialog.ShowModal() == wxID_OK)
if (button_sizer)
main_sizer->Add( button_sizer, 0, wxALL|wxGROW, 5 );
- SetSizer( main_sizer );
- main_sizer->SetSizeHints( this );
+ SetSizerAndFit( main_sizer );
}
void TestDefaultActionDialog::OnListBoxDClick(wxCommandEvent& event)
static void InitAboutInfoAll(wxAboutDialogInfo& info)
{
- InitAboutInfoMinimal(info);
+ InitAboutInfoWebsite(info);
// we can add a second developer
info.AddDeveloper(_T("A.N. Other"));
sizerTop->Add(btn, 1, wxEXPAND | wxALL, 5);
sizerTop->Add(check, 1, wxEXPAND | wxALL, 5);
- SetSizer(sizerTop);
-
- sizerTop->SetSizeHints(this);
- sizerTop->Fit(this);
+ SetSizerAndFit(sizerTop);
}
void MyModelessDialog::OnButton(wxCommandEvent& WXUNUSED(event))
sizerTop->Add(m_btnDelete, 0, wxALIGN_CENTER | wxALL, 5);
sizerTop->Add(btnOk, 0, wxALIGN_CENTER | wxALL, 5);
- SetSizer(sizerTop);
-
- sizerTop->SetSizeHints(this);
- sizerTop->Fit(this);
+ SetSizerAndFit(sizerTop);
m_btnModal->SetFocus();
m_btnModal->SetDefault();
EnableDisableControls();
- SetSizer(sizerTop);
+ SetSizerAndFit(sizerTop);
- sizerTop->SetSizeHints(this);
wxCommandEvent ev;
OnEvent(ev);
}
topSizer->Add( item0, 1, wxGROW|wxALIGN_CENTRE|wxALL, 5 );
- panel->SetSizer(topSizer);
- topSizer->Fit(panel);
+ panel->SetSizerAndFit(topSizer);
return panel;
}
topSizer->Add( item0, 1, wxGROW|wxALIGN_CENTRE|wxALL, 5 );
topSizer->AddSpacer(5);
- panel->SetSizer(topSizer);
- topSizer->Fit(panel);
+ panel->SetSizerAndFit(topSizer);
return panel;
}