X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/wx/lib/activexwrapper.py diff --git a/wxPython/wx/lib/activexwrapper.py b/wxPython/wx/lib/activexwrapper.py deleted file mode 100644 index 67d09d6fd1..0000000000 --- a/wxPython/wx/lib/activexwrapper.py +++ /dev/null @@ -1,155 +0,0 @@ -#---------------------------------------------------------------------- -# Name: wxPython.lib.activexwrapper -# Purpose: a wxWindow derived class that can hold an ActiveX control -# -# Author: Robin Dunn -# -# RCS-ID: $Id$ -# Copyright: (c) 2000 by Total Control Software -# Licence: wxWindows license -#---------------------------------------------------------------------- -# 11/30/2003 - Jeff Grimmett (grimmtooth@softhome.net) -# -# o Updated for wx namespace -# o Tested with updated demo -# - -import wx - -try: - import win32ui - import pywin.mfc.activex - import win32com.client -except ImportError: - import sys - if hasattr(sys, "frozen"): - import os, win32api - dllpath = os.path.join(win32api.GetSystemDirectory(), 'MFC71.DLL') - if sys.version[:3] >= '2.4' and not os.path.exists(dllpath): - message = "%s not found" % dllpath - else: - raise # original error message - else: - message = "ActiveXWrapper requires PythonWin. Please install the PyWin32 package." - raise ImportError(message) - -##from win32con import WS_TABSTOP, WS_VISIBLE -WS_TABSTOP = 0x00010000 -WS_VISIBLE = 0x10000000 - -#---------------------------------------------------------------------- - - -def MakeActiveXClass(CoClass, eventClass=None, eventObj=None): - """ - Dynamically construct a new class that derives from wxWindow, the - ActiveX control and the appropriate COM classes. This new class - can be used just like the wxWindow class, but will also respond - appropriately to the methods and properties of the COM object. If - this class, a derived class or a mix-in class has method names - that match the COM object's event names, they will be called - automatically. - - CoClass -- A COM control class from a module generated by - makepy.py from a COM TypeLibrary. Can also accept a - CLSID. - - eventClass -- If given, this class will be added to the set of - base classes that the new class is drived from. It is - good for mix-in classes for catching events. - - eventObj -- If given, this object will be searched for attributes - by the new class's __getattr__ method, (like a mix-in - object.) This is useful if you want to catch COM - callbacks in an existing object, (such as the parent - window.) - - """ - - - if type(CoClass) == type(""): - # use the CLSID to get the real class - CoClass = win32com.client.CLSIDToClass(CoClass) - - # determine the base classes - axEventClass = CoClass.default_source - baseClasses = [pywin.mfc.activex.Control, wx.Window, CoClass, axEventClass] - if eventClass: - baseClasses.append(eventClass) - baseClasses = tuple(baseClasses) - - # define the class attributes - className = 'AXControl_'+CoClass.__name__ - classDict = { '__init__' : axw__init__, - '__getattr__' : axw__getattr__, - 'axw_OnSize' : axw_OnSize, - 'axw_OEB' : axw_OEB, - '_name' : className, - '_eventBase' : axEventClass, - '_eventObj' : eventObj, - 'Cleanup' : axw_Cleanup, - } - - # make a new class object - import new - classObj = new.classobj(className, baseClasses, classDict) - return classObj - - - - -# These functions will be used as methods in the new class -def axw__init__(self, parent, ID=-1, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): - - # init base classes - pywin.mfc.activex.Control.__init__(self) - wx.Window.__init__( self, parent, -1, pos, size, style|wx.NO_FULL_REPAINT_ON_RESIZE) - self.this.own(False) # this should be set in wx.Window.__init__ when it calls _setOORInfo, but... - - win32ui.EnableControlContainer() - self._eventObj = self._eventObj # move from class to instance - - # create a pythonwin wrapper around this wxWindow - handle = self.GetHandle() - self._wnd = win32ui.CreateWindowFromHandle(handle) - - # create the control - sz = self.GetSize() - self.CreateControl(self._name, WS_TABSTOP | WS_VISIBLE, - (0, 0, sz.width, sz.height), self._wnd, ID) - - # init the ax events part of the object - self._eventBase.__init__(self, self._dispobj_) - - # hook some wx events - self.Bind(wx.EVT_SIZE, self.axw_OnSize) - -def axw__getattr__(self, attr): - try: - return pywin.mfc.activex.Control.__getattr__(self, attr) - except AttributeError: - try: - eo = self.__dict__['_eventObj'] - return getattr(eo, attr) - except AttributeError: - raise AttributeError('Attribute not found: %s' % attr) - - -def axw_OnSize(self, event): - sz = self.GetClientSize() # get wxWindow size - self.MoveWindow((0, 0, sz.width, sz.height), 1) # move the AXControl - - -def axw_OEB(self, event): - pass - - -def axw_Cleanup(self): - #del self._wnd - self.close() - pass - - - - -