]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/calendar.i
Removed calls to wx.InitAllImageHandlers.
[wxWidgets.git] / wxPython / src / calendar.i
CommitLineData
f6bcfd97
BP
1/////////////////////////////////////////////////////////////////////////////
2// Name: calendar.i
3// Purpose: SWIG definitions for the wxCalendarCtrl
4//
5// Author: Robin Dunn
6//
7// Created: 23-May-2000
8// RCS-ID: $Id$
9// Copyright: (c) 2000 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
c8fac2b6
RD
13%define DOCSTRING
14"Classes for an interactive Calendar control."
15%enddef
16%module(docstring=DOCSTRING) calendar
f6bcfd97
BP
17
18
19%{
d14a1e28
RD
20#include "wx/wxPython/wxPython.h"
21#include "wx/wxPython/pyclasses.h"
22
f6bcfd97
BP
23#include <wx/calctrl.h>
24%}
25
26//----------------------------------------------------------------------
27
f6bcfd97 28%import misc.i
54f9ee45 29%pythoncode { wx = _core }
99109c0f 30%pythoncode { __docfilter__ = wx.__DocFilter(globals()) }
f6bcfd97 31
d14a1e28 32%include _calendar_rename.i
f6bcfd97
BP
33
34//---------------------------------------------------------------------------
35
36enum {
37 wxCAL_SUNDAY_FIRST,
38 wxCAL_MONDAY_FIRST,
39 wxCAL_SHOW_HOLIDAYS,
40 wxCAL_NO_YEAR_CHANGE,
41 wxCAL_NO_MONTH_CHANGE,
ab11ebfa
RD
42 wxCAL_SEQUENTIAL_MONTH_SELECTION,
43 wxCAL_SHOW_SURROUNDING_WEEKS,
f6bcfd97
BP
44};
45
46
47enum wxCalendarHitTestResult
48{
49 wxCAL_HITTEST_NOWHERE, // outside of anything
50 wxCAL_HITTEST_HEADER, // on the header (weekdays)
b66824a5 51 wxCAL_HITTEST_DAY, // on a day in the calendar
ab11ebfa
RD
52 wxCAL_HITTEST_INCMONTH,
53 wxCAL_HITTEST_DECMONTH,
54 wxCAL_HITTEST_SURROUNDING_WEEK
f6bcfd97
BP
55};
56
57// border types for a date
58enum wxCalendarDateBorder
59{
60 wxCAL_BORDER_NONE, // no border (default)
61 wxCAL_BORDER_SQUARE, // a rectangular border
62 wxCAL_BORDER_ROUND // a round border
63};
64
65//---------------------------------------------------------------------------
66
856bf319 67DocStr(wxCalendarDateAttr,
dce2bd22 68"A set of customization attributes for a calendar date, which can be
d07d2bc9 69used to control the look of the Calendar object.", "");
f6bcfd97
BP
70
71class wxCalendarDateAttr
72{
73public:
856bf319 74 DocStr(wxCalendarDateAttr,
d07d2bc9 75 "Create a CalendarDateAttr.", "");
856bf319 76 wxCalendarDateAttr(const wxColour& colText = wxNullColour,
f6bcfd97
BP
77 const wxColour& colBack = wxNullColour,
78 const wxColour& colBorder = wxNullColour,
79 const wxFont& font = wxNullFont,
80 wxCalendarDateBorder border = wxCAL_BORDER_NONE);
81
856bf319 82
f6bcfd97
BP
83 // setters
84 void SetTextColour(const wxColour& colText);
85 void SetBackgroundColour(const wxColour& colBack);
86 void SetBorderColour(const wxColour& col);
87 void SetFont(const wxFont& font);
88 void SetBorder(wxCalendarDateBorder border);
89 void SetHoliday(bool holiday);
90
91 // accessors
92 bool HasTextColour() const;
93 bool HasBackgroundColour() const;
94 bool HasBorderColour() const;
95 bool HasFont() const;
96 bool HasBorder() const;
97
98 bool IsHoliday() const;
99
c5943253
RD
100 wxColour GetTextColour() const;
101 wxColour GetBackgroundColour() const;
102 wxColour GetBorderColour() const;
103 wxFont GetFont() const;
f6bcfd97
BP
104 wxCalendarDateBorder GetBorder() const;
105};
106
107//---------------------------------------------------------------------------
108
109class wxCalendarCtrl;
110
111class wxCalendarEvent : public wxCommandEvent
112{
113public:
114 wxCalendarEvent(wxCalendarCtrl *cal, wxEventType type);
115
ae5343ec 116 const wxDateTime GetDate() const;
3f0ff538
RD
117 void SetDate(const wxDateTime &date);
118 void SetWeekDay(const wxDateTime::WeekDay wd);
f6bcfd97
BP
119 wxDateTime::WeekDay GetWeekDay() const;
120
121};
122
f6bcfd97 123
d14a1e28
RD
124%constant wxEventType wxEVT_CALENDAR_DOUBLECLICKED;
125%constant wxEventType wxEVT_CALENDAR_SEL_CHANGED;
126%constant wxEventType wxEVT_CALENDAR_DAY_CHANGED;
127%constant wxEventType wxEVT_CALENDAR_MONTH_CHANGED;
128%constant wxEventType wxEVT_CALENDAR_YEAR_CHANGED;
129%constant wxEventType wxEVT_CALENDAR_WEEKDAY_CLICKED;
f6bcfd97 130
f6bcfd97 131
d14a1e28
RD
132%pythoncode {
133EVT_CALENDAR = wx.PyEventBinder( wxEVT_CALENDAR_DOUBLECLICKED, 1)
134EVT_CALENDAR_SEL_CHANGED = wx.PyEventBinder( wxEVT_CALENDAR_SEL_CHANGED, 1)
135EVT_CALENDAR_DAY = wx.PyEventBinder( wxEVT_CALENDAR_DAY_CHANGED, 1)
136EVT_CALENDAR_MONTH = wx.PyEventBinder( wxEVT_CALENDAR_MONTH_CHANGED, 1)
137EVT_CALENDAR_YEAR = wx.PyEventBinder( wxEVT_CALENDAR_YEAR_CHANGED, 1)
138EVT_CALENDAR_WEEKDAY_CLICKED = wx.PyEventBinder( wxEVT_CALENDAR_WEEKDAY_CLICKED, 1)
139}
f6bcfd97 140
f6bcfd97
BP
141
142//---------------------------------------------------------------------------
143
b2dc1044 144MAKE_CONST_WXSTRING(CalendarNameStr);
137b5242 145
d14a1e28 146
856bf319 147DocStr(wxCalendarCtrl,
dce2bd22
RD
148"The calendar control allows the user to pick a date interactively.
149
150The CalendarCtrl displays a window containing several parts: the
151control to pick the month and the year at the top (either or both of
152them may be disabled) and a month area below them which shows all the
153days in the month. The user can move the current selection using the
154keyboard and select the date (generating EVT_CALENDAR event) by
155pressing <Return> or double clicking it.
156
157It has advanced possibilities for the customization of its
158display. All global settings (such as colours and fonts used) can, of
159course, be changed. But also, the display style for each day in the
160month can be set independently using CalendarDateAttr class.
161
162An item without custom attributes is drawn with the default colours
163and font and without border, but setting custom attributes with
164SetAttr allows to modify its appearance. Just create a custom
165attribute object and set it for the day you want to be displayed
166specially A day may be marked as being a holiday, (even if it is not
167recognized as one by wx.DateTime) by using the SetHoliday method.
168
169As the attributes are specified for each day, they may change when the
170month is changed, so you will often want to update them in an
d07d2bc9 171EVT_CALENDAR_MONTH event handler.", "
dce2bd22
RD
172
173Window Styles
174-------------
175 ============================== ============================
176 CAL_SUNDAY_FIRST Show Sunday as the first day
177 in the week
178 CAL_MONDAY_FIRST Show Monday as the first day
179 in the week
180 CAL_SHOW_HOLIDAYS Highlight holidays in the
181 calendar
182 CAL_NO_YEAR_CHANGE Disable the year changing
183 CAL_NO_MONTH_CHANGE Disable the month (and,
184 implicitly, the year) changing
185 CAL_SHOW_SURROUNDING_WEEKS Show the neighbouring weeks in
186 the previous and next months
187 CAL_SEQUENTIAL_MONTH_SELECTION Use alternative, more compact,
188 style for the month and year
189 selection controls.
c8fac2b6 190 ============================== ============================
dce2bd22
RD
191
192The default calendar style is CAL_SHOW_HOLIDAYS.
193
194Events
195-------
c8fac2b6 196 ============================= ==============================
dce2bd22
RD
197 EVT_CALENDAR A day was double clicked in the
198 calendar.
199 EVT_CALENDAR_SEL_CHANGED The selected date changed.
200 EVT_CALENDAR_DAY The selected day changed.
201 EVT_CALENDAR_MONTH The selected month changed.
202 EVT_CALENDAR_YEAR The selected year changed.
203 EVT_CALENDAR_WEEKDAY_CLICKED User clicked on the week day
204 header
c8fac2b6 205 ============================= ==============================
dce2bd22
RD
206
207Note that changing the selected date will result in one of
208EVT_CALENDAR_DAY, MONTH or YEAR events and an EVT_CALENDAR_SEL_CHANGED
209event.
856bf319
RD
210
211");
212
213
f6bcfd97
BP
214class wxCalendarCtrl : public wxControl
215{
216public:
2b9048c5
RD
217 %pythonAppend wxCalendarCtrl "self._setOORInfo(self)"
218 %pythonAppend wxCalendarCtrl() ""
d14a1e28 219
dce2bd22
RD
220 DocCtorStr(
221 wxCalendarCtrl(wxWindow *parent,
222 wxWindowID id=-1,
223 const wxDateTime& date = wxDefaultDateTime,
224 const wxPoint& pos = wxDefaultPosition,
225 const wxSize& size = wxDefaultSize,
226 long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
227 const wxString& name = wxPyCalendarNameStr),
d07d2bc9 228 "Create and show a calendar control.", "");
dce2bd22
RD
229
230 DocCtorStrName(
231 wxCalendarCtrl(),
d07d2bc9 232 "Precreate a CalendarCtrl for 2-phase creation.", "",
dce2bd22 233 PreCalendarCtrl);
09f3d4e6 234
dce2bd22
RD
235 DocDeclStr(
236 bool , Create(wxWindow *parent,
237 wxWindowID id,
238 const wxDateTime& date = wxDefaultDateTime,
239 const wxPoint& pos = wxDefaultPosition,
240 const wxSize& size = wxDefaultSize,
241 long style = wxCAL_SHOW_HOLIDAYS | wxWANTS_CHARS,
242 const wxString& name = wxPyCalendarNameStr),
243 "Acutally create the GUI portion of the CalendarCtrl for 2-phase
d07d2bc9 244creation.", "");
dce2bd22 245
f6bcfd97 246
0122b7e3 247
856bf319
RD
248 DocDeclStr(
249 void, SetDate(const wxDateTime& date),
d07d2bc9 250 "Sets the current date.", "");
856bf319
RD
251
252 DocDeclStr(
253 const wxDateTime&, GetDate() const,
d07d2bc9 254 "Gets the currently selected date.", "");
856bf319
RD
255
256
257
258 DocDeclStr(
259 bool, SetLowerDateLimit(const wxDateTime& date = wxDefaultDateTime),
d07d2bc9 260 "set the range in which selection can occur", "");
856bf319
RD
261
262 DocDeclStr(
263 bool, SetUpperDateLimit(const wxDateTime& date = wxDefaultDateTime),
d07d2bc9 264 "set the range in which selection can occur", "");
856bf319
RD
265
266 DocDeclStr(
267 const wxDateTime&, GetLowerDateLimit() const,
d07d2bc9 268 "get the range in which selection can occur", "");
856bf319
RD
269
270 DocDeclStr(
271 const wxDateTime&, GetUpperDateLimit() const,
d07d2bc9 272 "get the range in which selection can occur", "");
856bf319
RD
273
274 DocDeclStr(
275 bool, SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime,
276 const wxDateTime& upperdate = wxDefaultDateTime),
d07d2bc9 277 "set the range in which selection can occur", "");
856bf319
RD
278
279
280
281
282 DocDeclStr(
283 void, EnableYearChange(bool enable = True),
dce2bd22
RD
284 "This function should be used instead of changing CAL_NO_YEAR_CHANGE
285style bit directly. It allows or disallows the user to change the year
d07d2bc9 286interactively.", "");
856bf319
RD
287
288 DocDeclStr(
289 void, EnableMonthChange(bool enable = True),
dce2bd22
RD
290 "This function should be used instead of changing CAL_NO_MONTH_CHANGE
291style bit. It allows or disallows the user to change the month
292interactively. Note that if the month can not be changed, the year can
d07d2bc9 293not be changed either.", "");
856bf319
RD
294
295 DocDeclStr(
296 void, EnableHolidayDisplay(bool display = True),
dce2bd22
RD
297 "This function should be used instead of changing CAL_SHOW_HOLIDAYS
298style bit directly. It enables or disables the special highlighting of
d07d2bc9 299the holidays.", "");
856bf319
RD
300
301
302
303 DocDeclStr(
304 void, SetHeaderColours(const wxColour& colFg, const wxColour& colBg),
d07d2bc9 305 "Header colours are used for painting the weekdays at the top.", "");
856bf319
RD
306
307 DocDeclStr(
308 wxColour, GetHeaderColourFg() const,
d07d2bc9 309 "Header colours are used for painting the weekdays at the top.", "");
856bf319
RD
310
311 DocDeclStr(
312 wxColour, GetHeaderColourBg() const,
d07d2bc9 313 "Header colours are used for painting the weekdays at the top.", "");
856bf319
RD
314
315
316
317 DocDeclStr(
318 void, SetHighlightColours(const wxColour& colFg, const wxColour& colBg),
d07d2bc9 319 "Highlight colour is used for the currently selected date.", "");
856bf319
RD
320
321 DocDeclStr(
322 wxColour, GetHighlightColourFg() const,
d07d2bc9 323 "Highlight colour is used for the currently selected date.", "");
856bf319
RD
324
325 DocDeclStr(
326 wxColour, GetHighlightColourBg() const,
d07d2bc9 327 "Highlight colour is used for the currently selected date.", "");
856bf319
RD
328
329
330
331 DocDeclStr(
332 void, SetHolidayColours(const wxColour& colFg, const wxColour& colBg),
dce2bd22 333 "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
d07d2bc9 334used).", "");
856bf319
RD
335
336 DocDeclStr(
337 wxColour, GetHolidayColourFg() const,
dce2bd22 338 "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
d07d2bc9 339used).", "");
856bf319
RD
340
341 DocDeclStr(
342 wxColour, GetHolidayColourBg() const,
dce2bd22 343 "Holiday colour is used for the holidays (if CAL_SHOW_HOLIDAYS style is
d07d2bc9 344used).", "");
856bf319
RD
345
346
347
348 DocDeclStr(
349 wxCalendarDateAttr*, GetAttr(size_t day) const,
dce2bd22 350 "Returns the attribute for the given date (should be in the range
d07d2bc9 3511...31). The returned value may be None", "");
856bf319
RD
352
353 DocDeclStr(
354 void, SetAttr(size_t day, wxCalendarDateAttr *attr),
dce2bd22
RD
355 "Associates the attribute with the specified date (in the range
3561...31). If the attribute passed is None, the items attribute is
d07d2bc9 357cleared.", "");
856bf319
RD
358
359 DocDeclStr(
360 void, SetHoliday(size_t day),
d07d2bc9 361 "Marks the specified day as being a holiday in the current month.", "");
856bf319
RD
362
363 DocDeclStr(
364 void, ResetAttr(size_t day),
dce2bd22 365 "Clears any attributes associated with the given day (in the range
d07d2bc9 3661...31).", "");
856bf319
RD
367
368
369
370 DocAStr(HitTest,
371 "HitTest(Point pos) -> (result, date, weekday)",
dce2bd22
RD
372"Returns 3-tuple with information about the given position on the
373calendar control. The first value of the tuple is a result code and
d07d2bc9
RD
374determines the validity of the remaining two values.",
375"
376The result codes are:
dce2bd22
RD
377
378 =================== ============================================
379 CAL_HITTEST_NOWHERE hit outside of anything
380 CAL_HITTEST_HEADER hit on the header, weekday is valid
381 CAL_HITTEST_DAY hit on a day in the calendar, date is set.
382 =================== ============================================
856bf319
RD
383");
384 %extend {
385 PyObject* HitTest(const wxPoint& pos) {
386 wxDateTime* date = new wxDateTime;
387 wxDateTime::WeekDay wd;
388 wxCalendarHitTestResult result = self->HitTest(pos, date, &wd);
da32eb53 389 bool blocked = wxPyBeginBlockThreads();
856bf319
RD
390 PyObject* tup = PyTuple_New(3);
391 PyTuple_SET_ITEM(tup, 0, PyInt_FromLong(result));
392 PyTuple_SET_ITEM(tup, 1, wxPyConstructObject(date, wxT("wxDateTime"), 1));
393 PyTuple_SET_ITEM(tup, 2, PyInt_FromLong(wd));
da32eb53 394 wxPyEndBlockThreads(blocked);
856bf319
RD
395 return tup;
396 }
397 }
398
399 DocDeclStr(
400 wxControl*, GetMonthControl() const,
d07d2bc9 401 "Get the currently shown control for month.", "");
856bf319
RD
402
403 DocDeclStr(
404 wxControl*, GetYearControl() const,
d07d2bc9 405 "Get the currently shown control for year.", "");
880715c9
RD
406
407 static wxVisualAttributes
408 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
f6bcfd97
BP
409};
410
411
412//---------------------------------------------------------------------------
e508a2b6
RD
413
414%init %{
e508a2b6
RD
415%}
416
f6bcfd97
BP
417//---------------------------------------------------------------------------
418