]> git.saurik.com Git - wxWidgets.git/commitdiff
added possibility to create wxDatePickerCtrl without any initial date
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 19 Nov 2006 13:07:40 +0000 (13:07 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 19 Nov 2006 13:07:40 +0000 (13:07 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/calendar/calendar.cpp

index 6370bb2411f903b242f13b4b75209695cb9d67e4..f784ae484c8d552778353cc5d5238e883f29afd5 100644 (file)
@@ -112,6 +112,8 @@ public:
 
 #if wxUSE_DATEPICKCTRL
     void OnAskDate(wxCommandEvent& event);
+
+    void OnUpdateUIStartWithNone(wxUpdateUIEvent& event);
 #endif // wxUSE_DATEPICKCTRL
 
     void OnCalMonday(wxCommandEvent& event);
@@ -183,6 +185,7 @@ enum
     Calendar_DatePicker_ShowCentury,
     Calendar_DatePicker_DropDown,
     Calendar_DatePicker_AllowNone,
+    Calendar_DatePicker_StartWithNone,
 #if wxUSE_DATEPICKCTRL_GENERIC
     Calendar_DatePicker_Generic,
 #endif // wxUSE_DATEPICKCTRL_GENERIC
@@ -203,6 +206,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
 
 #if wxUSE_DATEPICKCTRL
     EVT_MENU(Calendar_DatePicker_AskDate, MyFrame::OnAskDate)
+
+    EVT_UPDATE_UI(Calendar_DatePicker_StartWithNone,
+                  MyFrame::OnUpdateUIStartWithNone)
 #endif // wxUSE_DATEPICKCTRL
 
     EVT_MENU(Calendar_Cal_Monday, MyFrame::OnCalMonday)
@@ -315,8 +321,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
                     _T("Allow changing the year in the calendar"),
                     true);
     menuCal->AppendSeparator();
-    menuCal->Append(Calendar_Cal_SetDate, _T("SetDate()"), _T("Set date to 2005-12-24."));
-    menuCal->Append(Calendar_Cal_Today, _T("Today()"), _T("Set the current date."));
+    menuCal->Append(Calendar_Cal_SetDate, _T("Call &SetDate(2005-12-24)"), _T("Set date to 2005-12-24."));
+    menuCal->Append(Calendar_Cal_Today, _T("Call &Today()"), _T("Set the current date."));
 
 #if wxUSE_DATEPICKCTRL
     wxMenu *menuDate = new wxMenu;
@@ -326,6 +332,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
                               _T("Use &drop down control"));
     menuDate->AppendCheckItem(Calendar_DatePicker_AllowNone,
                               _T("Allow &no date"));
+    menuDate->AppendCheckItem(Calendar_DatePicker_StartWithNone,
+                              _T("Start &with no date"));
 #if wxUSE_DATEPICKCTRL_GENERIC
     menuDate->AppendCheckItem(Calendar_DatePicker_Generic,
                               _T("Use &generic version of the control"));
@@ -439,20 +447,33 @@ void MyFrame::OnToday(wxCommandEvent &WXUNUSED(event))
 
 #if wxUSE_DATEPICKCTRL
 
+void MyFrame::OnUpdateUIStartWithNone(wxUpdateUIEvent& event)
+{
+    // it only makes sense to start with invalid date if we can have no date
+    event.Enable( GetMenuBar()->IsChecked(Calendar_DatePicker_AllowNone) );
+}
+
 void MyFrame::OnAskDate(wxCommandEvent& WXUNUSED(event))
 {
+    wxDateTime dt = m_panel->GetCal()->GetDate();
+
     int style = wxDP_DEFAULT;
     if ( GetMenuBar()->IsChecked(Calendar_DatePicker_ShowCentury) )
         style |= wxDP_SHOWCENTURY;
     if ( GetMenuBar()->IsChecked(Calendar_DatePicker_DropDown) )
         style |= wxDP_DROPDOWN;
     if ( GetMenuBar()->IsChecked(Calendar_DatePicker_AllowNone) )
+    {
         style |= wxDP_ALLOWNONE;
 
-    MyDialog dlg(this, m_panel->GetCal()->GetDate(), style);
+        if ( GetMenuBar()->IsChecked(Calendar_DatePicker_StartWithNone) )
+            dt = wxDefaultDateTime;
+    }
+
+    MyDialog dlg(this, dt, style);
     if ( dlg.ShowModal() == wxID_OK )
     {
-        const wxDateTime dt = dlg.GetDate();
+        dt = dlg.GetDate();
         if ( dt.IsValid() )
         {
             const wxDateTime today = wxDateTime::Today();
@@ -648,7 +669,7 @@ MyDialog::MyDialog(wxWindow *parent, const wxDateTime& dt, int dtpStyle)
 void MyDialog::OnDateChange(wxDateEvent& event)
 {
     const wxDateTime dt = event.GetDate();
-    if(dt.IsValid())
+    if ( dt.IsValid() )
         m_text->SetValue(dt.FormatISODate());
     else
         m_text->SetValue(wxEmptyString);