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)
virtual void ResetAttr(size_t WXUNUSED(day)) { }
+ // 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
+
+ // equivalent to changing wxCAL_SHOW_HOLIDAYS flag but should be called
+ // instead of just changing it
+ virtual void EnableHolidayDisplay(bool WXUNUSED(display) = true) { }
+
+ // set/get the colours to use for holidays (if they're enabled)
+ virtual void SetHolidayColours(const wxColour& WXUNUSED(colFg),
+ const wxColour& WXUNUSED(colBg)) { }
+
+ virtual const wxColour& GetHolidayColourFg() const { return wxNullColour; }
+ virtual const wxColour& GetHolidayColourBg() const { return wxNullColour; }
+
+ // mark the given day of the current month as being a holiday
+ virtual void SetHoliday(size_t WXUNUSED(day)) { }
+
+
+ // customizing the colours of the controls
+ //
+ // most of the methods in this section are only implemented by the native
+ // version of the control and do nothing in the native ones
+
+ // set/get the colours to use for the display of the week day names at the
+ // top of the controls
+ virtual void SetHeaderColours(const wxColour& WXUNUSED(colFg),
+ const wxColour& WXUNUSED(colBg)) { }
+
+ virtual const wxColour& GetHeaderColourFg() const { return wxNullColour; }
+ virtual const wxColour& GetHeaderColourBg() const { return wxNullColour; }
+
+ // set/get the colours used for the currently selected date
+ virtual void SetHighlightColours(const wxColour& WXUNUSED(colFg),
+ const wxColour& WXUNUSED(colBg)) { }
+
+ virtual const wxColour& GetHighlightColourFg() const { return wxNullColour; }
+ virtual const wxColour& GetHighlightColourBg() const { return wxNullColour; }
+
+
// 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
+ void GenerateAllChangeEvents(const wxDateTime& dateOld);
};
// ----------------------------------------------------------------------------
#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
// ----------------------------------------------------------------------------