ยปCore Development>Code coverage>Mac/Modules/ibcarbon/_IBCarbon.c

Python code coverage for Mac/Modules/ibcarbon/_IBCarbon.c

#countcontent
1n/a
2n/a/* ======================== Module _IBCarbon ======================== */
3n/a
4n/a#include "Python.h"
5n/a
6n/a
7n/a#ifndef __LP64__
8n/a
9n/a#include <Carbon/Carbon.h>
10n/a#include "pymactoolbox.h"
11n/a
12n/a#ifdef USE_TOOLBOX_OBJECT_GLUE
13n/aextern int _CFStringRefObj_Convert(PyObject *, CFStringRef *);
14n/a#endif
15n/a
16n/a
17n/astatic PyObject *IBCarbon_Error;
18n/a
19n/a/* ---------------------- Object type IBNibRef ---------------------- */
20n/a
21n/aPyTypeObject IBNibRef_Type;
22n/a
23n/a#define IBNibRefObj_Check(x) ((x)->ob_type == &IBNibRef_Type || PyObject_TypeCheck((x), &IBNibRef_Type))
24n/a
25n/atypedef struct IBNibRefObject {
26n/a PyObject_HEAD
27n/a IBNibRef ob_itself;
28n/a} IBNibRefObject;
29n/a
30n/aPyObject *IBNibRefObj_New(IBNibRef itself)
31n/a{
32n/a IBNibRefObject *it;
33n/a it = PyObject_NEW(IBNibRefObject, &IBNibRef_Type);
34n/a if (it == NULL) return NULL;
35n/a it->ob_itself = itself;
36n/a return (PyObject *)it;
37n/a}
38n/a
39n/aint IBNibRefObj_Convert(PyObject *v, IBNibRef *p_itself)
40n/a{
41n/a if (!IBNibRefObj_Check(v))
42n/a {
43n/a PyErr_SetString(PyExc_TypeError, "IBNibRef required");
44n/a return 0;
45n/a }
46n/a *p_itself = ((IBNibRefObject *)v)->ob_itself;
47n/a return 1;
48n/a}
49n/a
50n/astatic void IBNibRefObj_dealloc(IBNibRefObject *self)
51n/a{
52n/a DisposeNibReference(self->ob_itself);
53n/a self->ob_type->tp_free((PyObject *)self);
54n/a}
55n/a
56n/astatic PyObject *IBNibRefObj_CreateWindowFromNib(IBNibRefObject *_self, PyObject *_args)
57n/a{
58n/a PyObject *_res = NULL;
59n/a OSStatus _err;
60n/a CFStringRef inName;
61n/a WindowPtr outWindow;
62n/a if (!PyArg_ParseTuple(_args, "O&",
63n/a CFStringRefObj_Convert, &inName))
64n/a return NULL;
65n/a _err = CreateWindowFromNib(_self->ob_itself,
66n/a inName,
67n/a &outWindow);
68n/a if (_err != noErr) return PyMac_Error(_err);
69n/a _res = Py_BuildValue("O&",
70n/a WinObj_New, outWindow);
71n/a return _res;
72n/a}
73n/a
74n/astatic PyObject *IBNibRefObj_CreateMenuFromNib(IBNibRefObject *_self, PyObject *_args)
75n/a{
76n/a PyObject *_res = NULL;
77n/a OSStatus _err;
78n/a CFStringRef inName;
79n/a MenuHandle outMenuRef;
80n/a if (!PyArg_ParseTuple(_args, "O&",
81n/a CFStringRefObj_Convert, &inName))
82n/a return NULL;
83n/a _err = CreateMenuFromNib(_self->ob_itself,
84n/a inName,
85n/a &outMenuRef);
86n/a if (_err != noErr) return PyMac_Error(_err);
87n/a _res = Py_BuildValue("O&",
88n/a MenuObj_New, outMenuRef);
89n/a return _res;
90n/a}
91n/a
92n/astatic PyObject *IBNibRefObj_CreateMenuBarFromNib(IBNibRefObject *_self, PyObject *_args)
93n/a{
94n/a PyObject *_res = NULL;
95n/a OSStatus _err;
96n/a CFStringRef inName;
97n/a Handle outMenuBar;
98n/a if (!PyArg_ParseTuple(_args, "O&",
99n/a CFStringRefObj_Convert, &inName))
100n/a return NULL;
101n/a _err = CreateMenuBarFromNib(_self->ob_itself,
102n/a inName,
103n/a &outMenuBar);
104n/a if (_err != noErr) return PyMac_Error(_err);
105n/a _res = Py_BuildValue("O&",
106n/a ResObj_New, outMenuBar);
107n/a return _res;
108n/a}
109n/a
110n/astatic PyObject *IBNibRefObj_SetMenuBarFromNib(IBNibRefObject *_self, PyObject *_args)
111n/a{
112n/a PyObject *_res = NULL;
113n/a OSStatus _err;
114n/a CFStringRef inName;
115n/a if (!PyArg_ParseTuple(_args, "O&",
116n/a CFStringRefObj_Convert, &inName))
117n/a return NULL;
118n/a _err = SetMenuBarFromNib(_self->ob_itself,
119n/a inName);
120n/a if (_err != noErr) return PyMac_Error(_err);
121n/a Py_INCREF(Py_None);
122n/a _res = Py_None;
123n/a return _res;
124n/a}
125n/a
126n/astatic PyMethodDef IBNibRefObj_methods[] = {
127n/a {"CreateWindowFromNib", (PyCFunction)IBNibRefObj_CreateWindowFromNib, 1,
128n/a PyDoc_STR("(CFStringRef inName) -> (WindowPtr outWindow)")},
129n/a {"CreateMenuFromNib", (PyCFunction)IBNibRefObj_CreateMenuFromNib, 1,
130n/a PyDoc_STR("(CFStringRef inName) -> (MenuHandle outMenuRef)")},
131n/a {"CreateMenuBarFromNib", (PyCFunction)IBNibRefObj_CreateMenuBarFromNib, 1,
132n/a PyDoc_STR("(CFStringRef inName) -> (Handle outMenuBar)")},
133n/a {"SetMenuBarFromNib", (PyCFunction)IBNibRefObj_SetMenuBarFromNib, 1,
134n/a PyDoc_STR("(CFStringRef inName) -> None")},
135n/a {NULL, NULL, 0}
136n/a};
137n/a
138n/a#define IBNibRefObj_getsetlist NULL
139n/a
140n/a
141n/a#define IBNibRefObj_compare NULL
142n/a
143n/a#define IBNibRefObj_repr NULL
144n/a
145n/a#define IBNibRefObj_hash NULL
146n/a#define IBNibRefObj_tp_init 0
147n/a
148n/a#define IBNibRefObj_tp_alloc PyType_GenericAlloc
149n/a
150n/astatic PyObject *IBNibRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
151n/a{
152n/a PyObject *_self;
153n/a IBNibRef itself;
154n/a char *kw[] = {"itself", 0};
155n/a
156n/a if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, IBNibRefObj_Convert, &itself)) return NULL;
157n/a if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
158n/a ((IBNibRefObject *)_self)->ob_itself = itself;
159n/a return _self;
160n/a}
161n/a
162n/a#define IBNibRefObj_tp_free PyObject_Del
163n/a
164n/a
165n/aPyTypeObject IBNibRef_Type = {
166n/a PyObject_HEAD_INIT(NULL)
167n/a 0, /*ob_size*/
168n/a "_IBCarbon.IBNibRef", /*tp_name*/
169n/a sizeof(IBNibRefObject), /*tp_basicsize*/
170n/a 0, /*tp_itemsize*/
171n/a /* methods */
172n/a (destructor) IBNibRefObj_dealloc, /*tp_dealloc*/
173n/a 0, /*tp_print*/
174n/a (getattrfunc)0, /*tp_getattr*/
175n/a (setattrfunc)0, /*tp_setattr*/
176n/a (cmpfunc) IBNibRefObj_compare, /*tp_compare*/
177n/a (reprfunc) IBNibRefObj_repr, /*tp_repr*/
178n/a (PyNumberMethods *)0, /* tp_as_number */
179n/a (PySequenceMethods *)0, /* tp_as_sequence */
180n/a (PyMappingMethods *)0, /* tp_as_mapping */
181n/a (hashfunc) IBNibRefObj_hash, /*tp_hash*/
182n/a 0, /*tp_call*/
183n/a 0, /*tp_str*/
184n/a PyObject_GenericGetAttr, /*tp_getattro*/
185n/a PyObject_GenericSetAttr, /*tp_setattro */
186n/a 0, /*tp_as_buffer*/
187n/a Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
188n/a 0, /*tp_doc*/
189n/a 0, /*tp_traverse*/
190n/a 0, /*tp_clear*/
191n/a 0, /*tp_richcompare*/
192n/a 0, /*tp_weaklistoffset*/
193n/a 0, /*tp_iter*/
194n/a 0, /*tp_iternext*/
195n/a IBNibRefObj_methods, /* tp_methods */
196n/a 0, /*tp_members*/
197n/a IBNibRefObj_getsetlist, /*tp_getset*/
198n/a 0, /*tp_base*/
199n/a 0, /*tp_dict*/
200n/a 0, /*tp_descr_get*/
201n/a 0, /*tp_descr_set*/
202n/a 0, /*tp_dictoffset*/
203n/a IBNibRefObj_tp_init, /* tp_init */
204n/a IBNibRefObj_tp_alloc, /* tp_alloc */
205n/a IBNibRefObj_tp_new, /* tp_new */
206n/a IBNibRefObj_tp_free, /* tp_free */
207n/a};
208n/a
209n/a/* -------------------- End object type IBNibRef -------------------- */
210n/a
211n/a
212n/astatic PyObject *IBCarbon_CreateNibReference(PyObject *_self, PyObject *_args)
213n/a{
214n/a PyObject *_res = NULL;
215n/a OSStatus _err;
216n/a CFStringRef inNibName;
217n/a IBNibRef outNibRef;
218n/a if (!PyArg_ParseTuple(_args, "O&",
219n/a CFStringRefObj_Convert, &inNibName))
220n/a return NULL;
221n/a _err = CreateNibReference(inNibName,
222n/a &outNibRef);
223n/a if (_err != noErr) return PyMac_Error(_err);
224n/a _res = Py_BuildValue("O&",
225n/a IBNibRefObj_New, outNibRef);
226n/a return _res;
227n/a}
228n/a#endif /* __LP64__ */
229n/a
230n/astatic PyMethodDef IBCarbon_methods[] = {
231n/a#ifndef __LP64__
232n/a {"CreateNibReference", (PyCFunction)IBCarbon_CreateNibReference, 1,
233n/a PyDoc_STR("(CFStringRef inNibName) -> (IBNibRef outNibRef)")},
234n/a#endif /* __LP64__ */
235n/a {NULL, NULL, 0}
236n/a};
237n/a
238n/a
239n/a
240n/a
241n/avoid init_IBCarbon(void)
242n/a{
243n/a PyObject *m;
244n/a#ifndef __LP64__
245n/a PyObject *d;
246n/a#endif /* __LP64__ */
247n/a
248n/a
249n/a
250n/a
251n/a
252n/a m = Py_InitModule("_IBCarbon", IBCarbon_methods);
253n/a#ifndef __LP64__
254n/a d = PyModule_GetDict(m);
255n/a IBCarbon_Error = PyMac_GetOSErrException();
256n/a if (IBCarbon_Error == NULL ||
257n/a PyDict_SetItemString(d, "Error", IBCarbon_Error) != 0)
258n/a return;
259n/a IBNibRef_Type.ob_type = &PyType_Type;
260n/a if (PyType_Ready(&IBNibRef_Type) < 0) return;
261n/a Py_INCREF(&IBNibRef_Type);
262n/a PyModule_AddObject(m, "IBNibRef", (PyObject *)&IBNibRef_Type);
263n/a /* Backward-compatible name */
264n/a Py_INCREF(&IBNibRef_Type);
265n/a PyModule_AddObject(m, "IBNibRefType", (PyObject *)&IBNibRef_Type);
266n/a#endif /* __LP64__ */
267n/a}
268n/a
269n/a/* ====================== End module _IBCarbon ====================== */
270n/a