From: Robin Dunn Date: Fri, 10 Mar 2006 00:27:37 +0000 (+0000) Subject: Give classes that need one a destructor wrapper, and set %disown when X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c5633576a88598b7a204313f86f68967437f6dff?ds=inline Give classes that need one a destructor wrapper, and set %disown when another class takes ownership. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/src/_bitmap.i b/wxPython/src/_bitmap.i index 96a6329a78..bd0600d824 100644 --- a/wxPython/src/_bitmap.i +++ b/wxPython/src/_bitmap.i @@ -201,6 +201,7 @@ bitmap. This preserves mask information so that bitmaps and images can be converted back and forth without loss in that respect.", ""); + DocDeclStr( virtual wxMask* , GetMask() const, "Gets the associated mask (if any) which may have been loaded from a @@ -211,13 +212,14 @@ file or explpicitly set for the bitmap. // MSW only? wxBitmap GetMaskBitmap() const; + %disownarg(wxMask*); DocDeclStr( virtual void , SetMask(wxMask* mask), "Sets the mask for this bitmap. :see: `GetMask`, `wx.Mask` ", ""); - + %cleardisown(wxMask*); %extend { DocStr(SetMaskColour, @@ -338,7 +340,7 @@ passed then BLACK is used. } } - //~wxMask(); + ~wxMask(); }; %pythoncode { MaskColour = wx._deprecated(Mask, "wx.MaskColour is deprecated, use `wx.Mask` instead.") } diff --git a/wxPython/src/_constraints.i b/wxPython/src/_constraints.i index 13ceba74f9..1c0fd75f6d 100644 --- a/wxPython/src/_constraints.i +++ b/wxPython/src/_constraints.i @@ -233,6 +233,7 @@ button label.", ""); "is not determinable, -1.", ""); }; + DocStr(wxLayoutConstraints, "**Note:** constraints are now deprecated and you should use sizers instead. @@ -289,6 +290,8 @@ public: DocCtorStr( wxLayoutConstraints(), "", ""); + + ~wxLayoutConstraints(); DocDeclA( bool, SatisfyConstraints(wxWindow *win, int *OUTPUT), diff --git a/wxPython/src/_menu.i b/wxPython/src/_menu.i index b57f7bd6e7..2dbc925ea5 100644 --- a/wxPython/src/_menu.i +++ b/wxPython/src/_menu.i @@ -55,16 +55,21 @@ public: wxMenu *submenu, const wxString& help = wxPyEmptyString)); + + %disownarg(wxMenuItem*); // the most generic form of Append() - append anything %Rename(AppendItem, wxMenuItem*, Append(wxMenuItem *item)); + // insert an item before given position + %Rename(InsertItem, wxMenuItem*, Insert(size_t pos, wxMenuItem *item)); + // prepend an item to the menu + %Rename(PrependItem, wxMenuItem*, Prepend(wxMenuItem *item)); + %cleardisown(wxMenuItem*); + // insert a break in the menu (only works when appending the items, not // inserting them) virtual void Break(); - // insert an item before given position - %Rename(InsertItem, wxMenuItem*, Insert(size_t pos, wxMenuItem *item)); - // insert an item before given position wxMenuItem* Insert(size_t pos, int id, @@ -94,9 +99,6 @@ public: wxMenu *submenu, const wxString& help = wxPyEmptyString)); - // prepend an item to the menu - %Rename(PrependItem, wxMenuItem*, Prepend(wxMenuItem *item)); - // prepend any item to the menu wxMenuItem* Prepend(int id, const wxString& text, @@ -122,9 +124,11 @@ public: wxMenu *submenu, const wxString& help = wxPyEmptyString)); + // detach an item from the menu, but don't delete it so that it can be // added back later (but if it's not, the caller is responsible for // deleting it!) + %newobject Remove; wxMenuItem *Remove(int id); %Rename(RemoveItem, wxMenuItem*, Remove(wxMenuItem *item)); @@ -323,6 +327,7 @@ public: const wxString& help = wxPyEmptyString, wxItemKind kind = wxITEM_NORMAL, wxMenu* subMenu = NULL); + ~wxMenuItem(); // the menu we're in wxMenu *GetMenu() const; diff --git a/wxPython/src/_printfw.i b/wxPython/src/_printfw.i index d6a702a12c..cebbc4c996 100644 --- a/wxPython/src/_printfw.i +++ b/wxPython/src/_printfw.i @@ -341,6 +341,7 @@ public: bool GetAbort(); static wxPrinterError GetLastError(); + }; @@ -414,10 +415,14 @@ MustHaveApp(wxPyPrintout); class wxPyPrintout : public wxObject { public: %pythonAppend wxPyPrintout "self._setCallbackInfo(self, Printout)" + %typemap(out) wxPyPrintout*; // turn off this typemap wxPyPrintout(const wxString& title = wxPyPrintoutTitleStr); - //~wxPyPrintout(); wxPrintPreview object takes ownership... + ~wxPyPrintout(); + // Turn it back on again + %typemap(out) wxPyPrintout* { $result = wxPyMake_wxObject($1, $owner); } + void _setCallbackInfo(PyObject* self, PyObject* _class); @@ -491,14 +496,17 @@ MustHaveApp(wxPreviewFrame); class wxPreviewFrame : public wxFrame { public: + %disownarg(wxPrintPreview*); + %pythonAppend wxPreviewFrame "self._setOORInfo(self)" - wxPreviewFrame(wxPrintPreview* preview, wxFrame* parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxPyFrameNameStr); + %cleardisown(wxPrintPreview*); + void Initialize(); void CreateControlBar(); void CreateCanvas(); @@ -562,6 +570,8 @@ MustHaveApp(wxPrintPreview); class wxPrintPreview : public wxObject { public: + %disownarg(wxPyPrintout*); + %nokwargs wxPrintPreview; wxPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, @@ -570,6 +580,8 @@ public: wxPyPrintout* printoutForPrinting, wxPrintData* data); + ~wxPrintPreview(); + virtual bool SetCurrentPage(int pageNum); int GetCurrentPage(); @@ -577,6 +589,8 @@ public: wxPyPrintout *GetPrintout(); wxPyPrintout *GetPrintoutForPrinting(); + %cleardisown(wxPyPrintout*); + void SetFrame(wxFrame *frame); void SetCanvas(wxPreviewCanvas *canvas); @@ -695,6 +709,8 @@ MustHaveApp(wxPyPrintPreview); class wxPyPrintPreview : public wxPrintPreview { public: + %disownarg(wxPyPrintout*); + %pythonAppend wxPyPrintPreview "self._setCallbackInfo(self, PyPrintPreview)" %nokwargs wxPyPrintPreview; wxPyPrintPreview(wxPyPrintout* printout, @@ -704,6 +720,8 @@ public: wxPyPrintout* printoutForPrinting, wxPrintData* data); + %cleardisown(wxPyPrintout*); + void _setCallbackInfo(PyObject* self, PyObject* _class); bool SetCurrentPage(int pageNum); diff --git a/wxPython/src/_window.i b/wxPython/src/_window.i index 8bb7459a19..6c9381ed1f 100644 --- a/wxPython/src/_window.i +++ b/wxPython/src/_window.i @@ -1810,7 +1810,7 @@ Only functional on Windows.", ""); // constraints and sizers // ---------------------- - // set the constraints for this window or retrieve them (may be NULL) + %disownarg(wxLayoutConstraints*); DocDeclStr( void , SetConstraints( wxLayoutConstraints *constraints ), "Sets the window to have the given layout constraints. If an existing @@ -1828,6 +1828,7 @@ effect.", ""); wxLayoutConstraints *, GetConstraints() const, "Returns a pointer to the window's layout constraints, or None if there are none.", ""); + %cleardisown(wxLayoutConstraints*); DocDeclStr(