]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_clipbrd.i
Factory some of wxFilterClassFactory into a base class.
[wxWidgets.git] / wxPython / src / _clipbrd.i
index 7fd9be453453cedbe48854eac984b727c6b0c814..b11ac31e969c67a3511de6c035d99b8eb3bce63e 100644 (file)
@@ -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); }
     }