/Lib/plat-mac/Carbon/ControlAccessor.py

http://unladen-swallow.googlecode.com/ · Python · 56 lines · 44 code · 10 blank · 2 comment · 10 complexity · f914898d6a82e4abca65d69f730d9666 MD5 · raw file

  1. # Accessor functions for control properties
  2. from Controls import *
  3. import struct
  4. # These needn't go through this module, but are here for completeness
  5. def SetControlData_Handle(control, part, selector, data):
  6. control.SetControlData_Handle(part, selector, data)
  7. def GetControlData_Handle(control, part, selector):
  8. return control.GetControlData_Handle(part, selector)
  9. _accessdict = {
  10. kControlPopupButtonMenuHandleTag: (SetControlData_Handle, GetControlData_Handle),
  11. }
  12. _codingdict = {
  13. kControlPushButtonDefaultTag : ("b", None, None),
  14. kControlEditTextTextTag: (None, None, None),
  15. kControlEditTextPasswordTag: (None, None, None),
  16. kControlPopupButtonMenuIDTag: ("h", None, None),
  17. kControlListBoxDoubleClickTag: ("b", None, None),
  18. }
  19. def SetControlData(control, part, selector, data):
  20. if _accessdict.has_key(selector):
  21. setfunc, getfunc = _accessdict[selector]
  22. setfunc(control, part, selector, data)
  23. return
  24. if not _codingdict.has_key(selector):
  25. raise KeyError, ('Unknown control selector', selector)
  26. structfmt, coder, decoder = _codingdict[selector]
  27. if coder:
  28. data = coder(data)
  29. if structfmt:
  30. data = struct.pack(structfmt, data)
  31. control.SetControlData(part, selector, data)
  32. def GetControlData(control, part, selector):
  33. if _accessdict.has_key(selector):
  34. setfunc, getfunc = _accessdict[selector]
  35. return getfunc(control, part, selector, data)
  36. if not _codingdict.has_key(selector):
  37. raise KeyError, ('Unknown control selector', selector)
  38. structfmt, coder, decoder = _codingdict[selector]
  39. data = control.GetControlData(part, selector)
  40. if structfmt:
  41. data = struct.unpack(structfmt, data)
  42. if decoder:
  43. data = decoder(data)
  44. if type(data) == type(()) and len(data) == 1:
  45. data = data[0]
  46. return data