blob: c0164600b7f0af12aa0e2a2d6e0e71e915c59763 [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001
2/* ========================== Module Menu =========================== */
3
4#include "Python.h"
5
6
7
8#define SystemSevenOrLater 1
9
10#include "macglue.h"
11#include <Memory.h>
12#include <Dialogs.h>
13#include <Menus.h>
14#include <Controls.h>
15
16extern PyObject *ResObj_New(Handle);
17extern int ResObj_Convert(PyObject *, Handle *);
18
19extern PyObject *WinObj_New(WindowPtr);
20extern int WinObj_Convert(PyObject *, WindowPtr *);
21
22extern PyObject *DlgObj_New(DialogPtr);
23extern int DlgObj_Convert(PyObject *, DialogPtr *);
24extern PyTypeObject Dialog_Type;
25#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
26
27extern PyObject *MenuObj_New(MenuHandle);
28extern int MenuObj_Convert(PyObject *, MenuHandle *);
29
30extern PyObject *CtlObj_New(ControlHandle);
31extern int CtlObj_Convert(PyObject *, ControlHandle *);
32
33extern PyObject *WinObj_WhichWindow(WindowPtr);
34
Guido van Rossum86c3af71995-03-19 22:42:51 +000035#include <Devices.h> /* Defines OpenDeskAcc in universal headers */
36#include <Desk.h> /* Defines OpenDeskAcc in old headers */
Guido van Rossum17448e21995-01-30 11:53:55 +000037#include <Menus.h>
38
39#define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
40
41static PyObject *Menu_Error;
42
43/* ------------------------ Object type Menu ------------------------ */
44
45PyTypeObject Menu_Type;
46
47#define MenuObj_Check(x) ((x)->ob_type == &Menu_Type)
48
49typedef struct MenuObject {
50 PyObject_HEAD
51 MenuHandle ob_itself;
52} MenuObject;
53
54PyObject *MenuObj_New(itself)
Guido van Rossum227a4231995-03-10 14:42:57 +000055 MenuHandle itself;
Guido van Rossum17448e21995-01-30 11:53:55 +000056{
57 MenuObject *it;
58 it = PyObject_NEW(MenuObject, &Menu_Type);
59 if (it == NULL) return NULL;
60 it->ob_itself = itself;
61 return (PyObject *)it;
62}
63MenuObj_Convert(v, p_itself)
64 PyObject *v;
65 MenuHandle *p_itself;
66{
67 if (!MenuObj_Check(v))
68 {
69 PyErr_SetString(PyExc_TypeError, "Menu required");
70 return 0;
71 }
72 *p_itself = ((MenuObject *)v)->ob_itself;
73 return 1;
74}
75
76static void MenuObj_dealloc(self)
77 MenuObject *self;
78{
79 /* Cleanup of self->ob_itself goes here */
80 PyMem_DEL(self);
81}
82
83static PyObject *MenuObj_DisposeMenu(_self, _args)
84 MenuObject *_self;
85 PyObject *_args;
86{
87 PyObject *_res = NULL;
88 if (!PyArg_ParseTuple(_args, ""))
89 return NULL;
90 DisposeMenu(_self->ob_itself);
91 Py_INCREF(Py_None);
92 _res = Py_None;
93 return _res;
94}
95
96static PyObject *MenuObj_AppendMenu(_self, _args)
97 MenuObject *_self;
98 PyObject *_args;
99{
100 PyObject *_res = NULL;
101 Str255 data;
102 if (!PyArg_ParseTuple(_args, "O&",
103 PyMac_GetStr255, data))
104 return NULL;
105 AppendMenu(_self->ob_itself,
106 data);
107 Py_INCREF(Py_None);
108 _res = Py_None;
109 return _res;
110}
111
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000112static PyObject *MenuObj_AppendResMenu(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000113 MenuObject *_self;
114 PyObject *_args;
115{
116 PyObject *_res = NULL;
117 ResType theType;
118 if (!PyArg_ParseTuple(_args, "O&",
119 PyMac_GetOSType, &theType))
120 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000121 AppendResMenu(_self->ob_itself,
122 theType);
Guido van Rossum17448e21995-01-30 11:53:55 +0000123 Py_INCREF(Py_None);
124 _res = Py_None;
125 return _res;
126}
127
128static PyObject *MenuObj_InsertResMenu(_self, _args)
129 MenuObject *_self;
130 PyObject *_args;
131{
132 PyObject *_res = NULL;
133 ResType theType;
134 short afterItem;
135 if (!PyArg_ParseTuple(_args, "O&h",
136 PyMac_GetOSType, &theType,
137 &afterItem))
138 return NULL;
139 InsertResMenu(_self->ob_itself,
140 theType,
141 afterItem);
142 Py_INCREF(Py_None);
143 _res = Py_None;
144 return _res;
145}
146
147static PyObject *MenuObj_InsertMenu(_self, _args)
148 MenuObject *_self;
149 PyObject *_args;
150{
151 PyObject *_res = NULL;
152 short beforeID;
153 if (!PyArg_ParseTuple(_args, "h",
154 &beforeID))
155 return NULL;
156 InsertMenu(_self->ob_itself,
157 beforeID);
158 Py_INCREF(Py_None);
159 _res = Py_None;
160 return _res;
161}
162
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000163static PyObject *MenuObj_InsertMenuItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000164 MenuObject *_self;
165 PyObject *_args;
166{
167 PyObject *_res = NULL;
168 Str255 itemString;
169 short afterItem;
170 if (!PyArg_ParseTuple(_args, "O&h",
171 PyMac_GetStr255, itemString,
172 &afterItem))
173 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000174 InsertMenuItem(_self->ob_itself,
175 itemString,
176 afterItem);
Guido van Rossum17448e21995-01-30 11:53:55 +0000177 Py_INCREF(Py_None);
178 _res = Py_None;
179 return _res;
180}
181
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000182static PyObject *MenuObj_DeleteMenuItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000183 MenuObject *_self;
184 PyObject *_args;
185{
186 PyObject *_res = NULL;
187 short item;
188 if (!PyArg_ParseTuple(_args, "h",
189 &item))
190 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000191 DeleteMenuItem(_self->ob_itself,
192 item);
Guido van Rossum17448e21995-01-30 11:53:55 +0000193 Py_INCREF(Py_None);
194 _res = Py_None;
195 return _res;
196}
197
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000198static PyObject *MenuObj_SetMenuItemText(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000199 MenuObject *_self;
200 PyObject *_args;
201{
202 PyObject *_res = NULL;
203 short item;
204 Str255 itemString;
205 if (!PyArg_ParseTuple(_args, "hO&",
206 &item,
207 PyMac_GetStr255, itemString))
208 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000209 SetMenuItemText(_self->ob_itself,
210 item,
211 itemString);
Guido van Rossum17448e21995-01-30 11:53:55 +0000212 Py_INCREF(Py_None);
213 _res = Py_None;
214 return _res;
215}
216
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000217static PyObject *MenuObj_GetMenuItemText(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000218 MenuObject *_self;
219 PyObject *_args;
220{
221 PyObject *_res = NULL;
222 short item;
223 Str255 itemString;
224 if (!PyArg_ParseTuple(_args, "h",
225 &item))
226 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000227 GetMenuItemText(_self->ob_itself,
228 item,
229 itemString);
Guido van Rossum17448e21995-01-30 11:53:55 +0000230 _res = Py_BuildValue("O&",
231 PyMac_BuildStr255, itemString);
232 return _res;
233}
234
235static PyObject *MenuObj_DisableItem(_self, _args)
236 MenuObject *_self;
237 PyObject *_args;
238{
239 PyObject *_res = NULL;
240 short item;
241 if (!PyArg_ParseTuple(_args, "h",
242 &item))
243 return NULL;
244 DisableItem(_self->ob_itself,
245 item);
246 Py_INCREF(Py_None);
247 _res = Py_None;
248 return _res;
249}
250
251static PyObject *MenuObj_EnableItem(_self, _args)
252 MenuObject *_self;
253 PyObject *_args;
254{
255 PyObject *_res = NULL;
256 short item;
257 if (!PyArg_ParseTuple(_args, "h",
258 &item))
259 return NULL;
260 EnableItem(_self->ob_itself,
261 item);
262 Py_INCREF(Py_None);
263 _res = Py_None;
264 return _res;
265}
266
267static PyObject *MenuObj_CheckItem(_self, _args)
268 MenuObject *_self;
269 PyObject *_args;
270{
271 PyObject *_res = NULL;
272 short item;
273 Boolean checked;
274 if (!PyArg_ParseTuple(_args, "hb",
275 &item,
276 &checked))
277 return NULL;
278 CheckItem(_self->ob_itself,
279 item,
280 checked);
281 Py_INCREF(Py_None);
282 _res = Py_None;
283 return _res;
284}
285
286static PyObject *MenuObj_SetItemMark(_self, _args)
287 MenuObject *_self;
288 PyObject *_args;
289{
290 PyObject *_res = NULL;
291 short item;
292 short markChar;
293 if (!PyArg_ParseTuple(_args, "hh",
294 &item,
295 &markChar))
296 return NULL;
297 SetItemMark(_self->ob_itself,
298 item,
299 markChar);
300 Py_INCREF(Py_None);
301 _res = Py_None;
302 return _res;
303}
304
305static PyObject *MenuObj_GetItemMark(_self, _args)
306 MenuObject *_self;
307 PyObject *_args;
308{
309 PyObject *_res = NULL;
310 short item;
311 short markChar;
312 if (!PyArg_ParseTuple(_args, "h",
313 &item))
314 return NULL;
315 GetItemMark(_self->ob_itself,
316 item,
317 &markChar);
318 _res = Py_BuildValue("h",
319 markChar);
320 return _res;
321}
322
323static PyObject *MenuObj_SetItemIcon(_self, _args)
324 MenuObject *_self;
325 PyObject *_args;
326{
327 PyObject *_res = NULL;
328 short item;
329 short iconIndex;
330 if (!PyArg_ParseTuple(_args, "hh",
331 &item,
332 &iconIndex))
333 return NULL;
334 SetItemIcon(_self->ob_itself,
335 item,
336 iconIndex);
337 Py_INCREF(Py_None);
338 _res = Py_None;
339 return _res;
340}
341
342static PyObject *MenuObj_GetItemIcon(_self, _args)
343 MenuObject *_self;
344 PyObject *_args;
345{
346 PyObject *_res = NULL;
347 short item;
348 short iconIndex;
349 if (!PyArg_ParseTuple(_args, "h",
350 &item))
351 return NULL;
352 GetItemIcon(_self->ob_itself,
353 item,
354 &iconIndex);
355 _res = Py_BuildValue("h",
356 iconIndex);
357 return _res;
358}
359
360static PyObject *MenuObj_SetItemStyle(_self, _args)
361 MenuObject *_self;
362 PyObject *_args;
363{
364 PyObject *_res = NULL;
365 short item;
366 short chStyle;
367 if (!PyArg_ParseTuple(_args, "hh",
368 &item,
369 &chStyle))
370 return NULL;
371 SetItemStyle(_self->ob_itself,
372 item,
373 chStyle);
374 Py_INCREF(Py_None);
375 _res = Py_None;
376 return _res;
377}
378
379static PyObject *MenuObj_GetItemStyle(_self, _args)
380 MenuObject *_self;
381 PyObject *_args;
382{
383 PyObject *_res = NULL;
384 short item;
Jack Jansen7d0bc831995-06-09 20:56:31 +0000385 Style chStyle;
Guido van Rossum17448e21995-01-30 11:53:55 +0000386 if (!PyArg_ParseTuple(_args, "h",
387 &item))
388 return NULL;
389 GetItemStyle(_self->ob_itself,
390 item,
391 &chStyle);
392 _res = Py_BuildValue("b",
393 chStyle);
394 return _res;
395}
396
397static PyObject *MenuObj_CalcMenuSize(_self, _args)
398 MenuObject *_self;
399 PyObject *_args;
400{
401 PyObject *_res = NULL;
402 if (!PyArg_ParseTuple(_args, ""))
403 return NULL;
404 CalcMenuSize(_self->ob_itself);
405 Py_INCREF(Py_None);
406 _res = Py_None;
407 return _res;
408}
409
410static PyObject *MenuObj_CountMItems(_self, _args)
411 MenuObject *_self;
412 PyObject *_args;
413{
414 PyObject *_res = NULL;
415 short _rv;
416 if (!PyArg_ParseTuple(_args, ""))
417 return NULL;
418 _rv = CountMItems(_self->ob_itself);
419 _res = Py_BuildValue("h",
420 _rv);
421 return _res;
422}
423
424static PyObject *MenuObj_GetItemCmd(_self, _args)
425 MenuObject *_self;
426 PyObject *_args;
427{
428 PyObject *_res = NULL;
429 short item;
430 short cmdChar;
431 if (!PyArg_ParseTuple(_args, "h",
432 &item))
433 return NULL;
434 GetItemCmd(_self->ob_itself,
435 item,
436 &cmdChar);
437 _res = Py_BuildValue("h",
438 cmdChar);
439 return _res;
440}
441
442static PyObject *MenuObj_SetItemCmd(_self, _args)
443 MenuObject *_self;
444 PyObject *_args;
445{
446 PyObject *_res = NULL;
447 short item;
448 short cmdChar;
449 if (!PyArg_ParseTuple(_args, "hh",
450 &item,
451 &cmdChar))
452 return NULL;
453 SetItemCmd(_self->ob_itself,
454 item,
455 cmdChar);
456 Py_INCREF(Py_None);
457 _res = Py_None;
458 return _res;
459}
460
461static PyObject *MenuObj_PopUpMenuSelect(_self, _args)
462 MenuObject *_self;
463 PyObject *_args;
464{
465 PyObject *_res = NULL;
466 long _rv;
467 short top;
468 short left;
469 short popUpItem;
470 if (!PyArg_ParseTuple(_args, "hhh",
471 &top,
472 &left,
473 &popUpItem))
474 return NULL;
475 _rv = PopUpMenuSelect(_self->ob_itself,
476 top,
477 left,
478 popUpItem);
479 _res = Py_BuildValue("l",
480 _rv);
481 return _res;
482}
483
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000484static PyObject *MenuObj_InsertFontResMenu(_self, _args)
485 MenuObject *_self;
486 PyObject *_args;
487{
488 PyObject *_res = NULL;
489 short afterItem;
490 short scriptFilter;
491 if (!PyArg_ParseTuple(_args, "hh",
492 &afterItem,
493 &scriptFilter))
494 return NULL;
495 InsertFontResMenu(_self->ob_itself,
496 afterItem,
497 scriptFilter);
498 Py_INCREF(Py_None);
499 _res = Py_None;
500 return _res;
501}
502
503static PyObject *MenuObj_InsertIntlResMenu(_self, _args)
504 MenuObject *_self;
505 PyObject *_args;
506{
507 PyObject *_res = NULL;
508 ResType theType;
509 short afterItem;
510 short scriptFilter;
511 if (!PyArg_ParseTuple(_args, "O&hh",
512 PyMac_GetOSType, &theType,
513 &afterItem,
514 &scriptFilter))
515 return NULL;
516 InsertIntlResMenu(_self->ob_itself,
517 theType,
518 afterItem,
519 scriptFilter);
520 Py_INCREF(Py_None);
521 _res = Py_None;
522 return _res;
523}
524
Jack Jansena1772281995-06-18 20:17:27 +0000525static PyObject *MenuObj_as_Resource(_self, _args)
526 MenuObject *_self;
527 PyObject *_args;
528{
529 PyObject *_res = NULL;
530
531 return ResObj_New((Handle)_self->ob_itself);
532
533}
534
Guido van Rossum17448e21995-01-30 11:53:55 +0000535static PyMethodDef MenuObj_methods[] = {
536 {"DisposeMenu", (PyCFunction)MenuObj_DisposeMenu, 1,
537 "() -> None"},
538 {"AppendMenu", (PyCFunction)MenuObj_AppendMenu, 1,
539 "(Str255 data) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000540 {"AppendResMenu", (PyCFunction)MenuObj_AppendResMenu, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000541 "(ResType theType) -> None"},
542 {"InsertResMenu", (PyCFunction)MenuObj_InsertResMenu, 1,
543 "(ResType theType, short afterItem) -> None"},
544 {"InsertMenu", (PyCFunction)MenuObj_InsertMenu, 1,
545 "(short beforeID) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000546 {"InsertMenuItem", (PyCFunction)MenuObj_InsertMenuItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000547 "(Str255 itemString, short afterItem) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000548 {"DeleteMenuItem", (PyCFunction)MenuObj_DeleteMenuItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000549 "(short item) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000550 {"SetMenuItemText", (PyCFunction)MenuObj_SetMenuItemText, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000551 "(short item, Str255 itemString) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000552 {"GetMenuItemText", (PyCFunction)MenuObj_GetMenuItemText, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000553 "(short item) -> (Str255 itemString)"},
554 {"DisableItem", (PyCFunction)MenuObj_DisableItem, 1,
555 "(short item) -> None"},
556 {"EnableItem", (PyCFunction)MenuObj_EnableItem, 1,
557 "(short item) -> None"},
558 {"CheckItem", (PyCFunction)MenuObj_CheckItem, 1,
559 "(short item, Boolean checked) -> None"},
560 {"SetItemMark", (PyCFunction)MenuObj_SetItemMark, 1,
561 "(short item, short markChar) -> None"},
562 {"GetItemMark", (PyCFunction)MenuObj_GetItemMark, 1,
563 "(short item) -> (short markChar)"},
564 {"SetItemIcon", (PyCFunction)MenuObj_SetItemIcon, 1,
565 "(short item, short iconIndex) -> None"},
566 {"GetItemIcon", (PyCFunction)MenuObj_GetItemIcon, 1,
567 "(short item) -> (short iconIndex)"},
568 {"SetItemStyle", (PyCFunction)MenuObj_SetItemStyle, 1,
569 "(short item, short chStyle) -> None"},
570 {"GetItemStyle", (PyCFunction)MenuObj_GetItemStyle, 1,
Jack Jansen7d0bc831995-06-09 20:56:31 +0000571 "(short item) -> (Style chStyle)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000572 {"CalcMenuSize", (PyCFunction)MenuObj_CalcMenuSize, 1,
573 "() -> None"},
574 {"CountMItems", (PyCFunction)MenuObj_CountMItems, 1,
575 "() -> (short _rv)"},
576 {"GetItemCmd", (PyCFunction)MenuObj_GetItemCmd, 1,
577 "(short item) -> (short cmdChar)"},
578 {"SetItemCmd", (PyCFunction)MenuObj_SetItemCmd, 1,
579 "(short item, short cmdChar) -> None"},
580 {"PopUpMenuSelect", (PyCFunction)MenuObj_PopUpMenuSelect, 1,
581 "(short top, short left, short popUpItem) -> (long _rv)"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000582 {"InsertFontResMenu", (PyCFunction)MenuObj_InsertFontResMenu, 1,
583 "(short afterItem, short scriptFilter) -> None"},
584 {"InsertIntlResMenu", (PyCFunction)MenuObj_InsertIntlResMenu, 1,
585 "(ResType theType, short afterItem, short scriptFilter) -> None"},
Jack Jansena1772281995-06-18 20:17:27 +0000586 {"as_Resource", (PyCFunction)MenuObj_as_Resource, 1,
587 "Return this Menu as a Resource"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000588 {NULL, NULL, 0}
589};
590
591PyMethodChain MenuObj_chain = { MenuObj_methods, NULL };
592
593static PyObject *MenuObj_getattr(self, name)
594 MenuObject *self;
595 char *name;
596{
597 return Py_FindMethodInChain(&MenuObj_chain, (PyObject *)self, name);
598}
599
600#define MenuObj_setattr NULL
601
602PyTypeObject Menu_Type = {
603 PyObject_HEAD_INIT(&PyType_Type)
604 0, /*ob_size*/
605 "Menu", /*tp_name*/
606 sizeof(MenuObject), /*tp_basicsize*/
607 0, /*tp_itemsize*/
608 /* methods */
609 (destructor) MenuObj_dealloc, /*tp_dealloc*/
610 0, /*tp_print*/
611 (getattrfunc) MenuObj_getattr, /*tp_getattr*/
612 (setattrfunc) MenuObj_setattr, /*tp_setattr*/
613};
614
615/* ---------------------- End object type Menu ---------------------- */
616
617
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000618static PyObject *Menu_GetMBarHeight(_self, _args)
619 PyObject *_self;
620 PyObject *_args;
621{
622 PyObject *_res = NULL;
623 short _rv;
624 if (!PyArg_ParseTuple(_args, ""))
625 return NULL;
626 _rv = GetMBarHeight();
627 _res = Py_BuildValue("h",
628 _rv);
629 return _res;
630}
631
Guido van Rossum17448e21995-01-30 11:53:55 +0000632static PyObject *Menu_InitMenus(_self, _args)
633 PyObject *_self;
634 PyObject *_args;
635{
636 PyObject *_res = NULL;
637 if (!PyArg_ParseTuple(_args, ""))
638 return NULL;
639 InitMenus();
640 Py_INCREF(Py_None);
641 _res = Py_None;
642 return _res;
643}
644
645static PyObject *Menu_NewMenu(_self, _args)
646 PyObject *_self;
647 PyObject *_args;
648{
649 PyObject *_res = NULL;
650 MenuHandle _rv;
651 short menuID;
652 Str255 menuTitle;
653 if (!PyArg_ParseTuple(_args, "hO&",
654 &menuID,
655 PyMac_GetStr255, menuTitle))
656 return NULL;
657 _rv = NewMenu(menuID,
658 menuTitle);
659 _res = Py_BuildValue("O&",
660 MenuObj_New, _rv);
661 return _res;
662}
663
664static PyObject *Menu_GetMenu(_self, _args)
665 PyObject *_self;
666 PyObject *_args;
667{
668 PyObject *_res = NULL;
669 MenuHandle _rv;
670 short resourceID;
671 if (!PyArg_ParseTuple(_args, "h",
672 &resourceID))
673 return NULL;
674 _rv = GetMenu(resourceID);
675 _res = Py_BuildValue("O&",
676 MenuObj_New, _rv);
677 return _res;
678}
679
680static PyObject *Menu_DrawMenuBar(_self, _args)
681 PyObject *_self;
682 PyObject *_args;
683{
684 PyObject *_res = NULL;
685 if (!PyArg_ParseTuple(_args, ""))
686 return NULL;
687 DrawMenuBar();
688 Py_INCREF(Py_None);
689 _res = Py_None;
690 return _res;
691}
692
693static PyObject *Menu_InvalMenuBar(_self, _args)
694 PyObject *_self;
695 PyObject *_args;
696{
697 PyObject *_res = NULL;
698 if (!PyArg_ParseTuple(_args, ""))
699 return NULL;
700 InvalMenuBar();
701 Py_INCREF(Py_None);
702 _res = Py_None;
703 return _res;
704}
705
706static PyObject *Menu_DeleteMenu(_self, _args)
707 PyObject *_self;
708 PyObject *_args;
709{
710 PyObject *_res = NULL;
711 short menuID;
712 if (!PyArg_ParseTuple(_args, "h",
713 &menuID))
714 return NULL;
715 DeleteMenu(menuID);
716 Py_INCREF(Py_None);
717 _res = Py_None;
718 return _res;
719}
720
721static PyObject *Menu_ClearMenuBar(_self, _args)
722 PyObject *_self;
723 PyObject *_args;
724{
725 PyObject *_res = NULL;
726 if (!PyArg_ParseTuple(_args, ""))
727 return NULL;
728 ClearMenuBar();
729 Py_INCREF(Py_None);
730 _res = Py_None;
731 return _res;
732}
733
734static PyObject *Menu_GetNewMBar(_self, _args)
735 PyObject *_self;
736 PyObject *_args;
737{
738 PyObject *_res = NULL;
739 Handle _rv;
740 short menuBarID;
741 if (!PyArg_ParseTuple(_args, "h",
742 &menuBarID))
743 return NULL;
744 _rv = GetNewMBar(menuBarID);
745 _res = Py_BuildValue("O&",
746 ResObj_New, _rv);
747 return _res;
748}
749
750static PyObject *Menu_GetMenuBar(_self, _args)
751 PyObject *_self;
752 PyObject *_args;
753{
754 PyObject *_res = NULL;
755 Handle _rv;
756 if (!PyArg_ParseTuple(_args, ""))
757 return NULL;
758 _rv = GetMenuBar();
759 _res = Py_BuildValue("O&",
760 ResObj_New, _rv);
761 return _res;
762}
763
764static PyObject *Menu_SetMenuBar(_self, _args)
765 PyObject *_self;
766 PyObject *_args;
767{
768 PyObject *_res = NULL;
769 Handle menuList;
770 if (!PyArg_ParseTuple(_args, "O&",
771 ResObj_Convert, &menuList))
772 return NULL;
773 SetMenuBar(menuList);
774 Py_INCREF(Py_None);
775 _res = Py_None;
776 return _res;
777}
778
779static PyObject *Menu_MenuKey(_self, _args)
780 PyObject *_self;
781 PyObject *_args;
782{
783 PyObject *_res = NULL;
784 long _rv;
785 short ch;
786 if (!PyArg_ParseTuple(_args, "h",
787 &ch))
788 return NULL;
789 _rv = MenuKey(ch);
790 _res = Py_BuildValue("l",
791 _rv);
792 return _res;
793}
794
795static PyObject *Menu_HiliteMenu(_self, _args)
796 PyObject *_self;
797 PyObject *_args;
798{
799 PyObject *_res = NULL;
800 short menuID;
801 if (!PyArg_ParseTuple(_args, "h",
802 &menuID))
803 return NULL;
804 HiliteMenu(menuID);
805 Py_INCREF(Py_None);
806 _res = Py_None;
807 return _res;
808}
809
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000810static PyObject *Menu_GetMenuHandle(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000811 PyObject *_self;
812 PyObject *_args;
813{
814 PyObject *_res = NULL;
815 MenuHandle _rv;
816 short menuID;
817 if (!PyArg_ParseTuple(_args, "h",
818 &menuID))
819 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000820 _rv = GetMenuHandle(menuID);
Guido van Rossum17448e21995-01-30 11:53:55 +0000821 _res = Py_BuildValue("O&",
822 MenuObj_New, _rv);
823 return _res;
824}
825
826static PyObject *Menu_FlashMenuBar(_self, _args)
827 PyObject *_self;
828 PyObject *_args;
829{
830 PyObject *_res = NULL;
831 short menuID;
832 if (!PyArg_ParseTuple(_args, "h",
833 &menuID))
834 return NULL;
835 FlashMenuBar(menuID);
836 Py_INCREF(Py_None);
837 _res = Py_None;
838 return _res;
839}
840
841static PyObject *Menu_SetMenuFlash(_self, _args)
842 PyObject *_self;
843 PyObject *_args;
844{
845 PyObject *_res = NULL;
846 short count;
847 if (!PyArg_ParseTuple(_args, "h",
848 &count))
849 return NULL;
850 SetMenuFlash(count);
851 Py_INCREF(Py_None);
852 _res = Py_None;
853 return _res;
854}
855
856static PyObject *Menu_MenuSelect(_self, _args)
857 PyObject *_self;
858 PyObject *_args;
859{
860 PyObject *_res = NULL;
861 long _rv;
862 Point startPt;
863 if (!PyArg_ParseTuple(_args, "O&",
864 PyMac_GetPoint, &startPt))
865 return NULL;
866 _rv = MenuSelect(startPt);
867 _res = Py_BuildValue("l",
868 _rv);
869 return _res;
870}
871
872static PyObject *Menu_InitProcMenu(_self, _args)
873 PyObject *_self;
874 PyObject *_args;
875{
876 PyObject *_res = NULL;
877 short resID;
878 if (!PyArg_ParseTuple(_args, "h",
879 &resID))
880 return NULL;
881 InitProcMenu(resID);
882 Py_INCREF(Py_None);
883 _res = Py_None;
884 return _res;
885}
886
887static PyObject *Menu_MenuChoice(_self, _args)
888 PyObject *_self;
889 PyObject *_args;
890{
891 PyObject *_res = NULL;
892 long _rv;
893 if (!PyArg_ParseTuple(_args, ""))
894 return NULL;
895 _rv = MenuChoice();
896 _res = Py_BuildValue("l",
897 _rv);
898 return _res;
899}
900
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000901static PyObject *Menu_DeleteMCEntries(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000902 PyObject *_self;
903 PyObject *_args;
904{
905 PyObject *_res = NULL;
906 short menuID;
907 short menuItem;
908 if (!PyArg_ParseTuple(_args, "hh",
909 &menuID,
910 &menuItem))
911 return NULL;
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000912 DeleteMCEntries(menuID,
913 menuItem);
914 Py_INCREF(Py_None);
915 _res = Py_None;
916 return _res;
917}
918
919static PyObject *Menu_SystemEdit(_self, _args)
920 PyObject *_self;
921 PyObject *_args;
922{
923 PyObject *_res = NULL;
924 Boolean _rv;
925 short editCmd;
926 if (!PyArg_ParseTuple(_args, "h",
927 &editCmd))
928 return NULL;
929 _rv = SystemEdit(editCmd);
930 _res = Py_BuildValue("b",
931 _rv);
932 return _res;
933}
934
935static PyObject *Menu_SystemMenu(_self, _args)
936 PyObject *_self;
937 PyObject *_args;
938{
939 PyObject *_res = NULL;
940 long menuResult;
941 if (!PyArg_ParseTuple(_args, "l",
942 &menuResult))
943 return NULL;
944 SystemMenu(menuResult);
Guido van Rossum17448e21995-01-30 11:53:55 +0000945 Py_INCREF(Py_None);
946 _res = Py_None;
947 return _res;
948}
949
Guido van Rossum86c3af71995-03-19 22:42:51 +0000950static PyObject *Menu_OpenDeskAcc(_self, _args)
951 PyObject *_self;
952 PyObject *_args;
953{
954 PyObject *_res = NULL;
955 Str255 name;
956 if (!PyArg_ParseTuple(_args, "O&",
957 PyMac_GetStr255, name))
958 return NULL;
959 OpenDeskAcc(name);
960 Py_INCREF(Py_None);
961 _res = Py_None;
962 return _res;
963}
964
Guido van Rossum17448e21995-01-30 11:53:55 +0000965static PyMethodDef Menu_methods[] = {
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000966 {"GetMBarHeight", (PyCFunction)Menu_GetMBarHeight, 1,
967 "() -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000968 {"InitMenus", (PyCFunction)Menu_InitMenus, 1,
969 "() -> None"},
970 {"NewMenu", (PyCFunction)Menu_NewMenu, 1,
971 "(short menuID, Str255 menuTitle) -> (MenuHandle _rv)"},
972 {"GetMenu", (PyCFunction)Menu_GetMenu, 1,
973 "(short resourceID) -> (MenuHandle _rv)"},
974 {"DrawMenuBar", (PyCFunction)Menu_DrawMenuBar, 1,
975 "() -> None"},
976 {"InvalMenuBar", (PyCFunction)Menu_InvalMenuBar, 1,
977 "() -> None"},
978 {"DeleteMenu", (PyCFunction)Menu_DeleteMenu, 1,
979 "(short menuID) -> None"},
980 {"ClearMenuBar", (PyCFunction)Menu_ClearMenuBar, 1,
981 "() -> None"},
982 {"GetNewMBar", (PyCFunction)Menu_GetNewMBar, 1,
983 "(short menuBarID) -> (Handle _rv)"},
984 {"GetMenuBar", (PyCFunction)Menu_GetMenuBar, 1,
985 "() -> (Handle _rv)"},
986 {"SetMenuBar", (PyCFunction)Menu_SetMenuBar, 1,
987 "(Handle menuList) -> None"},
988 {"MenuKey", (PyCFunction)Menu_MenuKey, 1,
989 "(short ch) -> (long _rv)"},
990 {"HiliteMenu", (PyCFunction)Menu_HiliteMenu, 1,
991 "(short menuID) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +0000992 {"GetMenuHandle", (PyCFunction)Menu_GetMenuHandle, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000993 "(short menuID) -> (MenuHandle _rv)"},
994 {"FlashMenuBar", (PyCFunction)Menu_FlashMenuBar, 1,
995 "(short menuID) -> None"},
996 {"SetMenuFlash", (PyCFunction)Menu_SetMenuFlash, 1,
997 "(short count) -> None"},
998 {"MenuSelect", (PyCFunction)Menu_MenuSelect, 1,
999 "(Point startPt) -> (long _rv)"},
1000 {"InitProcMenu", (PyCFunction)Menu_InitProcMenu, 1,
1001 "(short resID) -> None"},
1002 {"MenuChoice", (PyCFunction)Menu_MenuChoice, 1,
1003 "() -> (long _rv)"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001004 {"DeleteMCEntries", (PyCFunction)Menu_DeleteMCEntries, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +00001005 "(short menuID, short menuItem) -> None"},
Jack Jansenb81cf9d1995-06-06 13:08:40 +00001006 {"SystemEdit", (PyCFunction)Menu_SystemEdit, 1,
1007 "(short editCmd) -> (Boolean _rv)"},
1008 {"SystemMenu", (PyCFunction)Menu_SystemMenu, 1,
1009 "(long menuResult) -> None"},
Guido van Rossum86c3af71995-03-19 22:42:51 +00001010 {"OpenDeskAcc", (PyCFunction)Menu_OpenDeskAcc, 1,
1011 "(Str255 name) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001012 {NULL, NULL, 0}
1013};
1014
1015
1016
1017
1018void initMenu()
1019{
1020 PyObject *m;
1021 PyObject *d;
1022
1023
1024
1025
1026 m = Py_InitModule("Menu", Menu_methods);
1027 d = PyModule_GetDict(m);
1028 Menu_Error = PyMac_GetOSErrException();
1029 if (Menu_Error == NULL ||
1030 PyDict_SetItemString(d, "Error", Menu_Error) != 0)
1031 Py_FatalError("can't initialize Menu.Error");
1032}
1033
1034/* ======================== End module Menu ========================= */
1035