]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/mac/calendar.py
reSWIGged
[wxWidgets.git] / wxPython / src / mac / calendar.py
index d9b21268e993814cb02738bcc0a6026754e07be8..cebc5cfc2b08980c58f377884b84006305116cd8 100644 (file)
@@ -1,11 +1,57 @@
 # This file was created automatically by SWIG.
 # Don't modify this file, modify the SWIG interface instead.
 
+"""
+Classes for an interactive Calendar control.
+"""
+
 import _calendar
 
-import misc
-import core
-wx = core 
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+def _swig_setattr_nondynamic_method(set):
+    def set_attr(self,name,value):
+        if hasattr(self,name) or (name in ("this", "thisown")):
+            set(self,name,value)
+        else:
+            raise AttributeError("You cannot add attributes to %s" % self)
+    return set_attr
+
+
+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
@@ -24,14 +70,14 @@ 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.
+    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=wxNullColour, Colour colBack=wxNullColour, 
+        __init__(self, Colour colText=wxNullColour, Colour colBack=wxNullColour, 
             Colour colBorder=wxNullColour, Font font=wxNullFont, 
             int border=CAL_BORDER_NONE) -> CalendarDateAttr
 
@@ -42,71 +88,71 @@ class CalendarDateAttr(object):
         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)
 
 
@@ -117,31 +163,32 @@ class CalendarDateAttrPtr(CalendarDateAttr):
         self.__class__ = CalendarDateAttr
 _calendar.CalendarDateAttr_swigregister(CalendarDateAttrPtr)
 
-class CalendarEvent(core.CommandEvent):
+class CalendarEvent(_core.DateEvent):
+    """Proxy of C++ CalendarEvent class"""
     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"""
-        return _calendar.CalendarEvent_GetDate(*args, **kwargs)
-
-    def SetDate(*args, **kwargs):
-        """SetDate(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)
 
+    def PySetDate(self, date):
+        """takes datetime.datetime or datetime.date object"""
+        self.SetDate(_pydate2wxdate(date))
+
+    def PyGetDate(self):
+        """returns datetime.date object"""
+        return _wxdate2pydate(self.GetDate())
+
 
 class CalendarEventPtr(CalendarEvent):
     def __init__(self, this):
@@ -163,13 +210,38 @@ 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):
-    """The calendar control allows the user to pick a date interactively."""
+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 <Return> 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.
+    """
     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=DefaultDateTime, 
+        __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
@@ -184,18 +256,19 @@ class CalendarCtrl(core.Control):
 
     def Create(*args, **kwargs):
         """
-        Create(Window parent, int id, DateTime date=DefaultDateTime, 
+        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.
+        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.
         """
@@ -203,7 +276,7 @@ class CalendarCtrl(core.Control):
 
     def GetDate(*args, **kwargs):
         """
-        GetDate() -> DateTime
+        GetDate(self) -> DateTime
 
         Gets the currently selected date.
         """
@@ -211,7 +284,7 @@ class CalendarCtrl(core.Control):
 
     def SetLowerDateLimit(*args, **kwargs):
         """
-        SetLowerDateLimit(DateTime date=DefaultDateTime) -> bool
+        SetLowerDateLimit(self, DateTime date=DefaultDateTime) -> bool
 
         set the range in which selection can occur
         """
@@ -219,7 +292,7 @@ class CalendarCtrl(core.Control):
 
     def SetUpperDateLimit(*args, **kwargs):
         """
-        SetUpperDateLimit(DateTime date=DefaultDateTime) -> bool
+        SetUpperDateLimit(self, DateTime date=DefaultDateTime) -> bool
 
         set the range in which selection can occur
         """
@@ -227,7 +300,7 @@ class CalendarCtrl(core.Control):
 
     def GetLowerDateLimit(*args, **kwargs):
         """
-        GetLowerDateLimit() -> DateTime
+        GetLowerDateLimit(self) -> DateTime
 
         get the range in which selection can occur
         """
@@ -235,7 +308,7 @@ class CalendarCtrl(core.Control):
 
     def GetUpperDateLimit(*args, **kwargs):
         """
-        GetUpperDateLimit() -> DateTime
+        GetUpperDateLimit(self) -> DateTime
 
         get the range in which selection can occur
         """
@@ -243,7 +316,7 @@ class CalendarCtrl(core.Control):
 
     def SetDateRange(*args, **kwargs):
         """
-        SetDateRange(DateTime lowerdate=DefaultDateTime, DateTime upperdate=DefaultDateTime) -> bool
+        SetDateRange(self, DateTime lowerdate=DefaultDateTime, DateTime upperdate=DefaultDateTime) -> bool
 
         set the range in which selection can occur
         """
@@ -251,7 +324,7 @@ class CalendarCtrl(core.Control):
 
     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
@@ -261,116 +334,122 @@ class CalendarCtrl(core.Control):
 
     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.
+        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.
+        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
+        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
+        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
+        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
+        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
+        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
+        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)
+        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)
+        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)
+        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
+        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.
+        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.
         """
@@ -378,9 +457,10 @@ class CalendarCtrl(core.Control):
 
     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).
