]> granicus.if.org Git - python/commitdiff
Methods {Get,Set}ControlData that know about data types passed for the various
authorJack Jansen <jack.jansen@cwi.nl>
Mon, 13 Dec 1999 16:04:48 +0000 (16:04 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Mon, 13 Dec 1999 16:04:48 +0000 (16:04 +0000)
4-char codes. The table which maps codes to datatypes is still pretty empty,
I'll fill it as I need entries (or maybe someone wants to spend a nice day filling it?).

Mac/Lib/lib-toolbox/ControlAccessor.py [new file with mode: 0644]

diff --git a/Mac/Lib/lib-toolbox/ControlAccessor.py b/Mac/Lib/lib-toolbox/ControlAccessor.py
new file mode 100644 (file)
index 0000000..d3952f7
--- /dev/null
@@ -0,0 +1,32 @@
+# Accessor functions for control properties
+
+from Controls import *
+import struct
+
+_codingdict = {
+       kControlPushButtonDefaultTag : ("b", None, None),
+       kControlEditTextTextTag: (None, None, None),
+       kControlEditTextPasswordTag: (None, None, None),
+}
+
+def SetControlData(control, part, selector, data):
+       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 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)
+       return data
+