]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/calctrl.h
Applied patch [ 858324 ] Calling EndModal inside an EVT_INIT_DIALOG event handler
[wxWidgets.git] / include / wx / generic / calctrl.h
index 1a7ca729ec4905e5c11616cd32ea955acd60fb73..f7d3d6abbca3479cc390cadb411204f8eeeb57e3 100644 (file)
@@ -6,10 +6,10 @@
 // Created:     29.12.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Created:     29.12.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma interface "calctrl.h"
 #endif
 
     #pragma interface "calctrl.h"
 #endif
 
 #define _WX_GENERIC_CALCTRL_H
 
 #include "wx/control.h"         // the base class
 #define _WX_GENERIC_CALCTRL_H
 
 #include "wx/control.h"         // the base class
-
-#include "wx/spinctrl.h"        // for wxSpinEvent
+#include "wx/dcclient.h"        // for wxPaintDC
 
 class WXDLLEXPORT wxComboBox;
 class WXDLLEXPORT wxStaticText;
 
 class WXDLLEXPORT wxComboBox;
 class WXDLLEXPORT wxStaticText;
+class WXDLLEXPORT wxSpinCtrl;
 
 #define wxCalendarNameStr _T("CalendarCtrl")
 
 
 #define wxCalendarNameStr _T("CalendarCtrl")
 
@@ -29,7 +29,7 @@ class WXDLLEXPORT wxStaticText;
 // wxCalendarCtrl: a control allowing the user to pick a date interactively
 // ----------------------------------------------------------------------------
 
 // wxCalendarCtrl: a control allowing the user to pick a date interactively
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxCalendarCtrl : public wxControl
+class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxControl
 {
 friend class wxMonthComboBox;
 friend class wxYearSpinCtrl;
 {
 friend class wxMonthComboBox;
 friend class wxYearSpinCtrl;
@@ -43,12 +43,7 @@ public:
                    const wxPoint& pos = wxDefaultPosition,
                    const wxSize& size = wxDefaultSize,
                    long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
                    const wxPoint& pos = wxDefaultPosition,
                    const wxSize& size = wxDefaultSize,
                    long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
-                   const wxString& name = wxCalendarNameStr)
-    {
-        Init();
-
-        (void)Create(parent, id, date, pos, size, style, name);
-    }
+                   const wxString& name = wxCalendarNameStr);
 
     bool Create(wxWindow *parent,
                 wxWindowID id,
 
     bool Create(wxWindow *parent,
                 wxWindowID id,
@@ -60,6 +55,8 @@ public:
 
     virtual ~wxCalendarCtrl();
 
 
     virtual ~wxCalendarCtrl();
 
+    virtual bool Destroy();
+
     // set/get the current date
     // ------------------------
 
     // set/get the current date
     // ------------------------
 
@@ -75,7 +72,7 @@ public:
     const wxDateTime& GetUpperDateLimit() const { return m_highdate; }
 
     bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime);
     const wxDateTime& GetUpperDateLimit() const { return m_highdate; }
 
     bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime);
-    
+
     // calendar mode
     // -------------
 
     // calendar mode
     // -------------
 
@@ -175,7 +172,7 @@ private:
     void OnDClick(wxMouseEvent& event);
     void OnChar(wxKeyEvent& event);
     void OnMonthChange(wxCommandEvent& event);
     void OnDClick(wxMouseEvent& event);
     void OnChar(wxKeyEvent& event);
     void OnMonthChange(wxCommandEvent& event);
-    void OnYearChange(wxSpinEvent& event);
+    void OnYearChange(wxCommandEvent& event);
 
     // override some base class virtuals
     virtual wxSize DoGetBestSize() const;
 
     // override some base class virtuals
     virtual wxSize DoGetBestSize() const;
@@ -201,7 +198,7 @@ private:
 
     // is this date in the given range?
     bool IsDateInRange(const wxDateTime& date) const;
 
     // is this date in the given range?
     bool IsDateInRange(const wxDateTime& date) const;
-    
+
     // range helpers
     bool ChangeYear(wxDateTime* target) const;
     bool ChangeMonth(wxDateTime* target) const;
     // range helpers
     bool ChangeYear(wxDateTime* target) const;
     bool ChangeMonth(wxDateTime* target) const;
@@ -245,20 +242,26 @@ private:
     // show the correct controls
     void ShowCurrentControls();
 
     // show the correct controls
     void ShowCurrentControls();
 
+public:
     // get the currently shown control for month/year
     wxControl *GetMonthControl() const;
     wxControl *GetYearControl() const;
 
     // get the currently shown control for month/year
     wxControl *GetMonthControl() const;
     wxControl *GetYearControl() const;
 
+private:
     // OnPaint helper-methods
     // OnPaint helper-methods
-    
+
     // Highlight the [fromdate : todate] range using pen and brush
     void HighlightRange(wxPaintDC* dc, const wxDateTime& fromdate, const wxDateTime& todate, wxPen* pen, wxBrush* brush);
     // Highlight the [fromdate : todate] range using pen and brush
     void HighlightRange(wxPaintDC* dc, const wxDateTime& fromdate, const wxDateTime& todate, wxPen* pen, wxBrush* brush);
-    
+
     // Get the "coordinates" for the date relative to the month currently displayed.
     // using (day, week): upper left coord is (1, 1), lower right coord is (7, 6)
     // if the date isn't visible (-1, -1) is put in (day, week) and false is returned
     bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
 
     // Get the "coordinates" for the date relative to the month currently displayed.
     // using (day, week): upper left coord is (1, 1), lower right coord is (7, 6)
     // if the date isn't visible (-1, -1) is put in (day, week) and false is returned
     bool GetDateCoord(const wxDateTime& date, int *day, int *week) const;
 
+    // Set the flag for SetDate(): otherwise it would overwrite the year
+    // typed in by the user
+    void SetUserChangedYear() { m_userChangedYear = TRUE; }
+
     // the subcontrols
     wxStaticText *m_staticMonth;
     wxComboBox *m_comboMonth;
     // the subcontrols
     wxStaticText *m_staticMonth;
     wxComboBox *m_comboMonth;
@@ -290,13 +293,18 @@ private:
             m_rowOffset;
 
     wxRect m_leftArrowRect,
             m_rowOffset;
 
     wxRect m_leftArrowRect,
-            m_rightArrowRect;
+           m_rightArrowRect;
 
     // the week day names
     wxString m_weekdays[7];
 
 
     // the week day names
     wxString m_weekdays[7];
 
+    // TRUE if SetDate() is being called as the result of changing the year in
+    // the year control
+    bool m_userChangedYear;
+
     DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
     DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxCalendarCtrl)
 };
 
 #endif // _WX_GENERIC_CALCTRL_H
 };
 
 #endif // _WX_GENERIC_CALCTRL_H