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._safeQuotedString(entry.doc[1]) print >> stream self.bWritten = 1
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._safeQuotedString(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._safeQuotedString(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._safeQuotedString(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