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 57