X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dce2bd223c2370f001f9ca93e04cbd437ff3f988..6caa0f5cd18fe9fb39c207d5f31fa5633479a822:/wxPython/src/_clipbrd.i diff --git a/wxPython/src/_clipbrd.i b/wxPython/src/_clipbrd.i index 7fd9be4534..b11ac31e96 100644 --- a/wxPython/src/_clipbrd.i +++ b/wxPython/src/_clipbrd.i @@ -33,7 +33,7 @@ clipboard and relinquish ownership. You should keep the clipboard open only momentarily. :see: `wx.DataObject` -"); +", ""); @@ -41,7 +41,7 @@ class wxClipboard : public wxObject { public: DocCtorStr( wxClipboard(), - ""); + "", ""); ~wxClipboard(); @@ -51,21 +51,21 @@ public: "Call this function to open the clipboard before calling SetData and GetData. Call Close when you have finished with the clipboard. You should keep the clipboard open for only a very short time. Returns -True on success."); +True on success.", ""); DocDeclStr( virtual void , Close(), - "Closes the clipboard."); + "Closes the clipboard.", ""); DocDeclStr( virtual bool , IsOpened() const, - "Query whether the clipboard is opened"); + "Query whether the clipboard is opened", ""); - %apply SWIGTYPE *DISOWN { wxDataObject *data }; + %disownarg( wxDataObject *data ); DocDeclStr( virtual bool , AddData( wxDataObject *data ), @@ -74,7 +74,7 @@ call this function repeatedly after having cleared the clipboard. After this function has been called, the clipboard owns the data, so do not delete the data explicitly. -:see: `wx.DataObject`"); +:see: `wx.DataObject`", ""); DocDeclStr( @@ -82,26 +82,26 @@ do not delete the data explicitly. "Set the clipboard data, this is the same as `Clear` followed by `AddData`. -:see: `wx.DataObject`"); +:see: `wx.DataObject`", ""); + + %cleardisown( wxDataObject *data ); - - %clear wxDataObject *data; DocDeclStr( virtual bool , IsSupported( const wxDataFormat& format ), "Returns True if the given format is available in the data object(s) on -the clipboard."); +the clipboard.", ""); DocDeclStr( virtual bool , GetData( wxDataObject& data ), "Call this function to fill data with data on the clipboard, if -available in the required format. Returns true on success."); +available in the required format. Returns true on success.", ""); DocDeclStr( virtual void , Clear(), "Clears data from the clipboard object and also the system's clipboard -if possible."); +if possible.", ""); DocDeclStr( @@ -109,21 +109,51 @@ if possible."); "Flushes the clipboard: this means that the data which is currently on clipboard will stay available even after the application exits, possibly eating memory, otherwise the clipboard will be emptied on -exit. Returns False if the operation is unsuccesful for any reason."); +exit. Returns False if the operation is unsuccesful for any reason.", ""); DocDeclStr( - virtual void , UsePrimarySelection( bool primary = True ), + virtual void , UsePrimarySelection( bool primary = true ), "On platforms supporting it (the X11 based platforms), selects the so called PRIMARY SELECTION as the clipboard as opposed to the -normal clipboard, if primary is True."); -}; +normal clipboard, if primary is True.", ""); + + DocDeclStr( + static wxClipboard *, Get(), + "Returns global instance (wxTheClipboard) of the object.", ""); + + %property(Data, GetData, SetData, doc="See `GetData` and `SetData`"); + +}; -%immutable; -wxClipboard* const wxTheClipboard; -%mutable; +// Previously we just declared wxTheClipboard as a global, but in C++ +// is has been changed to be a macro for wxClipboard::Get, but the +// swig generated code will try to evaluate it when it assigns to the +// swig wrapper var so this causes Get to be called too early on +// wxGTK. So instead we'll create a Python class that can delay the +// Get until it is really needed, which is similar in effect to what +// is really happening on the C++ side too. +%pythoncode { + class _wxPyDelayedInitWrapper(object): + def __init__(self, initfunc, *args, **kwargs): + self._initfunc = initfunc + self._args = args + self._kwargs = kwargs + self._instance = None + def _checkInstance(self): + if self._instance is None: + if wx.GetApp(): + self._instance = self._initfunc(*self._args, **self._kwargs) + def __getattr__(self, name): + self._checkInstance() + return getattr(self._instance, name) + def __repr__(self): + self._checkInstance() + return repr(self._instance) + TheClipboard = _wxPyDelayedInitWrapper(Clipboard.Get) +} //--------------------------------------------------------------------------- @@ -131,7 +161,7 @@ wxClipboard* const wxTheClipboard; DocStr(wxClipboardLocker, "A helpful class for opening the clipboard and automatically -closing it when the locker is destroyed."); +closing it when the locker is destroyed.", ""); class wxClipboardLocker { @@ -141,7 +171,7 @@ public: DocStr(__nonzero__, "A ClipboardLocker instance evaluates to True if the clipboard was -successfully opened.") +successfully opened.", ""); %extend { bool __nonzero__() { return !!(*self); } }