Bump version to 0.9.1.
[python/dscho.git] / Mac / Lib / lib-toolbox / ControlAccessor.py
blob94cc70e9665a87e45417005da3f5ef2168e22e88
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),
25 kControlListBoxDoubleClickTag: ("b", None, None),
28 def SetControlData(control, part, selector, data):
29 if _accessdict.has_key(selector):
30 setfunc, getfunc = _accessdict[selector]
31 setfunc(control, part, selector, data)
32 return
33 if not _codingdict.has_key(selector):
34 raise KeyError, ('Unknown control selector', selector)
35 structfmt, coder, decoder = _codingdict[selector]
36 if coder:
37 data = coder(data)
38 if structfmt:
39 data = struct.pack(structfmt, data)
40 control.SetControlData(part, selector, data)
42 def GetControlData(control, part, selector):
43 if _accessdict.has_key(selector):
44 setfunc, getfunc = _accessdict[selector]
45 return getfunc(control, part, selector, data)
46 if not _codingdict.has_key(selector):
47 raise KeyError, ('Unknown control selector', selector)
48 structfmt, coder, decoder = _codingdict[selector]
49 data = control.GetControlData(part, selector)
50 if structfmt:
51 data = struct.unpack(structfmt, data)
52 if decoder:
53 data = decoder(data)
54 if type(data) == type(()) and len(data) == 1:
55 data = data[0]
56 return data