+
+void MyPanel::SetDate()
+{
+ wxDateTime date(24, wxDateTime::Dec, 2005, 23, 59, 59);
+ m_calendar->SetDate(date);
+}
+
+void MyPanel::Today()
+{
+ m_calendar->SetDate(wxDateTime::Today());
+}
+
+// ----------------------------------------------------------------------------
+// MyDialog
+// ----------------------------------------------------------------------------
+
+#if wxUSE_DATEPICKCTRL
+
+MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle)
+ : wxDialog(parent, wxID_ANY, wxString(_T("Calendar: Choose a date")))
+{
+ wxStdDialogButtonSizer *sizerBtns = new wxStdDialogButtonSizer;
+ sizerBtns->AddButton(new wxButton(this, wxID_OK));
+ sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
+ sizerBtns->Realize();
+
+ wxSizer *sizerText = new wxBoxSizer(wxHORIZONTAL);
+ sizerText->Add(new wxStaticText(this, wxID_ANY, _T("Date in ISO format: ")),
+ wxSizerFlags().Border().Align(wxALIGN_CENTRE_VERTICAL));
+ m_text = new wxTextCtrl(this, wxID_ANY);
+ sizerText->Add(m_text, wxSizerFlags().
+ Expand().Border().Align(wxALIGN_CENTRE_VERTICAL));
+
+ wxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(new wxStaticText
+ (
+ this, wxID_ANY,
+ _T("Enter your birthday date (not before 20th century):")
+ ),
+ wxSizerFlags().Border());
+
+#if wxUSE_DATEPICKCTRL_GENERIC
+ wxFrame *frame = (wxFrame *)wxGetTopLevelParent(parent);
+ if ( frame && frame->GetMenuBar()->IsChecked(Calendar_DatePicker_Generic) )
+ m_datePicker = new wxDatePickerCtrlGeneric(this, wxID_ANY, dt,
+ wxDefaultPosition,
+ wxDefaultSize,
+ dtpStyle);
+ else
+#endif // wxUSE_DATEPICKCTRL_GENERIC
+ m_datePicker = new wxDatePickerCtrl(this, wxID_ANY, dt,
+ wxDefaultPosition, wxDefaultSize,
+ dtpStyle);
+ m_datePicker->SetRange(wxDateTime(1, wxDateTime::Jan, 1900),
+ wxDefaultDateTime);
+ sizerTop->Add(m_datePicker, wxSizerFlags().Expand().Border());
+
+ sizerTop->AddStretchSpacer(1);
+ sizerTop->Add(sizerText);
+
+ sizerTop->Add(sizerBtns, wxSizerFlags().Centre().Border());
+
+ SetSizerAndFit(sizerTop);
+ Layout();
+}
+
+void MyDialog::OnDateChange(wxDateEvent& event)
+{
+ const wxDateTime dt = event.GetDate();
+ if(dt.IsValid())
+ m_text->SetValue(dt.FormatISODate());
+ else
+ m_text->SetValue(wxEmptyString);
+}
+
+#endif // wxUSE_DATEPICKCTRL