home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 May / maximum-cd-2010-05.iso / DiscContents / boxee-0.9.20.10711.exe / system / python / Lib / plat-mac / argvemulator.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-07-20  |  3.6 KB  |  100 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''argvemulator - create sys.argv from OSA events. Used by applets that
  5. want unix-style arguments.
  6. '''
  7. import sys
  8. import traceback
  9. from Carbon import AE
  10. from Carbon.AppleEvents import *
  11. from Carbon import Evt
  12. from Carbon import File
  13. from Carbon.Events import *
  14. import aetools
  15.  
  16. class ArgvCollector:
  17.     '''A minimal FrameWork.Application-like class'''
  18.     
  19.     def __init__(self):
  20.         self.quitting = 0
  21.         if len(sys.argv) > 1 and sys.argv[1][:4] == '-psn':
  22.             del sys.argv[1]
  23.         
  24.         AE.AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, self._ArgvCollector__runapp)
  25.         AE.AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, self._ArgvCollector__openfiles)
  26.  
  27.     
  28.     def close(self):
  29.         AE.AERemoveEventHandler(kCoreEventClass, kAEOpenApplication)
  30.         AE.AERemoveEventHandler(kCoreEventClass, kAEOpenDocuments)
  31.  
  32.     
  33.     def mainloop(self, mask = highLevelEventMask, timeout = 1 * 60):
  34.         stoptime = Evt.TickCount() + timeout
  35.         while not (self.quitting) and Evt.TickCount() < stoptime:
  36.             self._dooneevent(mask, timeout)
  37.         if not self.quitting:
  38.             print 'argvemulator: timeout waiting for arguments'
  39.         
  40.         self.close()
  41.  
  42.     
  43.     def _dooneevent(self, mask = highLevelEventMask, timeout = 1 * 60):
  44.         (got, event) = Evt.WaitNextEvent(mask, timeout)
  45.         if got:
  46.             self._lowlevelhandler(event)
  47.         
  48.  
  49.     
  50.     def _lowlevelhandler(self, event):
  51.         (what, message, when, where, modifiers) = event
  52.         (h, v) = where
  53.         if what == kHighLevelEvent:
  54.             
  55.             try:
  56.                 AE.AEProcessAppleEvent(event)
  57.             except AE.Error:
  58.                 err = None
  59.                 msg = 'High Level Event: %r %r' % (hex(message), hex(h | v << 16))
  60.                 print 'AE error: ', err
  61.                 print 'in', msg
  62.                 traceback.print_exc()
  63.  
  64.             return None
  65.         else:
  66.             print 'Unhandled event:', event
  67.  
  68.     
  69.     def _quit(self):
  70.         self.quitting = 1
  71.  
  72.     
  73.     def __runapp(self, requestevent, replyevent):
  74.         self._quit()
  75.  
  76.     
  77.     def __openfiles(self, requestevent, replyevent):
  78.         
  79.         try:
  80.             listdesc = requestevent.AEGetParamDesc(keyDirectObject, typeAEList)
  81.             for i in range(listdesc.AECountItems()):
  82.                 aliasdesc = listdesc.AEGetNthDesc(i + 1, typeAlias)[1]
  83.                 alias = File.Alias(rawdata = aliasdesc.data)
  84.                 fsref = alias.FSResolveAlias(None)[0]
  85.                 pathname = fsref.as_pathname()
  86.                 sys.argv.append(pathname)
  87.         except Exception:
  88.             e = None
  89.             print "argvemulator.py warning: can't unpack an open document event"
  90.             import traceback
  91.             traceback.print_exc()
  92.  
  93.         self._quit()
  94.  
  95.  
  96. if __name__ == '__main__':
  97.     ArgvCollector().mainloop()
  98.     print 'sys.argv=', sys.argv
  99.  
  100.