Changes needed to accomodate wxTheClipboard now being a macro for wxClipboard::Get

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-06-21 22:37:35 +00:00
parent 71132988f8
commit fe5e444a73
5 changed files with 34 additions and 7 deletions

View File

@@ -334,7 +334,6 @@
%rename(DragCancel) wxDragCancel; %rename(DragCancel) wxDragCancel;
%rename(IsDragResultOk) wxIsDragResultOk; %rename(IsDragResultOk) wxIsDragResultOk;
%rename(Clipboard) wxClipboard; %rename(Clipboard) wxClipboard;
%rename(TheClipboard) wxTheClipboard;
%rename(ClipboardLocker) wxClipboardLocker; %rename(ClipboardLocker) wxClipboardLocker;
%rename(VideoMode) wxVideoMode; %rename(VideoMode) wxVideoMode;
%rename(DefaultVideoMode) wxDefaultVideoMode; %rename(DefaultVideoMode) wxDefaultVideoMode;

View File

@@ -7,6 +7,7 @@ PyDropTarget
#SystemSettings_GetSystemFont #SystemSettings_GetSystemFont
#SystemSettings_GetSystemMetric #SystemSettings_GetSystemMetric
TheClipboard
# With the * on the end these will cause code to be added that # With the * on the end these will cause code to be added that
# will scan for other names in the source module tha have the # will scan for other names in the source module tha have the

View File

@@ -117,13 +117,40 @@ exit. Returns False if the operation is unsuccesful for any reason.", "");
"On platforms supporting it (the X11 based platforms), selects the "On platforms supporting it (the X11 based platforms), selects the
so called PRIMARY SELECTION as the clipboard as opposed to 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.", "");
}; };
%immutable; // Previously we just declared wxTheClipboard as a global, but in C++
wxClipboard* const wxTheClipboard; // is has been changed to be a macro for wxClipboard::Get, but the
%mutable; // 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:
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)
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@@ -825,7 +825,6 @@ void wxPy_ReinitStockObjects(int pass)
REINITOBJ(wxTheColourDatabase, wxColourDatabase); REINITOBJ(wxTheColourDatabase, wxColourDatabase);
REINITOBJ(wxTheClipboard, wxClipboard);
REINITOBJ2(wxDefaultValidator, wxValidator); REINITOBJ2(wxDefaultValidator, wxValidator);
REINITOBJ2(wxNullImage, wxImage); REINITOBJ2(wxNullImage, wxImage);
REINITOBJ2(wxNullAcceleratorTable, wxAcceleratorTable); REINITOBJ2(wxNullAcceleratorTable, wxAcceleratorTable);

View File

@@ -563,7 +563,7 @@ wxFileDropTarget = wx._misc.FileDropTarget
wxFileDropTargetPtr = wx._misc.FileDropTargetPtr wxFileDropTargetPtr = wx._misc.FileDropTargetPtr
wxClipboard = wx._misc.Clipboard wxClipboard = wx._misc.Clipboard
wxClipboardPtr = wx._misc.ClipboardPtr wxClipboardPtr = wx._misc.ClipboardPtr
wxTheClipboard = wx._misc.TheClipboard wxClipboard_Get = wx._misc.Clipboard_Get
wxClipboardLocker = wx._misc.ClipboardLocker wxClipboardLocker = wx._misc.ClipboardLocker
wxClipboardLockerPtr = wx._misc.ClipboardLockerPtr wxClipboardLockerPtr = wx._misc.ClipboardLockerPtr
wxVideoMode = wx._misc.VideoMode wxVideoMode = wx._misc.VideoMode
@@ -576,5 +576,6 @@ wxDisplay_GetFromPoint = wx._misc.Display_GetFromPoint
wxDisplay_GetFromWindow = wx._misc.Display_GetFromWindow wxDisplay_GetFromWindow = wx._misc.Display_GetFromWindow
wxPyTimer = wx._misc.PyTimer wxPyTimer = wx._misc.PyTimer
wxPyDropTarget = wx._misc.PyDropTarget wxPyDropTarget = wx._misc.PyDropTarget
wxTheClipboard = wx._misc.TheClipboard