1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Wrappers for the wxAUI classes.
7 // Created: 5-July-2006
9 // Copyright: (c) 2006 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
14 "The wx.aui moduleis an Advanced User Interface library that aims to
15 implement \"cutting-edge\" interface usability and design features so
16 developers can quickly and easily create beautiful and usable
17 application interfaces.
19 **Vision and Design Principles**
21 wx.aui attempts to encapsulate the following aspects of the user
24 * Frame Management: Frame management provides the means to open,
25 move and hide common controls that are needed to interact with the
26 document, and allow these configurations to be saved into
27 different perspectives and loaded at a later time.
29 * Toolbars: Toolbars are a specialized subset of the frame
30 management system and should behave similarly to other docked
31 components. However, they also require additional functionality,
32 such as \"spring-loaded\" rebar support, \"chevron\" buttons and
33 end-user customizability.
35 * Modeless Controls: Modeless controls expose a tool palette or set
36 of options that float above the application content while allowing
37 it to be accessed. Usually accessed by the toolbar, these controls
38 disappear when an option is selected, but may also be \"torn off\"
39 the toolbar into a floating frame of their own.
41 * Look and Feel: Look and feel encompasses the way controls are
42 drawn, both when shown statically as well as when they are being
43 moved. This aspect of user interface design incorporates \"special
44 effects\" such as transparent window dragging as well as frame
47 **wx.aui adheres to the following principles**
49 - Use native floating frames to obtain a native look and feel for
52 - Use existing wxPython code where possible, such as sizer
53 implementation for frame management;
55 - Use standard wxPython coding conventions.
60 The following example shows a simple implementation that utilizes
61 `wx.aui.FrameManager` to manage three text controls in a frame window::
66 class MyFrame(wx.Frame):
68 def __init__(self, parent, id=-1, title='wx.aui Test',
69 size=(800, 600), style=wx.DEFAULT_FRAME_STYLE):
70 wx.Frame.__init__(self, parent, id, title, pos, size, style)
72 self._mgr = wx.aui.AuiManager(self)
74 # create several text controls
75 text1 = wx.TextCtrl(self, -1, 'Pane 1 - sample text',
76 wx.DefaultPosition, wx.Size(200,150),
77 wx.NO_BORDER | wx.TE_MULTILINE)
79 text2 = wx.TextCtrl(self, -1, 'Pane 2 - sample text',
80 wx.DefaultPosition, wx.Size(200,150),
81 wx.NO_BORDER | wx.TE_MULTILINE)
83 text3 = wx.TextCtrl(self, -1, 'Main content window',
84 wx.DefaultPosition, wx.Size(200,150),
85 wx.NO_BORDER | wx.TE_MULTILINE)
87 # add the panes to the manager
88 self._mgr.AddPane(text1, wx.LEFT, 'Pane Number One')
89 self._mgr.AddPane(text2, wx.BOTTOM, 'Pane Number Two')
90 self._mgr.AddPane(text3, wx.CENTER)
92 # tell the manager to 'commit' all the changes just made
95 self.Bind(wx.EVT_CLOSE, self.OnClose)
98 def OnClose(self, event):
99 # deinitialize the frame manager
106 frame = MyFrame(None)
114 %module(package="wx", docstring=DOCSTRING) aui
117 #include "wx/wxPython/wxPython.h"
118 #include "wx/wxPython/pyclasses.h"
119 #include <wx/aui/aui.h>
122 //---------------------------------------------------------------------------
127 %pythoncode { wx = _core }
128 %pythoncode { __docfilter__ = wx.__DocFilter(globals()) }
131 %include _aui_docstrings.i
133 //---------------------------------------------------------------------------
135 // Preprocessor stuff so SWIG doesn't get confused when %include-ing
139 %ignore wxABI_VERSION;
141 #define wxUSE_MENUS 1
142 #define wxABI_VERSION 99999
144 #define WXDLLIMPEXP_AUI
146 #define wxDEPRECATED(decl)
147 #define DECLARE_EVENT_TABLE()
148 #define DECLARE_DYNAMIC_CLASS(foo)
152 // We'll skip making wrappers for these, they have overloads that take a
154 %ignore wxAuiPaneInfo::MaxSize(int x, int y);
155 %ignore wxAuiPaneInfo::MinSize(int x, int y);
156 %ignore wxAuiPaneInfo::BestSize(int x, int y);
157 %ignore wxAuiPaneInfo::FloatingPosition(int x, int y);
158 %ignore wxAuiPaneInfo::FloatingSize(int x, int y);
160 // But for these we will do the overloading (see %pythoncode below) so let's
161 // rename the C++ versions
162 %rename(_GetPaneByWidget) wxAuiManager::GetPane(wxWindow* window);
163 %rename(_GetPaneByName) wxAuiManager::GetPane(const wxString& name);
165 %rename(_AddPane1) wxAuiManager::AddPane(wxWindow* window, const wxAuiPaneInfo& pane_info);
166 %rename(_AddPane2) wxAuiManager::AddPane(wxWindow* window, int direction = wxLEFT,
167 const wxString& caption = wxEmptyString);
169 %rename(AddPaneAtPos) wxAuiManager::AddPane(wxWindow* window,
170 const wxPaneInfo& pane_info,
171 const wxPoint& drop_pos);
173 // A typemap for the return value of wxFrameManager::GetAllPanes
174 %typemap(out) wxAuiPaneInfoArray& {
175 $result = PyList_New(0);
176 for (size_t i=0; i < $1->GetCount(); i++) {
177 PyObject* pane_obj = SWIG_NewPointerObj((void*)(&$1->Item(i)), SWIGTYPE_p_wxAuiPaneInfo, 0);
178 PyList_Append($result, pane_obj);
183 %nokwargs wxAuiTabContainer::SetActivePage;
185 %pythonAppend wxAuiTabCtrl::wxAuiTabCtrl "self._setOORInfo(self)";
187 %pythonAppend wxAuiNotebook::wxAuiNotebook "self._setOORInfo(self)";
188 %pythonAppend wxAuiNotebook::wxAuiNotebook() "val._setOORInfo(val)";
189 %ignore wxAuiiNotebook::~wxAuiNotebook;
190 %rename(PreAuiNotebook) wxAuiNotebook::wxAuiNotebook();
193 %ignore wxAuiDefaultTabArt::SetWindow;
195 // ignore this overload
196 %ignore wxAuiTabContainer::GetPage(size_t idx) const;
200 %pythonAppend wxAuiMDIParentFrame::wxAuiMDIParentFrame "self._setOORInfo(self)";
201 %pythonAppend wxAuiMDIParentFrame::wxAuiMDIParentFrame() "val._setOORInfo(val)";
202 %ignore wxAuiMDIParentFrame::~wxAuiMDIParentFrame;
203 %rename(PreAuiMDIParentFrame) wxAuiMDIParentFrame::wxAuiMDIParentFrame();
205 %pythonAppend wxAuiMDIChildFrame::wxAuiMDIChildFrame "self._setOORInfo(self)";
206 %pythonAppend wxAuiMDIChildFrame::wxAuiMDIChildFrame() "val._setOORInfo(val)";
207 %ignore wxAuiMDIChildFrame::~wxAuiMDIChildFrame;
208 %rename(PreAuiMDIChildFrame) wxAuiMDIChildFrame::wxAuiMDIChildFrame();
210 %pythonAppend wxAuiMDIClientWindow::wxAuiMDIClientWindow "self._setOORInfo(self)";
211 %pythonAppend wxAuiMDIClientWindow::wxAuiMDIClientWindow() "val._setOORInfo(val)";
212 %ignore wxAuiMDIClientWindow::~wxAuiMDIClientWindow;
213 %rename(PreAuiMDIClientWindow) wxAuiMDIClientWindow::wxAuiMDIClientWindow();
216 //---------------------------------------------------------------------------
217 // Get all our defs from the REAL header files.
219 #define wxColor wxColour // fix problem in dockart.h
221 %include framemanager.h
229 //---------------------------------------------------------------------------
230 // Methods to inject into the FrameManager class that will sort out calls to
231 // the overloaded versions of GetPane and AddPane
233 %extend wxAuiManager {
235 def GetPane(self, item):
237 GetPane(self, window_or_info item) -> PaneInfo
239 GetPane is used to search for a `PaneInfo` object either by
240 widget reference or by pane name, which acts as a unique id
241 for a window pane. The returned `PaneInfo` object may then be
242 modified to change a pane's look, state or position. After one
243 or more modifications to the `PaneInfo`, `FrameManager.Update`
244 should be called to realize the changes to the user interface.
246 If the lookup failed (meaning the pane could not be found in
247 the manager) GetPane returns an empty `PaneInfo`, a condition
248 which can be checked by calling `PaneInfo.IsOk`.
250 if isinstance(item, wx.Window):
251 return self._GetPaneByWidget(item)
253 return self._GetPaneByName(item)
255 def AddPane(self, window, info=None, caption=None):
257 AddPane(self, window, info=None, caption=None) -> bool
259 AddPane tells the frame manager to start managing a child
260 window. There are two versions of this function. The first
261 verison accepts a `PaneInfo` object for the ``info`` parameter
262 and allows the full spectrum of pane parameter
263 possibilities. (Say that 3 times fast!)
265 The second version is used for simpler user interfaces which
266 do not require as much configuration. In this case the
267 ``info`` parameter specifies the direction property of the
268 pane info, and defaults to ``wx.LEFT``. The pane caption may
269 also be specified as an extra parameter in this form.
271 if type(info) == AuiPaneInfo:
272 return self._AddPane1(window, info)
279 return self._AddPane2(window, info, caption)
282 // For backwards compatibility
284 SetFrame = wx._deprecated(SetManagedWindow,
285 "SetFrame is deprecated, use `SetManagedWindow` instead.")
286 GetFrame = wx._deprecated(GetManagedWindow,
287 "GetFrame is deprecated, use `GetManagedWindow` instead.")
291 %extend wxAuiDockInfo {
295 %extend wxAuiDockUIPart {
296 ~wxAuiDockUIPart() {}
299 %extend wxAuiPaneButton {
300 ~wxAuiPaneButton() {}
303 //---------------------------------------------------------------------------
306 // A wxDocArt class that knows how to forward virtuals to Python methods
307 class wxPyAuiDockArt : public wxAuiDefaultDockArt
310 wxPyAuiDockArt() : wxAuiDefaultDockArt() {}
312 DEC_PYCALLBACK_INT_INT(GetMetric);
313 DEC_PYCALLBACK_VOID_INTINT(SetMetric);
314 DEC_PYCALLBACK__INTFONT(SetFont);
315 DEC_PYCALLBACK_FONT_INT(GetFont);
316 DEC_PYCALLBACK_COLOUR_INT(GetColour);
317 DEC_PYCALLBACK__INTCOLOUR(SetColour);
319 virtual void DrawSash(wxDC& dc,
325 wxPyBlock_t blocked = wxPyBeginBlockThreads();
326 if ((found = wxPyCBH_findCallback(m_myInst, "DrawSash"))) {
327 PyObject* odc = wxPyMake_wxObject(&dc, false);
328 PyObject* owin = wxPyMake_wxObject(window, false);
329 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
330 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOiO)",
331 odc, owin, orientation, orect));
336 wxPyEndBlockThreads(blocked);
338 wxAuiDefaultDockArt::DrawSash(dc, window, orientation, rect);
341 virtual void DrawBackground(wxDC& dc,
347 wxPyBlock_t blocked = wxPyBeginBlockThreads();
348 if ((found = wxPyCBH_findCallback(m_myInst, "DrawBackground"))) {
349 PyObject* odc = wxPyMake_wxObject(&dc, false);
350 PyObject* owin = wxPyMake_wxObject(window, false);
351 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
352 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOiO)",
353 odc, owin, orientation, orect));
358 wxPyEndBlockThreads(blocked);
360 wxAuiDefaultDockArt::DrawBackground(dc, window, orientation, rect);
363 virtual void DrawCaption(wxDC& dc,
365 const wxString& text,
370 wxPyBlock_t blocked = wxPyBeginBlockThreads();
371 if ((found = wxPyCBH_findCallback(m_myInst, "DrawCaption"))) {
372 PyObject* odc = wxPyMake_wxObject(&dc, false);
373 PyObject* owin = wxPyMake_wxObject(window, false);
374 PyObject* otext = wx2PyString(text);
375 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
376 PyObject* opane = wxPyConstructObject((void*)&pane, wxT("wxAuiPaneInfo"), 0);
377 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOOO)",
378 odc, owin, otext, orect, opane));
385 wxPyEndBlockThreads(blocked);
387 wxAuiDefaultDockArt::DrawCaption(dc, window, text, rect, pane);
390 virtual void DrawGripper(wxDC& dc,
396 wxPyBlock_t blocked = wxPyBeginBlockThreads();
397 if ((found = wxPyCBH_findCallback(m_myInst, "DrawGripper"))) {
398 PyObject* odc = wxPyMake_wxObject(&dc, false);
399 PyObject* owin = wxPyMake_wxObject(window, false);
400 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
401 PyObject* opane = wxPyConstructObject((void*)&pane, wxT("wxAuiPaneInfo"), 0);
402 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOOO)", odc, owin, orect, opane));
407 wxPyEndBlockThreads(blocked);
409 wxAuiDefaultDockArt::DrawGripper(dc, window, rect, pane);
412 virtual void DrawBorder(wxDC& dc,
418 wxPyBlock_t blocked = wxPyBeginBlockThreads();
419 if ((found = wxPyCBH_findCallback(m_myInst, "DrawBorder"))) {
420 PyObject* odc = wxPyMake_wxObject(&dc, false);
421 PyObject* owin = wxPyMake_wxObject(window, false);
422 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
423 PyObject* opane = wxPyConstructObject((void*)&pane, wxT("wxAuiPaneInfo"), 0);
424 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", odc, orect, opane));
430 wxPyEndBlockThreads(blocked);
432 wxAuiDefaultDockArt::DrawBorder(dc, window, rect, pane);
435 virtual void DrawPaneButton(wxDC& dc,
443 wxPyBlock_t blocked = wxPyBeginBlockThreads();
444 if ((found = wxPyCBH_findCallback(m_myInst, "DrawPaneButton"))) {
445 PyObject* odc = wxPyMake_wxObject(&dc, false);
446 PyObject* owin = wxPyMake_wxObject(window, false);
447 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
448 PyObject* opane = wxPyConstructObject((void*)&pane, wxT("wxAuiPaneInfo"), 0);
449 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOiIOO)",
450 odc, owin, button, button_state,
457 wxPyEndBlockThreads(blocked);
459 wxAuiDefaultDockArt::DrawPaneButton(dc, window, button, button_state, rect, pane);
466 IMP_PYCALLBACK_INT_INT(wxPyAuiDockArt, wxAuiDefaultDockArt, GetMetric);
467 IMP_PYCALLBACK_VOID_INTINT(wxPyAuiDockArt, wxAuiDefaultDockArt, SetMetric);
468 IMP_PYCALLBACK__INTFONT(wxPyAuiDockArt, wxAuiDefaultDockArt, SetFont);
469 IMP_PYCALLBACK_FONT_INT(wxPyAuiDockArt, wxAuiDefaultDockArt, GetFont);
470 IMP_PYCALLBACK_COLOUR_INT(wxPyAuiDockArt, wxAuiDefaultDockArt, GetColour);
471 IMP_PYCALLBACK__INTCOLOUR(wxPyAuiDockArt, wxAuiDefaultDockArt, SetColour);
476 DocStr(wxPyAuiDockArt,
477 "This version of the `AuiDockArt` class has been instrumented to be
478 subclassable in Python and to reflect all calls to the C++ base class
479 methods to the Python methods implemented in the derived class.", "");
481 class wxPyAuiDockArt : public wxAuiDefaultDockArt
484 %pythonAppend wxPyAuiDockArt setCallbackInfo(PyAuiDockArt)
490 //---------------------------------------------------------------------------
492 %extend wxAuiNotebook {
493 %property(PageCount, GetPageCount, doc="See `GetPageCount`");
494 %property(Selection, GetSelection, SetSelection, doc="See `GetSelection` and `SetSelection`");
498 %extend wxAuiNotebookEvent {
499 %property(OldSelection, GetOldSelection, SetOldSelection, doc="See `GetOldSelection` and `SetOldSelection`");
500 %property(Selection, GetSelection, SetSelection, doc="See `GetSelection` and `SetSelection`");
504 %extend wxAuiTabContainer {
505 %property(ActivePage, GetActivePage, SetActivePage, doc="See `GetActivePage` and `SetActivePage`");
506 %property(PageCount, GetPageCount, doc="See `GetPageCount`");
507 %property(Pages, GetPages, doc="See `GetPages`");
511 %extend wxAuiManager {
512 %property(AllPanes, GetAllPanes, doc="See `GetAllPanes`");
513 %property(ArtProvider, GetArtProvider, SetArtProvider, doc="See `GetArtProvider` and `SetArtProvider`");
514 %property(Flags, GetFlags, SetFlags, doc="See `GetFlags` and `SetFlags`");
515 %property(ManagedWindow, GetManagedWindow, SetManagedWindow, doc="See `GetManagedWindow` and `SetManagedWindow`");
519 %extend wxAuiManagerEvent {
520 %property(Button, GetButton, SetButton, doc="See `GetButton` and `SetButton`");
521 %property(DC, GetDC, SetDC, doc="See `GetDC` and `SetDC`");
522 %property(Pane, GetPane, SetPane, doc="See `GetPane` and `SetPane`");
526 //---------------------------------------------------------------------------
529 // A wxTabArt class that knows how to forward virtuals to Python methods
530 class wxPyAuiTabArt : public wxAuiDefaultTabArt
533 wxPyAuiTabArt() : wxAuiDefaultTabArt() {}
536 virtual void DrawBackground( wxDC& dc,
541 wxPyBlock_t blocked = wxPyBeginBlockThreads();
542 if ((found = wxPyCBH_findCallback(m_myInst, "DrawBackground"))) {
543 PyObject* odc = wxPyMake_wxObject(&dc, false);
544 PyObject* ownd = wxPyMake_wxObject(wnd, false);
545 PyObject* orect = wxPyConstructObject((void*)&rect, wxT("wxRect"), 0);
546 wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OOO)", odc, ownd, orect));
551 wxPyEndBlockThreads(blocked);
553 wxAuiDefaultTabArt::DrawBackground(dc, wnd, rect);
556 virtual void DrawTab( wxDC& dc,
558 const wxAuiNotebookPage& pane,
559 const wxRect& in_rect,
560 int close_button_state,
561 wxRect* out_tab_rect,
562 wxRect* out_button_rect,
566 const char* errmsg = "DrawTab should return a sequence containing (tab_rect, button_rect, x_extent)";
567 wxPyBlock_t blocked = wxPyBeginBlockThreads();
568 if ((found = wxPyCBH_findCallback(m_myInst, "DrawTab"))) {
569 PyObject* odc = wxPyMake_wxObject(&dc, false);
570 PyObject* ownd = wxPyMake_wxObject(wnd, false);
571 PyObject* opane = wxPyConstructObject((void*)&pane, wxT("wxAuiNotebookPage"), 0);
572 PyObject* orect = wxPyConstructObject((void*)&in_rect, wxT("wxRect"), 0);
574 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue(
576 odc, ownd, orect, opane,
577 close_button_state));
579 if (PySequence_Check(ro) && PyObject_Length(ro) == 3) {
580 PyObject* o1 = PySequence_GetItem(ro, 0);
581 PyObject* o2 = PySequence_GetItem(ro, 1);
582 PyObject* o3 = PySequence_GetItem(ro, 2);
583 if (!wxRect_helper(o1, &out_tab_rect))
584 PyErr_SetString(PyExc_TypeError, errmsg);
585 else if (!wxRect_helper(o2, &out_button_rect))
586 PyErr_SetString(PyExc_TypeError, errmsg);
587 else if (!PyInt_Check(o3))
588 PyErr_SetString(PyExc_TypeError, errmsg);
590 *x_extent = PyInt_AsLong(o3);
597 PyErr_SetString(PyExc_TypeError, errmsg);
607 wxPyEndBlockThreads(blocked);
609 wxAuiDefaultTabArt::DrawTab(dc, wnd, pane, in_rect, close_button_state, out_tab_rect, out_button_rect, x_extent);
613 virtual void DrawButton( wxDC& dc,
615 const wxRect& in_rect,
622 const char* errmsg = "DrawButton should return a wxRect";
623 wxPyBlock_t blocked = wxPyBeginBlockThreads();
624 if ((found = wxPyCBH_findCallback(m_myInst, "DrawButton"))) {
625 PyObject* odc = wxPyMake_wxObject(&dc, false);
626 PyObject* ownd = wxPyMake_wxObject(wnd, false);
627 PyObject* orect = wxPyConstructObject((void*)&in_rect, wxT("wxRect"), 0);
629 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOOiiiO)", odc, ownd, orect,
630 bitmap_id, button_state, orientation));
632 if (!wxRect_helper(ro, &out_rect))
633 PyErr_SetString(PyExc_TypeError, errmsg);
641 wxPyEndBlockThreads(blocked);
643 wxAuiDefaultTabArt::DrawButton(dc, wnd, in_rect, bitmap_id, button_state, orientation, out_rect);
647 virtual wxSize GetTabSize( wxDC& dc,
649 const wxString& caption,
650 const wxBitmap& bitmap,
652 int close_button_state,
656 wxSize rv, *prv = &rv;
657 const char* errmsg = "GetTabSize should return a sequence containing (size, x_extent)";
658 wxPyBlock_t blocked = wxPyBeginBlockThreads();
659 if ((found = wxPyCBH_findCallback(m_myInst, "GetTabSize"))) {
660 PyObject* odc = wxPyMake_wxObject(&dc, false);
661 PyObject* ownd = wxPyMake_wxObject(wnd, false);
662 PyObject* otext = wx2PyString(caption);
663 PyObject* obmp = wxPyMake_wxObject((wxObject*)&bitmap, false);
665 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue(
666 "(OOOOii)", odc, ownd, otext, obmp, (int)active, close_button_state));
668 if (PySequence_Check(ro) && PyObject_Length(ro) == 2) {
669 PyObject* o1 = PySequence_GetItem(ro, 0);
670 PyObject* o2 = PySequence_GetItem(ro, 1);
671 if (!wxSize_helper(o1, &prv))
672 PyErr_SetString(PyExc_TypeError, errmsg);
673 else if (!PyInt_Check(o2))
674 PyErr_SetString(PyExc_TypeError, errmsg);
676 *x_extent = PyInt_AsLong(o2);
682 PyErr_SetString(PyExc_TypeError, errmsg);
692 wxPyEndBlockThreads(blocked);
694 rv = wxAuiDefaultTabArt::GetTabSize(dc, wnd, caption, bitmap, active, close_button_state, x_extent);
699 // virtual int ShowDropDown(
701 // const wxAuiNotebookPageArray& items,
704 // virtual int GetIndentSize();
706 // virtual int GetBestTabCtrlSize(wxWindow* wnd,
707 // const wxAuiNotebookPageArray& pages,
708 // const wxSize& required_bmp_size);
709 // virtual wxAuiTabArt* Clone();
710 // virtual void SetFlags(unsigned int flags);
711 // virtual void SetSizingInfo(const wxSize& tab_ctrl_size,
712 // size_t tab_count);
713 // virtual int GetIndentSize();
717 DEC_PYCALLBACK__FONT(SetNormalFont);
718 DEC_PYCALLBACK__FONT(SetSelectedFont);
719 DEC_PYCALLBACK__FONT(SetMeasuringFont);
720 // DEC_PYCALLBACK_INT_WIN(GetBestTabCtrlSize);
726 IMP_PYCALLBACK__FONT(wxPyAuiTabArt, wxAuiDefaultTabArt, SetNormalFont);
727 IMP_PYCALLBACK__FONT(wxPyAuiTabArt, wxAuiDefaultTabArt, SetSelectedFont);
728 IMP_PYCALLBACK__FONT(wxPyAuiTabArt, wxAuiDefaultTabArt, SetMeasuringFont);
729 //IMP_PYCALLBACK_INT_WIN(wxPyAuiTabArt, wxAuiDefaultTabArt, GetBestTabCtrlSize);
733 DocStr(wxPyAuiTabArt,
734 "This version of the `TabArt` class has been instrumented to be
735 subclassable in Python and to reflect all calls to the C++ base class
736 methods to the Python methods implemented in the derived class.", "");
738 class wxPyAuiTabArt : public wxAuiDefaultTabArt
741 %pythonAppend wxPyAuiTabArt setCallbackInfo(PyAuiTabArt)
747 //---------------------------------------------------------------------------