Convenience routines: wrappers around some of the scriptable finder
functionality.
diff --git a/Mac/Lib/findertools.py b/Mac/Lib/findertools.py
new file mode 100644
index 0000000..ffc75f5
--- /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()
+