]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_notebook.i
Regenerated makefiles.
[wxWidgets.git] / wxPython / src / _notebook.i
CommitLineData
d14a1e28
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: _notebook.i
3// Purpose: SWIG interface defs for wxNotebook and such
4//
5// Author: Robin Dunn
6//
7// Created: 2-June-1998
8// RCS-ID: $Id$
9// Copyright: (c) 2003 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13// Not a %module
14
15
16//---------------------------------------------------------------------------
17
b2dc1044 18MAKE_CONST_WXSTRING(NOTEBOOK_NAME);
d14a1e28
RD
19
20//---------------------------------------------------------------------------
21%newgroup
22
23// TODO: Virtualize this class so other book controls can be derived in Python
24
25// Common base class for wxList/Tree/Notebook
26class wxBookCtrl : public wxControl
27{
28public:
29 // This is an ABC, it can't be constructed...
30
31// wxBookCtrl(wxWindow *parent,
32// wxWindowID id,
33// const wxPoint& pos = wxDefaultPosition,
34// const wxSize& size = wxDefaultSize,
35// long style = 0,
36// const wxString& name = wxPyEmptyString);
37// %name(PreBookCtrl)wxBookCtrl();
38// bool Create(wxWindow *parent,
39// wxWindowID id,
40// const wxPoint& pos = wxDefaultPosition,
41// const wxSize& size = wxDefaultSize,
42// long style = 0,
43// const wxString& name = wxPyEmptyString);
44
45
46 // get number of pages in the dialog
47 virtual size_t GetPageCount() const;
48
49 // get the panel which represents the given page
50 virtual wxWindow *GetPage(size_t n);
51
52 // get the currently selected page or wxNOT_FOUND if none
53 virtual int GetSelection() const/* = 0*/;
54
55 // set/get the title of a page
56 virtual bool SetPageText(size_t n, const wxString& strText)/* = 0*/;
57 virtual wxString GetPageText(size_t n) const/* = 0*/;
58
59
60 // image list stuff: each page may have an image associated with it (all
61 // images belong to the same image list)
62
63 // sets the image list to use, it is *not* deleted by the control
64 virtual void SetImageList(wxImageList *imageList);
65
66 // as SetImageList() but we will delete the image list ourselves
8668c242 67 %apply SWIGTYPE *DISOWN { wxImageList *imageList };
d14a1e28 68 void AssignImageList(wxImageList *imageList);
8668c242 69 %clear wxImageList *imageList;
d14a1e28
RD
70
71 // get pointer (may be NULL) to the associated image list
72 wxImageList* GetImageList() const;
73
74 // sets/returns item's image index in the current image list
75 virtual int GetPageImage(size_t n) const/* = 0*/;
76 virtual bool SetPageImage(size_t n, int imageId)/* = 0*/;
77
78
79 // resize the notebook so that all pages will have the specified size
80 virtual void SetPageSize(const wxSize& size);
81
82 // calculate the size of the control from the size of its page
83 virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const/* = 0*/;
84
85
86
87 // remove one page from the control and delete it
88 virtual bool DeletePage(size_t n);
89
90 // remove one page from the notebook, without deleting it
91 virtual bool RemovePage(size_t n);
92
93 // remove all pages and delete them
94 virtual bool DeleteAllPages();
95
96 // adds a new page to the control
97 virtual bool AddPage(wxWindow *page,
98 const wxString& text,
dd9f7fea 99 bool select = False,
d14a1e28
RD
100 int imageId = -1);
101
102 // the same as AddPage(), but adds the page at the specified position
103 virtual bool InsertPage(size_t n,
104 wxWindow *page,
105 const wxString& text,
dd9f7fea 106 bool select = False,
d14a1e28
RD
107 int imageId = -1)/* = 0*/;
108
109 // set the currently selected page, return the index of the previously
110 // selected one (or -1 on error)
111 //
112 // NB: this function will _not_ generate PAGE_CHANGING/ED events
113 virtual int SetSelection(size_t n)/* = 0*/;
114
115
116 // cycle thru the pages
dd9f7fea 117 void AdvanceSelection(bool forward = True);
880715c9
RD
118
119 static wxVisualAttributes
120 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
d14a1e28
RD
121};
122
123
124
125class wxBookCtrlEvent : public wxNotifyEvent
126{
127public:
128 wxBookCtrlEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
129 int nSel = -1, int nOldSel = -1);
130
131 // the currently selected page (-1 if none)
132 int GetSelection() const;
133 void SetSelection(int nSel);
134 // the page that was selected before the change (-1 if none)
135 int GetOldSelection() const;
136 void SetOldSelection(int nOldSel);
137};
138
139
140
141//---------------------------------------------------------------------------
142%newgroup
143
144enum {
145 // styles
146 wxNB_FIXEDWIDTH,
147 wxNB_TOP,
148 wxNB_LEFT,
149 wxNB_RIGHT,
150 wxNB_BOTTOM,
151 wxNB_MULTILINE,
152
153 // hittest flags
154 wxNB_HITTEST_NOWHERE = 1, // not on tab
155 wxNB_HITTEST_ONICON = 2, // on icon
156 wxNB_HITTEST_ONLABEL = 4, // on label
157 wxNB_HITTEST_ONITEM = wxNB_HITTEST_ONICON | wxNB_HITTEST_ONLABEL,
158
159};
160
161
162
163class wxNotebook : public wxBookCtrl {
164public:
2b9048c5
RD
165 %pythonAppend wxNotebook "self._setOORInfo(self)"
166 %pythonAppend wxNotebook() ""
d14a1e28
RD
167
168 wxNotebook(wxWindow *parent,
13baae2c 169 wxWindowID id=-1,
d14a1e28
RD
170 const wxPoint& pos = wxDefaultPosition,
171 const wxSize& size = wxDefaultSize,
172 long style = 0,
173 const wxString& name = wxPyNOTEBOOK_NAME);
174 %name(PreNotebook)wxNotebook();
175
176 bool Create(wxWindow *parent,
177 wxWindowID id,
178 const wxPoint& pos = wxDefaultPosition,
179 const wxSize& size = wxDefaultSize,
180 long style = 0,
181 const wxString& name = wxPyNOTEBOOK_NAME);
182
183
184 // get the number of rows for a control with wxNB_MULTILINE style (not all
185 // versions support it - they will always return 1 then)
186 virtual int GetRowCount() const;
187
188 // set the padding between tabs (in pixels)
189 virtual void SetPadding(const wxSize& padding);
190
191 // set the size of the tabs for wxNB_FIXEDWIDTH controls
192 virtual void SetTabSize(const wxSize& sz);
193
194 // hit test, returns which tab is hit and, optionally, where (icon, label)
195 // (not implemented on all platforms)
322913ce
RD
196 DocDeclAStr(
197 virtual int, HitTest(const wxPoint& pt, long* OUTPUT) const,
198 "HitTest(Point pt) -> (tab, where)",
d07d2bc9
RD
199 "Returns the tab which is hit, and flags indicating where using
200wx.NB_HITTEST flags.", "");
d14a1e28
RD
201
202 // implement some base class functions
203 virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
204
205#ifdef __WXMSW__
206 // Windows only: attempts to apply the UX theme page background to this page
207 void ApplyThemeBackground(wxWindow* window, const wxColour& colour);
208#endif
880715c9
RD
209
210 static wxVisualAttributes
211 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
d14a1e28
RD
212};
213
214
215
216class wxNotebookEvent : public wxBookCtrlEvent
217{
218public:
219 wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
220 int nSel = -1, int nOldSel = -1);
221
222};
223
224// notebook control event types
225%constant wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED;
226%constant wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING;
227
228
229%pythoncode {
230 %# wxNotebook events
231 EVT_NOTEBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, 1 )
232 EVT_NOTEBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, 1 )
233}
234
235
236%pythoncode {
237%#----------------------------------------------------------------------------
238
239class NotebookPage(wx.Panel):
240 """
241 There is an old (and apparently unsolvable) bug when placing a
242 window with a nonstandard background colour in a wxNotebook on
243 wxGTK, as the notbooks's background colour would always be used
244 when the window is refreshed. The solution is to place a panel in
245 the notbook and the coloured window on the panel, sized to cover
246 the panel. This simple class does that for you, just put an
247 instance of this in the notebook and make your regular window a
248 child of this one and it will handle the resize for you.
249 """
250 def __init__(self, parent, id=-1,
251 pos=wx.DefaultPosition, size=wx.DefaultSize,
252 style=wx.TAB_TRAVERSAL, name="panel"):
253 wx.Panel.__init__(self, parent, id, pos, size, style, name)
254 self.child = None
255 EVT_SIZE(self, self.OnSize)
256
257 def OnSize(self, evt):
258 if self.child is None:
259 children = self.GetChildren()
260 if len(children):
261 self.child = children[0]
262 if self.child:
263 self.child.SetPosition((0,0))
264 self.child.SetSize(self.GetSize())
265
266}
267
268//---------------------------------------------------------------------------
269%newgroup
270
271
272enum
273{
274 // default alignment: left everywhere except Mac where it is top
275 wxLB_DEFAULT = 0,
276
277 // put the list control to the left/right/top/bottom of the page area
278 wxLB_TOP = 0x1,
279 wxLB_BOTTOM = 0x2,
280 wxLB_LEFT = 0x4,
281 wxLB_RIGHT = 0x8,
282
283 // the mask which can be used to extract the alignment from the style
284 wxLB_ALIGN_MASK = 0xf,
285};
286
287
288
289// wxListCtrl and wxNotebook combination
290class wxListbook : public wxBookCtrl
291{
292public:
2b9048c5
RD
293 %pythonAppend wxListbook "self._setOORInfo(self)"
294 %pythonAppend wxListbook() ""
d14a1e28
RD
295
296 wxListbook(wxWindow *parent,
13baae2c 297 wxWindowID id=-1,
d14a1e28
RD
298 const wxPoint& pos = wxDefaultPosition,
299 const wxSize& size = wxDefaultSize,
300 long style = 0,
301 const wxString& name = wxPyEmptyString);
302 %name(PreListbook)wxListbook();
303
304 bool Create(wxWindow *parent,
305 wxWindowID id,
306 const wxPoint& pos = wxDefaultPosition,
307 const wxSize& size = wxDefaultSize,
308 long style = 0,
309 const wxString& name = wxPyEmptyString);
310
dd9f7fea 311 // returns True if we have wxLB_TOP or wxLB_BOTTOM style
d14a1e28
RD
312 bool IsVertical() const;
313
314};
315
316
317
318class wxListbookEvent : public wxBookCtrlEvent
319{
320public:
321 wxListbookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
322 int nSel = -1, int nOldSel = -1);
323};
324
325
326%constant wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED;
327%constant wxEventType wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING;
328
329%pythoncode {
330 EVT_LISTBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, 1 )
331 EVT_LISTBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, 1 )
332}
333
334
335//---------------------------------------------------------------------------
336%newgroup;
337
338
339class wxBookCtrlSizer: public wxSizer
340{
341public:
2b9048c5 342 %pythonAppend wxBookCtrlSizer "self._setOORInfo(self)"
d14a1e28
RD
343
344 wxBookCtrlSizer( wxBookCtrl *nb );
345
346 void RecalcSizes();
347 wxSize CalcMin();
348 wxBookCtrl *GetControl();
349};
350
351
352class wxNotebookSizer: public wxSizer {
353public:
2b9048c5 354 %pythonAppend wxNotebookSizer "self._setOORInfo(self)"
d14a1e28
RD
355
356 wxNotebookSizer( wxNotebook *nb );
357
358 void RecalcSizes();
359 wxSize CalcMin();
360 wxNotebook *GetNotebook();
361};
362
363//---------------------------------------------------------------------------