X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44bf767a1d67bd6a2ede60d499ba1b5911fd4cbd..42f8298f6f42d5d63bb3caf65682b7d9d9f8b702:/wxPython/src/mac/calendar.py diff --git a/wxPython/src/mac/calendar.py b/wxPython/src/mac/calendar.py index 64a43d13f8..cebc5cfc2b 100644 --- a/wxPython/src/mac/calendar.py +++ b/wxPython/src/mac/calendar.py @@ -7,6 +7,47 @@ Classes for an interactive Calendar control. import _calendar +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 @@ -122,7 +163,8 @@ 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): @@ -131,14 +173,6 @@ class CalendarEvent(_core.CommandEvent): 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) - def SetWeekDay(*args, **kwargs): """SetWeekDay(self, int wd)""" return _calendar.CalendarEvent_SetWeekDay(*args, **kwargs) @@ -149,11 +183,11 @@ class CalendarEvent(_core.CommandEvent): def PySetDate(self, date): """takes datetime.datetime or datetime.date object""" - self.SetDate(_py2wx(date)) + self.SetDate(_pydate2wxdate(date)) def PyGetDate(self): """returns datetime.date object""" - return _wx2py(self.GetDate()) + return _wxdate2pydate(self.GetDate()) class CalendarEventPtr(CalendarEvent): @@ -197,7 +231,7 @@ class CalendarCtrl(_core.Control): 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 @@ -476,19 +510,19 @@ class CalendarCtrl(_core.Control): GetClassDefaultAttributes = staticmethod(GetClassDefaultAttributes) def PySetDate(self, date): """takes datetime.datetime or datetime.date object""" - self.SetDate(_py2wx(date)) + self.SetDate(_pydate2wxdate(date)) def PyGetDate(self): """returns datetime.date object""" - return _wx2py(self.GetDate()) + return _wxdate2pydate(self.GetDate()) def PySetLowerDateLimit(self, date): """takes datetime.datetime or datetime.date object""" - self.SetLowerDateLimit(_py2wx(date)) + self.SetLowerDateLimit(_pydate2wxdate(date)) def PySetUpperDateLimit(self, date): """takes datetime.datetime or datetime.date object""" - self.SetUpperDateLimit(_py2wx(date)) + self.SetUpperDateLimit(_pydate2wxdate(date)) def PySetDateRange(self, lowerdate, upperdate): """takes datetime.datetime or datetime.date objects""" @@ -497,11 +531,11 @@ class CalendarCtrl(_core.Control): def PyGetLowerDateLimit(self): """returns datetime.date object""" - return _wx2py(self.GetLowerDateLimit()) + return _wxdate2pydate(self.GetLowerDateLimit()) def PyGetUpperDateLimit(self): """returns datetime.date object""" - return _wx2py(self.GetUpperDateLimit()) + return _wxdate2pydate(self.GetUpperDateLimit()) class CalendarCtrlPtr(CalendarCtrl): @@ -540,17 +574,20 @@ def CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs): """ return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs) -def _py2wx(date): +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 _wx2py(date): +def _wxdate2pydate(date): import datetime assert isinstance(date, wx.DateTime) - ymd = map(int, date.FormatISODate().split('-')) - return datetime.date(*ymd) + if date.IsValid(): + ymd = map(int, date.FormatISODate().split('-')) + return datetime.date(*ymd) + else: + return None