OSDN Git Service

Move all comtypes monkey patches out of core.py into a separate module (comtypesMonke...
authorMichael Curran <mick@kulgan.net>
Thu, 10 Jan 2013 02:07:50 +0000 (12:07 +1000)
committerMichael Curran <mick@kulgan.net>
Thu, 10 Jan 2013 02:07:50 +0000 (12:07 +1000)
source/comtypesMonkeyPatches.py [new file with mode: 0644]
source/core.py

diff --git a/source/comtypesMonkeyPatches.py b/source/comtypesMonkeyPatches.py
new file mode 100644 (file)
index 0000000..094b77c
--- /dev/null
@@ -0,0 +1,38 @@
+#A part of NonVisual Desktop Access (NVDA)\r
+#Copyright (C) 2006-2008 NVDA Contributors <http://www.nvda-project.org/>\r
+#This file is covered by the GNU General Public License.\r
+#See the file COPYING for more details.\r
+\r
+#Monkey patch comtypes to support byref in variants\r
+from comtypes.automation import VARIANT, VT_BYREF\r
+from ctypes import cast, c_void_p\r
+from _ctypes import _Pointer\r
+oldVARIANT_value_fset=VARIANT.value.fset\r
+def newVARIANT_value_fset(self,value):\r
+       realValue=value\r
+       if isinstance(value,_Pointer):\r
+               try:\r
+                       value=value.contents\r
+               except (NameError,AttributeError):\r
+                       pass\r
+       oldVARIANT_value_fset(self,value)\r
+       if realValue is not value:\r
+               self.vt|=VT_BYREF\r
+               self._.c_void_p=cast(realValue,c_void_p)\r
+VARIANT.value=property(VARIANT.value.fget,newVARIANT_value_fset,VARIANT.value.fdel)\r
+\r
+#Monkeypatch comtypes lazybind dynamic IDispatch support to fallback to the more basic dynamic IDispatch support if the former does not work\r
+#Example: ITypeComp.bind gives back a vardesc, which comtypes does not yet support\r
+import comtypes.client.lazybind\r
+old__getattr__=comtypes.client.lazybind.Dispatch.__getattr__\r
+def new__getattr__(self,name):\r
+       try:\r
+               return old__getattr__(self,name)\r
+       except (NameError, AttributeError):\r
+               return getattr(comtypes.client.dynamic._Dispatch(self._comobj),name)\r
+comtypes.client.lazybind.Dispatch.__getattr__=new__getattr__\r
+\r
+#Monkeypatch comtypes to allow its basic dynamic Dispatch support to  support invoke 0 (calling the actual IDispatch object itself)\r
+def new__call__(self,*args,**kwargs):\r
+       return comtypes.client.dynamic.MethodCaller(0,self)(*args,**kwargs)\r
+comtypes.client.dynamic._Dispatch.__call__=new__call__\r
index 7aa82e2..a98dcfb 100644 (file)
@@ -13,40 +13,8 @@ import comtypes.gen
 import comInterfaces\r
 comtypes.gen.__path__.append(comInterfaces.__path__[0])\r
 \r
-#Monkey patch comtypes to support byref in variants\r
-from comtypes.automation import VARIANT, VT_BYREF\r
-from ctypes import cast, c_void_p\r
-from _ctypes import _Pointer\r
-oldVARIANT_value_fset=VARIANT.value.fset\r
-def newVARIANT_value_fset(self,value):\r
-       realValue=value\r
-       if isinstance(value,_Pointer):\r
-               try:\r
-                       value=value.contents\r
-               except (NameError,AttributeError):\r
-                       pass\r
-       oldVARIANT_value_fset(self,value)\r
-       if realValue is not value:\r
-               self.vt|=VT_BYREF\r
-               self._.c_void_p=cast(realValue,c_void_p)\r
-VARIANT.value=property(VARIANT.value.fget,newVARIANT_value_fset,VARIANT.value.fdel)\r
-\r
-#Monkeypatch comtypes lazybind dynamic IDispatch support to fallback to the more basic dynamic IDispatch support if the former does not work\r
-#Example: ITypeComp.bind gives back a vardesc, which comtypes does not yet support\r
-import comtypes.client.lazybind\r
-old__getattr__=comtypes.client.lazybind.Dispatch.__getattr__\r
-def new__getattr__(self,name):\r
-       try:\r
-               return old__getattr__(self,name)\r
-       except (NameError, AttributeError):\r
-               return getattr(comtypes.client.dynamic._Dispatch(self._comobj),name)\r
-comtypes.client.lazybind.Dispatch.__getattr__=new__getattr__\r
-\r
-#Monkeypatch comtypes to allow its basic dynamic Dispatch support to  support invoke 0 (calling the actual IDispatch object itself)\r
-def new__call__(self,*args,**kwargs):\r
-       return comtypes.client.dynamic.MethodCaller(0,self)(*args,**kwargs)\r
-comtypes.client.dynamic._Dispatch.__call__=new__call__\r
-\r
+#Apply several monky patches to comtypes\r
+import comtypesMonkeyPatches\r
 \r
 import sys\r
 import nvwave\r