def WriteCallbackClassBody(self, generator): stream = generator.file print >> stream, "\t# Event Handlers" print >> stream, "\t# If you create handlers, they should have the following prototypes:" for name, entry in self.propMapGet.items() + self.propMapPut.items() + self.mapFuncs.items(): fdesc = entry.desc methName = MakeEventMethodName(entry.names[0]) print >> stream, '#\tdef ' + methName + '(self' + build.BuildCallList(fdesc, entry.names, "defaultNamedOptArg", "defaultNamedNotOptArg","defaultUnnamedArg", "pythoncom.Missing", is_comment = True) + '):' if entry.doc and entry.doc[1]: print >> stream, '#\t\t' + build._makeDocString(entry.doc[1]) print >> stream self.bWritten = 1
def do_gen_file_header(self): la = self.typelib.GetLibAttr() moduleDoc = self.typelib.GetDocumentation(-1) docDesc = "" if moduleDoc[1]: docDesc = moduleDoc[1] # Reset all the 'per file' state self.bHaveWrittenDispatchBaseClass = 0 self.bHaveWrittenCoClassBaseClass = 0 self.bHaveWrittenEventBaseClass = 0 # You must provide a file correctly configured for writing unicode. # We assert this is it may indicate somewhere in pywin32 that needs # upgrading. assert self.file.encoding, self.file encoding = self.file.encoding # or "mbcs" print >> self.file, '# -*- coding: %s -*-' % (encoding, ) print >> self.file, '# Created by makepy.py version %s' % ( makepy_version, ) print >> self.file, '# By python version %s' % \ (sys.version.replace("\n", "-"),) if self.sourceFilename: print >> self.file, "# From type library '%s'" % (os.path.split( self.sourceFilename)[1], ) print >> self.file, '# On %s' % time.ctime(time.time()) print >> self.file, build._makeDocString(docDesc) print >> self.file, 'makepy_version =', repr(makepy_version) print >> self.file, 'python_version = 0x%x' % (sys.hexversion, ) print >> self.file print >> self.file, 'import win32com.client.CLSIDToClass, pythoncom, pywintypes' print >> self.file, 'import win32com.client.util' print >> self.file, 'from pywintypes import IID' print >> self.file, 'from win32com.client import Dispatch' print >> self.file print >> self.file, '# The following 3 lines may need tweaking for the particular server' print >> self.file, '# Candidates are pythoncom.Missing, .Empty and .ArgNotFound' print >> self.file, 'defaultNamedOptArg=pythoncom.Empty' print >> self.file, 'defaultNamedNotOptArg=pythoncom.Empty' print >> self.file, 'defaultUnnamedArg=pythoncom.Empty' print >> self.file print >> self.file, 'CLSID = ' + repr(la[0]) print >> self.file, 'MajorVersion = ' + str(la[3]) print >> self.file, 'MinorVersion = ' + str(la[4]) print >> self.file, 'LibraryFlags = ' + str(la[5]) print >> self.file, 'LCID = ' + hex(la[1]) print >> self.file
def do_gen_file_header(self): la = self.typelib.GetLibAttr() moduleDoc = self.typelib.GetDocumentation(-1) docDesc = "" if moduleDoc[1]: docDesc = moduleDoc[1] # Reset all the 'per file' state self.bHaveWrittenDispatchBaseClass = 0 self.bHaveWrittenCoClassBaseClass = 0 self.bHaveWrittenEventBaseClass = 0 # You must provide a file correctly configured for writing unicode. # We assert this is it may indicate somewhere in pywin32 that needs # upgrading. assert self.file.encoding, self.file encoding = self.file.encoding # or "mbcs" print >> self.file, '# -*- coding: %s -*-' % (encoding,) print >> self.file, '# Created by makepy.py version %s' % (makepy_version,) print >> self.file, '# By python version %s' % \ (sys.version.replace("\n", "-"),) if self.sourceFilename: print >> self.file, "# From type library '%s'" % (os.path.split(self.sourceFilename)[1],) print >> self.file, '# On %s' % time.ctime(time.time()) print >> self.file, build._makeDocString(docDesc) print >> self.file, 'makepy_version =', repr(makepy_version) print >> self.file, 'python_version = 0x%x' % (sys.hexversion,) print >> self.file print >> self.file, 'import win32com.client.CLSIDToClass, pythoncom, pywintypes' print >> self.file, 'import win32com.client.util' print >> self.file, 'from pywintypes import IID' print >> self.file, 'from win32com.client import Dispatch' print >> self.file print >> self.file, '# The following 3 lines may need tweaking for the particular server' print >> self.file, '# Candidates are pythoncom.Missing, .Empty and .ArgNotFound' print >> self.file, 'defaultNamedOptArg=pythoncom.Empty' print >> self.file, 'defaultNamedNotOptArg=pythoncom.Empty' print >> self.file, 'defaultUnnamedArg=pythoncom.Empty' print >> self.file print >> self.file, 'CLSID = ' + repr(la[0]) print >> self.file, 'MajorVersion = ' + str(la[3]) print >> self.file, 'MinorVersion = ' + str(la[4]) print >> self.file, 'LibraryFlags = ' + str(la[5]) print >> self.file, 'LCID = ' + hex(la[1]) print >> self.file
def WriteClassHeader(self, generator): generator.checkWriteDispatchBaseClass() doc = self.doc stream = generator.file print >> stream, 'class ' + self.python_name + '(DispatchBaseClass):' if doc[1]: print >> stream, '\t' + build._makeDocString(doc[1]) try: progId = pythoncom.ProgIDFromCLSID(self.clsid) print >> stream, "\t# This class is creatable by the name '%s'" % (progId) except pythoncom.com_error: pass print >> stream, "\tCLSID = " + repr(self.clsid) if self.coclass_clsid is None: print >> stream, "\tcoclass_clsid = None" else: print >> stream, "\tcoclass_clsid = " + repr(self.coclass_clsid) print >> stream self.bWritten = 1
def WriteEventSinkClassHeader(self, generator): generator.checkWriteEventBaseClass() doc = self.doc stream = generator.file print >> stream, 'class ' + self.python_name + ':' if doc[1]: print >> stream, '\t' + build._makeDocString(doc[1]) try: progId = pythoncom.ProgIDFromCLSID(self.clsid) print >> stream, "\t# This class is creatable by the name '%s'" % ( progId) except pythoncom.com_error: pass print >> stream, '\tCLSID = CLSID_Sink = ' + repr(self.clsid) if self.coclass_clsid is None: print >> stream, "\tcoclass_clsid = None" else: print >> stream, "\tcoclass_clsid = " + repr(self.coclass_clsid) print >> stream, '\t_public_methods_ = [] # For COM Server support' WriteSinkEventMap(self, stream) print >> stream print >> stream, '\tdef __init__(self, oobj = None):' print >> stream, "\t\tif oobj is None:" print >> stream, "\t\t\tself._olecp = None" print >> stream, "\t\telse:" print >> stream, '\t\t\timport win32com.server.util' print >> stream, '\t\t\tfrom win32com.server.policy import EventHandlerPolicy' print >> stream, '\t\t\tcpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)' print >> stream, '\t\t\tcp=cpc.FindConnectionPoint(self.CLSID_Sink)' print >> stream, '\t\t\tcookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))' print >> stream, '\t\t\tself._olecp,self._olecp_cookie = cp,cookie' print >> stream, '\tdef __del__(self):' print >> stream, '\t\ttry:' print >> stream, '\t\t\tself.close()' print >> stream, '\t\texcept pythoncom.com_error:' print >> stream, '\t\t\tpass' print >> stream, '\tdef close(self):' print >> stream, '\t\tif self._olecp is not None:' print >> stream, '\t\t\tcp,cookie,self._olecp,self._olecp_cookie = self._olecp,self._olecp_cookie,None,None' print >> stream, '\t\t\tcp.Unadvise(cookie)' print >> stream, '\tdef _query_interface_(self, iid):' print >> stream, '\t\timport win32com.server.util' print >> stream, '\t\tif iid==self.CLSID_Sink: return win32com.server.util.wrap(self)' print >> stream self.bWritten = 1
def WriteEventSinkClassHeader(self, generator): generator.checkWriteEventBaseClass() doc = self.doc stream = generator.file print >> stream, "class " + self.python_name + ":" if doc[1]: print >> stream, "\t" + build._makeDocString(doc[1]) try: progId = pythoncom.ProgIDFromCLSID(self.clsid) print >> stream, "\t# This class is creatable by the name '%s'" % (progId) except pythoncom.com_error: pass print >> stream, "\tCLSID = CLSID_Sink = " + repr(self.clsid) if self.coclass_clsid is None: print >> stream, "\tcoclass_clsid = None" else: print >> stream, "\tcoclass_clsid = " + repr(self.coclass_clsid) print >> stream, "\t_public_methods_ = [] # For COM Server support" WriteSinkEventMap(self, stream) print >> stream print >> stream, "\tdef __init__(self, oobj = None):" print >> stream, "\t\tif oobj is None:" print >> stream, "\t\t\tself._olecp = None" print >> stream, "\t\telse:" print >> stream, "\t\t\timport win32com.server.util" print >> stream, "\t\t\tfrom win32com.server.policy import EventHandlerPolicy" print >> stream, "\t\t\tcpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)" print >> stream, "\t\t\tcp=cpc.FindConnectionPoint(self.CLSID_Sink)" print >> stream, "\t\t\tcookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))" print >> stream, "\t\t\tself._olecp,self._olecp_cookie = cp,cookie" print >> stream, "\tdef __del__(self):" print >> stream, "\t\ttry:" print >> stream, "\t\t\tself.close()" print >> stream, "\t\texcept pythoncom.com_error:" print >> stream, "\t\t\tpass" print >> stream, "\tdef close(self):" print >> stream, "\t\tif self._olecp is not None:" print >> stream, "\t\t\tcp,cookie,self._olecp,self._olecp_cookie = self._olecp,self._olecp_cookie,None,None" print >> stream, "\t\t\tcp.Unadvise(cookie)" print >> stream, "\tdef _query_interface_(self, iid):" print >> stream, "\t\timport win32com.server.util" print >> stream, "\t\tif iid==self.CLSID_Sink: return win32com.server.util.wrap(self)" print >> stream self.bWritten = 1