Added {Get,Set}ControlDataHandle methods. These are {Get,Set}ControlData for
authorJack Jansen <jack.jansen@cwi.nl>
Sun, 19 Dec 1999 00:05:50 +0000 (00:05 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Sun, 19 Dec 1999 00:05:50 +0000 (00:05 +0000)
keys that expect a Handle, and have a ResObj as parameter.

Mac/Modules/ctl/Ctlmodule.c
Mac/Modules/ctl/ctlsupport.py

index 071e140aade77be4af6dd4dd27129e8c7cc563f3..d1deee8684b2f9c035b69fee847b593dd7e0ef5d 100644 (file)
@@ -1177,6 +1177,79 @@ static PyObject *CtlObj_GetControlData(_self, _args)
 
 }
 
+static PyObject *CtlObj_SetControlDataHandle(_self, _args)
+       ControlObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       OSErr _err;
+       ControlPartCode inPart;
+       ResType inTagName;
+       Handle buffer;
+
+       if (!PyArg_ParseTuple(_args, "hO&O&",
+                             &inPart,
+                             PyMac_GetOSType, &inTagName,
+                             OptResObj_Convert, buffer))
+               return NULL;
+
+       _err = SetControlData(_self->ob_itself,
+                             inPart,
+                             inTagName,
+                             sizeof(buffer),
+                             (Ptr)buffer);
+
+       if (_err != noErr)
+               return PyMac_Error(_err);
+       _res = Py_None;
+       return _res;
+
+}
+
+static PyObject *CtlObj_GetControlDataHandle(_self, _args)
+       ControlObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       OSErr _err;
+       ControlPartCode inPart;
+       ResType inTagName;
+       Size bufferSize;
+       Handle hdl;
+
+       if (!PyArg_ParseTuple(_args, "hO&",
+                             &inPart,
+                             PyMac_GetOSType, &inTagName))
+               return NULL;
+
+       /* Check it is handle-sized */
+       _err = GetControlDataSize(_self->ob_itself,
+                                 inPart,
+                                 inTagName,
+                                 &bufferSize);
+       if (_err != noErr)
+               return PyMac_Error(_err);
+       if (bufferSize != sizeof(Handle)) {
+               PyErr_SetString(Ctl_Error, "GetControlDataSize() != sizeof(Handle)");
+               return NULL;
+       }
+
+       _err = GetControlData(_self->ob_itself,
+                             inPart,
+                             inTagName,
+                             sizeof(Handle),
+                             (Ptr)&hdl,
+                             &bufferSize);
+
+       if (_err != noErr) {
+               return PyMac_Error(_err);
+       }
+       return Py_BuildValue("O&", OptResObj_New, hdl);
+
+}
+
 static PyObject *CtlObj_GetPopupData(_self, _args)
        ControlObject *_self;
        PyObject *_args;
@@ -1338,6 +1411,10 @@ static PyMethodDef CtlObj_methods[] = {
         "(stuff) -> None"},
        {"GetControlData", (PyCFunction)CtlObj_GetControlData, 1,
         "(part, type) -> String"},
+       {"SetControlDataHandle", (PyCFunction)CtlObj_SetControlDataHandle, 1,
+        "(ResObj) -> None"},
+       {"GetControlDataHandle", (PyCFunction)CtlObj_GetControlDataHandle, 1,
+        "(part, type) -> ResObj"},
        {"GetPopupData", (PyCFunction)CtlObj_GetPopupData, 1,
         NULL},
        {"SetPopupData", (PyCFunction)CtlObj_SetPopupData, 1,
index 70ae285efd934e34190f2ba1b38d450c2fa5ab21..4a4620fcb421846302c6e8812080a4a5626ec58c 100644 (file)
@@ -331,7 +331,77 @@ return _res;
 f = ManualGenerator("GetControlData", getcontroldata_body);
 f.docstring = lambda: "(part, type) -> String"
 object.add(f)
-# end CJW
+
+# Manual Generator for SetControlDataHandle
+setcontroldatahandle_body = """
+OSErr _err;
+ControlPartCode inPart;
+ResType inTagName;
+Handle buffer;
+
+if (!PyArg_ParseTuple(_args, "hO&O&",
+                      &inPart,
+                      PyMac_GetOSType, &inTagName,
+                      OptResObj_Convert, buffer))
+       return NULL;
+
+_err = SetControlData(_self->ob_itself,
+                     inPart,
+                     inTagName,
+                     sizeof(buffer),
+                      (Ptr)buffer);
+
+if (_err != noErr)
+       return PyMac_Error(_err);
+_res = Py_None;
+return _res;
+"""
+
+f = ManualGenerator("SetControlDataHandle", setcontroldatahandle_body);
+f.docstring = lambda: "(ResObj) -> None"
+object.add(f)
+
+# Manual Generator for GetControlDataHandle
+getcontroldatahandle_body = """
+OSErr _err;
+ControlPartCode inPart;
+ResType inTagName;
+Size bufferSize;
+Handle hdl;
+
+if (!PyArg_ParseTuple(_args, "hO&",
+                      &inPart,
+                      PyMac_GetOSType, &inTagName))
+       return NULL;
+
+/* Check it is handle-sized */
+_err = GetControlDataSize(_self->ob_itself,
+                         inPart,
+                         inTagName,
+                          &bufferSize);
+if (_err != noErr)
+       return PyMac_Error(_err);
+if (bufferSize != sizeof(Handle)) {
+       PyErr_SetString(Ctl_Error, "GetControlDataSize() != sizeof(Handle)");
+       return NULL;
+}
+
+_err = GetControlData(_self->ob_itself,
+                     inPart,
+                     inTagName,
+                     sizeof(Handle),
+                      (Ptr)&hdl,
+                      &bufferSize);
+
+if (_err != noErr) {
+       return PyMac_Error(_err);
+}
+return Py_BuildValue("O&", OptResObj_New, hdl);
+"""
+
+f = ManualGenerator("GetControlDataHandle", getcontroldatahandle_body);
+f.docstring = lambda: "(part, type) -> ResObj"
+object.add(f)
 
 # And manual generators to get/set popup menu information
 getpopupdata_body = """