// Purpose: interface of wxCalendarCtrl
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+enum
+{
+ // show Sunday as the first day of the week (default)
+ wxCAL_SUNDAY_FIRST = 0x0000,
+
+ // show Monday as the first day of the week
+ wxCAL_MONDAY_FIRST = 0x0001,
+
+ // highlight holidays
+ wxCAL_SHOW_HOLIDAYS = 0x0002,
+
+ // disable the year change control, show only the month change one
+ // deprecated
+ wxCAL_NO_YEAR_CHANGE = 0x0004,
+
+ // don't allow changing neither month nor year (implies
+ // wxCAL_NO_YEAR_CHANGE)
+ wxCAL_NO_MONTH_CHANGE = 0x000c,
+
+ // use MS-style month-selection instead of combo-spin combination
+ wxCAL_SEQUENTIAL_MONTH_SELECTION = 0x0010,
+
+ // show the neighbouring weeks in the previous and next month
+ wxCAL_SHOW_SURROUNDING_WEEKS = 0x0020,
+
+ // show week numbers on the left side of the calendar.
+ wxCAL_SHOW_WEEK_NUMBERS = 0x0040
+};
+
+
/**
@class wxCalendarEvent
class wxCalendarEvent : public wxDateEvent
{
public:
+ wxCalendarEvent();
+ wxCalendarEvent(wxWindow *win, const wxDateTime& dt, wxEventType type);
+
/**
Returns the week day on which the user clicked in
@c EVT_CALENDAR_WEEKDAY_CLICKED handler. It doesn't make sense to call
void SetWeekDay(const wxDateTime::WeekDay day);
};
+wxEventType wxEVT_CALENDAR_SEL_CHANGED;
+wxEventType wxEVT_CALENDAR_PAGE_CHANGED;
+wxEventType wxEVT_CALENDAR_DOUBLECLICKED;
+wxEventType wxEVT_CALENDAR_WEEKDAY_CLICKED;
+wxEventType wxEVT_CALENDAR_WEEK_CLICKED;
+
/**
of this class are used with wxCalendarCtrl.
@library{wxadv}
- @category{misc}
+ @category{data}
@see wxCalendarCtrl
*/
Set the attributes that will be used to Mark() days on the generic
wxCalendarCtrl.
*/
- static void SetMark(wxCalendarDateAttr const& m);
+ static void SetMark(const wxCalendarDateAttr& m);
};
{
wxCAL_HITTEST_NOWHERE, ///< Hit outside of anything.
wxCAL_HITTEST_HEADER, ///< Hit on the header (weekdays).
- wxCAL_HITTEST_DAY ///< Hit on a day in the calendar.
+ wxCAL_HITTEST_DAY, ///< Hit on a day in the calendar.
+ wxCAL_HITTEST_INCMONTH, ///< Hit on next month arrow (in alternate month selector mode).
+ wxCAL_HITTEST_DECMONTH, ///< Hit on previous month arrow (in alternate month selector mode).
+ wxCAL_HITTEST_SURROUNDING_WEEK, ///< Hit on surrounding week of previous/next month (if shown).
+ wxCAL_HITTEST_WEEK ///< Hit on week of the year number (if shown).
};
/**
Show week numbers on the left side of the calendar. (not in generic)
@endStyleTable
- @beginEventTable{wxCalendarEvent}
+ @beginEventEmissionTable{wxCalendarEvent}
@event{EVT_CALENDAR(id, func)}
A day was double clicked in the calendar.
@event{EVT_CALENDAR_SEL_CHANGED(id, func)}
The selected month (and/or year) changed.
@event{EVT_CALENDAR_WEEKDAY_CLICKED(id, func)}
User clicked on the week day header (only generic).
+ @event{EVT_CALENDAR_WEEK_CLICKED(id, func)}
+ User clicked on the week of the year number (only generic).
@endEventTable
@note Changing the selected date will trigger an EVT_CALENDAR_DAY, MONTH or
@library{wxadv}
@category{ctrl}
- <!-- @appearance{calendarctrl.png} -->
+ @appearance{calendarctrl.png}
@nativeimpl{wxgtk,wxmsw}
/**
This function should be used instead of changing
@c wxCAL_NO_MONTH_CHANGE style bit. It allows or disallows the user to
- change the month interactively. Note that if the month can not be
- changed, the year can not be changed neither.
+ change the month interactively. Note that if the month cannot be
+ changed, the year cannot be changed neither.
@return @true if the value of this option really changed or @false if
it was already set to the requested value.
/**
Sets the current date.
- The @a date parameter must be valid.
+ The @a date parameter must be valid and in the currently valid range as
+ set by SetDateRange(), otherwise the current date is not changed and
+ the function returns @false.
*/
virtual bool SetDate(const wxDateTime& date);
/**
@name Date Range Functions
-
- The functions in this section are currently implemented in the generic
- and MSW versions and do nothing in the native GTK implementation.
*/
//@{
/**
- Restrict the dates shown by the control to the specified range.
+ Restrict the dates that can be selected in the control to the specified
+ range.
If either date is set, the corresponding limit will be enforced and
@true returned. If none are set, the existing restrictions are removed
@param lowerdate
The low limit for the dates shown by the control or
- @c wxDefaultDateTime.
+ ::wxDefaultDateTime.
@param upperdate
The high limit for the dates shown by the control or
- @c wxDefaultDateTime.
+ ::wxDefaultDateTime.
@return
@true if either limit is valid, @false otherwise
*/
@param lowerdate
If non-@NULL, the value of the low limit for the dates shown by the
- control is returned (which may be @c wxDefaultDateTime if no limit
+ control is returned (which may be ::wxDefaultDateTime if no limit
is set).
@param upperdate
If non-@NULL, the value of the upper limit for the dates shown by
- the control is returned (which may be @c wxDefaultDateTime if no
+ the control is returned (which may be ::wxDefaultDateTime if no
limit is set).
@return
@true if either limit is set, @false otherwise