Home | History | Annotate | Download | only in Carbon
      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