X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b2dc104421c340091342156d6b01f61f1ccff438..07dd19d4e5d6d94bea21b0c7aed00ac71dff12f3:/wxPython/src/_notebook.i diff --git a/wxPython/src/_notebook.i b/wxPython/src/_notebook.i index 63b40a0565..472cd23e74 100644 --- a/wxPython/src/_notebook.i +++ b/wxPython/src/_notebook.i @@ -15,26 +15,28 @@ //--------------------------------------------------------------------------- -MAKE_CONST_WXSTRING(NOTEBOOK_NAME); +MAKE_CONST_WXSTRING(NotebookNameStr); //--------------------------------------------------------------------------- %newgroup // TODO: Virtualize this class so other book controls can be derived in Python +MustHaveApp(wxBookCtrlBase); + // Common base class for wxList/Tree/Notebook -class wxBookCtrl : public wxControl +class wxBookCtrlBase : public wxControl { public: // This is an ABC, it can't be constructed... -// wxBookCtrl(wxWindow *parent, +// wxBookCtrlBase(wxWindow *parent, // wxWindowID id, // const wxPoint& pos = wxDefaultPosition, // const wxSize& size = wxDefaultSize, // long style = 0, // const wxString& name = wxPyEmptyString); -// %name(PreBookCtrl)wxBookCtrl(); +// %RenameCtor(PreBookCtrlBase, wxBookCtrlBase()); // bool Create(wxWindow *parent, // wxWindowID id, // const wxPoint& pos = wxDefaultPosition, @@ -49,6 +51,9 @@ public: // get the panel which represents the given page virtual wxWindow *GetPage(size_t n); + // get the current page or NULL if none + wxWindow* GetCurrentPage() const; + // get the currently selected page or wxNOT_FOUND if none virtual int GetSelection() const/* = 0*/; @@ -64,8 +69,9 @@ public: virtual void SetImageList(wxImageList *imageList); // as SetImageList() but we will delete the image list ourselves - %addtofunc AssignImageList "args[1].thisown = 0" + %apply SWIGTYPE *DISOWN { wxImageList *imageList }; void AssignImageList(wxImageList *imageList); + %clear wxImageList *imageList; // get pointer (may be NULL) to the associated image list wxImageList* GetImageList() const; @@ -95,14 +101,14 @@ public: // adds a new page to the control virtual bool AddPage(wxWindow *page, const wxString& text, - bool select = False, + bool select = false, int imageId = -1); // the same as AddPage(), but adds the page at the specified position virtual bool InsertPage(size_t n, wxWindow *page, const wxString& text, - bool select = False, + bool select = false, int imageId = -1)/* = 0*/; // set the currently selected page, return the index of the previously @@ -113,15 +119,18 @@ public: // cycle thru the pages - void AdvanceSelection(bool forward = True); + void AdvanceSelection(bool forward = true); + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); }; -class wxBookCtrlEvent : public wxNotifyEvent +class wxBookCtrlBaseEvent : public wxNotifyEvent { public: - wxBookCtrlEvent(wxEventType commandType = wxEVT_NULL, int id = 0, + wxBookCtrlBaseEvent(wxEventType commandType = wxEVT_NULL, int id = 0, int nSel = -1, int nOldSel = -1); // the currently selected page (-1 if none) @@ -145,6 +154,7 @@ enum { wxNB_RIGHT, wxNB_BOTTOM, wxNB_MULTILINE, + wxNB_NOPAGETHEME, // hittest flags wxNB_HITTEST_NOWHERE = 1, // not on tab @@ -156,25 +166,31 @@ enum { -class wxNotebook : public wxBookCtrl { +MustHaveApp(wxNotebook); + +class wxNotebook : public wxBookCtrlBase { public: - %addtofunc wxNotebook "self._setOORInfo(self)" - %addtofunc wxNotebook() "" + %pythonAppend wxNotebook "self._setOORInfo(self)" + %pythonAppend wxNotebook() "" + %typemap(out) wxNotebook*; // turn off this typemap wxNotebook(wxWindow *parent, - wxWindowID id, + wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxPyNOTEBOOK_NAME); - %name(PreNotebook)wxNotebook(); + const wxString& name = wxPyNotebookNameStr); + %RenameCtor(PreNotebook, wxNotebook()); + + // Turn it back on again + %typemap(out) wxNotebook* { $result = wxPyMake_wxObject($1, $owner); } bool Create(wxWindow *parent, - wxWindowID id, + wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxPyNOTEBOOK_NAME); + const wxString& name = wxPyNotebookNameStr); // get the number of rows for a control with wxNB_MULTILINE style (not all @@ -192,20 +208,23 @@ public: DocDeclAStr( virtual int, HitTest(const wxPoint& pt, long* OUTPUT) const, "HitTest(Point pt) -> (tab, where)", - "Returns the tab which is hit, and flags indicating where using wxNB_HITTEST_ flags."); + "Returns the tab which is hit, and flags indicating where using +wx.NB_HITTEST flags.", ""); // implement some base class functions virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; -#ifdef __WXMSW__ - // Windows only: attempts to apply the UX theme page background to this page - void ApplyThemeBackground(wxWindow* window, const wxColour& colour); -#endif + // On platforms that support it, get the theme page background colour, + // else invalid colour + wxColour GetThemeBackgroundColour() const; + + static wxVisualAttributes + GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); }; -class wxNotebookEvent : public wxBookCtrlEvent +class wxNotebookEvent : public wxBookCtrlBaseEvent { public: wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, @@ -231,8 +250,8 @@ public: class NotebookPage(wx.Panel): """ There is an old (and apparently unsolvable) bug when placing a - window with a nonstandard background colour in a wxNotebook on - wxGTK, as the notbooks's background colour would always be used + window with a nonstandard background colour in a wx.Notebook on + wxGTK1, as the notbooks's background colour would always be used when the window is refreshed. The solution is to place a panel in the notbook and the coloured window on the panel, sized to cover the panel. This simple class does that for you, just put an @@ -244,8 +263,8 @@ class NotebookPage(wx.Panel): style=wx.TAB_TRAVERSAL, name="panel"): wx.Panel.__init__(self, parent, id, pos, size, style, name) self.child = None - EVT_SIZE(self, self.OnSize) - + self.Bind(wx.EVT_SIZE, self.OnSize) + def OnSize(self, evt): if self.child is None: children = self.GetChildren() @@ -278,23 +297,25 @@ enum +MustHaveApp(wxListbook); + // wxListCtrl and wxNotebook combination -class wxListbook : public wxBookCtrl +class wxListbook : public wxBookCtrlBase { public: - %addtofunc wxListbook "self._setOORInfo(self)" - %addtofunc wxListbook() "" + %pythonAppend wxListbook "self._setOORInfo(self)" + %pythonAppend wxListbook() "" wxListbook(wxWindow *parent, - wxWindowID id, + wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPyEmptyString); - %name(PreListbook)wxListbook(); + %RenameCtor(PreListbook, wxListbook()); bool Create(wxWindow *parent, - wxWindowID id, + wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, @@ -303,11 +324,12 @@ public: // returns True if we have wxLB_TOP or wxLB_BOTTOM style bool IsVertical() const; + wxListView* GetListView(); }; -class wxListbookEvent : public wxBookCtrlEvent +class wxListbookEvent : public wxBookCtrlBaseEvent { public: wxListbookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, @@ -324,32 +346,103 @@ public: } +//--------------------------------------------------------------------------- + + +/* + * wxChoicebook flags + */ +enum { + wxCHB_DEFAULT, + wxCHB_TOP, + wxCHB_BOTTOM, + wxCHB_LEFT, + wxCHB_RIGHT, + wxCHB_ALIGN_MASK +}; + + +MustHaveApp(wxChoicebook); + +class wxChoicebook : public wxBookCtrlBase +{ +public: + %pythonAppend wxChoicebook "self._setOORInfo(self)" + %pythonAppend wxChoicebook() "" + + wxChoicebook(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyEmptyString); + %RenameCtor(PreChoicebook, wxChoicebook()); + + // quasi ctor + bool Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyEmptyString); + + + // returns true if we have wxCHB_TOP or wxCHB_BOTTOM style + bool IsVertical() const; + + // returns the choice control + wxChoice* GetChoiceCtrl() const; + + virtual bool DeleteAllPages(); +}; + + +class wxChoicebookEvent : public wxBookCtrlBaseEvent +{ +public: + wxChoicebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, + int nSel = -1, int nOldSel = -1); +}; + +%constant wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED; +%constant wxEventType wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING; + +%pythoncode { + EVT_CHOICEBOOK_PAGE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED, 1 ) + EVT_CHOICEBOOK_PAGE_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING, 1 ) +} + //--------------------------------------------------------------------------- %newgroup; +// WXWIN_COMPATIBILITY_2_4 class wxBookCtrlSizer: public wxSizer { public: - %addtofunc wxBookCtrlSizer "self._setOORInfo(self)" + %pythonAppend wxBookCtrlSizer "self._setOORInfo(self)" + + wxBookCtrlSizer( wxBookCtrlBase *nb ); - wxBookCtrlSizer( wxBookCtrl *nb ); - void RecalcSizes(); wxSize CalcMin(); - wxBookCtrl *GetControl(); + wxBookCtrlBase *GetControl(); }; class wxNotebookSizer: public wxSizer { public: - %addtofunc wxNotebookSizer "self._setOORInfo(self)" + %pythonAppend wxNotebookSizer "self._setOORInfo(self)" wxNotebookSizer( wxNotebook *nb ); - + void RecalcSizes(); wxSize CalcMin(); wxNotebook *GetNotebook(); }; +%pythoncode { NotebookSizer.__init__ = wx._deprecated(NotebookSizer.__init__, "NotebookSizer is no longer needed.") } +%pythoncode { BookCtrlSizer.__init__ = wx._deprecated(BookCtrlSizer.__init__, "BookCtrlSizer is no longer needed.") } + + //---------------------------------------------------------------------------