| # Accessor functions for control properties |
| |
| from Controls import * |
| import struct |
| |
| # These needn't go through this module, but are here for completeness |
| def SetControlData_Handle(control, part, selector, data): |
| control.SetControlData_Handle(part, selector, data) |
| |
| def GetControlData_Handle(control, part, selector): |
| return control.GetControlData_Handle(part, selector) |
| |
| _accessdict = { |
| kControlPopupButtonMenuHandleTag: (SetControlData_Handle, GetControlData_Handle), |
| } |
| |
| _codingdict = { |
| kControlPushButtonDefaultTag : ("b", None, None), |
| |
| kControlEditTextTextTag: (None, None, None), |
| kControlEditTextPasswordTag: (None, None, None), |
| |
| kControlPopupButtonMenuIDTag: ("h", None, None), |
| |
| kControlListBoxDoubleClickTag: ("b", None, None), |
| } |
| |
| def SetControlData(control, part, selector, data): |
| if _accessdict.has_key(selector): |
| setfunc, getfunc = _accessdict[selector] |
| setfunc(control, part, selector, data) |
| return |
| if not _codingdict.has_key(selector): |
| raise KeyError, ('Unknown control selector', selector) |
| structfmt, coder, decoder = _codingdict[selector] |
| if coder: |
| data = coder(data) |
| if structfmt: |
| data = struct.pack(structfmt, data) |
| control.SetControlData(part, selector, data) |
| |
| def GetControlData(control, part, selector): |
| if _accessdict.has_key(selector): |
| setfunc, getfunc = _accessdict[selector] |
| return getfunc(control, part, selector, data) |
| if not _codingdict.has_key(selector): |
| raise KeyError, ('Unknown control selector', selector) |
| structfmt, coder, decoder = _codingdict[selector] |
| data = control.GetControlData(part, selector) |
| if structfmt: |
| data = struct.unpack(structfmt, data) |
| if decoder: |
| data = decoder(data) |
| if type(data) == type(()) and len(data) == 1: |
| data = data[0] |
| return data |