"""Utility routines depending on the finder.""" import Finder import AppleEvents import aetools import MacOS import sys import macfs _finder_talker = None def _getfinder(): global _finder_talker if not _finder_talker: _finder_talker = Finder.Finder() _finder_talker.send_flags = ( _finder_talker.send_flags | AppleEvents.kAECanInteract | AppleEvents.kAECanSwitchLayer) return _finder_talker def launch(file): """Open a file thru the finder. Specify file by name or fsspec""" finder = _getfinder() fss = macfs.FSSpec(file) return finder.open(fss) def Print(file): """Print a file thru the finder. Specify file by name or fsspec""" finder = _getfinder() fss = macfs.FSSpec(file) return finder._print(fss) def copy(src, dstdir): """Copy a file to a folder""" finder = _getfinder() if type(src) == type([]): src_fss = [] for s in src: src_fss.append(macfs.FSSpec(s)) else: src_fss = macfs.FSSpec(src) dst_fss = macfs.FSSpec(dstdir) return finder.duplicate(src_fss, to=dst_fss) def move(src, dstdir): """Move a file to a folder""" finder = _getfinder() if type(src) == type([]): src_fss = [] for s in src: src_fss.append(macfs.FSSpec(s)) else: src_fss = macfs.FSSpec(src) dst_fss = macfs.FSSpec(dstdir) return finder.move(src_fss, to=dst_fss) def sleep(): """Put the mac to sleep""" finder = _getfinder() finder.sleep() def shutdown(): """Shut the mac down""" finder = _getfinder() finder.shut_down() def restart(): """Restart the mac""" finder = _getfinder() finder.restart() def main(): print 'Testing launch...' fss, ok = macfs.PromptGetFile('File to launch:') if ok: result = launch(fss) if result: print 'Result: ', result print 'Press return-', sys.stdin.readline() print 'Testing print...' fss, ok = macfs.PromptGetFile('File to print:') if ok: result = Print(fss) if result: print 'Result: ', result print 'Press return-', sys.stdin.readline() print 'Testing copy...' fss, ok = macfs.PromptGetFile('File to copy:') if ok: dfss, ok = macfs.GetDirectory() if ok: result = copy(fss, dfss) if result: print 'Result:', result print 'Press return-', sys.stdin.readline() print 'Testing move...' fss, ok = macfs.PromptGetFile('File to move:') if ok: dfss, ok = macfs.GetDirectory() if ok: result = move(fss, dfss) if result: print 'Result:', result print 'Press return-', sys.stdin.readline() import EasyDialogs print 'Testing sleep...' if EasyDialogs.AskYesNoCancel('Sleep?') > 0: result = sleep() if result: print 'Result:', result print 'Press return-', sys.stdin.readline() print 'Testing shutdown...' if EasyDialogs.AskYesNoCancel('Shut down?') > 0: result = shutdown() if result: print 'Result:', result print 'Press return-', sys.stdin.readline() print 'Testing restart...' if EasyDialogs.AskYesNoCancel('Restart?') > 0: result = restart() if result: print 'Result:', result print 'Press return-', sys.stdin.readline() if __name__ == '__main__': main()