X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dce2bd223c2370f001f9ca93e04cbd437ff3f988..d0ee33f5c6908b4ac5e1364381f0ef00942e3936:/wxPython/src/calendar.i?ds=sidebyside diff --git a/wxPython/src/calendar.i b/wxPython/src/calendar.i index 262170001e..803632db52 100644 --- a/wxPython/src/calendar.i +++ b/wxPython/src/calendar.i @@ -10,7 +10,11 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// -%module calendar +%define DOCSTRING +"Classes for an interactive Calendar control." +%enddef + +%module(package="wx", docstring=DOCSTRING) calendar %{ @@ -63,13 +67,13 @@ enum wxCalendarDateBorder DocStr(wxCalendarDateAttr, "A set of customization attributes for a calendar date, which can be -used to control the look of the Calendar object."); +used to control the look of the Calendar object.", ""); class wxCalendarDateAttr { public: DocStr(wxCalendarDateAttr, - "Create a CalendarDateAttr."); + "Create a CalendarDateAttr.", ""); wxCalendarDateAttr(const wxColour& colText = wxNullColour, const wxColour& colBack = wxNullColour, const wxColour& colBorder = wxNullColour, @@ -105,16 +109,23 @@ public: class wxCalendarCtrl; -class wxCalendarEvent : public wxCommandEvent +class wxCalendarEvent : public wxDateEvent { public: wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type); - const wxDateTime GetDate() const; - void SetDate(const wxDateTime &date); void SetWeekDay(const wxDateTime::WeekDay wd); wxDateTime::WeekDay GetWeekDay() const; + %pythoncode { + 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()) + } }; @@ -161,11 +172,11 @@ 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. +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. +EVT_CALENDAR_MONTH event handler.", " Window Styles ------------- @@ -184,12 +195,13 @@ Window Styles 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. @@ -198,6 +210,7 @@ Events 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 @@ -206,14 +219,14 @@ event. "); +MustHaveApp(wxCalendarCtrl); + class wxCalendarCtrl : public wxControl { public: %pythonAppend wxCalendarCtrl "self._setOORInfo(self)" %pythonAppend wxCalendarCtrl() "" - RefDoc(wxCalendarCtrl, ""); // turn it off for the ctors - DocCtorStr( wxCalendarCtrl(wxWindow *parent, wxWindowID id=-1, @@ -222,11 +235,11 @@ public: const wxSize& size = wxDefaultSize, long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS, const wxString& name = wxPyCalendarNameStr), - "Create and show a calendar control."); + "Create and show a calendar control.", ""); DocCtorStrName( wxCalendarCtrl(), - "Precreate a CalendarCtrl for 2-phase creation.", + "Precreate a CalendarCtrl for 2-phase creation.", "", PreCalendarCtrl); DocDeclStr( @@ -238,129 +251,129 @@ public: long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS, const wxString& name = wxPyCalendarNameStr), "Acutally create the GUI portion of the CalendarCtrl for 2-phase -creation."); +creation.", ""); DocDeclStr( void, SetDate(const wxDateTime& date), - "Sets the current date."); + "Sets the current date.", ""); DocDeclStr( const wxDateTime&, GetDate() const, - "Gets the currently selected date."); + "Gets the currently selected date.", ""); DocDeclStr( bool, SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime), - "set the range in which selection can occur"); + "set the range in which selection can occur", ""); DocDeclStr( bool, SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime), - "set the range in which selection can occur"); + "set the range in which selection can occur", ""); DocDeclStr( const wxDateTime&, GetLowerDateLimit() const, - "get the range in which selection can occur"); + "get the range in which selection can occur", ""); DocDeclStr( const wxDateTime&, GetUpperDateLimit() const, - "get the range in which selection can occur"); + "get the range in which selection can occur", ""); DocDeclStr( bool, SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime, const wxDateTime& upperdate = wxDefaultDateTime), - "set the range in which selection can occur"); + "set the range in which selection can occur", ""); DocDeclStr( - void, EnableYearChange(bool enable = True), + void, EnableYearChange(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."); +interactively.", ""); DocDeclStr( - void, EnableMonthChange(bool enable = True), + void, EnableMonthChange(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."); +not be changed either.", ""); DocDeclStr( - void, EnableHolidayDisplay(bool display = True), + void, EnableHolidayDisplay(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."); +the holidays.", ""); DocDeclStr( void, SetHeaderColours(const wxColour& colFg, const wxColour& colBg), - "Header colours are used for painting the weekdays at the top."); + "Header colours are used for painting the weekdays at the top.", ""); DocDeclStr( wxColour, GetHeaderColourFg() const, - "Header colours are used for painting the weekdays at the top."); + "Header colours are used for painting the weekdays at the top.", ""); DocDeclStr( wxColour, GetHeaderColourBg() const, - "Header colours are used for painting the weekdays at the top."); + "Header colours are used for painting the weekdays at the top.", ""); DocDeclStr( void, SetHighlightColours(const wxColour& colFg, const wxColour& colBg), - "Highlight colour is used for the currently selected date."); + "Highlight colour is used for the currently selected date.", ""); DocDeclStr( wxColour, GetHighlightColourFg() const, - "Highlight colour is used for the currently selected date."); + "Highlight colour is used for the currently selected date.", ""); DocDeclStr( wxColour, GetHighlightColourBg() const, - "Highlight colour is used for the currently selected date."); + "Highlight colour is used for the currently selected date.", ""); DocDeclStr( void, SetHolidayColours(const wxColour& colFg, const wxColour& colBg), "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is -used)."); +used).", ""); DocDeclStr( wxColour, GetHolidayColourFg() const, "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is -used)."); +used).", ""); DocDeclStr( wxColour, GetHolidayColourBg() const, "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is -used)."); +used).", ""); DocDeclStr( wxCalendarDateAttr*, GetAttr(size_t day) const, "Returns the attribute for the given date (should be in the range -1...31). The returned value may be None"); +1...31). The returned value may be None", ""); DocDeclStr( void, SetAttr(size_t day, wxCalendarDateAttr *attr), "Associates the attribute with the specified date (in the range 1...31). If the attribute passed is None, the items attribute is -cleared."); +cleared.", ""); DocDeclStr( void, SetHoliday(size_t day), - "Marks the specified day as being a holiday in the current month."); + "Marks the specified day as being a holiday in the current month.", ""); DocDeclStr( void, ResetAttr(size_t day), "Clears any attributes associated with the given day (in the range -1...31)."); +1...31).", ""); @@ -368,8 +381,9 @@ cleared."); "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: +determines the validity of the remaining two values.", +" +The result codes are: =================== ============================================ CAL_HITTEST_NOWHERE hit outside of anything @@ -382,7 +396,7 @@ are: wxDateTime* date = new wxDateTime; wxDateTime::WeekDay wd; wxCalendarHitTestResult result = self->HitTest(pos, date, &wd); - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); PyObject* tup = PyTuple_New(3); PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(result)); PyTuple_SET_ITEM(tup, 1, wxPyConstructObject(date, wxT("wxDateTime"), 1)); @@ -394,14 +408,65 @@ are: DocDeclStr( wxControl*, GetMonthControl() const, - "Get the currently shown control for month."); + "Get the currently shown control for month.", ""); DocDeclStr( wxControl*, GetYearControl() const, - "Get the currently shown control for year."); -}; + "Get the currently shown control for year.", ""); + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); + + %pythoncode { + 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()) + } +}; + +%pythoncode { +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 +} + //--------------------------------------------------------------------------- %init %{