X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/db3e571a3979e9d3fc66dad435630e0ca8fdac43..5e4835243a9d77a73e2fe928110edfb6786f7980:/wxPython/src/gtk/calendar.py?ds=sidebyside diff --git a/wxPython/src/gtk/calendar.py b/wxPython/src/gtk/calendar.py index 6753cd41f1..71b85d2a05 100644 --- a/wxPython/src/gtk/calendar.py +++ b/wxPython/src/gtk/calendar.py @@ -147,6 +147,14 @@ 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): @@ -194,46 +202,6 @@ class CalendarCtrl(_core.Control): 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,) @@ -469,14 +437,6 @@ 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. - =================== ============================================ - """ return _calendar.CalendarCtrl_HitTest(*args, **kwargs) @@ -514,6 +474,35 @@ class CalendarCtrl(_core.Control): 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): @@ -551,4 +540,20 @@ def 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 +