]> granicus.if.org Git - python/commitdiff
Added {Get,Set}PopupData calls to get at the data for popup menu controls.
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 19 Jun 1998 13:35:14 +0000 (13:35 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 19 Jun 1998 13:35:14 +0000 (13:35 +0000)
Mac/Modules/ctl/Ctlmodule.c
Mac/Modules/ctl/ctlsupport.py

index bfa88a11b56f82bc1c4d210c5ed3440f86191d61..6b43b68975e73c4acff1528e21b461166346f53c 100644 (file)
@@ -866,6 +866,50 @@ static PyObject *CtlObj_TrackControl(_self, _args)
 
 }
 
+static PyObject *CtlObj_GetPopupData(_self, _args)
+       ControlObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       PopupPrivateDataHandle hdl;
+
+       if ( (*_self->ob_itself)->contrlData == NULL ) {
+               PyErr_SetString(Ctl_Error, "No contrlData handle in control");
+               return 0;
+       }
+       hdl = (PopupPrivateDataHandle)(*_self->ob_itself)->contrlData;
+       HLock((Handle)hdl);
+       _res = Py_BuildValue("O&i", MenuObj_New, (*hdl)->mHandle, (int)(*hdl)->mID);
+       HUnlock((Handle)hdl);
+       return _res;
+
+}
+
+static PyObject *CtlObj_SetPopupData(_self, _args)
+       ControlObject *_self;
+       PyObject *_args;
+{
+       PyObject *_res = NULL;
+
+       PopupPrivateDataHandle hdl;
+       MenuHandle mHandle;
+       short mID;
+
+       if (!PyArg_ParseTuple(_args, "O&h", MenuObj_Convert, &mHandle, &mID) )
+               return 0;
+       if ( (*_self->ob_itself)->contrlData == NULL ) {
+               PyErr_SetString(Ctl_Error, "No contrlData handle in control");
+               return 0;
+       }
+       hdl = (PopupPrivateDataHandle)(*_self->ob_itself)->contrlData;
+       (*hdl)->mHandle = mHandle;
+       (*hdl)->mID = mID;
+       Py_INCREF(Py_None);
+       return Py_None;
+
+}
+
 static PyMethodDef CtlObj_methods[] = {
        {"HiliteControl", (PyCFunction)CtlObj_HiliteControl, 1,
         "(ControlPartCode hiliteState) -> None"},
@@ -953,6 +997,10 @@ static PyMethodDef CtlObj_methods[] = {
         "() -> None"},
        {"TrackControl", (PyCFunction)CtlObj_TrackControl, 1,
         NULL},
+       {"GetPopupData", (PyCFunction)CtlObj_GetPopupData, 1,
+        NULL},
+       {"SetPopupData", (PyCFunction)CtlObj_SetPopupData, 1,
+        NULL},
        {NULL, NULL, 0}
 };
 
index 75e7aa7b035dcfb299b2e2740b7343e94bd930ab..e01e8710c0ced9e71a2aec555c70f64fcab04942 100644 (file)
@@ -204,6 +204,43 @@ f = ManualGenerator("TrackControl", trackcontrol_body);
 #f.docstring = "(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)"
 object.add(f)
 
+# And manual generators to get/set popup menu information
+getpopupdata_body = """
+PopupPrivateDataHandle hdl;
+
+if ( (*_self->ob_itself)->contrlData == NULL ) {
+       PyErr_SetString(Ctl_Error, "No contrlData handle in control");
+       return 0;
+}
+hdl = (PopupPrivateDataHandle)(*_self->ob_itself)->contrlData;
+HLock((Handle)hdl);
+_res = Py_BuildValue("O&i", MenuObj_New, (*hdl)->mHandle, (int)(*hdl)->mID);
+HUnlock((Handle)hdl);
+return _res;
+"""
+f = ManualGenerator("GetPopupData", getpopupdata_body)
+object.add(f)
+
+setpopupdata_body = """
+PopupPrivateDataHandle hdl;
+MenuHandle mHandle;
+short mID;
+
+if (!PyArg_ParseTuple(_args, "O&h", MenuObj_Convert, &mHandle, &mID) )
+       return 0;
+if ( (*_self->ob_itself)->contrlData == NULL ) {
+       PyErr_SetString(Ctl_Error, "No contrlData handle in control");
+       return 0;
+}
+hdl = (PopupPrivateDataHandle)(*_self->ob_itself)->contrlData;
+(*hdl)->mHandle = mHandle;
+(*hdl)->mID = mID;
+Py_INCREF(Py_None);
+return Py_None;
+"""
+f = ManualGenerator("SetPopupData", setpopupdata_body)
+object.add(f)
+
 
 # generate output (open the output file as late as possible)
 SetOutputFileName(OUTPUTFILE)