Added 'description' class attribute to every command class (to help the
[python/dscho.git] / Mac / Lib / lib-toolbox / ControlAccessor.py
blob93805ab11b389a49f66c329fd8651c81062fc87e
1 # Accessor functions for control properties
3 from Controls import *
4 import struct
6 # These needn't go through this module, but are here for completeness
7 def SetControlDataHandle(control, part, selector, data):
8 control.SetControlDataHandle(part, selector, data)
10 def GetControlDataHandle(control, part, selector):
11 return control.GetControlDataHandle(part, selector)
13 _accessdict = {
14 kControlPopupButtonMenuHandleTag: (SetControlDataHandle, GetControlDataHandle),
17 _codingdict = {
18 kControlPushButtonDefaultTag : ("b", None, None),
20 kControlEditTextTextTag: (None, None, None),
21 kControlEditTextPasswordTag: (None, None, None),
23 kControlPopupButtonMenuIDTag: ("h", None, None),
26 def SetControlData(control, part, selector, data):
27 if _accessdict.has_key(selector):
28 setfunc, getfunc = _accessdict[selector]
29 setfunc(control, part, selector, data)
30 return
31 if not _codingdict.has_key(selector):
32 raise KeyError, ('Unknown control selector', selector)
33 structfmt, coder, decoder = _codingdict[selector]
34 if coder:
35 data = coder(data)
36 if structfmt:
37 data = struct.pack(structfmt, data)
38 control.SetControlData(part, selector, data)
40 def GetControlData(control, part, selector):
41 if _accessdict.has_key(selector):
42 setfunc, getfunc = _accessdict[selector]
43 return getfunc(control, part, selector, data)
44 if not _codingdict.has_key(selector):
45 raise KeyError, ('Unknown control selector', selector)
46 structfmt, coder, decoder = _codingdict[selector]
47 data = control.GetControlData(part, selector)
48 if structfmt:
49 data = struct.unpack(structfmt, data)
50 if decoder:
51 data = decoder(data)
52 return data