7575 ControlFontStyleRec *itself;
7676{
7777 return PyArg_ParseTuple(v, "hhhhhhO&O&", &itself->flags,
78- &itself->font, &itself->size, &itself->style, &itself->mode,
79- &itself->just, QdRGB_Convert, &itself->foreColor,
78+ &itself->font, &itself->size, &itself->style, &itself->mode,
79+ &itself->just, QdRGB_Convert, &itself->foreColor,
8080 QdRGB_Convert, &itself->backColor);
8181}
8282
83- /* TrackControl callback support */
83+ /* TrackControl and HandleControlClick callback support */
8484static PyObject *tracker;
8585static ControlActionUPP mytracker_upp;
8686
104104CtlObj_WhichControl(ControlHandle c)
105105{
106106 PyObject *it;
107-
107+
108108 if (c == NULL)
109109 it = Py_None;
110110 else {
145145 short part;
146146{
147147 PyObject *args, *rv=0;
148-
148+
149149 args = Py_BuildValue("(O&i)", CtlObj_WhichControl, ctl, (int)part);
150150 if (args && tracker) {
151151 rv = PyEval_CallObject(tracker, args);
154154 if (rv)
155155 Py_DECREF(rv);
156156 else
157- PySys_WriteStderr("TrackControl: exception in tracker function\\ n");
157+ PySys_WriteStderr("TrackControl or HandleControlClick : exception in tracker function\\ n");
158158}
159159"""
160160
@@ -169,8 +169,8 @@ def outputInitStructMembers(self):
169169 GlobalObjectDefinition .outputInitStructMembers (self )
170170 Output ("SetControlReference(itself, (long)it);" )
171171 def outputCleanupStructMembers (self ):
172- Output ("if (self->ob_itself) SetControlReference(self->ob_itself, (long)0); /* Make it forget about us */" )
173-
172+ Output ("if (self->ob_itself)SetControlReference(self->ob_itself, (long)0); /* Make it forget about us */" )
173+
174174# Create the generator groups and link them
175175module = MacModule (MODNAME , MODPREFIX , includestuff , finalstuff , initstuff )
176176object = MyObjectDefinition (OBJECTNAME , OBJECTPREFIX , OBJECTTYPE )
@@ -221,6 +221,119 @@ def outputCleanupStructMembers(self):
221221#f.docstring = "(Point startPoint [,trackercallback]) -> (ControlPartCode _rv)"
222222object .add (f )
223223
224+ # CJW - added 5/12/99
225+ # Manual generator for HandleControlClick, as for TrackControl
226+ handlecontrolclick_body = """
227+ ControlPartCode _rv;
228+ Point startPoint;
229+ SInt16 modifiers;
230+ ControlActionUPP upp = 0;
231+ PyObject *callback = 0;
232+
233+ if (!PyArg_ParseTuple(_args, "O&h|O",
234+ PyMac_GetPoint, &startPoint,
235+ &modifiers,
236+ &callback))
237+ return NULL;
238+ if (callback && callback != Py_None) {
239+ if (PyInt_Check(callback) && PyInt_AS_LONG(callback) == -1)
240+ upp = (ControlActionUPP)-1;
241+ else {
242+ settrackfunc(callback);
243+ upp = mytracker_upp;
244+ }
245+ }
246+ _rv = HandleControlClick(_self->ob_itself,
247+ startPoint,
248+ modifiers,
249+ upp);
250+ clrtrackfunc();
251+ _res = Py_BuildValue("h",
252+ _rv);
253+ return _res;
254+ """
255+
256+ f = ManualGenerator ("HandleControlClick" , handlecontrolclick_body );
257+ #f.docstring = "(Point startPoint, Integer modifiers, [,trackercallback])
258+ - > (ControlPartCode _rv )"
259+ object .add (f )
260+
261+ # Manual Generator for SetControlData
262+ setcontroldata_body = """
263+ OSErr _err;
264+ ControlPartCode inPart;
265+ ResType inTagName;
266+ Size bufferSize;
267+ Ptr buffer;
268+
269+ if (!PyArg_ParseTuple(_args, "hO&s#",
270+ &inPart,
271+ PyMac_GetOSType, &inTagName,
272+ &buffer, &bufferSize))
273+ return NULL;
274+
275+ _err = SetControlData(_self->ob_itself,
276+ inPart,
277+ inTagName,
278+ bufferSize,
279+ buffer);
280+
281+ if (_err != noErr)
282+ return PyMac_Error(_err);
283+ _res = Py_None;
284+ return _res;
285+ """
286+
287+ f = ManualGenerator ("SetControlData" , setcontroldata_body );
288+ #f.docstring = "(stuff) -> None"
289+ object .add (f )
290+
291+ # Manual Generator for GetControlData
292+ getcontroldata_body = """
293+ OSErr _err;
294+ ControlPartCode inPart;
295+ ResType inTagName;
296+ Size bufferSize;
297+ Ptr buffer;
298+ Size outSize;
299+
300+ if (!PyArg_ParseTuple(_args, "hO&",
301+ &inPart,
302+ PyMac_GetOSType, &inTagName))
303+ return NULL;
304+
305+ /* allocate a buffer for the data */
306+ _err = GetControlDataSize(_self->ob_itself,
307+ inPart,
308+ inTagName,
309+ &bufferSize);
310+ if (_err != noErr)
311+ return PyMac_Error(_err);
312+ buffer = PyMem_NEW(char, bufferSize);
313+ if (buffer == NULL)
314+ return PyErr_NoMemory();
315+
316+ _err = GetControlData(_self->ob_itself,
317+ inPart,
318+ inTagName,
319+ bufferSize,
320+ buffer,
321+ &outSize);
322+
323+ if (_err != noErr) {
324+ PyMem_DEL(buffer);
325+ return PyMac_Error(_err);
326+ }
327+ _res = Py_BuildValue("s#", buffer, outSize);
328+ PyMem_DEL(buffer);
329+ return _res;
330+ """
331+
332+ f = ManualGenerator ("GetControlData" , getcontroldata_body );
333+ #f.docstring = "(part, type) -> String"
334+ object .add (f )
335+ # end CJW
336+
224337# And manual generators to get/set popup menu information
225338getpopupdata_body = """
226339PopupPrivateDataHandle hdl;
0 commit comments