X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/37df1f337058d50f5749797400a767cf6efa5db1..d51305e81eb593bedd92cda864671e15209c268f:/include/wx/generic/calctrl.h diff --git a/include/wx/generic/calctrl.h b/include/wx/generic/calctrl.h index 1a7ca729ec..cb10d1019b 100644 --- a/include/wx/generic/calctrl.h +++ b/include/wx/generic/calctrl.h @@ -6,10 +6,10 @@ // Created: 29.12.99 // RCS-ID: $Id$ // Copyright: (c) 1999 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "calctrl.h" #endif @@ -17,11 +17,11 @@ #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 wxSpinCtrl; #define wxCalendarNameStr _T("CalendarCtrl") @@ -29,7 +29,7 @@ class WXDLLEXPORT wxStaticText; // 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; @@ -43,12 +43,7 @@ public: 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, @@ -60,6 +55,8 @@ public: virtual ~wxCalendarCtrl(); + virtual bool Destroy(); + // 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); - + // calendar mode // ------------- @@ -84,13 +81,13 @@ public: // should be used instead for them // corresponds to wxCAL_NO_YEAR_CHANGE bit - void EnableYearChange(bool enable = TRUE); + void EnableYearChange(bool enable = true); // corresponds to wxCAL_NO_MONTH_CHANGE bit - void EnableMonthChange(bool enable = TRUE); + void EnableMonthChange(bool enable = true); // corresponds to wxCAL_SHOW_HOLIDAYS bit - void EnableHolidayDisplay(bool display = TRUE); + void EnableHolidayDisplay(bool display = true); // customization // ------------- @@ -162,8 +159,14 @@ public: // ------------------------------- // forward these functions to all subcontrols - virtual bool Enable(bool enable = TRUE); - virtual bool Show(bool show = TRUE); + virtual bool Enable(bool enable = true); + virtual bool Show(bool show = true); + + virtual wxVisualAttributes GetDefaultAttributes() const + { return GetClassDefaultAttributes(GetWindowVariant()); } + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); private: // common part of all ctors @@ -175,7 +178,7 @@ private: 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; @@ -201,7 +204,7 @@ private: // 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; @@ -245,20 +248,26 @@ private: // show the correct controls void ShowCurrentControls(); +public: // get the currently shown control for month/year wxControl *GetMonthControl() const; wxControl *GetYearControl() const; +private: // 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); - + // 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; @@ -290,13 +299,18 @@ private: m_rowOffset; wxRect m_leftArrowRect, - m_rightArrowRect; + m_rightArrowRect; // 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_NO_COPY_CLASS(wxCalendarCtrl) }; #endif // _WX_GENERIC_CALCTRL_H