+
+void MyDateDialog::OnDateChange(wxDateEvent& event)
+{
+ const wxDateTime dt = event.GetDate();
+ if ( dt.IsValid() )
+ m_dateText->SetLabel(dt.FormatISODate());
+ else
+ m_dateText->SetLabel(wxEmptyString);
+}
+
+#endif // wxUSE_DATEPICKCTRL
+
+// ----------------------------------------------------------------------------
+// MyTimeDialog
+// ----------------------------------------------------------------------------
+
+#if wxUSE_TIMEPICKCTRL
+
+BEGIN_EVENT_TABLE(MyTimeDialog, wxDialog)
+ EVT_TIME_CHANGED(wxID_ANY, MyTimeDialog::OnTimeChange)
+END_EVENT_TABLE()
+
+MyTimeDialog::MyTimeDialog(wxWindow *parent)
+ : wxDialog(parent, wxID_ANY, wxString(wxT("Calendar: Choose time")))
+{
+#if wxUSE_TIMEPICKCTRL_GENERIC
+ wxFrame *frame = (wxFrame *)wxGetTopLevelParent(parent);
+ if ( frame && frame->GetMenuBar()->IsChecked(Calendar_TimePicker_Generic) )
+ m_timePicker = new wxTimePickerCtrlGeneric(this, wxID_ANY);
+ else
+#endif // wxUSE_TIMEPICKCTRL_GENERIC
+ m_timePicker = new wxTimePickerCtrl(this, wxID_ANY);
+ m_timeText = new wxStaticText(this, wxID_ANY, wxString());
+
+ const wxSizerFlags flags = wxSizerFlags().Centre().Border();
+ wxFlexGridSizer* const sizerMain = new wxFlexGridSizer(2);
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Enter &time:"), flags);
+ sizerMain->Add(m_timePicker, flags);
+
+ sizerMain->Add(new wxStaticText(this, wxID_ANY, "Time in ISO format:"),
+ flags);
+ sizerMain->Add(m_timeText, flags);
+
+ wxStdDialogButtonSizer* sizerBtns = new wxStdDialogButtonSizer;
+ sizerBtns->AddButton(new wxButton(this, wxID_OK));
+ sizerBtns->AddButton(new wxButton(this, wxID_CANCEL));
+ sizerBtns->Realize();
+
+ wxSizer* sizerTop = new wxBoxSizer(wxVERTICAL);
+ sizerTop->Add(sizerMain, flags);
+ sizerTop->Add(sizerBtns, flags);
+
+ SetSizerAndFit(sizerTop);
+}
+
+void MyTimeDialog::OnTimeChange(wxDateEvent& event)
+{
+ m_timeText->SetLabel(event.GetDate().FormatISOTime());
+}
+
+#endif // wxUSE_TIMEPICKCTRL