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
评论列表
文章目录