1 """StandardFile compatability module: implement macfs StandardFile
2 API calls with Navigation Services"""
14 def _mktypelist(typelist
):
15 # Workaround for OSX typeless files:
16 if 'TEXT' in typelist
and not '\0\0\0\0' in typelist
:
17 typelist
= typelist
+ ('\0\0\0\0',)
20 data
= 'Pyth' + struct
.pack("hh", 0, len(typelist
))
23 return Res
.Handle(data
)
25 def _StandardGetFile(*typelist
):
26 return apply(_PromptGetFile
, (None,)+typelist
)
28 def _PromptGetFile(prompt
, *typelist
):
31 typehandle
= _mktypelist(typelist
)
33 args
['typeList'] = typehandle
37 args
['message'] = prompt
38 args
['preferenceKey'] = 'PyMC'
40 args
['eventProc'] = None
41 args
['dialogOptionFlags'] = flags
42 _handleSetFolder(args
)
44 rr
= Nav
.NavChooseFile(args
)
46 except Nav
.error
, arg
:
47 if arg
[0] != -128: # userCancelledErr
58 ## typehandle.DisposeHandle()
61 def _StandardPutFile(prompt
, default
=None):
65 args
['message'] = prompt
66 args
['preferenceKey'] = 'PyMC'
68 args
['eventProc'] = None
70 args
['savedFileName'] = default
71 args
['dialogOptionFlags'] = flags
72 _handleSetFolder(args
)
74 rr
= Nav
.NavPutFile(args
)
76 except Nav
.error
, arg
:
77 if arg
[0] != -128: # userCancelledErr
85 def _SetFolder(folder
):
91 _curfolder
= macfs
.FSSpec(folder
)
94 def _handleSetFolder(args
):
99 fss
= macfs
.FSSpec(_curfolder
)
100 aedesc
= aepack
.pack(fss
)
101 args
['defaultLocation'] = aedesc
104 def _GetDirectory(prompt
=None):
108 args
['message'] = prompt
109 args
['preferenceKey'] = 'PyMC'
111 args
['eventProc'] = None
112 args
['dialogOptionFlags'] = flags
113 _handleSetFolder(args
)
115 rr
= Nav
.NavChooseFolder(args
)
117 except Nav
.error
, arg
:
118 if arg
[0] != -128: # userCancelledErr
123 fss
= rr
.selection
[0]
127 macfs
.StandardGetFile
= StandardGetFile
128 macfs
.PromptGetFile
= PromptGetFile
129 macfs
.StandardPutFile
= StandardPutFile
130 macfs
.SetFolder
= SetFolder
131 macfs
.GetDirectory
= GetDirectory
133 if Nav
and Nav
.NavServicesAvailable():
134 StandardGetFile
= _StandardGetFile
135 PromptGetFile
= _PromptGetFile
136 StandardPutFile
= _StandardPutFile
137 SetFolder
= _SetFolder
138 GetDirectory
= _GetDirectory
141 from macfs
import StandardGetFile
, PromptGetFile
, StandardPutFile
, SetFolder
, GetDirectory
144 if __name__
== '__main__':
145 print 'Testing StandardGetFile'
146 fss
, ok
= StandardGetFile()
148 print 'Testing StandardGetFile("TEXT")'
149 fss
, ok
= StandardGetFile("TEXT")
151 print 'Testing PromptGetFile'
152 fss
, ok
= PromptGetFile("prompt")
154 print 'Testing StandardPutFile("the prompt", "default")'
155 fss
, ok
= StandardPutFile("the prompt", "default")
157 print 'Testing GetDirectory("another prompt")'
158 fss
, ok
= GetDirectory("Another prompt")