+        Clears any attributes associated with the given day (in the range
+        1...31).
         """
         return _calendar.CalendarCtrl_ResetAttr(*args, **kwargs)
 
@@ -388,33 +468,75 @@ class CalendarCtrl(core.Control):
         """
         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:
-
-            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.
-
+        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.
         """
         return _calendar.CalendarCtrl_HitTest(*args, **kwargs)
 
     def GetMonthControl(*args, **kwargs):
         """
-        GetMonthControl() -> Control
+        GetMonthControl(self) -> Control
 
-        get the currently shown control for month
+        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
+        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
+        user's 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 `wx.Window.SetWindowVariant` for more about
+        this.
+        """
+        return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs)
+
+    GetClassDefaultAttributes = staticmethod(GetClassDefaultAttributes)
+    def PySetDate(self, date):
+        """takes datetime.datetime or datetime.date object"""
+        self.SetDate(_pydate2wxdate(date))
+
+    def PyGetDate(self):
+        """returns datetime.date object"""
+        return _wxdate2pydate(self.GetDate())
+
+    def PySetLowerDateLimit(self, date):
+        """takes datetime.datetime or datetime.date object"""
+        self.SetLowerDateLimit(_pydate2wxdate(date))
+
+    def PySetUpperDateLimit(self, date):
+        """takes datetime.datetime or datetime.date object"""
+        self.SetUpperDateLimit(_pydate2wxdate(date))
+
+    def PySetDateRange(self, lowerdate, upperdate):
+        """takes datetime.datetime or datetime.date objects"""
+        self.PySetLowerDateLimit(lowerdate)
+        self.PySetUpperDateLimit(upperdate)
+
+    def PyGetLowerDateLimit(self):
+        """returns datetime.date object"""
+        return _wxdate2pydate(self.GetLowerDateLimit())
+
+    def PyGetUpperDateLimit(self):
+        """returns datetime.date object"""
+        return _wxdate2pydate(self.GetUpperDateLimit())
+
 
 class CalendarCtrlPtr(CalendarCtrl):
     def __init__(self, this):
@@ -435,4 +557,37 @@ def 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
+    user's 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 `wx.Window.SetWindowVariant` for more about
+    this.
+    """
+    return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs)
+
+def _pydate2wxdate(date):
+    import datetime
+    assert isinstance(date, (datetime.datetime, datetime.date))
+    tt = date.timetuple()
+    dmy = (tt[2], tt[1]-1, tt[0])
+    return wx.DateTimeFromDMY(*dmy)
+
+def _wxdate2pydate(date):
+    import datetime
+    assert isinstance(date, wx.DateTime)
+    if date.IsValid():
+        ymd = map(int, date.FormatISODate().split('-'))
+        return datetime.date(*ymd)
+    else:
+        return None
+