annotate Mac/scripts/EditPythonPrefs.py @ 3484:ce27e0328462 legacy-trunk

Added support for editing override preferences in applets
author Jack Jansen <jack.jansen@cwi.nl>
date Thu, 04 Apr 1996 15:38:44 +0000
parents 8b3f2a8620f5
children e8d501c88a3e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 """Edit the Python Preferences file."""
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3 from Dlg import *
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4 from Events import *
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5 from Res import *
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6 import string
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 import struct
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 import macfs
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9 import MacOS
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10 import os
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11 import sys
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 import Res # For Res.Error
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 # resource IDs in our own resources (dialogs, etc)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 MESSAGE_ID = 256
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16
2979
7eea9b426802 Added prompts to various file-select dialogs
Jack Jansen <jack.jansen@cwi.nl>
parents: 2873
diff changeset
17 DIALOG_ID = 512
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18 TEXT_ITEM = 1
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 OK_ITEM = 2
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20 CANCEL_ITEM = 3
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
21 DIR_ITEM = 4
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
22 TITLE_ITEM = 5
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24 # Resource IDs in the preferences file
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 PATH_STRINGS_ID = 128
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 DIRECTORY_ID = 128
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
27 OPTIONS_ID = 128
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
29 # Override IDs (in the applet)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
30 OVERRIDE_PATH_STRINGS_ID = 129
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
31 OVERRIDE_DIRECTORY_ID = 129
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
32 OVERRIDE_OPTIONS_ID = 129
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
33
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
34 READ = 1
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 WRITE = 2
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 smAllScripts = -3
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37 kOnSystemDisk = 0x8000
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 def restolist(data):
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 """Convert STR# resource data to a list of strings"""
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 if not data:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 return []
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 num, = struct.unpack('h', data[:2])
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44 data = data[2:]
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45 rv = []
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 for i in range(num):
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 strlen = ord(data[0])
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48 if strlen < 0: strlen = strlen + 256
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 str = data[1:strlen+1]
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 data = data[strlen+1:]
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 rv.append(str)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 return rv
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 def listtores(list):
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 """Convert a list of strings to STR# resource data"""
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 rv = struct.pack('h', len(list))
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 for str in list:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58 rv = rv + chr(len(str)) + str
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 return rv
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 def message(str = "Hello, world!", id = MESSAGE_ID):
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62 """Show a simple alert with a text message"""
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 d = GetNewDialog(id, -1)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64 print 'd=', d
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65 tp, h, rect = d.GetDialogItem(2)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
66 SetDialogItemText(h, str)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
67 while 1:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
68 n = ModalDialog(None)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
69 if n == 1: break
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
70
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
71 def interact(list, pythondir, title):
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 """Let the user interact with the dialog"""
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 opythondir = pythondir
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 try:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 # Try to go to the "correct" dir for GetDirectory
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76 os.chdir(pythondir.as_pathname())
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77 except os.error:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
78 pass
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 d = GetNewDialog(DIALOG_ID, -1)
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
80 tp, h, rect = d.GetDialogItem(TITLE_ITEM)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
81 SetDialogItemText(h, title)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
82 tp, h, rect = d.GetDialogItem(TEXT_ITEM)
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
83 SetDialogItemText(h, string.joinfields(list, '\r'))
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
84 ## d.SetDialogDefaultItem(OK_ITEM)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
85 d.SetDialogCancelItem(CANCEL_ITEM)
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
86 while 1:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
87 n = ModalDialog(None)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
88 if n == OK_ITEM:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
89 break
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
90 if n == CANCEL_ITEM:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
91 return None
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
92 ## if n == REVERT_ITEM:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
93 ## return [], pythondir
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
94 if n == DIR_ITEM:
2979
7eea9b426802 Added prompts to various file-select dialogs
Jack Jansen <jack.jansen@cwi.nl>
parents: 2873
diff changeset
95 fss, ok = macfs.GetDirectory('Select python home folder:')
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
96 if ok:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
97 pythondir = fss
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
98 tmp = string.splitfields(GetDialogItemText(h), '\r')
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
99 rv = []
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
100 for i in tmp:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
101 if i:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
102 rv.append(i)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
103 return rv, pythondir
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
104
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
105 def getprefpath(id):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
106 # Load the path and directory resources
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
107 try:
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
108 sr = GetResource('STR#', id)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
109 except (MacOS.Error, Res.Error):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
110 return None, None
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
111 d = sr.data
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
112 l = restolist(d)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
113 return l, sr
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
114
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
115 def getprefdir(id):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
116 try:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
117 dr = GetResource('alis', id)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
118 fss, fss_changed = macfs.RawAlias(dr.data).Resolve()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
119 except (MacOS.Error, Res.Error):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
120 return None, None, 1
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
121 return fss, dr, fss_changed
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
122
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
123 def openpreffile(rw):
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
124 # Find the preferences folder and our prefs file, create if needed.
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
125 vrefnum, dirid = macfs.FindFolder(kOnSystemDisk, 'pref', 0)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
126 preff_fss = macfs.FSSpec((vrefnum, dirid, 'Python Preferences'))
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
127 try:
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
128 preff_handle = FSpOpenResFile(preff_fss, rw)
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
129 except Res.Error:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
130 # Create it
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
131 message('No preferences file, creating one...')
3410
022474ac2451 Changed MacOS creator code from PYTH to Pyth
Jack Jansen <jack.jansen@cwi.nl>
parents: 2979
diff changeset
132 FSpCreateResFile(preff_fss, 'Pyth', 'pref', smAllScripts)
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
133 preff_handle = FSpOpenResFile(preff_fss, rw)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
134 return preff_handle
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
135
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
136 def openapplet(name):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
137 fss = macfs.FSSpec(name)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
138 try:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
139 app_handle = FSpOpenResFile(fss, WRITE)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
140 except Res.Error:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
141 message('File does not have a resource fork.')
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
142 sys.exit(0)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
143 return app_handle
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
144
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
145
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
146 def edit_preferences():
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
147 preff_handle = openpreffile(WRITE)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
148
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
149 l, sr = getprefpath(PATH_STRINGS_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
150 if l == None:
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
151 message('Cannot find any sys.path resource! (Old python?)')
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
152 sys.exit(0)
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
153
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
154 fss, dr, fss_changed = getprefdir(DIRECTORY_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
155 if fss == None:
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
156 fss = macfs.FSSpec(os.getcwd())
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
157 fss_changed = 1
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
158
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
159 # Let the user play away
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
160 result = interact(l, fss, 'System-wide preferences')
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
161
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
162 # See what we have to update, and how
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
163 if result == None:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
164 sys.exit(0)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
165
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
166 pathlist, nfss = result
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
167 if nfss != fss:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
168 fss_changed = 1
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
169
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
170 if fss_changed or pathlist != l:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
171 if fss_changed:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
172 alias = nfss.NewAlias()
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
173 if dr:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
174 dr.data = alias.data
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
175 dr.ChangedResource()
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
176 else:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
177 dr = Resource(alias.data)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
178 dr.AddResource('alis', DIRECTORY_ID, '')
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
179
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
180 if pathlist != l:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
181 if pathlist == []:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
182 if sr.HomeResFile() == preff_handle:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
183 sr.RemoveResource()
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
184 elif sr.HomeResFile() == preff_handle:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
185 sr.data = listtores(pathlist)
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
186 sr.ChangedResource()
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
187 else:
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
188 sr = Resource(listtores(pathlist))
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
189 sr.AddResource('STR#', PATH_STRINGS_ID, '')
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
190
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
191 CloseResFile(preff_handle)
3484
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
192
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
193 def edit_applet(name):
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
194 pref_handle = openpreffile(READ)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
195 app_handle = openapplet(name)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
196
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
197 notfound = ''
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
198 l, sr = getprefpath(OVERRIDE_PATH_STRINGS_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
199 if l == None:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
200 notfound = 'path'
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
201
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
202 l, dummy = getprefpath(PATH_STRINGS_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
203 if l == None:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
204 message('Cannot find any sys.path resource! (Old python?)')
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
205 sys.exit(0)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
206
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
207 fss, dr, fss_changed = getprefdir(OVERRIDE_DIRECTORY_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
208 if fss == None:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
209 if notfound:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
210 notfound = notfound + ' and ' + 'directory'
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
211 else:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
212 notfound = 'directory'
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
213 fss, dummy, dummy2 = getprefdir(DIRECTORY_ID)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
214 if fss == None:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
215 fss = macfs.FSSpec(os.getcwd())
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
216 fss_changed = 1
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
217
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
218 dummy = dummy2 = None # Discard them.
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
219
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
220 if notfound:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
221 message('Warning: initial %s taken from system-wide defaults'%notfound)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
222 # Let the user play away
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
223 result = interact(l, fss, name)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
224
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
225 # See what we have to update, and how
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
226 if result == None:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
227 sys.exit(0)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
228
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
229 pathlist, nfss = result
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
230 if nfss != fss:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
231 fss_changed = 1
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
232
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
233 if fss_changed or pathlist != l:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
234 if fss_changed:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
235 alias = nfss.NewAlias()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
236 if dr:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
237 dr.data = alias.data
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
238 dr.ChangedResource()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
239 else:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
240 dr = Resource(alias.data)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
241 dr.AddResource('alis', OVERRIDE_DIRECTORY_ID, '')
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
242
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
243 if pathlist != l:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
244 if pathlist == []:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
245 if sr.HomeResFile() == app_handle:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
246 sr.RemoveResource()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
247 elif sr and sr.HomeResFile() == app_handle:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
248 sr.data = listtores(pathlist)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
249 sr.ChangedResource()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
250 else:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
251 sr = Resource(listtores(pathlist))
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
252 sr.AddResource('STR#', OVERRIDE_PATH_STRINGS_ID, '')
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
253
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
254 CloseResFile(app_handle)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
255
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
256 def main():
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
257 try:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
258 h = OpenResFile('EditPythonPrefs.rsrc')
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
259 except Res.Error:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
260 pass # Assume we already have acces to our own resource
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
261
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
262 if len(sys.argv) <= 1:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
263 edit_preferences()
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
264 else:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
265 for appl in sys.argv[1:]:
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
266 edit_applet(appl)
ce27e0328462 Added support for editing override preferences in applets
Jack Jansen <jack.jansen@cwi.nl>
parents: 3462
diff changeset
267
2873
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
268
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
269 if __name__ == '__main__':
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
270 print # Stupid, to init toolboxes...
315760ba0041 A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
271 main()