blob: 93aab4501d718b51036900c9b008bbb1c8a0410f [file] [log] [blame]
Jack Jansenb9968561995-11-30 15:03:09 +00001
2/* =========================== Module Cm ============================ */
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);
Jack Jansenb9968561995-11-30 15:03:09 +000017extern int ResObj_Convert(PyObject *, Handle *);
Jack Jansen425e9eb1995-12-12 15:02:03 +000018extern PyObject *OptResObj_New(Handle);
19extern int OptResObj_Convert(PyObject *, Handle *);
Jack Jansenb9968561995-11-30 15:03:09 +000020
21extern PyObject *WinObj_New(WindowPtr);
22extern int WinObj_Convert(PyObject *, WindowPtr *);
23extern PyTypeObject Window_Type;
24#define WinObj_Check(x) ((x)->ob_type == &Window_Type)
25
26extern PyObject *DlgObj_New(DialogPtr);
27extern int DlgObj_Convert(PyObject *, DialogPtr *);
28extern PyTypeObject Dialog_Type;
29#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
30
31extern PyObject *MenuObj_New(MenuHandle);
32extern int MenuObj_Convert(PyObject *, MenuHandle *);
33
34extern PyObject *CtlObj_New(ControlHandle);
35extern int CtlObj_Convert(PyObject *, ControlHandle *);
36
37extern PyObject *GrafObj_New(GrafPtr);
38extern int GrafObj_Convert(PyObject *, GrafPtr *);
39
40extern PyObject *BMObj_New(BitMapPtr);
41extern int BMObj_Convert(PyObject *, BitMapPtr *);
42
Jack Jansenb9968561995-11-30 15:03:09 +000043extern PyObject *WinObj_WhichWindow(WindowPtr);
44
45#include <Components.h>
46
47/*
48** Parse/generate ComponentDescriptor records
49*/
50PyObject *CmpDesc_New(itself)
51 ComponentDescription *itself;
52{
53
54 return Py_BuildValue("O&O&O&ll",
55 PyMac_BuildOSType, itself->componentType,
56 PyMac_BuildOSType, itself->componentSubType,
57 PyMac_BuildOSType, itself->componentManufacturer,
58 itself->componentFlags, itself->componentFlagsMask);
59}
60
61CmpDesc_Convert(v, p_itself)
62 PyObject *v;
63 ComponentDescription *p_itself;
64{
65 return PyArg_ParseTuple(v, "O&O&O&ll",
66 PyMac_GetOSType, &p_itself->componentType,
67 PyMac_GetOSType, &p_itself->componentSubType,
68 PyMac_GetOSType, &p_itself->componentManufacturer,
69 &p_itself->componentFlags, &p_itself->componentFlagsMask);
70}
71
72
73static PyObject *Cm_Error;
74
75/* ----------------- Object type ComponentInstance ------------------ */
76
77PyTypeObject ComponentInstance_Type;
78
79#define CmpInstObj_Check(x) ((x)->ob_type == &ComponentInstance_Type)
80
81typedef struct ComponentInstanceObject {
82 PyObject_HEAD
83 ComponentInstance ob_itself;
84} ComponentInstanceObject;
85
86PyObject *CmpInstObj_New(itself)
87 ComponentInstance itself;
88{
89 ComponentInstanceObject *it;
90 if (itself == NULL) {
91 PyErr_SetString(Cm_Error,"NULL ComponentInstance");
92 return NULL;
93 }
94 it = PyObject_NEW(ComponentInstanceObject, &ComponentInstance_Type);
95 if (it == NULL) return NULL;
96 it->ob_itself = itself;
97 return (PyObject *)it;
98}
99CmpInstObj_Convert(v, p_itself)
100 PyObject *v;
101 ComponentInstance *p_itself;
102{
103 if (!CmpInstObj_Check(v))
104 {
105 PyErr_SetString(PyExc_TypeError, "ComponentInstance required");
106 return 0;
107 }
108 *p_itself = ((ComponentInstanceObject *)v)->ob_itself;
109 return 1;
110}
111
112static void CmpInstObj_dealloc(self)
113 ComponentInstanceObject *self;
114{
115 /* Cleanup of self->ob_itself goes here */
116 PyMem_DEL(self);
117}
118
119static PyObject *CmpInstObj_CloseComponent(_self, _args)
120 ComponentInstanceObject *_self;
121 PyObject *_args;
122{
123 PyObject *_res = NULL;
124 OSErr _err;
125 if (!PyArg_ParseTuple(_args, ""))
126 return NULL;
127 _err = CloseComponent(_self->ob_itself);
128 if (_err != noErr) return PyMac_Error(_err);
129 Py_INCREF(Py_None);
130 _res = Py_None;
131 return _res;
132}
133
134static PyObject *CmpInstObj_GetComponentInstanceError(_self, _args)
135 ComponentInstanceObject *_self;
136 PyObject *_args;
137{
138 PyObject *_res = NULL;
139 OSErr _err;
140 if (!PyArg_ParseTuple(_args, ""))
141 return NULL;
142 _err = GetComponentInstanceError(_self->ob_itself);
143 if (_err != noErr) return PyMac_Error(_err);
144 Py_INCREF(Py_None);
145 _res = Py_None;
146 return _res;
147}
148
Jack Jansenb9968561995-11-30 15:03:09 +0000149static PyObject *CmpInstObj_SetComponentInstanceError(_self, _args)
150 ComponentInstanceObject *_self;
151 PyObject *_args;
152{
153 PyObject *_res = NULL;
154 OSErr theError;
155 if (!PyArg_ParseTuple(_args, "h",
156 &theError))
157 return NULL;
158 SetComponentInstanceError(_self->ob_itself,
159 theError);
160 Py_INCREF(Py_None);
161 _res = Py_None;
162 return _res;
163}
164
165static PyObject *CmpInstObj_GetComponentInstanceStorage(_self, _args)
166 ComponentInstanceObject *_self;
167 PyObject *_args;
168{
169 PyObject *_res = NULL;
170 Handle _rv;
171 if (!PyArg_ParseTuple(_args, ""))
172 return NULL;
173 _rv = GetComponentInstanceStorage(_self->ob_itself);
174 _res = Py_BuildValue("O&",
175 ResObj_New, _rv);
176 return _res;
177}
178
179static PyObject *CmpInstObj_SetComponentInstanceStorage(_self, _args)
180 ComponentInstanceObject *_self;
181 PyObject *_args;
182{
183 PyObject *_res = NULL;
184 Handle theStorage;
185 if (!PyArg_ParseTuple(_args, "O&",
186 ResObj_Convert, &theStorage))
187 return NULL;
188 SetComponentInstanceStorage(_self->ob_itself,
189 theStorage);
190 Py_INCREF(Py_None);
191 _res = Py_None;
192 return _res;
193}
194
195static PyObject *CmpInstObj_GetComponentInstanceA5(_self, _args)
196 ComponentInstanceObject *_self;
197 PyObject *_args;
198{
199 PyObject *_res = NULL;
200 long _rv;
201 if (!PyArg_ParseTuple(_args, ""))
202 return NULL;
203 _rv = GetComponentInstanceA5(_self->ob_itself);
204 _res = Py_BuildValue("l",
205 _rv);
206 return _res;
207}
208
209static PyObject *CmpInstObj_SetComponentInstanceA5(_self, _args)
210 ComponentInstanceObject *_self;
211 PyObject *_args;
212{
213 PyObject *_res = NULL;
214 long theA5;
215 if (!PyArg_ParseTuple(_args, "l",
216 &theA5))
217 return NULL;
218 SetComponentInstanceA5(_self->ob_itself,
219 theA5);
220 Py_INCREF(Py_None);
221 _res = Py_None;
222 return _res;
223}
224
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000225static PyObject *CmpInstObj_ComponentFunctionImplemented(_self, _args)
226 ComponentInstanceObject *_self;
227 PyObject *_args;
228{
229 PyObject *_res = NULL;
230 long _rv;
231 short ftnNumber;
232 if (!PyArg_ParseTuple(_args, "h",
233 &ftnNumber))
234 return NULL;
235 _rv = ComponentFunctionImplemented(_self->ob_itself,
236 ftnNumber);
237 _res = Py_BuildValue("l",
238 _rv);
239 return _res;
240}
241
242static PyObject *CmpInstObj_GetComponentVersion(_self, _args)
243 ComponentInstanceObject *_self;
244 PyObject *_args;
245{
246 PyObject *_res = NULL;
247 long _rv;
248 if (!PyArg_ParseTuple(_args, ""))
249 return NULL;
250 _rv = GetComponentVersion(_self->ob_itself);
251 _res = Py_BuildValue("l",
252 _rv);
253 return _res;
254}
255
256static PyObject *CmpInstObj_ComponentSetTarget(_self, _args)
257 ComponentInstanceObject *_self;
258 PyObject *_args;
259{
260 PyObject *_res = NULL;
261 long _rv;
262 ComponentInstance target;
263 if (!PyArg_ParseTuple(_args, "O&",
264 CmpInstObj_Convert, &target))
265 return NULL;
266 _rv = ComponentSetTarget(_self->ob_itself,
267 target);
268 _res = Py_BuildValue("l",
269 _rv);
270 return _res;
271}
272
Jack Jansenb9968561995-11-30 15:03:09 +0000273static PyMethodDef CmpInstObj_methods[] = {
274 {"CloseComponent", (PyCFunction)CmpInstObj_CloseComponent, 1,
275 "() -> None"},
276 {"GetComponentInstanceError", (PyCFunction)CmpInstObj_GetComponentInstanceError, 1,
277 "() -> None"},
Jack Jansenb9968561995-11-30 15:03:09 +0000278 {"SetComponentInstanceError", (PyCFunction)CmpInstObj_SetComponentInstanceError, 1,
279 "(OSErr theError) -> None"},
280 {"GetComponentInstanceStorage", (PyCFunction)CmpInstObj_GetComponentInstanceStorage, 1,
281 "() -> (Handle _rv)"},
282 {"SetComponentInstanceStorage", (PyCFunction)CmpInstObj_SetComponentInstanceStorage, 1,
283 "(Handle theStorage) -> None"},
284 {"GetComponentInstanceA5", (PyCFunction)CmpInstObj_GetComponentInstanceA5, 1,
285 "() -> (long _rv)"},
286 {"SetComponentInstanceA5", (PyCFunction)CmpInstObj_SetComponentInstanceA5, 1,
287 "(long theA5) -> None"},
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000288 {"ComponentFunctionImplemented", (PyCFunction)CmpInstObj_ComponentFunctionImplemented, 1,
289 "(short ftnNumber) -> (long _rv)"},
290 {"GetComponentVersion", (PyCFunction)CmpInstObj_GetComponentVersion, 1,
291 "() -> (long _rv)"},
292 {"ComponentSetTarget", (PyCFunction)CmpInstObj_ComponentSetTarget, 1,
293 "(ComponentInstance target) -> (long _rv)"},
Jack Jansenb9968561995-11-30 15:03:09 +0000294 {NULL, NULL, 0}
295};
296
297PyMethodChain CmpInstObj_chain = { CmpInstObj_methods, NULL };
298
299static PyObject *CmpInstObj_getattr(self, name)
300 ComponentInstanceObject *self;
301 char *name;
302{
303 return Py_FindMethodInChain(&CmpInstObj_chain, (PyObject *)self, name);
304}
305
306#define CmpInstObj_setattr NULL
307
308PyTypeObject ComponentInstance_Type = {
309 PyObject_HEAD_INIT(&PyType_Type)
310 0, /*ob_size*/
311 "ComponentInstance", /*tp_name*/
312 sizeof(ComponentInstanceObject), /*tp_basicsize*/
313 0, /*tp_itemsize*/
314 /* methods */
315 (destructor) CmpInstObj_dealloc, /*tp_dealloc*/
316 0, /*tp_print*/
317 (getattrfunc) CmpInstObj_getattr, /*tp_getattr*/
318 (setattrfunc) CmpInstObj_setattr, /*tp_setattr*/
319};
320
321/* --------------- End object type ComponentInstance ---------------- */
322
323
324/* --------------------- Object type Component ---------------------- */
325
326PyTypeObject Component_Type;
327
328#define CmpObj_Check(x) ((x)->ob_type == &Component_Type)
329
330typedef struct ComponentObject {
331 PyObject_HEAD
332 Component ob_itself;
333} ComponentObject;
334
335PyObject *CmpObj_New(itself)
336 Component itself;
337{
338 ComponentObject *it;
339 if (itself == NULL) {
340 /* XXXX Or should we return None? */
341 PyErr_SetString(Cm_Error,"No such component");
342 return NULL;
343 }
344 it = PyObject_NEW(ComponentObject, &Component_Type);
345 if (it == NULL) return NULL;
346 it->ob_itself = itself;
347 return (PyObject *)it;
348}
349CmpObj_Convert(v, p_itself)
350 PyObject *v;
351 Component *p_itself;
352{
353 if ( v == Py_None ) {
354 *p_itself = 0;
355 return 1;
356 }
357 if (!CmpObj_Check(v))
358 {
359 PyErr_SetString(PyExc_TypeError, "Component required");
360 return 0;
361 }
362 *p_itself = ((ComponentObject *)v)->ob_itself;
363 return 1;
364}
365
366static void CmpObj_dealloc(self)
367 ComponentObject *self;
368{
369 /* Cleanup of self->ob_itself goes here */
370 PyMem_DEL(self);
371}
372
373static PyObject *CmpObj_UnregisterComponent(_self, _args)
374 ComponentObject *_self;
375 PyObject *_args;
376{
377 PyObject *_res = NULL;
378 OSErr _err;
379 if (!PyArg_ParseTuple(_args, ""))
380 return NULL;
381 _err = UnregisterComponent(_self->ob_itself);
382 if (_err != noErr) return PyMac_Error(_err);
383 Py_INCREF(Py_None);
384 _res = Py_None;
385 return _res;
386}
387
388static PyObject *CmpObj_GetComponentInfo(_self, _args)
389 ComponentObject *_self;
390 PyObject *_args;
391{
392 PyObject *_res = NULL;
393 OSErr _err;
394 ComponentDescription cd;
395 Handle componentName;
396 Handle componentInfo;
397 Handle componentIcon;
398 if (!PyArg_ParseTuple(_args, "O&O&O&",
399 ResObj_Convert, &componentName,
400 ResObj_Convert, &componentInfo,
401 ResObj_Convert, &componentIcon))
402 return NULL;
403 _err = GetComponentInfo(_self->ob_itself,
404 &cd,
405 componentName,
406 componentInfo,
407 componentIcon);
408 if (_err != noErr) return PyMac_Error(_err);
409 _res = Py_BuildValue("O&",
410 CmpDesc_New, &cd);
411 return _res;
412}
413
414static PyObject *CmpObj_OpenComponent(_self, _args)
415 ComponentObject *_self;
416 PyObject *_args;
417{
418 PyObject *_res = NULL;
419 ComponentInstance _rv;
420 if (!PyArg_ParseTuple(_args, ""))
421 return NULL;
422 _rv = OpenComponent(_self->ob_itself);
423 _res = Py_BuildValue("O&",
424 CmpInstObj_New, _rv);
425 return _res;
426}
427
428static PyObject *CmpObj_GetComponentRefcon(_self, _args)
429 ComponentObject *_self;
430 PyObject *_args;
431{
432 PyObject *_res = NULL;
433 long _rv;
434 if (!PyArg_ParseTuple(_args, ""))
435 return NULL;
436 _rv = GetComponentRefcon(_self->ob_itself);
437 _res = Py_BuildValue("l",
438 _rv);
439 return _res;
440}
441
442static PyObject *CmpObj_SetComponentRefcon(_self, _args)
443 ComponentObject *_self;
444 PyObject *_args;
445{
446 PyObject *_res = NULL;
447 long theRefcon;
448 if (!PyArg_ParseTuple(_args, "l",
449 &theRefcon))
450 return NULL;
451 SetComponentRefcon(_self->ob_itself,
452 theRefcon);
453 Py_INCREF(Py_None);
454 _res = Py_None;
455 return _res;
456}
457
458static PyObject *CmpObj_OpenComponentResFile(_self, _args)
459 ComponentObject *_self;
460 PyObject *_args;
461{
462 PyObject *_res = NULL;
463 short _rv;
464 if (!PyArg_ParseTuple(_args, ""))
465 return NULL;
466 _rv = OpenComponentResFile(_self->ob_itself);
467 _res = Py_BuildValue("h",
468 _rv);
469 return _res;
470}
471
472static PyObject *CmpObj_CountComponentInstances(_self, _args)
473 ComponentObject *_self;
474 PyObject *_args;
475{
476 PyObject *_res = NULL;
477 long _rv;
478 if (!PyArg_ParseTuple(_args, ""))
479 return NULL;
480 _rv = CountComponentInstances(_self->ob_itself);
481 _res = Py_BuildValue("l",
482 _rv);
483 return _res;
484}
485
486static PyObject *CmpObj_SetDefaultComponent(_self, _args)
487 ComponentObject *_self;
488 PyObject *_args;
489{
490 PyObject *_res = NULL;
491 OSErr _err;
492 short flags;
493 if (!PyArg_ParseTuple(_args, "h",
494 &flags))
495 return NULL;
496 _err = SetDefaultComponent(_self->ob_itself,
497 flags);
498 if (_err != noErr) return PyMac_Error(_err);
499 Py_INCREF(Py_None);
500 _res = Py_None;
501 return _res;
502}
503
504static PyObject *CmpObj_CaptureComponent(_self, _args)
505 ComponentObject *_self;
506 PyObject *_args;
507{
508 PyObject *_res = NULL;
509 Component _rv;
510 Component capturingComponent;
511 if (!PyArg_ParseTuple(_args, "O&",
512 CmpObj_Convert, &capturingComponent))
513 return NULL;
514 _rv = CaptureComponent(_self->ob_itself,
515 capturingComponent);
516 _res = Py_BuildValue("O&",
517 CmpObj_New, _rv);
518 return _res;
519}
520
521static PyObject *CmpObj_UncaptureComponent(_self, _args)
522 ComponentObject *_self;
523 PyObject *_args;
524{
525 PyObject *_res = NULL;
526 OSErr _err;
527 if (!PyArg_ParseTuple(_args, ""))
528 return NULL;
529 _err = UncaptureComponent(_self->ob_itself);
530 if (_err != noErr) return PyMac_Error(_err);
531 Py_INCREF(Py_None);
532 _res = Py_None;
533 return _res;
534}
535
536static PyObject *CmpObj_GetComponentIconSuite(_self, _args)
537 ComponentObject *_self;
538 PyObject *_args;
539{
540 PyObject *_res = NULL;
541 OSErr _err;
542 Handle iconSuite;
543 if (!PyArg_ParseTuple(_args, ""))
544 return NULL;
545 _err = GetComponentIconSuite(_self->ob_itself,
546 &iconSuite);
547 if (_err != noErr) return PyMac_Error(_err);
548 _res = Py_BuildValue("O&",
549 ResObj_New, iconSuite);
550 return _res;
551}
552
553static PyMethodDef CmpObj_methods[] = {
554 {"UnregisterComponent", (PyCFunction)CmpObj_UnregisterComponent, 1,
555 "() -> None"},
556 {"GetComponentInfo", (PyCFunction)CmpObj_GetComponentInfo, 1,
557 "(Handle componentName, Handle componentInfo, Handle componentIcon) -> (ComponentDescription cd)"},
558 {"OpenComponent", (PyCFunction)CmpObj_OpenComponent, 1,
559 "() -> (ComponentInstance _rv)"},
560 {"GetComponentRefcon", (PyCFunction)CmpObj_GetComponentRefcon, 1,
561 "() -> (long _rv)"},
562 {"SetComponentRefcon", (PyCFunction)CmpObj_SetComponentRefcon, 1,
563 "(long theRefcon) -> None"},
564 {"OpenComponentResFile", (PyCFunction)CmpObj_OpenComponentResFile, 1,
565 "() -> (short _rv)"},
566 {"CountComponentInstances", (PyCFunction)CmpObj_CountComponentInstances, 1,
567 "() -> (long _rv)"},
568 {"SetDefaultComponent", (PyCFunction)CmpObj_SetDefaultComponent, 1,
569 "(short flags) -> None"},
570 {"CaptureComponent", (PyCFunction)CmpObj_CaptureComponent, 1,
571 "(Component capturingComponent) -> (Component _rv)"},
572 {"UncaptureComponent", (PyCFunction)CmpObj_UncaptureComponent, 1,
573 "() -> None"},
574 {"GetComponentIconSuite", (PyCFunction)CmpObj_GetComponentIconSuite, 1,
575 "() -> (Handle iconSuite)"},
576 {NULL, NULL, 0}
577};
578
579PyMethodChain CmpObj_chain = { CmpObj_methods, NULL };
580
581static PyObject *CmpObj_getattr(self, name)
582 ComponentObject *self;
583 char *name;
584{
585 return Py_FindMethodInChain(&CmpObj_chain, (PyObject *)self, name);
586}
587
588#define CmpObj_setattr NULL
589
590PyTypeObject Component_Type = {
591 PyObject_HEAD_INIT(&PyType_Type)
592 0, /*ob_size*/
593 "Component", /*tp_name*/
594 sizeof(ComponentObject), /*tp_basicsize*/
595 0, /*tp_itemsize*/
596 /* methods */
597 (destructor) CmpObj_dealloc, /*tp_dealloc*/
598 0, /*tp_print*/
599 (getattrfunc) CmpObj_getattr, /*tp_getattr*/
600 (setattrfunc) CmpObj_setattr, /*tp_setattr*/
601};
602
603/* ------------------- End object type Component -------------------- */
604
605
606static PyObject *Cm_RegisterComponentResource(_self, _args)
607 PyObject *_self;
608 PyObject *_args;
609{
610 PyObject *_res = NULL;
611 Component _rv;
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000612 ComponentResourceHandle cr;
Jack Jansenb9968561995-11-30 15:03:09 +0000613 short global;
614 if (!PyArg_ParseTuple(_args, "O&h",
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000615 ResObj_Convert, &cr,
Jack Jansenb9968561995-11-30 15:03:09 +0000616 &global))
617 return NULL;
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000618 _rv = RegisterComponentResource(cr,
Jack Jansenb9968561995-11-30 15:03:09 +0000619 global);
620 _res = Py_BuildValue("O&",
621 CmpObj_New, _rv);
622 return _res;
623}
624
625static PyObject *Cm_FindNextComponent(_self, _args)
626 PyObject *_self;
627 PyObject *_args;
628{
629 PyObject *_res = NULL;
630 Component _rv;
631 Component aComponent;
632 ComponentDescription looking;
633 if (!PyArg_ParseTuple(_args, "O&O&",
634 CmpObj_Convert, &aComponent,
635 CmpDesc_Convert, &looking))
636 return NULL;
637 _rv = FindNextComponent(aComponent,
638 &looking);
639 _res = Py_BuildValue("O&",
640 CmpObj_New, _rv);
641 return _res;
642}
643
644static PyObject *Cm_CountComponents(_self, _args)
645 PyObject *_self;
646 PyObject *_args;
647{
648 PyObject *_res = NULL;
649 long _rv;
650 ComponentDescription looking;
651 if (!PyArg_ParseTuple(_args, "O&",
652 CmpDesc_Convert, &looking))
653 return NULL;
654 _rv = CountComponents(&looking);
655 _res = Py_BuildValue("l",
656 _rv);
657 return _res;
658}
659
660static PyObject *Cm_GetComponentListModSeed(_self, _args)
661 PyObject *_self;
662 PyObject *_args;
663{
664 PyObject *_res = NULL;
665 long _rv;
666 if (!PyArg_ParseTuple(_args, ""))
667 return NULL;
668 _rv = GetComponentListModSeed();
669 _res = Py_BuildValue("l",
670 _rv);
671 return _res;
672}
673
674static PyObject *Cm_CloseComponentResFile(_self, _args)
675 PyObject *_self;
676 PyObject *_args;
677{
678 PyObject *_res = NULL;
679 OSErr _err;
680 short refnum;
681 if (!PyArg_ParseTuple(_args, "h",
682 &refnum))
683 return NULL;
684 _err = CloseComponentResFile(refnum);
685 if (_err != noErr) return PyMac_Error(_err);
686 Py_INCREF(Py_None);
687 _res = Py_None;
688 return _res;
689}
690
691static PyObject *Cm_OpenDefaultComponent(_self, _args)
692 PyObject *_self;
693 PyObject *_args;
694{
695 PyObject *_res = NULL;
696 ComponentInstance _rv;
697 OSType componentType;
698 OSType componentSubType;
699 if (!PyArg_ParseTuple(_args, "O&O&",
700 PyMac_GetOSType, &componentType,
701 PyMac_GetOSType, &componentSubType))
702 return NULL;
703 _rv = OpenDefaultComponent(componentType,
704 componentSubType);
705 _res = Py_BuildValue("O&",
706 CmpInstObj_New, _rv);
707 return _res;
708}
709
710static PyObject *Cm_RegisterComponentResourceFile(_self, _args)
711 PyObject *_self;
712 PyObject *_args;
713{
714 PyObject *_res = NULL;
715 long _rv;
716 short resRefNum;
717 short global;
718 if (!PyArg_ParseTuple(_args, "hh",
719 &resRefNum,
720 &global))
721 return NULL;
722 _rv = RegisterComponentResourceFile(resRefNum,
723 global);
724 _res = Py_BuildValue("l",
725 _rv);
726 return _res;
727}
728
729static PyMethodDef Cm_methods[] = {
730 {"RegisterComponentResource", (PyCFunction)Cm_RegisterComponentResource, 1,
Jack Jansen4a8c54e1997-02-24 13:56:59 +0000731 "(ComponentResourceHandle cr, short global) -> (Component _rv)"},
Jack Jansenb9968561995-11-30 15:03:09 +0000732 {"FindNextComponent", (PyCFunction)Cm_FindNextComponent, 1,
733 "(Component aComponent, ComponentDescription looking) -> (Component _rv)"},
734 {"CountComponents", (PyCFunction)Cm_CountComponents, 1,
735 "(ComponentDescription looking) -> (long _rv)"},
736 {"GetComponentListModSeed", (PyCFunction)Cm_GetComponentListModSeed, 1,
737 "() -> (long _rv)"},
738 {"CloseComponentResFile", (PyCFunction)Cm_CloseComponentResFile, 1,
739 "(short refnum) -> None"},
740 {"OpenDefaultComponent", (PyCFunction)Cm_OpenDefaultComponent, 1,
741 "(OSType componentType, OSType componentSubType) -> (ComponentInstance _rv)"},
742 {"RegisterComponentResourceFile", (PyCFunction)Cm_RegisterComponentResourceFile, 1,
743 "(short resRefNum, short global) -> (long _rv)"},
744 {NULL, NULL, 0}
745};
746
747
748
749
750void initCm()
751{
752 PyObject *m;
753 PyObject *d;
754
755
756
757
758 m = Py_InitModule("Cm", Cm_methods);
759 d = PyModule_GetDict(m);
760 Cm_Error = PyMac_GetOSErrException();
761 if (Cm_Error == NULL ||
762 PyDict_SetItemString(d, "Error", Cm_Error) != 0)
763 Py_FatalError("can't initialize Cm.Error");
764}
765
766/* ========================= End module Cm ========================== */
767