]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/calctrl.h
don't log mouse events by default
[wxWidgets.git] / include / wx / generic / calctrl.h
index 78a9385d3b01c69d2f400302aaca0ab88b279a23..076fff2d7b4578c858eb1b4dec86ed88a814c29e 100644 (file)
@@ -21,6 +21,7 @@
 #include "wx/spinctrl.h"        // for wxSpinEvent
 
 class WXDLLEXPORT wxComboBox;
+class WXDLLEXPORT wxStaticText;
 
 #define wxCalendarNameStr _T("CalendarCtrl")
 
@@ -41,10 +42,8 @@ public:
                    const wxDateTime& date = wxDefaultDateTime,
                    const wxPoint& pos = wxDefaultPosition,
                    const wxSize& size = wxDefaultSize,
-                   long style = wxCAL_SHOW_HOLIDAYS,
+                   long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
                    const wxString& name = wxCalendarNameStr)
-        : wxControl(parent, id, pos, size,
-                    style | wxWANTS_CHARS, wxDefaultValidator, name)
     {
         Init();
 
@@ -56,7 +55,7 @@ public:
                 const wxDateTime& date = wxDefaultDateTime,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
-                long style = wxCAL_SHOW_HOLIDAYS,
+                long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
                 const wxString& name = wxCalendarNameStr);
 
     virtual ~wxCalendarCtrl();
@@ -67,6 +66,22 @@ public:
     void SetDate(const wxDateTime& date);
     const wxDateTime& GetDate() const { return m_date; }
 
+    // calendar mode
+    // -------------
+
+    // some calendar styles can't be changed after the control creation by
+    // just using SetWindowStyle() and Refresh() and the functions below
+    // should be used instead for them
+
+    // corresponds to wxCAL_NO_YEAR_CHANGE bit
+    void EnableYearChange(bool enable = TRUE);
+
+    // corresponds to wxCAL_NO_MONTH_CHANGE bit
+    void EnableMonthChange(bool enable = TRUE);
+
+    // corresponds to wxCAL_SHOW_HOLIDAYS bit
+    void EnableHolidayDisplay(bool display = TRUE);
+
     // customization
     // -------------
 
@@ -100,11 +115,6 @@ public:
     const wxColour& GetHolidayColourFg() const { return m_colHolidayFg; }
     const wxColour& GetHolidayColourBg() const { return m_colHolidayBg; }
 
-    // this function should be called instead of directly changing the
-    // wxCAL_SHOW_HOLIDAYS bit in the control style after the control creation
-    // (this won't work)
-    void EnableHolidayDisplay(bool display = TRUE);
-
     // an item without custom attributes is drawn with the default colours and
     // font and without border, setting custom attributes allows to modify this
     //
@@ -156,7 +166,6 @@ private:
     void OnChar(wxKeyEvent& event);
     void OnMonthChange(wxCommandEvent& event);
     void OnYearChange(wxSpinEvent& event);
-    void OnCalMonthChange(wxCalendarEvent& event);
 
     // override some base class virtuals
     virtual wxSize DoGetBestSize() const;
@@ -205,8 +214,29 @@ private:
         GenerateEvent(type2);
     }
 
+    // do we allow changing the month/year?
+    bool AllowMonthChange() const
+    {
+        return (GetWindowStyle() & wxCAL_NO_MONTH_CHANGE)
+                != wxCAL_NO_MONTH_CHANGE;
+    }
+    bool AllowYearChange() const
+    {
+        return !(GetWindowStyle() & wxCAL_NO_YEAR_CHANGE);
+    }
+
+    // show the correct controls
+    void ShowCurrentControls();
+
+    // get the currently shown control for month/year
+    wxControl *GetMonthControl() const;
+    wxControl *GetYearControl() const;
+
     // the subcontrols
+    wxStaticText *m_staticMonth;
     wxComboBox *m_comboMonth;
+
+    wxStaticText *m_staticYear;
     wxSpinCtrl *m_spinYear;
 
     // the current selection