home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / Lib / findertools.py < prev    next >
Encoding:
Python Source  |  2000-06-23  |  3.4 KB  |  142 lines

  1. """Utility routines depending on the finder."""
  2.  
  3. import Finder_7_0_Suite
  4. import AppleEvents
  5. import aetools
  6. import MacOS
  7. import sys
  8. import macfs
  9.  
  10. SIGNATURE='MACS'
  11.  
  12. class Finder(aetools.TalkTo, Finder_7_0_Suite.Finder_7_0_Suite):
  13.     pass
  14.     
  15. _finder_talker = None
  16.  
  17. def _getfinder():
  18.     global _finder_talker
  19.     if not _finder_talker:
  20.         _finder_talker = Finder(SIGNATURE)
  21.     _finder_talker.send_flags = ( _finder_talker.send_flags | 
  22.         AppleEvents.kAECanInteract | AppleEvents.kAECanSwitchLayer)
  23.     return _finder_talker
  24.     
  25. def launch(file):
  26.     """Open a file thru the finder. Specify file by name or fsspec"""
  27.     finder = _getfinder()
  28.     fss = macfs.FSSpec(file)
  29.     vRefNum, parID, name = fss.as_tuple()
  30.     dir_fss = macfs.FSSpec((vRefNum, parID, ''))
  31.     file_alias = fss.NewAlias()
  32.     dir_alias = dir_fss.NewAlias()
  33.     return finder.open(dir_alias, items=[file_alias])
  34.     
  35. def Print(file):
  36.     """Print a file thru the finder. Specify file by name or fsspec"""
  37.     finder = _getfinder()
  38.     fss = macfs.FSSpec(file)
  39.     vRefNum, parID, name = fss.as_tuple()
  40.     dir_fss = macfs.FSSpec((vRefNum, parID, ''))
  41.     file_alias = fss.NewAlias()
  42.     dir_alias = dir_fss.NewAlias()
  43.     return finder._print(dir_alias, items=[file_alias])
  44.     
  45. def copy(src, dstdir):
  46.     """Copy a file to a folder"""
  47.     finder = _getfinder()
  48.     src_fss = macfs.FSSpec(src)
  49.     dst_fss = macfs.FSSpec(dstdir)
  50.     src_alias = src_fss.NewAlias()
  51.     dst_alias = dst_fss.NewAlias()
  52.     return finder.copy_to(dst_alias, _from=[src_alias])
  53.  
  54. def move(src, dstdir):
  55.     """Move a file to a folder"""
  56.     finder = _getfinder()
  57.     src_fss = macfs.FSSpec(src)
  58.     dst_fss = macfs.FSSpec(dstdir)
  59.     src_alias = src_fss.NewAlias()
  60.     dst_alias = dst_fss.NewAlias()
  61.     return finder.move_to(dst_alias, _from=[src_alias])
  62.     
  63. def sleep():
  64.     """Put the mac to sleep"""
  65.     finder = _getfinder()
  66.     finder.sleep()
  67.     
  68. def shutdown():
  69.     """Shut the mac down"""
  70.     finder = _getfinder()
  71.     finder.shut_down()
  72.     
  73. def restart():
  74.     """Restart the mac"""
  75.     finder = _getfinder()
  76.     finder.restart()
  77.     
  78.  
  79. def main():
  80.     print 'Testing launch...'
  81.     fss, ok = macfs.PromptGetFile('File to launch:')
  82.     if ok:
  83.         result = launch(fss)
  84.         if result:
  85.             print 'Result: ', result
  86.         print 'Press return-',
  87.         sys.stdin.readline()
  88.     print 'Testing print...'
  89.     fss, ok = macfs.PromptGetFile('File to print:')
  90.     if ok:
  91.         result = Print(fss)
  92.         if result:
  93.             print 'Result: ', result
  94.         print 'Press return-',
  95.         sys.stdin.readline()
  96.     print 'Testing copy...'
  97.     fss, ok = macfs.PromptGetFile('File to copy:')
  98.     if ok:
  99.         dfss, ok = macfs.GetDirectory()
  100.         if ok:
  101.             result = copy(fss, dfss)
  102.             if result:
  103.                 print 'Result:', result
  104.             print 'Press return-',
  105.             sys.stdin.readline()
  106.     print 'Testing move...'
  107.     fss, ok = macfs.PromptGetFile('File to move:')
  108.     if ok:
  109.         dfss, ok = macfs.GetDirectory()
  110.         if ok:
  111.             result = move(fss, dfss)
  112.             if result:
  113.                 print 'Result:', result
  114.             print 'Press return-',
  115.             sys.stdin.readline()
  116.     import EasyDialogs
  117.     print 'Testing sleep...'
  118.     if EasyDialogs.AskYesNoCancel('Sleep?') > 0:
  119.         result = sleep()
  120.         if result:
  121.             print 'Result:', result
  122.         print 'Press return-',
  123.         sys.stdin.readline()
  124.     print 'Testing shutdown...'
  125.     if EasyDialogs.AskYesNoCancel('Shut down?') > 0:
  126.         result = shutdown()
  127.         if result:
  128.             print 'Result:', result
  129.         print 'Press return-',
  130.         sys.stdin.readline()
  131.     print 'Testing restart...'
  132.     if EasyDialogs.AskYesNoCancel('Restart?') > 0:
  133.         result = restart()
  134.         if result:
  135.             print 'Result:', result
  136.         print 'Press return-',
  137.         sys.stdin.readline()
  138.         
  139. if __name__ == '__main__':
  140.     main()
  141.     
  142.