diff --git a/Mac/Lib/findertools.py b/Mac/Lib/findertools.py new file mode 100644 index 00000000000..ffc75f51e2f --- /dev/null +++ b/Mac/Lib/findertools.py @@ -0,0 +1,138 @@ +"""Utility routines depending on the finder.""" + +import Finder_7_0_Suite +import aetools +import MacOS +import sys +import macfs + +SIGNATURE='MACS' + +class Finder(aetools.TalkTo, Finder_7_0_Suite.Finder_7_0_Suite): + pass + +_finder_talker = None + +def _getfinder(): + global _finder_talker + if not _finder_talker: + _finder_talker = Finder(SIGNATURE) + return _finder_talker + +def launch(file): + """Open a file thru the finder. Specify file by name or fsspec""" + finder = _getfinder() + fss = macfs.FSSpec(file) + vRefNum, parID, name = fss.as_tuple() + dir_fss = macfs.FSSpec((vRefNum, parID, '')) + file_alias = fss.NewAlias() + dir_alias = dir_fss.NewAlias() + return finder.open(dir_alias, items=[file_alias]) + +def Print(file): + """Print a file thru the finder. Specify file by name or fsspec""" + finder = _getfinder() + fss = macfs.FSSpec(file) + vRefNum, parID, name = fss.as_tuple() + dir_fss = macfs.FSSpec((vRefNum, parID, '')) + file_alias = fss.NewAlias() + dir_alias = dir_fss.NewAlias() + return finder._print(dir_alias, items=[file_alias]) + +def copy(src, dstdir): + """Copy a file to a folder""" + finder = _getfinder() + src_fss = macfs.FSSpec(src) + dst_fss = macfs.FSSpec(dstdir) + src_alias = src_fss.NewAlias() + dst_alias = dst_fss.NewAlias() + return finder.copy_to(dst_alias, _from=[src_alias]) + +def move(src, dstdir): + """Move a file to a folder""" + finder = _getfinder() + src_fss = macfs.FSSpec(src) + dst_fss = macfs.FSSpec(dstdir) + src_alias = src_fss.NewAlias() + dst_alias = dst_fss.NewAlias() + return finder.move_to(dst_alias, _from=[src_alias]) + +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() +