]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/msw/calendar.py
Lots of little tweaks, mostly to draw selected items better such that
[wxWidgets.git] / wxPython / src / msw / calendar.py
index dd91a875cd095e625da4017dd81ea730791e9f79..8b66d7f2bfa45c0b01ec61c8806e5333e444fe3e 100644 (file)
@@ -1,7 +1,59 @@
-# This file was created automatically by SWIG.
+# This file was created automatically by SWIG 1.3.29.
 # Don't modify this file, modify the SWIG interface instead.
 
+"""
+Classes for an interactive Calendar control.
+"""
+
 import _calendar
+import new
+new_instancemethod = new.instancemethod
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "thisown"): return self.this.own(value)
+    if (name == "this"):
+        if type(value).__name__ == 'PySwigObject':
+            self.__dict__[name] = value
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name):
+        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):
+    if (name == "thisown"): return self.this.own()
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+def _swig_repr(self):
+    try: strthis = "proxy of " + self.this.__repr__()
+    except: strthis = ""
+    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
+
+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 (name == "thisown"): return self.this.own(value)
+        if hasattr(self,name) or (name == "this"):
+            set(self,name,value)
+        else:
+            raise AttributeError("You cannot add attributes to %s" % self)
+    return set_attr
+
 
 import _misc
 import _core
@@ -28,9 +80,9 @@ 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):
+    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
+    __repr__ = _swig_repr
+    def __init__(self, *args, **kwargs): 
         """
         __init__(self, Colour colText=wxNullColour, Colour colBack=wxNullColour, 
             Colour colBorder=wxNullColour, Font font=wxNullFont, 
@@ -38,10 +90,9 @@ class CalendarDateAttr(object):
 
         Create a CalendarDateAttr.
         """
-        newobj = _calendar.new_CalendarDateAttr(*args, **kwargs)
-        self.this = newobj.this
-        self.thisown = 1
-        del newobj.thisown
+        _calendar.CalendarDateAttr_swiginit(self,_calendar.new_CalendarDateAttr(*args, **kwargs))
+    __swig_destroy__ = _calendar.delete_CalendarDateAttr
+    __del__ = lambda self : None;
     def SetTextColour(*args, **kwargs):
         """SetTextColour(self, Colour colText)"""
         return _calendar.CalendarDateAttr_SetTextColour(*args, **kwargs)
@@ -110,31 +161,20 @@ class CalendarDateAttr(object):
         """GetBorder(self) -> int"""
         return _calendar.CalendarDateAttr_GetBorder(*args, **kwargs)
 
-
-class CalendarDateAttrPtr(CalendarDateAttr):
-    def __init__(self, this):
-        self.this = this
-        if not hasattr(self,"thisown"): self.thisown = 0
-        self.__class__ = CalendarDateAttr
-_calendar.CalendarDateAttr_swigregister(CalendarDateAttrPtr)
-
-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__(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(self) -> DateTime"""
-        return _calendar.CalendarEvent_GetDate(*args, **kwargs)
-
-    def SetDate(*args, **kwargs):
-        """SetDate(self, DateTime date)"""
-        return _calendar.CalendarEvent_SetDate(*args, **kwargs)
-
+    BackgroundColour = property(GetBackgroundColour,SetBackgroundColour,doc="See `GetBackgroundColour` and `SetBackgroundColour`") 
+    Border = property(GetBorder,SetBorder,doc="See `GetBorder` and `SetBorder`") 
+    BorderColour = property(GetBorderColour,SetBorderColour,doc="See `GetBorderColour` and `SetBorderColour`") 
+    Font = property(GetFont,SetFont,doc="See `GetFont` and `SetFont`") 
+    TextColour = property(GetTextColour,SetTextColour,doc="See `GetTextColour` and `SetTextColour`") 
+_calendar.CalendarDateAttr_swigregister(CalendarDateAttr)
+
+class CalendarEvent(_core.DateEvent):
+    """Proxy of C++ CalendarEvent class"""
+    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
+    __repr__ = _swig_repr
+    def __init__(self, *args, **kwargs): 
+        """__init__(self, CalendarCtrl cal, EventType type) -> CalendarEvent"""
+        _calendar.CalendarEvent_swiginit(self,_calendar.new_CalendarEvent(*args, **kwargs))
     def SetWeekDay(*args, **kwargs):
         """SetWeekDay(self, int wd)"""
         return _calendar.CalendarEvent_SetWeekDay(*args, **kwargs)
@@ -143,13 +183,16 @@ class CalendarEvent(_core.CommandEvent):
         """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):
