]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/msw/calendar.py
Allow the OOR reference to be saved without doing an INCREF. This
[wxWidgets.git] / wxPython / src / msw / calendar.py
1 # This file was created automatically by SWIG.
2 # Don't modify this file, modify the SWIG interface instead.
3
4 """
5 Classes for an interactive Calendar control.
6 """
7
8 import _calendar
9
10 import _misc
11 import _core
12 wx = _core
13 __docfilter__ = wx.__DocFilter(globals())
14 CAL_SUNDAY_FIRST = _calendar.CAL_SUNDAY_FIRST
15 CAL_MONDAY_FIRST = _calendar.CAL_MONDAY_FIRST
16 CAL_SHOW_HOLIDAYS = _calendar.CAL_SHOW_HOLIDAYS
17 CAL_NO_YEAR_CHANGE = _calendar.CAL_NO_YEAR_CHANGE
18 CAL_NO_MONTH_CHANGE = _calendar.CAL_NO_MONTH_CHANGE
19 CAL_SEQUENTIAL_MONTH_SELECTION = _calendar.CAL_SEQUENTIAL_MONTH_SELECTION
20 CAL_SHOW_SURROUNDING_WEEKS = _calendar.CAL_SHOW_SURROUNDING_WEEKS
21 CAL_HITTEST_NOWHERE = _calendar.CAL_HITTEST_NOWHERE
22 CAL_HITTEST_HEADER = _calendar.CAL_HITTEST_HEADER
23 CAL_HITTEST_DAY = _calendar.CAL_HITTEST_DAY
24 CAL_HITTEST_INCMONTH = _calendar.CAL_HITTEST_INCMONTH
25 CAL_HITTEST_DECMONTH = _calendar.CAL_HITTEST_DECMONTH
26 CAL_HITTEST_SURROUNDING_WEEK = _calendar.CAL_HITTEST_SURROUNDING_WEEK
27 CAL_BORDER_NONE = _calendar.CAL_BORDER_NONE
28 CAL_BORDER_SQUARE = _calendar.CAL_BORDER_SQUARE
29 CAL_BORDER_ROUND = _calendar.CAL_BORDER_ROUND
30 class CalendarDateAttr(object):
31 """
32 A set of customization attributes for a calendar date, which can be
33 used to control the look of the Calendar object.
34 """
35 def __repr__(self):
36 return "<%s.%s; proxy of C++ wxCalendarDateAttr instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
37 def __init__(self, *args, **kwargs):
38 """
39 __init__(self, Colour colText=wxNullColour, Colour colBack=wxNullColour,
40 Colour colBorder=wxNullColour, Font font=wxNullFont,
41 int border=CAL_BORDER_NONE) -> CalendarDateAttr
42
43 Create a CalendarDateAttr.
44 """
45 newobj = _calendar.new_CalendarDateAttr(*args, **kwargs)
46 self.this = newobj.this
47 self.thisown = 1
48 del newobj.thisown
49 def SetTextColour(*args, **kwargs):
50 """SetTextColour(self, Colour colText)"""
51 return _calendar.CalendarDateAttr_SetTextColour(*args, **kwargs)
52
53 def SetBackgroundColour(*args, **kwargs):
54 """SetBackgroundColour(self, Colour colBack)"""
55 return _calendar.CalendarDateAttr_SetBackgroundColour(*args, **kwargs)
56
57 def SetBorderColour(*args, **kwargs):
58 """SetBorderColour(self, Colour col)"""
59 return _calendar.CalendarDateAttr_SetBorderColour(*args, **kwargs)
60
61 def SetFont(*args, **kwargs):
62 """SetFont(self, Font font)"""
63 return _calendar.CalendarDateAttr_SetFont(*args, **kwargs)
64
65 def SetBorder(*args, **kwargs):
66 """SetBorder(self, int border)"""
67 return _calendar.CalendarDateAttr_SetBorder(*args, **kwargs)
68
69 def SetHoliday(*args, **kwargs):
70 """SetHoliday(self, bool holiday)"""
71 return _calendar.CalendarDateAttr_SetHoliday(*args, **kwargs)
72
73 def HasTextColour(*args, **kwargs):
74 """HasTextColour(self) -> bool"""
75 return _calendar.CalendarDateAttr_HasTextColour(*args, **kwargs)
76
77 def HasBackgroundColour(*args, **kwargs):
78 """HasBackgroundColour(self) -> bool"""
79 return _calendar.CalendarDateAttr_HasBackgroundColour(*args, **kwargs)
80
81 def HasBorderColour(*args, **kwargs):
82 """HasBorderColour(self) -> bool"""
83 return _calendar.CalendarDateAttr_HasBorderColour(*args, **kwargs)
84
85 def HasFont(*args, **kwargs):
86 """HasFont(self) -> bool"""
87 return _calendar.CalendarDateAttr_HasFont(*args, **kwargs)
88
89 def HasBorder(*args, **kwargs):
90 """HasBorder(self) -> bool"""
91 return _calendar.CalendarDateAttr_HasBorder(*args, **kwargs)
92
93 def IsHoliday(*args, **kwargs):
94 """IsHoliday(self) -> bool"""
95 return _calendar.CalendarDateAttr_IsHoliday(*args, **kwargs)
96
97 def GetTextColour(*args, **kwargs):
98 """GetTextColour(self) -> Colour"""
99 return _calendar.CalendarDateAttr_GetTextColour(*args, **kwargs)
100
101 def GetBackgroundColour(*args, **kwargs):
102 """GetBackgroundColour(self) -> Colour"""
103 return _calendar.CalendarDateAttr_GetBackgroundColour(*args, **kwargs)
104
105 def GetBorderColour(*args, **kwargs):
106 """GetBorderColour(self) -> Colour"""
107 return _calendar.CalendarDateAttr_GetBorderColour(*args, **kwargs)
108
109 def GetFont(*args, **kwargs):
110 """GetFont(self) -> Font"""
111 return _calendar.CalendarDateAttr_GetFont(*args, **kwargs)
112
113 def GetBorder(*args, **kwargs):
114 """GetBorder(self) -> int"""
115 return _calendar.CalendarDateAttr_GetBorder(*args, **kwargs)
116
117
118 class CalendarDateAttrPtr(CalendarDateAttr):
119 def __init__(self, this):
120 self.this = this
121 if not hasattr(self,"thisown"): self.thisown = 0
122 self.__class__ = CalendarDateAttr
123 _calendar.CalendarDateAttr_swigregister(CalendarDateAttrPtr)
124
125 class CalendarEvent(_core.CommandEvent):
126 def __repr__(self):
127 return "<%s.%s; proxy of C++ wxCalendarEvent instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
128 def __init__(self, *args, **kwargs):
129 """__init__(self, CalendarCtrl cal, wxEventType type) -> CalendarEvent"""
130 newobj = _calendar.new_CalendarEvent(*args, **kwargs)
131 self.this = newobj.this
132 self.thisown = 1
133 del newobj.thisown
134 def GetDate(*args, **kwargs):
135 """GetDate(self) -> DateTime"""
136 return _calendar.CalendarEvent_GetDate(*args, **kwargs)
137
138 def SetDate(*args, **kwargs):
139 """SetDate(self, DateTime date)"""
140 return _calendar.CalendarEvent_SetDate(*args, **kwargs)
141
142 def SetWeekDay(*args, **kwargs):
143 """SetWeekDay(self, int wd)"""
144 return _calendar.CalendarEvent_SetWeekDay(*args, **kwargs)
145
146 def GetWeekDay(*args, **kwargs):
147 """GetWeekDay(self) -> int"""
148 return _calendar.CalendarEvent_GetWeekDay(*args, **kwargs)
149
150 def PySetDate(self, date):
151 """takes datetime.datetime or datetime.date object"""
152 self.SetDate(_pydate2wxdate(date))
153
154 def PyGetDate(self):
155 """returns datetime.date object"""
156 return _wxdate2pydate(self.GetDate())
157
158
159 class CalendarEventPtr(CalendarEvent):
160 def __init__(self, this):
161 self.this = this
162 if not hasattr(self,"thisown"): self.thisown = 0
163 self.__class__ = CalendarEvent
164 _calendar.CalendarEvent_swigregister(CalendarEventPtr)
165
166 wxEVT_CALENDAR_DOUBLECLICKED = _calendar.wxEVT_CALENDAR_DOUBLECLICKED
167 wxEVT_CALENDAR_SEL_CHANGED = _calendar.wxEVT_CALENDAR_SEL_CHANGED
168 wxEVT_CALENDAR_DAY_CHANGED = _calendar.wxEVT_CALENDAR_DAY_CHANGED
169 wxEVT_CALENDAR_MONTH_CHANGED = _calendar.wxEVT_CALENDAR_MONTH_CHANGED
170 wxEVT_CALENDAR_YEAR_CHANGED = _calendar.wxEVT_CALENDAR_YEAR_CHANGED
171 wxEVT_CALENDAR_WEEKDAY_CLICKED = _calendar.wxEVT_CALENDAR_WEEKDAY_CLICKED
172 EVT_CALENDAR = wx.PyEventBinder( wxEVT_CALENDAR_DOUBLECLICKED, 1)
173 EVT_CALENDAR_SEL_CHANGED = wx.PyEventBinder( wxEVT_CALENDAR_SEL_CHANGED, 1)
174 EVT_CALENDAR_DAY = wx.PyEventBinder( wxEVT_CALENDAR_DAY_CHANGED, 1)
175 EVT_CALENDAR_MONTH = wx.PyEventBinder( wxEVT_CALENDAR_MONTH_CHANGED, 1)
176 EVT_CALENDAR_YEAR = wx.PyEventBinder( wxEVT_CALENDAR_YEAR_CHANGED, 1)
177 EVT_CALENDAR_WEEKDAY_CLICKED = wx.PyEventBinder( wxEVT_CALENDAR_WEEKDAY_CLICKED, 1)
178
179 class CalendarCtrl(_core.Control):
180 """
181 The calendar control allows the user to pick a date interactively.
182
183 The CalendarCtrl displays a window containing several parts: the
184 control to pick the month and the year at the top (either or both of
185 them may be disabled) and a month area below them which shows all the
186 days in the month. The user can move the current selection using the
187 keyboard and select the date (generating EVT_CALENDAR event) by
188 pressing <Return> or double clicking it.
189
190 It has advanced possibilities for the customization of its
191 display. All global settings (such as colours and fonts used) can, of
192 course, be changed. But also, the display style for each day in the
193 month can be set independently using CalendarDateAttr class.
194
195 An item without custom attributes is drawn with the default colours
196 and font and without border, but setting custom attributes with
197 SetAttr allows to modify its appearance. Just create a custom
198 attribute object and set it for the day you want to be displayed
199 specially A day may be marked as being a holiday, (even if it is not
200 recognized as one by wx.DateTime) by using the SetHoliday method.
201
202 As the attributes are specified for each day, they may change when the
203 month is changed, so you will often want to update them in an
204 EVT_CALENDAR_MONTH event handler.
205 """
206 def __repr__(self):
207 return "<%s.%s; proxy of C++ wxCalendarCtrl instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
208 def __init__(self, *args, **kwargs):
209 """
210 __init__(self, Window parent, int id=-1, DateTime date=DefaultDateTime,
211 Point pos=DefaultPosition, Size size=DefaultSize,
212 long style=wxCAL_SHOW_HOLIDAYS|wxWANTS_CHARS,
213 String name=CalendarNameStr) -> CalendarCtrl
214
215 Create and show a calendar control.
216 """
217 newobj = _calendar.new_CalendarCtrl(*args, **kwargs)
218 self.this = newobj.this
219 self.thisown = 1
220 del newobj.thisown
221 self._setOORInfo(self)
222
223 def Create(*args, **kwargs):
224 """
225 Create(self, Window parent, int id, DateTime date=DefaultDateTime,
226 Point pos=DefaultPosition, Size size=DefaultSize,
227 long style=wxCAL_SHOW_HOLIDAYS|wxWANTS_CHARS,
228 String name=CalendarNameStr) -> bool
229
230 Acutally create the GUI portion of the CalendarCtrl for 2-phase
231 creation.
232 """
233 return _calendar.CalendarCtrl_Create(*args, **kwargs)
234
235 def SetDate(*args, **kwargs):
236 """
237 SetDate(self, DateTime date)
238
239 Sets the current date.
240 """
241 return _calendar.CalendarCtrl_SetDate(*args, **kwargs)
242
243 def GetDate(*args, **kwargs):
244 """
245 GetDate(self) -> DateTime
246
247 Gets the currently selected date.
248 """
249 return _calendar.CalendarCtrl_GetDate(*args, **kwargs)
250
251 def SetLowerDateLimit(*args, **kwargs):
252 """
253 SetLowerDateLimit(self, DateTime date=DefaultDateTime) -> bool
254
255 set the range in which selection can occur
256 """
257 return _calendar.CalendarCtrl_SetLowerDateLimit(*args, **kwargs)
258
259 def SetUpperDateLimit(*args, **kwargs):
260 """
261 SetUpperDateLimit(self, DateTime date=DefaultDateTime) -> bool
262
263 set the range in which selection can occur
264 """
265 return _calendar.CalendarCtrl_SetUpperDateLimit(*args, **kwargs)
266
267 def GetLowerDateLimit(*args, **kwargs):
268 """
269 GetLowerDateLimit(self) -> DateTime
270
271 get the range in which selection can occur
272 """
273 return _calendar.CalendarCtrl_GetLowerDateLimit(*args, **kwargs)
274
275 def GetUpperDateLimit(*args, **kwargs):
276 """
277 GetUpperDateLimit(self) -> DateTime
278
279 get the range in which selection can occur
280 """
281 return _calendar.CalendarCtrl_GetUpperDateLimit(*args, **kwargs)
282
283 def SetDateRange(*args, **kwargs):
284 """
285 SetDateRange(self, DateTime lowerdate=DefaultDateTime, DateTime upperdate=DefaultDateTime) -> bool
286
287 set the range in which selection can occur
288 """
289 return _calendar.CalendarCtrl_SetDateRange(*args, **kwargs)
290
291 def EnableYearChange(*args, **kwargs):
292 """
293 EnableYearChange(self, bool enable=True)
294
295 This function should be used instead of changing CAL_NO_YEAR_CHANGE
296 style bit directly. It allows or disallows the user to change the year
297 interactively.
298 """
299 return _calendar.CalendarCtrl_EnableYearChange(*args, **kwargs)
300
301 def EnableMonthChange(*args, **kwargs):
302 """
303 EnableMonthChange(self, bool enable=True)
304
305 This function should be used instead of changing CAL_NO_MONTH_CHANGE
306 style bit. It allows or disallows the user to change the month
307 interactively. Note that if the month can not be changed, the year can
308 not be changed either.
309 """
310 return _calendar.CalendarCtrl_EnableMonthChange(*args, **kwargs)
311
312 def EnableHolidayDisplay(*args, **kwargs):
313 """
314 EnableHolidayDisplay(self, bool display=True)
315
316 This function should be used instead of changing CAL_SHOW_HOLIDAYS
317 style bit directly. It enables or disables the special highlighting of
318 the holidays.
319 """
320 return _calendar.CalendarCtrl_EnableHolidayDisplay(*args, **kwargs)
321
322 def SetHeaderColours(*args, **kwargs):
323 """
324 SetHeaderColours(self, Colour colFg, Colour colBg)
325
326 Header colours are used for painting the weekdays at the top.
327 """
328 return _calendar.CalendarCtrl_SetHeaderColours(*args, **kwargs)
329
330 def GetHeaderColourFg(*args, **kwargs):
331 """
332 GetHeaderColourFg(self) -> Colour
333
334 Header colours are used for painting the weekdays at the top.
335 """
336 return _calendar.CalendarCtrl_GetHeaderColourFg(*args, **kwargs)
337
338 def GetHeaderColourBg(*args, **kwargs):
339 """
340 GetHeaderColourBg(self) -> Colour
341
342 Header colours are used for painting the weekdays at the top.
343 """
344 return _calendar.CalendarCtrl_GetHeaderColourBg(*args, **kwargs)
345
346 def SetHighlightColours(*args, **kwargs):
347 """
348 SetHighlightColours(self, Colour colFg, Colour colBg)
349
350 Highlight colour is used for the currently selected date.
351 """
352 return _calendar.CalendarCtrl_SetHighlightColours(*args, **kwargs)
353
354 def GetHighlightColourFg(*args, **kwargs):
355 """
356 GetHighlightColourFg(self) -> Colour
357
358 Highlight colour is used for the currently selected date.
359 """
360 return _calendar.CalendarCtrl_GetHighlightColourFg(*args, **kwargs)
361
362 def GetHighlightColourBg(*args, **kwargs):
363 """
364 GetHighlightColourBg(self) -> Colour
365
366 Highlight colour is used for the currently selected date.
367 """
368 return _calendar.CalendarCtrl_GetHighlightColourBg(*args, **kwargs)
369
370 def SetHolidayColours(*args, **kwargs):
371 """
372 SetHolidayColours(self, Colour colFg, Colour colBg)
373
374 Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
375 used).
376 """
377 return _calendar.CalendarCtrl_SetHolidayColours(*args, **kwargs)
378
379 def GetHolidayColourFg(*args, **kwargs):
380 """
381 GetHolidayColourFg(self) -> Colour
382
383 Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
384 used).
385 """
386 return _calendar.CalendarCtrl_GetHolidayColourFg(*args, **kwargs)
387
388 def GetHolidayColourBg(*args, **kwargs):
389 """
390 GetHolidayColourBg(self) -> Colour
391
392 Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
393 used).
394 """
395 return _calendar.CalendarCtrl_GetHolidayColourBg(*args, **kwargs)
396
397 def GetAttr(*args, **kwargs):
398 """
399 GetAttr(self, size_t day) -> CalendarDateAttr
400
401 Returns the attribute for the given date (should be in the range
402 1...31). The returned value may be None
403 """
404 return _calendar.CalendarCtrl_GetAttr(*args, **kwargs)
405
406 def SetAttr(*args, **kwargs):
407 """
408 SetAttr(self, size_t day, CalendarDateAttr attr)
409
410 Associates the attribute with the specified date (in the range
411 1...31). If the attribute passed is None, the items attribute is
412 cleared.
413 """
414 return _calendar.CalendarCtrl_SetAttr(*args, **kwargs)
415
416 def SetHoliday(*args, **kwargs):
417 """
418 SetHoliday(self, size_t day)
419
420 Marks the specified day as being a holiday in the current month.
421 """
422 return _calendar.CalendarCtrl_SetHoliday(*args, **kwargs)
423
424 def ResetAttr(*args, **kwargs):
425 """
426 ResetAttr(self, size_t day)
427
428 Clears any attributes associated with the given day (in the range
429 1...31).
430 """
431 return _calendar.CalendarCtrl_ResetAttr(*args, **kwargs)
432
433 def HitTest(*args, **kwargs):
434 """
435 HitTest(Point pos) -> (result, date, weekday)
436
437 Returns 3-tuple with information about the given position on the
438 calendar control. The first value of the tuple is a result code and
439 determines the validity of the remaining two values.
440 """
441 return _calendar.CalendarCtrl_HitTest(*args, **kwargs)
442
443 def GetMonthControl(*args, **kwargs):
444 """
445 GetMonthControl(self) -> Control
446
447 Get the currently shown control for month.
448 """
449 return _calendar.CalendarCtrl_GetMonthControl(*args, **kwargs)
450
451 def GetYearControl(*args, **kwargs):
452 """
453 GetYearControl(self) -> Control
454
455 Get the currently shown control for year.
456 """
457 return _calendar.CalendarCtrl_GetYearControl(*args, **kwargs)
458
459 def GetClassDefaultAttributes(*args, **kwargs):
460 """
461 GetClassDefaultAttributes(int variant=WINDOW_VARIANT_NORMAL) -> VisualAttributes
462
463 Get the default attributes for this class. This is useful if you want
464 to use the same font or colour in your own control as in a standard
465 control -- which is a much better idea than hard coding specific
466 colours or fonts which might look completely out of place on the
467 user's system, especially if it uses themes.
468
469 The variant parameter is only relevant under Mac currently and is
470 ignore under other platforms. Under Mac, it will change the size of
471 the returned font. See `wx.Window.SetWindowVariant` for more about
472 this.
473 """
474 return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs)
475
476 GetClassDefaultAttributes = staticmethod(GetClassDefaultAttributes)
477 def PySetDate(self, date):
478 """takes datetime.datetime or datetime.date object"""
479 self.SetDate(_pydate2wxdate(date))
480
481 def PyGetDate(self):
482 """returns datetime.date object"""
483 return _wxdate2pydate(self.GetDate())
484
485 def PySetLowerDateLimit(self, date):
486 """takes datetime.datetime or datetime.date object"""
487 self.SetLowerDateLimit(_pydate2wxdate(date))
488
489 def PySetUpperDateLimit(self, date):
490 """takes datetime.datetime or datetime.date object"""
491 self.SetUpperDateLimit(_pydate2wxdate(date))
492
493 def PySetDateRange(self, lowerdate, upperdate):
494 """takes datetime.datetime or datetime.date objects"""
495 self.PySetLowerDateLimit(lowerdate)
496 self.PySetUpperDateLimit(upperdate)
497
498 def PyGetLowerDateLimit(self):
499 """returns datetime.date object"""
500 return _wxdate2pydate(self.GetLowerDateLimit())
501
502 def PyGetUpperDateLimit(self):
503 """returns datetime.date object"""
504 return _wxdate2pydate(self.GetUpperDateLimit())
505
506
507 class CalendarCtrlPtr(CalendarCtrl):
508 def __init__(self, this):
509 self.this = this
510 if not hasattr(self,"thisown"): self.thisown = 0
511 self.__class__ = CalendarCtrl
512 _calendar.CalendarCtrl_swigregister(CalendarCtrlPtr)
513 cvar = _calendar.cvar
514 CalendarNameStr = cvar.CalendarNameStr
515
516 def PreCalendarCtrl(*args, **kwargs):
517 """
518 PreCalendarCtrl() -> CalendarCtrl
519
520 Precreate a CalendarCtrl for 2-phase creation.
521 """
522 val = _calendar.new_PreCalendarCtrl(*args, **kwargs)
523 val.thisown = 1
524 return val
525
526 def CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs):
527 """
528 CalendarCtrl_GetClassDefaultAttributes(int variant=WINDOW_VARIANT_NORMAL) -> VisualAttributes
529
530 Get the default attributes for this class. This is useful if you want
531 to use the same font or colour in your own control as in a standard
532 control -- which is a much better idea than hard coding specific
533 colours or fonts which might look completely out of place on the
534 user's system, especially if it uses themes.
535
536 The variant parameter is only relevant under Mac currently and is
537 ignore under other platforms. Under Mac, it will change the size of
538 the returned font. See `wx.Window.SetWindowVariant` for more about
539 this.
540 """
541 return _calendar.CalendarCtrl_GetClassDefaultAttributes(*args, **kwargs)
542
543 def _pydate2wxdate(date):
544 import datetime
545 assert isinstance(date, (datetime.datetime, datetime.date))
546 tt = date.timetuple()
547 dmy = (tt[2], tt[1]-1, tt[0])
548 return wx.DateTimeFromDMY(*dmy)
549
550 def _wxdate2pydate(date):
551 import datetime
552 assert isinstance(date, wx.DateTime)
553 if date.IsValid():
554 ymd = map(int, date.FormatISODate().split('-'))
555 return datetime.date(*ymd)
556 else:
557 return None
558
559