1 | # Accessor functions for control properties
|
---|
2 |
|
---|
3 | from Controls import *
|
---|
4 | import struct
|
---|
5 |
|
---|
6 | # These needn't go through this module, but are here for completeness
|
---|
7 | def SetControlData_Handle(control, part, selector, data):
|
---|
8 | control.SetControlData_Handle(part, selector, data)
|
---|
9 |
|
---|
10 | def GetControlData_Handle(control, part, selector):
|
---|
11 | return control.GetControlData_Handle(part, selector)
|
---|
12 |
|
---|
13 | _accessdict = {
|
---|
14 | kControlPopupButtonMenuHandleTag: (SetControlData_Handle, GetControlData_Handle),
|
---|
15 | }
|
---|
16 |
|
---|
17 | _codingdict = {
|
---|
18 | kControlPushButtonDefaultTag : ("b", None, None),
|
---|
19 |
|
---|
20 | kControlEditTextTextTag: (None, None, None),
|
---|
21 | kControlEditTextPasswordTag: (None, None, None),
|
---|
22 |
|
---|
23 | kControlPopupButtonMenuIDTag: ("h", None, None),
|
---|
24 |
|
---|
25 | kControlListBoxDoubleClickTag: ("b", None, None),
|
---|
26 | }
|
---|
27 |
|
---|
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)
|
---|
41 |
|
---|
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
|
---|