1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
"""StandardFile compatability module: implement macfs StandardFile
API calls with Navigation Services"""
import macfs
import struct
import Res
try:
import Nav
except ImportError:
Nav = None
_curfolder = None
_movablemodal = 1
def _mktypelist(typelist):
if not typelist:
return None
data = 'Pyth' + struct.pack("hh", 0, len(typelist))
for type in typelist:
data = data+type
return Res.Resource(data)
def _StandardGetFile(*typelist):
return apply(_PromptGetFile, (None,)+typelist)
def _PromptGetFile(prompt, *typelist):
args = {}
flags = 0x56
typehandle = _mktypelist(typelist)
if typehandle:
args['typeList'] = typehandle
else:
flags = flags | 0x01
if prompt:
args['message'] = prompt
args['preferenceKey'] = 'PyMC'
if _movablemodal:
args['eventProc'] = None
try:
rr = Nav.NavChooseFile(args)
good = 1
except Nav.error, arg:
good = 0
fss = macfs.FSSpec(':cancelled')
else:
fss = rr.selection[0]
## if typehandle:
## typehandle.DisposeHandle()
return fss, good
def _StandardPutFile(prompt, default=None):
args = {}
flags = 0x57
if prompt:
args['message'] = prompt
args['preferenceKey'] = 'PyMC'
if _movablemodal:
args['eventProc'] = None
try:
rr = Nav.NavPutFile(args)
good = 1
except Nav.error, arg:
good = 0
fss = macfs.FSSpec(':cancelled')
else:
fss = rr.selection[0]
return fss, good
def _SetFolder(folder):
global _curfolder
if _curfolder:
rv = _curfolder
else:
_curfolder = macfs.FSSpec(":")
_curfolder = macfs.FSSpec(folder)
return rv
def _GetDirectory(prompt=None):
args = {}
flags = 0x57
if prompt:
args['message'] = prompt
args['preferenceKey'] = 'PyMC'
if _movablemodal:
args['eventProc'] = None
try:
rr = Nav.NavChooseFolder(args)
good = 1
except Nav.error, arg:
good = 0
fss = macfs.FSSpec(':cancelled')
else:
fss = rr.selection[0]
return fss, good
def _install():
macfs.StandardGetFile = StandardGetFile
macfs.PromptGetFile = PromptGetFile
macfs.StandardPutFile = StandardPutFile
macfs.SetFolder = SetFolder
macfs.GetDirectory = GetDirectory
if Nav and Nav.NavServicesAvailable():
StandardGetFile = _StandardGetFile
PromptGetFile = _PromptGetFile
StandardPutFile = _StandardPutFile
SetFolder = _SetFolder
GetDirectory = _GetDirectory
else:
from macfs import StandardGetFile, PromptGetFile, StandardPutFile, SetFolder, GetDirectory
if __name__ == '__main__':
print 'Testing StandardGetFile'
fss, ok = StandardGetFile()
print '->', fss, ok
print 'Testing StandardGetFile("TEXT")'
fss, ok = StandardGetFile("TEXT")
print '->', fss, ok
print 'Testing PromptGetFile'
fss, ok = PromptGetFile("prompt")
print '->', fss, ok
print 'Testing StandardPutFile("the prompt", "default")'
fss, ok = StandardPutFile("the prompt", "default")
print '->', fss, ok
print 'Testing GetDirectory("another prompt")'
fss, ok = GetDirectory("Another prompt")
print '->', fss, ok
import sys
sys.exit(1)
|