-        self.this = this
-        if not hasattr(self,"thisown"): self.thisown = 0
-        self.__class__ = CalendarEvent
-_calendar.CalendarEvent_swigregister(CalendarEventPtr)
+    WeekDay = property(GetWeekDay,SetWeekDay,doc="See `GetWeekDay` and `SetWeekDay`") 
+_calendar.CalendarEvent_swigregister(CalendarEvent)
 
 wxEVT_CALENDAR_DOUBLECLICKED = _calendar.wxEVT_CALENDAR_DOUBLECLICKED
 wxEVT_CALENDAR_SEL_CHANGED = _calendar.wxEVT_CALENDAR_SEL_CHANGED
@@ -182,56 +225,18 @@ class CalendarCtrl(_core.Control):
 
     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
+    `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.
+    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):
+    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
+    __repr__ = _swig_repr
+    def __init__(self, *args, **kwargs): 
         """
         __init__(self, Window parent, int id=-1, DateTime date=DefaultDateTime, 
             Point pos=DefaultPosition, Size size=DefaultSize, 
@@ -240,10 +245,7 @@ class CalendarCtrl(_core.Control):
 
         Create and show a calendar control.
         """
-        newobj = _calendar.new_CalendarCtrl(*args, **kwargs)
-        self.this = newobj.this
-        self.thisown = 1
-        del newobj.thisown
+        _calendar.CalendarCtrl_swiginit(self,_calendar.new_CalendarCtrl(*args, **kwargs))
         self._setOORInfo(self)
 
     def Create(*args, **kwargs):
@@ -462,15 +464,7 @@ class CalendarCtrl(_core.Control):
 
         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.
-            ===================    ============================================
-
+        determines the validity of the remaining two values.
         """
         return _calendar.CalendarCtrl_HitTest(*args, **kwargs)
 
@@ -494,26 +488,61 @@ class CalendarCtrl(_core.Control):
         """
         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.
+        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 SetWindowVariant for more about this.
+        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)
-
-class CalendarCtrlPtr(CalendarCtrl):
-    def __init__(self, this):
-        self.this = this
-        if not hasattr(self,"thisown"): self.thisown = 0
-        self.__class__ = CalendarCtrl
-_calendar.CalendarCtrl_swigregister(CalendarCtrlPtr)
+    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())
+
+    Date = property(GetDate,SetDate,doc="See `GetDate` and `SetDate`") 
+    HeaderColourBg = property(GetHeaderColourBg,doc="See `GetHeaderColourBg`") 
+    HeaderColourFg = property(GetHeaderColourFg,doc="See `GetHeaderColourFg`") 
+    HighlightColourBg = property(GetHighlightColourBg,doc="See `GetHighlightColourBg`") 
+    HighlightColourFg = property(GetHighlightColourFg,doc="See `GetHighlightColourFg`") 
+    HolidayColourBg = property(GetHolidayColourBg,doc="See `GetHolidayColourBg`") 
+    HolidayColourFg = property(GetHolidayColourFg,doc="See `GetHolidayColourFg`") 
+    LowerDateLimit = property(GetLowerDateLimit,SetLowerDateLimit,doc="See `GetLowerDateLimit` and `SetLowerDateLimit`") 
+    MonthControl = property(GetMonthControl,doc="See `GetMonthControl`") 
+    UpperDateLimit = property(GetUpperDateLimit,SetUpperDateLimit,doc="See `GetUpperDateLimit` and `SetUpperDateLimit`") 
+    YearControl = property(GetYearControl,doc="See `GetYearControl`") 
+_calendar.CalendarCtrl_swigregister(CalendarCtrl)
 cvar = _calendar.cvar
 CalendarNameStr = cvar.CalendarNameStr
 
@@ -524,23 +553,40 @@ def PreCalendarCtrl(*args, **kwargs):
     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.
+    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 SetWindowVariant for more about this.
+    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)
+  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
+