X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bf956fac0e89eab569c41a9f121e728958767de7..c39058f631b3a53682f00807a60bfff6c5aa2b7c:/include/wx/calctrl.h diff --git a/include/wx/calctrl.h b/include/wx/calctrl.h index 0be77175d4..e94354010e 100644 --- a/include/wx/calctrl.h +++ b/include/wx/calctrl.h @@ -48,7 +48,10 @@ enum wxCAL_SEQUENTIAL_MONTH_SELECTION = 0x0010, // show the neighbouring weeks in the previous and next month - wxCAL_SHOW_SURROUNDING_WEEKS = 0x0020 + wxCAL_SHOW_SURROUNDING_WEEKS = 0x0020, + + // show week numbers on the left side of the calendar. + wxCAL_SHOW_WEEK_NUMBERS = 0x0040 }; // ---------------------------------------------------------------------------- @@ -185,6 +188,32 @@ public: virtual bool SetDate(const wxDateTime& date) = 0; + // restricting the dates shown by the control to the specified range: only + // implemented in the generic and MSW versions for now + + // if either date is set, the corresponding limit will be enforced and true + // returned; if none are set, the existing restrictions are removed and + // false is returned + virtual bool + SetDateRange(const wxDateTime& WXUNUSED(lowerdate) = wxDefaultDateTime, + const wxDateTime& WXUNUSED(upperdate) = wxDefaultDateTime) + { + return false; + } + + // retrieves the limits currently in use (wxDefaultDateTime if none) in the + // provided pointers (which may be NULL) and returns true if there are any + // limits or false if none + virtual bool + GetDateRange(wxDateTime *lowerdate, wxDateTime *upperdate) const + { + if ( lowerdate ) + *lowerdate = wxDefaultDateTime; + if ( upperdate ) + *upperdate = wxDefaultDateTime; + return false; + } + // returns one of wxCAL_HITTEST_XXX constants and fills either date or wd // with the corresponding value (none for NOWHERE, the date for DAY and wd // for HEADER) @@ -204,7 +233,7 @@ public: // // NB: we provide implementation for this pure virtual function, derived // classes should call it - virtual bool EnableMonthChange(bool enable) = 0; + virtual bool EnableMonthChange(bool enable = true) = 0; // an item without custom attributes is drawn with the default colours and @@ -230,12 +259,13 @@ public: // holidays support // - // currently all functions in this section are implemented in the generic - // version of the control only and are simply ignored by native ones + // currently only the generic version implements all functions in this + // section; wxMSW implements simple support for holidays (they can be + // just enabled or disabled) and wxGTK doesn't support them at all // equivalent to changing wxCAL_SHOW_HOLIDAYS flag but should be called // instead of just changing it - virtual void EnableHolidayDisplay(bool WXUNUSED(display) = true) { } + virtual void EnableHolidayDisplay(bool display = true); // set/get the colours to use for holidays (if they're enabled) virtual void SetHolidayColours(const wxColour& WXUNUSED(colFg), @@ -271,12 +301,35 @@ public: // implementation only from now on - // generate the given calendar event(s) - void GenerateEvent(wxEventType type) + // generate the given calendar event, return true if it was processed + // + // NB: this is public because it's used from GTK+ callbacks + bool GenerateEvent(wxEventType type) { wxCalendarEvent event(this, GetDate(), type); - HandleWindowEvent(event); + return HandleWindowEvent(event); } + +protected: + // generate all the events for the selection change from dateOld to current + // date: SEL_CHANGED, PAGE_CHANGED if necessary and also one of (deprecated) + // YEAR/MONTH/DAY_CHANGED ones + // + // returns true if page changed event was generated, false if the new date + // is still in the same month as before + bool GenerateAllChangeEvents(const wxDateTime& dateOld); + + // call SetHoliday() for all holidays in the current month + // + // should be called on month change, does nothing if wxCAL_SHOW_HOLIDAYS is + // not set and returns false in this case, true if we do show them + bool SetHolidayAttrs(); + + // called by SetHolidayAttrs() to forget the previously set holidays + virtual void ResetHolidayAttrs() { } + + // called by EnableHolidayDisplay() + virtual void RefreshHolidays() { } }; // ---------------------------------------------------------------------------- @@ -285,16 +338,22 @@ public: #define wxCalendarNameStr "CalendarCtrl" -#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) - #define wxHAS_NATIVE_CALENDARCTRL - #include "wx/gtk/calctrl.h" - #define wxCalendarCtrl wxGtkCalendarCtrl -#else +#ifndef __WXUNIVERSAL__ + #if defined(__WXGTK20__) + #define wxHAS_NATIVE_CALENDARCTRL + #include "wx/gtk/calctrl.h" + #define wxCalendarCtrl wxGtkCalendarCtrl + #elif defined(__WXMSW__) + #define wxHAS_NATIVE_CALENDARCTRL + #include "wx/msw/calctrl.h" + #endif +#endif // !__WXUNIVERSAL__ + +#ifndef wxHAS_NATIVE_CALENDARCTRL #include "wx/generic/calctrlg.h" #define wxCalendarCtrl wxGenericCalendarCtrl #endif - // ---------------------------------------------------------------------------- // calendar event types and macros for handling them // ----------------------------------------------------------------------------