Implemented the first phase of OOR (Original Object Return). See the
text in the demo for more details of what this means, but in a nutshell methods such as wxWindow.GetParent or FindWindowById will now return a shadow object of the proper type if it can. By "proper type" I mean that if the wxWindow pointer returned from FindWindowById really points to a wxButton then the Python object constructed will be of a wxButtonPtr class instead of wxWindowPtr as before. This should reduce or eliminiate the need for wxPyTypeCast. (Woo Hoo!) The objects returned are still not the original Python object, but that is the next step. (Although it will probably only work on Python 2.1 and beyond because it will use weak references.) A few other minor tweaks and fixes and additions for things found while doing the OOR stuff. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -20,7 +20,7 @@ def wxDLG_SZE(win, size_width, height=None):
|
||||
else:
|
||||
return win.ConvertDialogSizeToPixels(wxSize(size_width, height))
|
||||
|
||||
class wxEvtHandlerPtr :
|
||||
class wxEvtHandlerPtr(wxObjectPtr):
|
||||
def __init__(self,this):
|
||||
self.this = this
|
||||
self.thisown = 0
|
||||
@@ -38,11 +38,9 @@ class wxEvtHandlerPtr :
|
||||
return val
|
||||
def GetNextHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxEvtHandler_GetNextHandler,(self,) + _args, _kwargs)
|
||||
if val: val = wxEvtHandlerPtr(val)
|
||||
return val
|
||||
def GetPreviousHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxEvtHandler_GetPreviousHandler,(self,) + _args, _kwargs)
|
||||
if val: val = wxEvtHandlerPtr(val)
|
||||
return val
|
||||
def SetNextHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxEvtHandler_SetNextHandler,(self,) + _args, _kwargs)
|
||||
@@ -56,9 +54,6 @@ class wxEvtHandlerPtr :
|
||||
def Disconnect(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxEvtHandler_Disconnect,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def GetClassName(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxEvtHandler_GetClassName,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def __repr__(self):
|
||||
return "<C wxEvtHandler instance at %s>" % (self.this,)
|
||||
class wxEvtHandler(wxEvtHandlerPtr):
|
||||
@@ -75,11 +70,9 @@ class wxValidatorPtr(wxEvtHandlerPtr):
|
||||
self.thisown = 0
|
||||
def Clone(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxValidator_Clone,(self,) + _args, _kwargs)
|
||||
if val: val = wxValidatorPtr(val)
|
||||
return val
|
||||
def GetWindow(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxValidator_GetWindow,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def SetWindow(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxValidator_SetWindow,(self,) + _args, _kwargs)
|
||||
@@ -98,9 +91,6 @@ class wxPyValidatorPtr(wxValidatorPtr):
|
||||
def __init__(self,this):
|
||||
self.this = this
|
||||
self.thisown = 0
|
||||
def Destroy(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxPyValidator_Destroy,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def _setSelf(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxPyValidator__setSelf,(self,) + _args, _kwargs)
|
||||
return val
|
||||
@@ -110,7 +100,7 @@ class wxPyValidator(wxPyValidatorPtr):
|
||||
def __init__(self,*_args,**_kwargs):
|
||||
self.this = apply(windowsc.new_wxPyValidator,_args,_kwargs)
|
||||
self.thisown = 1
|
||||
self._setSelf(self, wxPyValidator, 0)
|
||||
self._setSelf(self, wxPyValidator, 1)
|
||||
|
||||
|
||||
|
||||
@@ -164,11 +154,9 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def FindWindowById(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_FindWindowById,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def FindWindowByName(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_FindWindowByName,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def Fit(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_Fit,(self,) + _args, _kwargs)
|
||||
@@ -199,7 +187,6 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetEventHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetEventHandler,(self,) + _args, _kwargs)
|
||||
if val: val = wxEvtHandlerPtr(val)
|
||||
return val
|
||||
def GetFont(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetFont,(self,) + _args, _kwargs)
|
||||
@@ -211,7 +198,6 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetGrandParent(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetGrandParent,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def GetHandle(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetHandle,(self,) + _args, _kwargs)
|
||||
@@ -230,7 +216,6 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetParent(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetParent,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def GetPositionTuple(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetPositionTuple,(self,) + _args, _kwargs)
|
||||
@@ -328,7 +313,6 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def PopEventHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_PopEventHandler,(self,) + _args, _kwargs)
|
||||
if val: val = wxEvtHandlerPtr(val)
|
||||
return val
|
||||
def PushEventHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_PushEventHandler,(self,) + _args, _kwargs)
|
||||
@@ -486,18 +470,15 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetToolTip(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetToolTip,(self,) + _args, _kwargs)
|
||||
if val: val = wxToolTipPtr(val)
|
||||
return val
|
||||
def SetSizer(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_SetSizer,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def GetSizer(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetSizer,(self,) + _args, _kwargs)
|
||||
if val: val = wxSizerPtr(val)
|
||||
return val
|
||||
def GetValidator(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_GetValidator,(self,) + _args, _kwargs)
|
||||
if val: val = wxValidatorPtr(val)
|
||||
return val
|
||||
def SetValidator(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_SetValidator,(self,) + _args, _kwargs)
|
||||
@@ -523,24 +504,12 @@ class wxWindowPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def __repr__(self):
|
||||
return "<C wxWindow instance at %s>" % (self.this,)
|
||||
# replaces broken shadow methods
|
||||
# replaces broken shadow method
|
||||
def GetCaret(self, *_args, **_kwargs):
|
||||
from misc2 import wxCaretPtr
|
||||
val = apply(windowsc.wxWindow_GetCaret,(self,) + _args, _kwargs)
|
||||
if val: val = wxCaretPtr(val)
|
||||
return val
|
||||
|
||||
def GetSizer(self, *_args, **_kwargs):
|
||||
from sizers import wxSizerPtr
|
||||
val = apply(windowsc.wxWindow_GetSizer,(self,) + _args, _kwargs)
|
||||
if val: val = wxSizerPtr(val)
|
||||
return val
|
||||
|
||||
def GetToolTip(self, *_args, **_kwargs):
|
||||
from misc2 import wxToolTipPtr
|
||||
val = apply(windowsc.wxWindow_GetToolTip,(self,) + _args, _kwargs)
|
||||
if val: val = wxToolTipPtr(val)
|
||||
return val
|
||||
|
||||
class wxWindow(wxWindowPtr):
|
||||
def __init__(self,*_args,**_kwargs):
|
||||
@@ -560,20 +529,12 @@ class wxPanelPtr(wxWindowPtr):
|
||||
return val
|
||||
def GetDefaultItem(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxPanel_GetDefaultItem,(self,) + _args, _kwargs)
|
||||
if val: val = wxButtonPtr(val)
|
||||
return val
|
||||
def SetDefaultItem(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxPanel_SetDefaultItem,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def __repr__(self):
|
||||
return "<C wxPanel instance at %s>" % (self.this,)
|
||||
|
||||
def GetDefaultItem(self):
|
||||
import controls
|
||||
val = windowsc.wxPanel_GetDefaultItem(self.this)
|
||||
val = controls.wxButtonPtr(val)
|
||||
return val
|
||||
|
||||
class wxPanel(wxPanelPtr):
|
||||
def __init__(self,*_args,**_kwargs):
|
||||
self.this = apply(windowsc.new_wxPanel,_args,_kwargs)
|
||||
@@ -625,27 +586,12 @@ class wxDialogPtr(wxPanelPtr):
|
||||
return val
|
||||
def CreateTextSizer(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxDialog_CreateTextSizer,(self,) + _args, _kwargs)
|
||||
if val: val = wxSizerPtr(val)
|
||||
return val
|
||||
def CreateButtonSizer(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxDialog_CreateButtonSizer,(self,) + _args, _kwargs)
|
||||
if val: val = wxSizerPtr(val)
|
||||
return val
|
||||
def __repr__(self):
|
||||
return "<C wxDialog instance at %s>" % (self.this,)
|
||||
|
||||
# replace swig generated shadow methods to resolve import issues
|
||||
def CreateTextSizer(self, *_args, **_kwargs):
|
||||
import sizers
|
||||
val = apply(windowsc.wxDialog_CreateTextSizer,(self,) + _args, _kwargs)
|
||||
if val: val = sizers.wxSizerPtr(val)
|
||||
return val
|
||||
def CreateButtonSizer(self, *_args, **_kwargs):
|
||||
import sizers
|
||||
val = apply(windowsc.wxDialog_CreateButtonSizer,(self,) + _args, _kwargs)
|
||||
if val: val = sizers.wxSizerPtr(val)
|
||||
return val
|
||||
|
||||
class wxDialog(wxDialogPtr):
|
||||
def __init__(self,*_args,**_kwargs):
|
||||
self.this = apply(windowsc.new_wxDialog,_args,_kwargs)
|
||||
@@ -670,7 +616,6 @@ class wxScrolledWindowPtr(wxPanelPtr):
|
||||
return val
|
||||
def GetTargetWindow(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxScrolledWindow_GetTargetWindow,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def GetVirtualSize(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxScrolledWindow_GetVirtualSize,(self,) + _args, _kwargs)
|
||||
@@ -765,7 +710,6 @@ class wxMenuPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def FindItemById(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_FindItemById,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuItemPtr(val)
|
||||
return val
|
||||
def GetTitle(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_GetTitle,(self,) + _args, _kwargs)
|
||||
@@ -799,11 +743,9 @@ class wxMenuPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def Remove(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_Remove,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuItemPtr(val)
|
||||
return val
|
||||
def RemoveItem(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_RemoveItem,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuItemPtr(val)
|
||||
return val
|
||||
def Destroy(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_Destroy,(self,) + _args, _kwargs)
|
||||
@@ -825,14 +767,12 @@ class wxMenuPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetEventHandler(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_GetEventHandler,(self,) + _args, _kwargs)
|
||||
if val: val = wxEvtHandlerPtr(val)
|
||||
return val
|
||||
def SetInvokingWindow(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_SetInvokingWindow,(self,) + _args, _kwargs)
|
||||
return val
|
||||
def GetInvokingWindow(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_GetInvokingWindow,(self,) + _args, _kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
def GetStyle(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_GetStyle,(self,) + _args, _kwargs)
|
||||
@@ -845,7 +785,6 @@ class wxMenuPtr(wxEvtHandlerPtr):
|
||||
return val
|
||||
def GetParent(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenu_GetParent,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def __repr__(self):
|
||||
return "<C wxMenu instance at %s>" % (self.this,)
|
||||
@@ -872,15 +811,12 @@ class wxMenuBarPtr(wxWindowPtr):
|
||||
return val
|
||||
def GetMenu(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_GetMenu,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def Replace(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_Replace,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def Remove(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_Remove,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def EnableTop(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_EnableTop,(self,) + _args, _kwargs)
|
||||
@@ -896,7 +832,6 @@ class wxMenuBarPtr(wxWindowPtr):
|
||||
return val
|
||||
def FindItemById(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_FindItemById,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuItemPtr(val)
|
||||
return val
|
||||
def Enable(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuBar_Enable,(self,) + _args, _kwargs)
|
||||
@@ -932,13 +867,12 @@ class wxMenuBar(wxMenuBarPtr):
|
||||
|
||||
|
||||
|
||||
class wxMenuItemPtr :
|
||||
class wxMenuItemPtr(wxObjectPtr):
|
||||
def __init__(self,this):
|
||||
self.this = this
|
||||
self.thisown = 0
|
||||
def GetMenu(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuItem_GetMenu,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def SetId(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuItem_SetId,(self,) + _args, _kwargs)
|
||||
@@ -972,7 +906,6 @@ class wxMenuItemPtr :
|
||||
return val
|
||||
def GetSubMenu(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuItem_GetSubMenu,(self,) + _args, _kwargs)
|
||||
if val: val = wxMenuPtr(val)
|
||||
return val
|
||||
def Enable(self, *_args, **_kwargs):
|
||||
val = apply(windowsc.wxMenuItem_Enable,(self,) + _args, _kwargs)
|
||||
@@ -1059,18 +992,12 @@ class wxMenuItem(wxMenuItemPtr):
|
||||
|
||||
#-------------- FUNCTION WRAPPERS ------------------
|
||||
|
||||
wxValidator_IsSilent = windowsc.wxValidator_IsSilent
|
||||
|
||||
wxValidator_SetBellOnError = windowsc.wxValidator_SetBellOnError
|
||||
|
||||
def wxWindow_FindFocus(*_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_FindFocus,_args,_kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
|
||||
def wxWindow_FromHWND(*_args, **_kwargs):
|
||||
val = apply(windowsc.wxWindow_FromHWND,_args,_kwargs)
|
||||
if val: val = wxWindowPtr(val)
|
||||
return val
|
||||
|
||||
wxWindow_NewControlId = windowsc.wxWindow_NewControlId
|
||||
@@ -1079,6 +1006,10 @@ wxWindow_NextControlId = windowsc.wxWindow_NextControlId
|
||||
|
||||
wxWindow_PrevControlId = windowsc.wxWindow_PrevControlId
|
||||
|
||||
wxValidator_IsSilent = windowsc.wxValidator_IsSilent
|
||||
|
||||
wxValidator_SetBellOnError = windowsc.wxValidator_SetBellOnError
|
||||
|
||||
wxMenuItem_GetLabelFromText = windowsc.wxMenuItem_GetLabelFromText
|
||||
|
||||
wxMenuItem_GetDefaultMarginWidth = windowsc.wxMenuItem_GetDefaultMarginWidth
|
||||
|
Reference in New Issue
Block a user