mirror of
https://github.com/python/cpython.git
synced 2025-11-12 15:09:14 +00:00
Added {Get,Set}PopupData calls to get at the data for popup menu controls.
This commit is contained in:
parent
cef4c844df
commit
4c704131ca
2 changed files with 85 additions and 0 deletions
|
|
@ -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[] = {
|
static PyMethodDef CtlObj_methods[] = {
|
||||||
{"HiliteControl", (PyCFunction)CtlObj_HiliteControl, 1,
|
{"HiliteControl", (PyCFunction)CtlObj_HiliteControl, 1,
|
||||||
"(ControlPartCode hiliteState) -> None"},
|
"(ControlPartCode hiliteState) -> None"},
|
||||||
|
|
@ -953,6 +997,10 @@ static PyMethodDef CtlObj_methods[] = {
|
||||||
"() -> None"},
|
"() -> None"},
|
||||||
{"TrackControl", (PyCFunction)CtlObj_TrackControl, 1,
|
{"TrackControl", (PyCFunction)CtlObj_TrackControl, 1,
|
||||||
NULL},
|
NULL},
|
||||||
|
{"GetPopupData", (PyCFunction)CtlObj_GetPopupData, 1,
|
||||||
|
NULL},
|
||||||
|
{"SetPopupData", (PyCFunction)CtlObj_SetPopupData, 1,
|
||||||
|
NULL},
|
||||||
{NULL, NULL, 0}
|
{NULL, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,43 @@ f = ManualGenerator("TrackControl", trackcontrol_body);
|
||||||
#f.docstring = "(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)"
|
#f.docstring = "(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)"
|
||||||
object.add(f)
|
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)
|
# generate output (open the output file as late as possible)
|
||||||
SetOutputFileName(OUTPUTFILE)
|
SetOutputFileName(OUTPUTFILE)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue