blob: b44e7cd89f6b652183ae6f765f31583be1eea859 [file] [log] [blame]
Jack Jansenda6a9711996-04-12 16:25:30 +00001
2/* ========================== Module Scrap ========================== */
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 *);
18extern PyObject *OptResObj_New(Handle);
19extern int OptResObj_Convert(PyObject *, Handle *);
20
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
43extern PyObject *PMObj_New(PixMapHandle);
44extern int PMObj_Convert(PyObject *, PixMapHandle *);
45
46extern PyObject *WinObj_WhichWindow(WindowPtr);
47
48#include <Scrap.h>
49
50/*
51** Generate ScrapInfo records
52*/
53PyObject *SCRRec_New(itself)
54 ScrapStuff *itself;
55{
56
57 return Py_BuildValue("lO&hhO&", itself->scrapSize,
58 ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
59 PyMac_BuildStr255, itself->scrapName);
60}
61
62static PyObject *Scrap_Error;
63
64static PyObject *Scrap_InfoScrap(_self, _args)
65 PyObject *_self;
66 PyObject *_args;
67{
68 PyObject *_res = NULL;
69 ScrapStuffPtr _rv;
70 if (!PyArg_ParseTuple(_args, ""))
71 return NULL;
72 _rv = InfoScrap();
73 _res = Py_BuildValue("O&",
74 SCRRec_New, _rv);
75 return _res;
76}
77
78static PyObject *Scrap_UnloadScrap(_self, _args)
79 PyObject *_self;
80 PyObject *_args;
81{
82 PyObject *_res = NULL;
83 long _rv;
84 if (!PyArg_ParseTuple(_args, ""))
85 return NULL;
86 _rv = UnloadScrap();
87 if ( _rv ) return PyMac_Error((OSErr)_rv);
88 Py_INCREF(Py_None);
89 return Py_None;
90}
91
92static PyObject *Scrap_LoadScrap(_self, _args)
93 PyObject *_self;
94 PyObject *_args;
95{
96 PyObject *_res = NULL;
97 long _rv;
98 if (!PyArg_ParseTuple(_args, ""))
99 return NULL;
100 _rv = LoadScrap();
101 if ( _rv ) return PyMac_Error((OSErr)_rv);
102 Py_INCREF(Py_None);
103 return Py_None;
104}
105
106static PyObject *Scrap_GetScrap(_self, _args)
107 PyObject *_self;
108 PyObject *_args;
109{
110 PyObject *_res = NULL;
111 long _rv;
112 Handle hDest;
113 ResType theType;
114 long offset;
115 if (!PyArg_ParseTuple(_args, "O&O&",
116 ResObj_Convert, &hDest,
117 PyMac_GetOSType, &theType))
118 return NULL;
119 _rv = GetScrap(hDest,
120 theType,
121 &offset);
122 _res = Py_BuildValue("ll",
123 _rv,
124 offset);
125 return _res;
126}
127
128static PyObject *Scrap_ZeroScrap(_self, _args)
129 PyObject *_self;
130 PyObject *_args;
131{
132 PyObject *_res = NULL;
133 long _rv;
134 if (!PyArg_ParseTuple(_args, ""))
135 return NULL;
136 _rv = ZeroScrap();
137 if ( _rv ) return PyMac_Error((OSErr)_rv);
138 Py_INCREF(Py_None);
139 return Py_None;
140}
141
142static PyObject *Scrap_PutScrap(_self, _args)
143 PyObject *_self;
144 PyObject *_args;
145{
146 PyObject *_res = NULL;
147 long _rv;
148 long length;
149 ResType theType;
150 char *source__in__;
151 int source__len__;
152 int source__in_len__;
153 if (!PyArg_ParseTuple(_args, "O&s#",
154 PyMac_GetOSType, &theType,
155 &source__in__, &source__in_len__))
156 return NULL;
157 length = source__in_len__;
158 _rv = PutScrap(length,
159 theType,
160 source__in__);
161 if ( _rv ) return PyMac_Error((OSErr)_rv);
162 Py_INCREF(Py_None);
163 return Py_None;
164}
165
166static PyMethodDef Scrap_methods[] = {
167 {"InfoScrap", (PyCFunction)Scrap_InfoScrap, 1,
168 "() -> (ScrapStuff _rv)"},
169 {"UnloadScrap", (PyCFunction)Scrap_UnloadScrap, 1,
170 "() -> (OSErr)"},
171 {"LoadScrap", (PyCFunction)Scrap_LoadScrap, 1,
172 "() -> (OSErr)"},
173 {"GetScrap", (PyCFunction)Scrap_GetScrap, 1,
174 "(Handle hDest, ResType theType) -> (long _rv, long offset)"},
175 {"ZeroScrap", (PyCFunction)Scrap_ZeroScrap, 1,
176 "() -> (OSErr)"},
177 {"PutScrap", (PyCFunction)Scrap_PutScrap, 1,
178 "(ResType theType, Buffer source) -> (OSErr)"},
179 {NULL, NULL, 0}
180};
181
182
183
184
185void initScrap()
186{
187 PyObject *m;
188 PyObject *d;
189
190
191
192
193 m = Py_InitModule("Scrap", Scrap_methods);
194 d = PyModule_GetDict(m);
195 Scrap_Error = PyMac_GetOSErrException();
196 if (Scrap_Error == NULL ||
197 PyDict_SetItemString(d, "Error", Scrap_Error) != 0)
198 Py_FatalError("can't initialize Scrap.Error");
199}
200
201/* ======================== End module Scrap ======================== */
202