X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d03fd34d3cca63ba73cee48271eda244ceb98337..03a2f00c1a15b3cf30492ebf091f870a0089186f:/wxPython/src/msw/calendar.py diff --git a/wxPython/src/msw/calendar.py b/wxPython/src/msw/calendar.py index 46eef2f4d6..dd91a875cd 100644 --- a/wxPython/src/msw/calendar.py +++ b/wxPython/src/msw/calendar.py @@ -3,9 +3,10 @@ import _calendar -import misc -import core -wx = core +import _misc +import _core +wx = _core +__docfilter__ = wx.__DocFilter(globals()) CAL_SUNDAY_FIRST = _calendar.CAL_SUNDAY_FIRST CAL_MONDAY_FIRST = _calendar.CAL_MONDAY_FIRST CAL_SHOW_HOLIDAYS = _calendar.CAL_SHOW_HOLIDAYS @@ -23,84 +24,90 @@ CAL_BORDER_NONE = _calendar.CAL_BORDER_NONE CAL_BORDER_SQUARE = _calendar.CAL_BORDER_SQUARE CAL_BORDER_ROUND = _calendar.CAL_BORDER_ROUND class CalendarDateAttr(object): + """ + A set of customization attributes for a calendar date, which can be + used to control the look of the Calendar object. + """ def __repr__(self): return "<%s.%s; proxy of C++ wxCalendarDateAttr instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) def __init__(self, *args, **kwargs): """ - __init__(Colour colText, Colour colBack=wxNullColour, Colour colBorder=wxNullColour, - Font font=wxNullFont, + __init__(self, Colour colText=wxNullColour, Colour colBack=wxNullColour, + Colour colBorder=wxNullColour, Font font=wxNullFont, int border=CAL_BORDER_NONE) -> CalendarDateAttr + + Create a CalendarDateAttr. """ newobj = _calendar.new_CalendarDateAttr(*args, **kwargs) self.this = newobj.this self.thisown = 1 del newobj.thisown def SetTextColour(*args, **kwargs): - """SetTextColour(Colour colText)""" + """SetTextColour(self, Colour colText)""" return _calendar.CalendarDateAttr_SetTextColour(*args, **kwargs) def SetBackgroundColour(*args, **kwargs): - """SetBackgroundColour(Colour colBack)""" + """SetBackgroundColour(self, Colour colBack)""" return _calendar.CalendarDateAttr_SetBackgroundColour(*args, **kwargs) def SetBorderColour(*args, **kwargs): - """SetBorderColour(Colour col)""" + """SetBorderColour(self, Colour col)""" return _calendar.CalendarDateAttr_SetBorderColour(*args, **kwargs) def SetFont(*args, **kwargs): - """SetFont(Font font)""" + """SetFont(self, Font font)""" return _calendar.CalendarDateAttr_SetFont(*args, **kwargs) def SetBorder(*args, **kwargs): - """SetBorder(int border)""" + """SetBorder(self, int border)""" return _calendar.CalendarDateAttr_SetBorder(*args, **kwargs) def SetHoliday(*args, **kwargs): - """SetHoliday(bool holiday)""" + """SetHoliday(self, bool holiday)""" return _calendar.CalendarDateAttr_SetHoliday(*args, **kwargs) def HasTextColour(*args, **kwargs): - """HasTextColour() -> bool""" + """HasTextColour(self) -> bool""" return _calendar.CalendarDateAttr_HasTextColour(*args, **kwargs) def HasBackgroundColour(*args, **kwargs): - """HasBackgroundColour() -> bool""" + """HasBackgroundColour(self) -> bool""" return _calendar.CalendarDateAttr_HasBackgroundColour(*args, **kwargs) def HasBorderColour(*args, **kwargs): - """HasBorderColour() -> bool""" + """HasBorderColour(self) -> bool""" return _calendar.CalendarDateAttr_HasBorderColour(*args, **kwargs) def HasFont(*args, **kwargs): - """HasFont() -> bool""" + """HasFont(self) -> bool""" return _calendar.CalendarDateAttr_HasFont(*args, **kwargs) def HasBorder(*args, **kwargs): - """HasBorder() -> bool""" + """HasBorder(self) -> bool""" return _calendar.CalendarDateAttr_HasBorder(*args, **kwargs) def IsHoliday(*args, **kwargs): - """IsHoliday() -> bool""" + """IsHoliday(self) -> bool""" return _calendar.CalendarDateAttr_IsHoliday(*args, **kwargs) def GetTextColour(*args, **kwargs): - """GetTextColour() -> Colour""" + """GetTextColour(self) -> Colour""" return _calendar.CalendarDateAttr_GetTextColour(*args, **kwargs) def GetBackgroundColour(*args, **kwargs): - """GetBackgroundColour() -> Colour""" + """GetBackgroundColour(self) -> Colour""" return _calendar.CalendarDateAttr_GetBackgroundColour(*args, **kwargs) def GetBorderColour(*args, **kwargs): - """GetBorderColour() -> Colour""" + """GetBorderColour(self) -> Colour""" return _calendar.CalendarDateAttr_GetBorderColour(*args, **kwargs) def GetFont(*args, **kwargs): - """GetFont() -> Font""" + """GetFont(self) -> Font""" return _calendar.CalendarDateAttr_GetFont(*args, **kwargs) def GetBorder(*args, **kwargs): - """GetBorder() -> int""" + """GetBorder(self) -> int""" return _calendar.CalendarDateAttr_GetBorder(*args, **kwargs) @@ -111,35 +118,29 @@ class CalendarDateAttrPtr(CalendarDateAttr): self.__class__ = CalendarDateAttr _calendar.CalendarDateAttr_swigregister(CalendarDateAttrPtr) -def CalendarDateAttrBorder(*args, **kwargs): - """CalendarDateAttrBorder(int border, Colour colBorder=wxNullColour) -> CalendarDateAttr""" - val = _calendar.new_CalendarDateAttrBorder(*args, **kwargs) - val.thisown = 1 - return val - -class CalendarEvent(core.CommandEvent): +class CalendarEvent(_core.CommandEvent): def __repr__(self): return "<%s.%s; proxy of C++ wxCalendarEvent instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) def __init__(self, *args, **kwargs): - """__init__(CalendarCtrl cal, wxEventType type) -> CalendarEvent""" + """__init__(self, CalendarCtrl cal, wxEventType type) -> CalendarEvent""" newobj = _calendar.new_CalendarEvent(*args, **kwargs) self.this = newobj.this self.thisown = 1 del newobj.thisown def GetDate(*args, **kwargs): - """GetDate() -> DateTime""" + """GetDate(self) -> DateTime""" return _calendar.CalendarEvent_GetDate(*args, **kwargs) def SetDate(*args, **kwargs): - """SetDate(DateTime date)""" + """SetDate(self, DateTime date)""" return _calendar.CalendarEvent_SetDate(*args, **kwargs) def SetWeekDay(*args, **kwargs): - """SetWeekDay(int wd)""" + """SetWeekDay(self, int wd)""" return _calendar.CalendarEvent_SetWeekDay(*args, **kwargs) def GetWeekDay(*args, **kwargs): - """GetWeekDay() -> int""" + """GetWeekDay(self) -> int""" return _calendar.CalendarEvent_GetWeekDay(*args, **kwargs) @@ -163,15 +164,81 @@ EVT_CALENDAR_MONTH = wx.PyEventBinder( wxEVT_CALENDAR_MONTH_CHANGED, 1 EVT_CALENDAR_YEAR = wx.PyEventBinder( wxEVT_CALENDAR_YEAR_CHANGED, 1) EVT_CALENDAR_WEEKDAY_CLICKED = wx.PyEventBinder( wxEVT_CALENDAR_WEEKDAY_CLICKED, 1) -class CalendarCtrl(core.Control): +class CalendarCtrl(_core.Control): + """ + The calendar control allows the user to pick a date interactively. + + The CalendarCtrl displays a window containing several parts: the + control to pick the month and the year at the top (either or both of + them may be disabled) and a month area below them which shows all the + days in the month. The user can move the current selection using the + keyboard and select the date (generating EVT_CALENDAR event) by + pressing or double clicking it. + + It has advanced possibilities for the customization of its + display. All global settings (such as colours and fonts used) can, of + course, be changed. But also, the display style for each day in the + month can be set independently using CalendarDateAttr class. + + An item without custom attributes is drawn with the default colours + and font and without border, but setting custom attributes with + SetAttr allows to modify its appearance. Just create a custom + attribute object and set it for the day you want to be displayed + specially A day may be marked as being a holiday, (even if it is not + recognized as one by wx.DateTime) by using the SetHoliday method. + + As the attributes are specified for each day, they may change when the + month is changed, so you will often want to update them in an + EVT_CALENDAR_MONTH event handler. + + Window Styles + ------------- + ============================== ============================ + CAL_SUNDAY_FIRST Show Sunday as the first day + in the week + CAL_MONDAY_FIRST Show Monday as the first day + in the week + CAL_SHOW_HOLIDAYS Highlight holidays in the + calendar + CAL_NO_YEAR_CHANGE Disable the year changing + CAL_NO_MONTH_CHANGE Disable the month (and, + implicitly, the year) changing + CAL_SHOW_SURROUNDING_WEEKS Show the neighbouring weeks in + the previous and next months + CAL_SEQUENTIAL_MONTH_SELECTION Use alternative, more compact, + style for the month and year + selection controls. + + The default calendar style is CAL_SHOW_HOLIDAYS. + + Events + ------- + =========================== ============================== + EVT_CALENDAR A day was double clicked in the + calendar. + EVT_CALENDAR_SEL_CHANGED The selected date changed. + EVT_CALENDAR_DAY The selected day changed. + EVT_CALENDAR_MONTH The selected month changed. + EVT_CALENDAR_YEAR The selected year changed. + EVT_CALENDAR_WEEKDAY_CLICKED User clicked on the week day + header + + Note that changing the selected date will result in one of + EVT_CALENDAR_DAY, MONTH or YEAR events and an EVT_CALENDAR_SEL_CHANGED + event. + + + """ def __repr__(self): return "<%s.%s; proxy of C++ wxCalendarCtrl instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) def __init__(self, *args, **kwargs): """ - __init__(Window parent, int id, DateTime date=wxDefaultDateTime, + __init__(self, Window parent, int id=-1, DateTime date=DefaultDateTime, Point pos=DefaultPosition, Size size=DefaultSize, long style=wxCAL_SHOW_HOLIDAYS|wxWANTS_CHARS, String name=CalendarNameStr) -> CalendarCtrl + + Create and show a calendar control. """ newobj = _calendar.new_CalendarCtrl(*args, **kwargs) self.this = newobj.this @@ -181,125 +248,265 @@ class CalendarCtrl(core.Control): def Create(*args, **kwargs): """ - Create(Window parent, int id, DateTime date=wxDefaultDateTime, + Create(self, Window parent, int id, DateTime date=DefaultDateTime, Point pos=DefaultPosition, Size size=DefaultSize, long style=wxCAL_SHOW_HOLIDAYS|wxWANTS_CHARS, String name=CalendarNameStr) -> bool + + Acutally create the GUI portion of the CalendarCtrl for 2-phase + creation. """ return _calendar.CalendarCtrl_Create(*args, **kwargs) def SetDate(*args, **kwargs): - """SetDate(DateTime date)""" + """ + SetDate(self, DateTime date) + + Sets the current date. + """ return _calendar.CalendarCtrl_SetDate(*args, **kwargs) def GetDate(*args, **kwargs): - """GetDate() -> DateTime""" + """ + GetDate(self) -> DateTime + + Gets the currently selected date. + """ return _calendar.CalendarCtrl_GetDate(*args, **kwargs) def SetLowerDateLimit(*args, **kwargs): - """SetLowerDateLimit(DateTime date=wxDefaultDateTime) -> bool""" - return _calendar.CalendarCtrl_SetLowerDateLimit(*args, **kwargs) + """ + SetLowerDateLimit(self, DateTime date=DefaultDateTime) -> bool - def GetLowerDateLimit(*args, **kwargs): - """GetLowerDateLimit() -> DateTime""" - return _calendar.CalendarCtrl_GetLowerDateLimit(*args, **kwargs) + set the range in which selection can occur + """ + return _calendar.CalendarCtrl_SetLowerDateLimit(*args, **kwargs) def SetUpperDateLimit(*args, **kwargs): - """SetUpperDateLimit(DateTime date=wxDefaultDateTime) -> bool""" + """ + SetUpperDateLimit(self, DateTime date=DefaultDateTime) -> bool + + set the range in which selection can occur + """ return _calendar.CalendarCtrl_SetUpperDateLimit(*args, **kwargs) + def GetLowerDateLimit(*args, **kwargs): + """ + GetLowerDateLimit(self) -> DateTime + + get the range in which selection can occur + """ + return _calendar.CalendarCtrl_GetLowerDateLimit(*args, **kwargs) + def GetUpperDateLimit(*args, **kwargs): - """GetUpperDateLimit() -> DateTime""" + """ + GetUpperDateLimit(self) -> DateTime + + get the range in which selection can occur + """ return _calendar.CalendarCtrl_GetUpperDateLimit(*args, **kwargs) def SetDateRange(*args, **kwargs): - """SetDateRange(DateTime lowerdate=wxDefaultDateTime, DateTime upperdate=wxDefaultDateTime) -> bool""" + """ + SetDateRange(self, DateTime lowerdate=DefaultDateTime, DateTime upperdate=DefaultDateTime) -> bool + + set the range in which selection can occur + """ return _calendar.CalendarCtrl_SetDateRange(*args, **kwargs) def EnableYearChange(*args, **kwargs): - """EnableYearChange(bool enable=True)""" + """ + EnableYearChange(self, bool enable=True) + + This function should be used instead of changing CAL_NO_YEAR_CHANGE + style bit directly. It allows or disallows the user to change the year + interactively. + """ return _calendar.CalendarCtrl_EnableYearChange(*args, **kwargs) def EnableMonthChange(*args, **kwargs): - """EnableMonthChange(bool enable=True)""" + """ + EnableMonthChange(self, bool enable=True) + + This function should be used instead of changing CAL_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 either. + """ return _calendar.CalendarCtrl_EnableMonthChange(*args, **kwargs) def EnableHolidayDisplay(*args, **kwargs): - """EnableHolidayDisplay(bool display=True)""" + """ + EnableHolidayDisplay(self, bool display=True) + + This function should be used instead of changing CAL_SHOW_HOLIDAYS + style bit directly. It enables or disables the special highlighting of + the holidays. + """ return _calendar.CalendarCtrl_EnableHolidayDisplay(*args, **kwargs) def SetHeaderColours(*args, **kwargs): - """SetHeaderColours(Colour colFg, Colour colBg)""" + """ + SetHeaderColours(self, Colour colFg, Colour colBg) + + Header colours are used for painting the weekdays at the top. + """ return _calendar.CalendarCtrl_SetHeaderColours(*args, **kwargs) def GetHeaderColourFg(*args, **kwargs): - """GetHeaderColourFg() -> Colour""" + """ + GetHeaderColourFg(self) -> Colour + + Header colours are used for painting the weekdays at the top. + """ return _calendar.CalendarCtrl_GetHeaderColourFg(*args, **kwargs) def GetHeaderColourBg(*args, **kwargs): - """GetHeaderColourBg() -> Colour""" + """ + GetHeaderColourBg(self) -> Colour + + Header colours are used for painting the weekdays at the top. + """ return _calendar.CalendarCtrl_GetHeaderColourBg(*args, **kwargs) def SetHighlightColours(*args, **kwargs): - """SetHighlightColours(Colour colFg, Colour colBg)""" + """ + SetHighlightColours(self, Colour colFg, Colour colBg) + + Highlight colour is used for the currently selected date. + """ return _calendar.CalendarCtrl_SetHighlightColours(*args, **kwargs) def GetHighlightColourFg(*args, **kwargs): - """GetHighlightColourFg() -> Colour""" + """ + GetHighlightColourFg(self) -> Colour + + Highlight colour is used for the currently selected date. + """ return _calendar.CalendarCtrl_GetHighlightColourFg(*args, **kwargs) def GetHighlightColourBg(*args, **kwargs): - """GetHighlightColourBg() -> Colour""" + """ + GetHighlightColourBg(self) -> Colour + + Highlight colour is used for the currently selected date. + """ return _calendar.CalendarCtrl_GetHighlightColourBg(*args, **kwargs) def SetHolidayColours(*args, **kwargs): - """SetHolidayColours(Colour colFg, Colour colBg)""" + """ + SetHolidayColours(self, Colour colFg, Colour colBg) + + Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is + used). + """ return _calendar.CalendarCtrl_SetHolidayColours(*args, **kwargs) def GetHolidayColourFg(*args, **kwargs): - """GetHolidayColourFg() -> Colour""" + """ + GetHolidayColourFg(self) -> Colour + + Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is + used). + """ return _calendar.CalendarCtrl_GetHolidayColourFg(*args, **kwargs) def GetHolidayColourBg(*args, **kwargs): - """GetHolidayColourBg() -> Colour""" + """ + GetHolidayColourBg(self) -> Colour + + Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is + used). + """ return _calendar.CalendarCtrl_GetHolidayColourBg(*args, **kwargs) def GetAttr(*args, **kwargs): - """GetAttr(size_t day) -> CalendarDateAttr""" + """ + GetAttr(self, size_t day) -> CalendarDateAttr + + Returns the attribute for the given date (should be in the range + 1...31). The returned value may be None + """ return _calendar.CalendarCtrl_GetAttr(*args, **kwargs) def SetAttr(*args, **kwargs): - """SetAttr(size_t day, CalendarDateAttr attr)""" + """ + SetAttr(self, size_t day, CalendarDateAttr attr) + + Associates the attribute with the specified date (in the range + 1...31). If the attribute passed is None, the items attribute is + cleared. + """ return _calendar.CalendarCtrl_SetAttr(*args, **kwargs) def SetHoliday(*args, **kwargs): - """SetHoliday(size_t day)""" + """ + SetHoliday(self, size_t day) + + Marks the specified day as being a holiday in the current month. + """ return _calendar.CalendarCtrl_SetHoliday(*args, **kwargs) def ResetAttr(*args, **kwargs): - """ResetAttr(size_t day)""" + """ + ResetAttr(self, size_t day) + + Clears any attributes associated with the given day (in the range + 1...31). + """ return _calendar.CalendarCtrl_ResetAttr(*args, **kwargs) def HitTest(*args, **kwargs): - """HitTest(Point pos, DateTime date=None, int wd=None) -> int""" - return _calendar.CalendarCtrl_HitTest(*args, **kwargs) + """ + HitTest(Point pos) -> (result, date, weekday) + + Returns 3-tuple with information about the given position on the + calendar control. The first value of the tuple is a result code and + determines the validity of the remaining two values. The result codes + are: - def Enable(*args, **kwargs): - """Enable(bool enable=True) -> bool""" - return _calendar.CalendarCtrl_Enable(*args, **kwargs) + =================== ============================================ + CAL_HITTEST_NOWHERE hit outside of anything + CAL_HITTEST_HEADER hit on the header, weekday is valid + CAL_HITTEST_DAY hit on a day in the calendar, date is set. + =================== ============================================ - def Show(*args, **kwargs): - """Show(bool show=True) -> bool""" - return _calendar.CalendarCtrl_Show(*args, **kwargs) + """ + return _calendar.CalendarCtrl_HitTest(*args, **kwargs) def GetMonthControl(*args, **kwargs): - """GetMonthControl() -> Control""" + """ + GetMonthControl(self) -> Control + + Get the currently shown control for month. + """ return _calendar.CalendarCtrl_GetMonthControl(*args, **kwargs) def GetYearControl(*args, **kwargs): - """GetYearControl() -> Control""" + """ + GetYearControl(self) -> Control + + Get the currently shown control for year. + """ return _calendar.CalendarCtrl_GetYearControl(*args, **kwargs) + def GetClassDefaultAttributes(*args, **kwargs): + """ + GetClassDefaultAttributes(int variant=WINDOW_VARIANT_NORMAL) -> VisualAttributes + + Get the default attributes for this class. This is useful if + you want to use the same font or colour in your own control as + in a standard control -- which is a much better idea than hard + coding specific colours or fonts which might look completely out + of place on the users system, especially if it uses themes. + + The variant parameter is only relevant under Mac currently and is + ignore under other platforms. Under Mac, it will change the size of the + returned font. See SetWindowVariant for more about this. + """ + return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs) + + GetClassDefaultAttributes = staticmethod(GetClassDefaultAttributes) class CalendarCtrlPtr(CalendarCtrl): def __init__(self, this): @@ -311,9 +518,29 @@ cvar = _calendar.cvar CalendarNameStr = cvar.CalendarNameStr def PreCalendarCtrl(*args, **kwargs): - """PreCalendarCtrl() -> CalendarCtrl""" + """ + PreCalendarCtrl() -> CalendarCtrl + + Precreate a CalendarCtrl for 2-phase creation. + """ val = _calendar.new_PreCalendarCtrl(*args, **kwargs) val.thisown = 1 return val +def CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs): + """ + CalendarCtrl_GetClassDefaultAttributes(int variant=WINDOW_VARIANT_NORMAL) -> VisualAttributes + + Get the default attributes for this class. This is useful if + you want to use the same font or colour in your own control as + in a standard control -- which is a much better idea than hard + coding specific colours or fonts which might look completely out + of place on the users system, especially if it uses themes. + + The variant parameter is only relevant under Mac currently and is + ignore under other platforms. Under Mac, it will change the size of the + returned font. See SetWindowVariant for more about this. + """ + return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs) +