- // construction
- wxCalendarCtrl(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& date = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
- const char* name = "calendar");
- %name(wxPreCalendarCtrl)wxCalendarCtrl();
-
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& date = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
- const char* name = "calendar");
-
- %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
- %pragma(python) addtomethod = "wxPreCalendarCtrl:val._setOORInfo(val)"
-
- // set/get the current date
- // ------------------------
-
- void SetDate(const wxDateTime& date);
- const wxDateTime& GetDate() const;
-
- // set/get the range in which selection can occur
- // ---------------------------------------------
-
- bool SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime);
- const wxDateTime& GetLowerDateLimit() const;
- bool SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime);
- const wxDateTime& GetUpperDateLimit() const;
-
- bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime,
- const wxDateTime& upperdate = wxDefaultDateTime);
-
-
- // calendar mode
- // -------------
-
- // some calendar styles can't be changed after the control creation by
- // just using SetWindowStyle() and Refresh() and the functions below
- // should be used instead for them
-
- // corresponds to wxCAL_NO_YEAR_CHANGE bit
- void EnableYearChange(bool enable = TRUE);
-
- // corresponds to wxCAL_NO_MONTH_CHANGE bit
- void EnableMonthChange(bool enable = TRUE);
-
- // corresponds to wxCAL_SHOW_HOLIDAYS bit
- void EnableHolidayDisplay(bool display = TRUE);
-
- // customization
- // -------------
-
- // header colours are used for painting the weekdays at the top
- void SetHeaderColours(const wxColour& colFg, const wxColour& colBg);
- const wxColour& GetHeaderColourFg() const;
- const wxColour& GetHeaderColourBg() const;
-
- // highlight colour is used for the currently selected date
- void SetHighlightColours(const wxColour& colFg, const wxColour& colBg);
- const wxColour& GetHighlightColourFg() const;
- const wxColour& GetHighlightColourBg() const;
-
- // holiday colour is used for the holidays (if style & wxCAL_SHOW_HOLIDAYS)
- void SetHolidayColours(const wxColour& colFg, const wxColour& colBg);
- const wxColour& GetHolidayColourFg() const;
- const wxColour& GetHolidayColourBg() const;
-
- // an item without custom attributes is drawn with the default colours and
- // font and without border, setting custom attributes allows to modify this
- //
- // the day parameter should be in 1..31 range, for days 29, 30, 31 the
- // corresponding attribute is just unused if there is no such day in the
- // current month
-
- wxCalendarDateAttr *GetAttr(size_t day) const;
- void SetAttr(size_t day, wxCalendarDateAttr *attr);
-
- void SetHoliday(size_t day);
-
- void ResetAttr(size_t day);
-
- // returns one of wxCAL_HITTEST_XXX constants and fills either date or wd
- // with the corresponding value (none for NOWHERE, the date for DAY and wd
- // for HEADER)
- wxCalendarHitTestResult HitTest(const wxPoint& pos,
- wxDateTime *date = NULL,
- wxDateTime::WeekDay *wd = NULL);
-
-
- bool Enable(bool enable = TRUE);
- bool Show(bool show = TRUE);
-
+ %pythonAppend wxCalendarCtrl "self._setOORInfo(self)"
+ %pythonAppend wxCalendarCtrl() ""
+
+ DocCtorStr(
+ wxCalendarCtrl(wxWindow *parent,
+ wxWindowID id=-1,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
+ const wxString& name = wxPyCalendarNameStr),
+ "Create and show a calendar control.", "");
+
+ DocCtorStrName(
+ wxCalendarCtrl(),
+ "Precreate a CalendarCtrl for 2-phase creation.", "",
+ PreCalendarCtrl);
+
+ DocDeclStr(
+ bool , Create(wxWindow *parent,
+ wxWindowID id,
+ const wxDateTime& date = wxDefaultDateTime,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
+ const wxString& name = wxPyCalendarNameStr),
+ "Acutally create the GUI portion of the CalendarCtrl for 2-phase
+creation.", "");
+
+
+
+ DocDeclStr(
+ void, SetDate(const wxDateTime& date),
+ "Sets the current date.", "");
+
+ DocDeclStr(
+ const wxDateTime, GetDate() const,
+ "Gets the currently selected date.", "");
+
+
+
+ DocDeclStr(
+ bool, SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime),
+ "set the range in which selection can occur", "");
+
+ DocDeclStr(
+ bool, SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime),
+ "set the range in which selection can occur", "");
+
+ DocDeclStr(
+ const wxDateTime, GetLowerDateLimit() const,
+ "get the range in which selection can occur", "");
+
+ DocDeclStr(
+ const wxDateTime, GetUpperDateLimit() const,
+ "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", "");
+
+
+
+
+ DocDeclStr(
+ 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.", "");
+
+ DocDeclStr(
+ 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.", "");
+
+ DocDeclStr(
+ 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.", "");
+
+
+
+ DocDeclStr(
+ void, SetHeaderColours(const wxColour& colFg, const wxColour& colBg),
+ "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.", "");
+
+ DocDeclStr(
+ wxColour, GetHeaderColourBg() const,
+ "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.", "");
+
+ DocDeclStr(
+ wxColour, GetHighlightColourFg() const,
+ "Highlight colour is used for the currently selected date.", "");
+
+ DocDeclStr(
+ wxColour, GetHighlightColourBg() const,
+ "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).", "");
+
+ DocDeclStr(
+ wxColour, GetHolidayColourFg() const,
+ "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
+used).", "");
+
+ DocDeclStr(
+ wxColour, GetHolidayColourBg() const,
+ "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
+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", "");
+
+ %disownarg(wxCalendarDateAttr *attr);
+ 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.", "");
+ %cleardisown(wxCalendarDateAttr *attr);
+
+ DocDeclStr(
+ void, SetHoliday(size_t day),
+ "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).", "");
+
+
+
+ DocAStr(HitTest,
+ "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.
+ =================== ============================================
+");
+ %extend {
+ PyObject* HitTest(const wxPoint& pos) {
+ wxDateTime* date = new wxDateTime;
+ wxDateTime::WeekDay wd;
+ wxCalendarHitTestResult result = self->HitTest(pos, date, &wd);
+ 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));
+ PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(wd));
+ wxPyEndBlockThreads(blocked);
+ return tup;
+ }
+ }
+
+ DocDeclStr(
+ wxControl*, GetMonthControl() const,
+ "Get the currently shown control for month.", "");
+
+ DocDeclStr(
+ wxControl*, GetYearControl() const,
+ "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())
+ }