Quick update to the README file. For intros and books we now point to
[python/dscho.git] / Mac / Lib / findertools.py
blob4de4f0c1d77c743cb6660b1b1b5e3479ba33ebfb
1 """Utility routines depending on the finder."""
3 import Finder_7_0_Suite
4 import AppleEvents
5 import aetools
6 import MacOS
7 import sys
8 import macfs
10 SIGNATURE='MACS'
12 class Finder(aetools.TalkTo, Finder_7_0_Suite.Finder_7_0_Suite):
13 pass
15 _finder_talker = None
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
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])
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])
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])
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])
63 def sleep():
64 """Put the mac to sleep"""
65 finder = _getfinder()
66 finder.sleep()
68 def shutdown():
69 """Shut the mac down"""
70 finder = _getfinder()
71 finder.shut_down()
73 def restart():
74 """Restart the mac"""
75 finder = _getfinder()
76 finder.restart()
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()
139 if __name__ == '__main__':
140 main()