home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- from win32com.client import DispatchWithEvents, Dispatch
- import msvcrt
- import pythoncom
- import time
- import sys
- import types
- import threading
- stopEvent = threading.Event()
-
- def TestExcel():
-
- class ExcelEvents:
-
- def OnNewWorkbook(self, wb):
- if type(wb) != types.InstanceType:
- raise RuntimeError, 'The transformer doesnt appear to have translated this for us!'
- type(wb) != types.InstanceType
- self.seen_events['OnNewWorkbook'] = None
-
-
- def OnWindowActivate(self, wb, wn):
- if type(wb) != types.InstanceType or type(wn) != types.InstanceType:
- raise RuntimeError, 'The transformer doesnt appear to have translated this for us!'
- type(wn) != types.InstanceType
- self.seen_events['OnWindowActivate'] = None
-
-
- def OnWindowDeactivate(self, wb, wn):
- self.seen_events['OnWindowDeactivate'] = None
-
-
- def OnSheetDeactivate(self, sh):
- self.seen_events['OnSheetDeactivate'] = None
-
-
- def OnSheetBeforeDoubleClick(self, Sh, Target, Cancel):
- if Target.Column % 2 == 0:
- print 'You can double-click there...'
- else:
- print 'You can not double-click there...'
- return 1
- return Target.Column % 2 == 0
-
-
-
- class WorkbookEvents:
-
- def OnActivate(self):
- print 'workbook OnActivate'
-
-
- def OnBeforeRightClick(self, Target, Cancel):
- print "It's a Worksheet Event"
-
-
- e = DispatchWithEvents('Excel.Application', ExcelEvents)
- e.seen_events = { }
- e.Visible = 1
- book = e.Workbooks.Add()
- book = DispatchWithEvents(book, WorkbookEvents)
- print 'Have book', book
- print 'Double-click in a few of the Excel cells...'
- print 'Press any key when finished with Excel, or wait 10 seconds...'
- if not _WaitForFinish(e, 10):
- e.Quit()
-
- if not _CheckSeenEvents(e, [
- 'OnNewWorkbook',
- 'OnWindowActivate']):
- sys.exit(1)
-
-
-
- def TestWord():
-
- class WordEvents:
-
- def OnDocumentChange(self):
- self.seen_events['OnDocumentChange'] = None
-
-
- def OnWindowActivate(self, doc, wn):
- self.seen_events['OnWindowActivate'] = None
-
-
- def OnQuit(self):
- self.seen_events['OnQuit'] = None
- stopEvent.set()
-
-
- w = DispatchWithEvents('Word.Application', WordEvents)
- w.seen_events = { }
- w.Visible = 1
- w.Documents.Add()
- print 'Press any key when finished with Word, or wait 10 seconds...'
- if not _WaitForFinish(w, 10):
- w.Quit()
-
- if not _CheckSeenEvents(w, [
- 'OnDocumentChange',
- 'OnWindowActivate']):
- sys.exit(1)
-
-
-
- def _WaitForFinish(ob, timeout):
- end = time.time() + timeout
- while msvcrt.kbhit():
- msvcrt.getch()
- break
- pythoncom.PumpWaitingMessages()
- stopEvent.wait(0.2)
- if stopEvent.isSet():
- stopEvent.clear()
- break
-
-
- try:
- if not ob.Visible:
- return 0
- except pythoncom.com_error:
- pass
-
- if time.time() > end:
- return 0
- continue
- return 1
-
-
- def _CheckSeenEvents(o, events):
- rc = 1
- for e in events:
- if not o.seen_events.has_key(e):
- print 'ERROR: Expected event did not trigger', e
- rc = 0
- continue
-
- return rc
-
-
- def test():
- import sys
- if 'noword' not in sys.argv[1:]:
- TestWord()
-
- if 'noexcel' not in sys.argv[1:]:
- TestExcel()
-
- print 'Word and Excel event tests passed.'
-
- if __name__ == '__main__':
- test()
-
-