blob: d37908bf03b355dadc5ca237e444b43a457d4f20 [file] [log] [blame]
Jack Jansen8a452d61996-04-10 14:41:08 +00001
2/* =========================== Module TE ============================ */
3
4#include "Python.h"
5
6
7
Jack Jansen8a452d61996-04-10 14:41:08 +00008#include "macglue.h"
Jack Jansen9d8b96c2000-07-14 22:16:45 +00009#include "pymactoolbox.h"
Jack Jansen8a452d61996-04-10 14:41:08 +000010
Jack Jansenfa77e1a2001-05-22 21:56:42 +000011#ifdef WITHOUT_FRAMEWORKS
Jack Jansen8a452d61996-04-10 14:41:08 +000012#include <TextEdit.h>
Jack Jansenfa77e1a2001-05-22 21:56:42 +000013#else
14#include <Carbon/Carbon.h>
15#endif
Jack Jansen8a452d61996-04-10 14:41:08 +000016
Jack Jansen0e04eec2001-05-17 21:58:34 +000017#ifdef USE_TOOLBOX_OBJECT_GLUE
18extern PyObject *_TEObj_New(TEHandle);
19extern int _TEObj_Convert(PyObject *, TEHandle *);
20
21#define TEObj_New _TEObj_New
22#define TEObj_Convert _TEObj_Convert
23#endif
24
Jack Jansena1a0fef1999-12-23 14:32:06 +000025#define as_TE(h) ((TEHandle)h)
Jack Jansendeb63732000-03-22 15:35:24 +000026#define as_Resource(teh) ((Handle)teh)
Jack Jansena1a0fef1999-12-23 14:32:06 +000027
Jack Jansen8a452d61996-04-10 14:41:08 +000028/*
29** Parse/generate TextStyle records
30*/
Jack Jansen9d8b96c2000-07-14 22:16:45 +000031static PyObject *
Jack Jansenfa77e1a2001-05-22 21:56:42 +000032TextStyle_New(TextStylePtr itself)
Jack Jansen8a452d61996-04-10 14:41:08 +000033{
34
35 return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New,
36 &itself->tsColor);
37}
38
Jack Jansen9d8b96c2000-07-14 22:16:45 +000039static int
Jack Jansenfa77e1a2001-05-22 21:56:42 +000040TextStyle_Convert(PyObject *v, TextStylePtr p_itself)
Jack Jansen8a452d61996-04-10 14:41:08 +000041{
42 long font, face, size;
43
44 if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) )
45 return 0;
46 p_itself->tsFont = (short)font;
47 p_itself->tsFace = (Style)face;
48 p_itself->tsSize = (short)size;
49 return 1;
50}
51
52static PyObject *TE_Error;
53
54/* ------------------------- Object type TE ------------------------- */
55
56PyTypeObject TE_Type;
57
58#define TEObj_Check(x) ((x)->ob_type == &TE_Type)
59
60typedef struct TEObject {
61 PyObject_HEAD
62 TEHandle ob_itself;
63} TEObject;
64
Jack Jansenfa77e1a2001-05-22 21:56:42 +000065PyObject *TEObj_New(TEHandle itself)
Jack Jansen8a452d61996-04-10 14:41:08 +000066{
67 TEObject *it;
68 if (itself == NULL) {
69 PyErr_SetString(TE_Error,"Cannot create null TE");
70 return NULL;
71 }
72 it = PyObject_NEW(TEObject, &TE_Type);
73 if (it == NULL) return NULL;
74 it->ob_itself = itself;
75 return (PyObject *)it;
76}
Jack Jansenfa77e1a2001-05-22 21:56:42 +000077TEObj_Convert(PyObject *v, TEHandle *p_itself)
Jack Jansen8a452d61996-04-10 14:41:08 +000078{
79 if (!TEObj_Check(v))
80 {
81 PyErr_SetString(PyExc_TypeError, "TE required");
82 return 0;
83 }
84 *p_itself = ((TEObject *)v)->ob_itself;
85 return 1;
86}
87
Jack Jansenfa77e1a2001-05-22 21:56:42 +000088static void TEObj_dealloc(TEObject *self)
Jack Jansen8a452d61996-04-10 14:41:08 +000089{
90 TEDispose(self->ob_itself);
91 PyMem_DEL(self);
92}
93
Jack Jansenfa77e1a2001-05-22 21:56:42 +000094static PyObject *TEObj_TESetText(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +000095{
96 PyObject *_res = NULL;
97 char *text__in__;
98 long text__len__;
99 int text__in_len__;
100 if (!PyArg_ParseTuple(_args, "s#",
101 &text__in__, &text__in_len__))
102 return NULL;
103 text__len__ = text__in_len__;
104 TESetText(text__in__, text__len__,
105 _self->ob_itself);
106 Py_INCREF(Py_None);
107 _res = Py_None;
108 text__error__: ;
109 return _res;
110}
111
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000112static PyObject *TEObj_TEGetText(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000113{
114 PyObject *_res = NULL;
115 CharsHandle _rv;
116 if (!PyArg_ParseTuple(_args, ""))
117 return NULL;
118 _rv = TEGetText(_self->ob_itself);
119 _res = Py_BuildValue("O&",
120 ResObj_New, _rv);
121 return _res;
122}
123
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000124static PyObject *TEObj_TEIdle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000125{
126 PyObject *_res = NULL;
127 if (!PyArg_ParseTuple(_args, ""))
128 return NULL;
129 TEIdle(_self->ob_itself);
130 Py_INCREF(Py_None);
131 _res = Py_None;
132 return _res;
133}
134
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000135static PyObject *TEObj_TESetSelect(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000136{
137 PyObject *_res = NULL;
138 long selStart;
139 long selEnd;
140 if (!PyArg_ParseTuple(_args, "ll",
141 &selStart,
142 &selEnd))
143 return NULL;
144 TESetSelect(selStart,
145 selEnd,
146 _self->ob_itself);
147 Py_INCREF(Py_None);
148 _res = Py_None;
149 return _res;
150}
151
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000152static PyObject *TEObj_TEActivate(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000153{
154 PyObject *_res = NULL;
155 if (!PyArg_ParseTuple(_args, ""))
156 return NULL;
157 TEActivate(_self->ob_itself);
158 Py_INCREF(Py_None);
159 _res = Py_None;
160 return _res;
161}
162
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000163static PyObject *TEObj_TEDeactivate(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000164{
165 PyObject *_res = NULL;
166 if (!PyArg_ParseTuple(_args, ""))
167 return NULL;
168 TEDeactivate(_self->ob_itself);
169 Py_INCREF(Py_None);
170 _res = Py_None;
171 return _res;
172}
173
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000174static PyObject *TEObj_TEKey(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000175{
176 PyObject *_res = NULL;
Jack Jansen21f96871998-02-20 16:02:09 +0000177 CharParameter key;
Jack Jansen0c4d9471998-04-17 14:07:56 +0000178 if (!PyArg_ParseTuple(_args, "h",
Jack Jansen8a452d61996-04-10 14:41:08 +0000179 &key))
180 return NULL;
181 TEKey(key,
182 _self->ob_itself);
183 Py_INCREF(Py_None);
184 _res = Py_None;
185 return _res;
186}
187
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000188static PyObject *TEObj_TECut(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000189{
190 PyObject *_res = NULL;
191 if (!PyArg_ParseTuple(_args, ""))
192 return NULL;
193 TECut(_self->ob_itself);
194 Py_INCREF(Py_None);
195 _res = Py_None;
196 return _res;
197}
198
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000199static PyObject *TEObj_TECopy(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000200{
201 PyObject *_res = NULL;
202 if (!PyArg_ParseTuple(_args, ""))
203 return NULL;
204 TECopy(_self->ob_itself);
205 Py_INCREF(Py_None);
206 _res = Py_None;
207 return _res;
208}
209
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000210static PyObject *TEObj_TEPaste(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000211{
212 PyObject *_res = NULL;
213 if (!PyArg_ParseTuple(_args, ""))
214 return NULL;
215 TEPaste(_self->ob_itself);
216 Py_INCREF(Py_None);
217 _res = Py_None;
218 return _res;
219}
220
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000221static PyObject *TEObj_TEDelete(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000222{
223 PyObject *_res = NULL;
224 if (!PyArg_ParseTuple(_args, ""))
225 return NULL;
226 TEDelete(_self->ob_itself);
227 Py_INCREF(Py_None);
228 _res = Py_None;
229 return _res;
230}
231
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000232static PyObject *TEObj_TEInsert(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000233{
234 PyObject *_res = NULL;
235 char *text__in__;
236 long text__len__;
237 int text__in_len__;
238 if (!PyArg_ParseTuple(_args, "s#",
239 &text__in__, &text__in_len__))
240 return NULL;
241 text__len__ = text__in_len__;
242 TEInsert(text__in__, text__len__,
243 _self->ob_itself);
244 Py_INCREF(Py_None);
245 _res = Py_None;
246 text__error__: ;
247 return _res;
248}
249
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000250static PyObject *TEObj_TESetAlignment(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000251{
252 PyObject *_res = NULL;
253 short just;
254 if (!PyArg_ParseTuple(_args, "h",
255 &just))
256 return NULL;
257 TESetAlignment(just,
258 _self->ob_itself);
259 Py_INCREF(Py_None);
260 _res = Py_None;
261 return _res;
262}
263
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000264static PyObject *TEObj_TEUpdate(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000265{
266 PyObject *_res = NULL;
267 Rect rUpdate;
268 if (!PyArg_ParseTuple(_args, "O&",
269 PyMac_GetRect, &rUpdate))
270 return NULL;
271 TEUpdate(&rUpdate,
272 _self->ob_itself);
273 Py_INCREF(Py_None);
274 _res = Py_None;
275 return _res;
276}
277
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000278static PyObject *TEObj_TEScroll(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000279{
280 PyObject *_res = NULL;
281 short dh;
282 short dv;
283 if (!PyArg_ParseTuple(_args, "hh",
284 &dh,
285 &dv))
286 return NULL;
287 TEScroll(dh,
288 dv,
289 _self->ob_itself);
290 Py_INCREF(Py_None);
291 _res = Py_None;
292 return _res;
293}
294
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000295static PyObject *TEObj_TESelView(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000296{
297 PyObject *_res = NULL;
298 if (!PyArg_ParseTuple(_args, ""))
299 return NULL;
300 TESelView(_self->ob_itself);
301 Py_INCREF(Py_None);
302 _res = Py_None;
303 return _res;
304}
305
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000306static PyObject *TEObj_TEPinScroll(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000307{
308 PyObject *_res = NULL;
309 short dh;
310 short dv;
311 if (!PyArg_ParseTuple(_args, "hh",
312 &dh,
313 &dv))
314 return NULL;
315 TEPinScroll(dh,
316 dv,
317 _self->ob_itself);
318 Py_INCREF(Py_None);
319 _res = Py_None;
320 return _res;
321}
322
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000323static PyObject *TEObj_TEAutoView(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000324{
325 PyObject *_res = NULL;
326 Boolean fAuto;
327 if (!PyArg_ParseTuple(_args, "b",
328 &fAuto))
329 return NULL;
330 TEAutoView(fAuto,
331 _self->ob_itself);
332 Py_INCREF(Py_None);
333 _res = Py_None;
334 return _res;
335}
336
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000337static PyObject *TEObj_TECalText(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000338{
339 PyObject *_res = NULL;
340 if (!PyArg_ParseTuple(_args, ""))
341 return NULL;
342 TECalText(_self->ob_itself);
343 Py_INCREF(Py_None);
344 _res = Py_None;
345 return _res;
346}
347
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000348static PyObject *TEObj_TEGetOffset(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000349{
350 PyObject *_res = NULL;
351 short _rv;
352 Point pt;
353 if (!PyArg_ParseTuple(_args, "O&",
354 PyMac_GetPoint, &pt))
355 return NULL;
356 _rv = TEGetOffset(pt,
357 _self->ob_itself);
358 _res = Py_BuildValue("h",
359 _rv);
360 return _res;
361}
362
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000363static PyObject *TEObj_TEGetPoint(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000364{
365 PyObject *_res = NULL;
366 Point _rv;
367 short offset;
368 if (!PyArg_ParseTuple(_args, "h",
369 &offset))
370 return NULL;
371 _rv = TEGetPoint(offset,
372 _self->ob_itself);
373 _res = Py_BuildValue("O&",
374 PyMac_BuildPoint, _rv);
375 return _res;
376}
377
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000378static PyObject *TEObj_TEClick(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000379{
380 PyObject *_res = NULL;
381 Point pt;
382 Boolean fExtend;
383 if (!PyArg_ParseTuple(_args, "O&b",
384 PyMac_GetPoint, &pt,
385 &fExtend))
386 return NULL;
387 TEClick(pt,
388 fExtend,
389 _self->ob_itself);
390 Py_INCREF(Py_None);
391 _res = Py_None;
392 return _res;
393}
394
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000395static PyObject *TEObj_TESetStyleHandle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000396{
397 PyObject *_res = NULL;
398 TEStyleHandle theHandle;
399 if (!PyArg_ParseTuple(_args, "O&",
400 ResObj_Convert, &theHandle))
401 return NULL;
402 TESetStyleHandle(theHandle,
403 _self->ob_itself);
404 Py_INCREF(Py_None);
405 _res = Py_None;
406 return _res;
407}
408
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000409static PyObject *TEObj_TEGetStyleHandle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000410{
411 PyObject *_res = NULL;
412 TEStyleHandle _rv;
413 if (!PyArg_ParseTuple(_args, ""))
414 return NULL;
415 _rv = TEGetStyleHandle(_self->ob_itself);
416 _res = Py_BuildValue("O&",
417 ResObj_New, _rv);
418 return _res;
419}
420
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000421static PyObject *TEObj_TEGetStyle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000422{
423 PyObject *_res = NULL;
424 short offset;
425 TextStyle theStyle;
426 short lineHeight;
427 short fontAscent;
428 if (!PyArg_ParseTuple(_args, "h",
429 &offset))
430 return NULL;
431 TEGetStyle(offset,
432 &theStyle,
433 &lineHeight,
434 &fontAscent,
435 _self->ob_itself);
436 _res = Py_BuildValue("O&hh",
437 TextStyle_New, &theStyle,
438 lineHeight,
439 fontAscent);
440 return _res;
441}
442
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000443static PyObject *TEObj_TEStylePaste(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000444{
445 PyObject *_res = NULL;
446 if (!PyArg_ParseTuple(_args, ""))
447 return NULL;
448 TEStylePaste(_self->ob_itself);
449 Py_INCREF(Py_None);
450 _res = Py_None;
451 return _res;
452}
453
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000454static PyObject *TEObj_TESetStyle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000455{
456 PyObject *_res = NULL;
457 short mode;
458 TextStyle newStyle;
459 Boolean fRedraw;
460 if (!PyArg_ParseTuple(_args, "hO&b",
461 &mode,
462 TextStyle_Convert, &newStyle,
463 &fRedraw))
464 return NULL;
465 TESetStyle(mode,
466 &newStyle,
467 fRedraw,
468 _self->ob_itself);
469 Py_INCREF(Py_None);
470 _res = Py_None;
471 return _res;
472}
473
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000474static PyObject *TEObj_TEReplaceStyle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000475{
476 PyObject *_res = NULL;
477 short mode;
478 TextStyle oldStyle;
479 TextStyle newStyle;
480 Boolean fRedraw;
481 if (!PyArg_ParseTuple(_args, "hO&O&b",
482 &mode,
483 TextStyle_Convert, &oldStyle,
484 TextStyle_Convert, &newStyle,
485 &fRedraw))
486 return NULL;
487 TEReplaceStyle(mode,
488 &oldStyle,
489 &newStyle,
490 fRedraw,
491 _self->ob_itself);
492 Py_INCREF(Py_None);
493 _res = Py_None;
494 return _res;
495}
496
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000497static PyObject *TEObj_TEGetStyleScrapHandle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000498{
499 PyObject *_res = NULL;
500 StScrpHandle _rv;
501 if (!PyArg_ParseTuple(_args, ""))
502 return NULL;
503 _rv = TEGetStyleScrapHandle(_self->ob_itself);
504 _res = Py_BuildValue("O&",
505 ResObj_New, _rv);
506 return _res;
507}
508
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000509static PyObject *TEObj_TEStyleInsert(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000510{
511 PyObject *_res = NULL;
512 char *text__in__;
513 long text__len__;
514 int text__in_len__;
515 StScrpHandle hST;
516 if (!PyArg_ParseTuple(_args, "s#O&",
517 &text__in__, &text__in_len__,
518 ResObj_Convert, &hST))
519 return NULL;
520 text__len__ = text__in_len__;
521 TEStyleInsert(text__in__, text__len__,
522 hST,
523 _self->ob_itself);
524 Py_INCREF(Py_None);
525 _res = Py_None;
526 text__error__: ;
527 return _res;
528}
529
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000530static PyObject *TEObj_TEGetHeight(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000531{
532 PyObject *_res = NULL;
533 long _rv;
534 long endLine;
535 long startLine;
536 if (!PyArg_ParseTuple(_args, "ll",
537 &endLine,
538 &startLine))
539 return NULL;
540 _rv = TEGetHeight(endLine,
541 startLine,
542 _self->ob_itself);
543 _res = Py_BuildValue("l",
544 _rv);
545 return _res;
546}
547
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000548static PyObject *TEObj_TEContinuousStyle(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000549{
550 PyObject *_res = NULL;
551 Boolean _rv;
552 short mode;
553 TextStyle aStyle;
554 if (!PyArg_ParseTuple(_args, "hO&",
555 &mode,
556 TextStyle_Convert, &aStyle))
557 return NULL;
558 _rv = TEContinuousStyle(&mode,
559 &aStyle,
560 _self->ob_itself);
561 _res = Py_BuildValue("bhO&",
562 _rv,
563 mode,
564 TextStyle_New, &aStyle);
565 return _res;
566}
567
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000568static PyObject *TEObj_TEUseStyleScrap(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000569{
570 PyObject *_res = NULL;
571 long rangeStart;
572 long rangeEnd;
573 StScrpHandle newStyles;
574 Boolean fRedraw;
575 if (!PyArg_ParseTuple(_args, "llO&b",
576 &rangeStart,
577 &rangeEnd,
578 ResObj_Convert, &newStyles,
579 &fRedraw))
580 return NULL;
581 TEUseStyleScrap(rangeStart,
582 rangeEnd,
583 newStyles,
584 fRedraw,
585 _self->ob_itself);
586 Py_INCREF(Py_None);
587 _res = Py_None;
588 return _res;
589}
590
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000591static PyObject *TEObj_TENumStyles(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000592{
593 PyObject *_res = NULL;
594 long _rv;
595 long rangeStart;
596 long rangeEnd;
597 if (!PyArg_ParseTuple(_args, "ll",
598 &rangeStart,
599 &rangeEnd))
600 return NULL;
601 _rv = TENumStyles(rangeStart,
602 rangeEnd,
603 _self->ob_itself);
604 _res = Py_BuildValue("l",
605 _rv);
606 return _res;
607}
608
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000609static PyObject *TEObj_TEFeatureFlag(TEObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000610{
611 PyObject *_res = NULL;
612 short _rv;
613 short feature;
614 short action;
615 if (!PyArg_ParseTuple(_args, "hh",
616 &feature,
617 &action))
618 return NULL;
619 _rv = TEFeatureFlag(feature,
620 action,
621 _self->ob_itself);
622 _res = Py_BuildValue("h",
623 _rv);
624 return _res;
625}
626
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000627static PyObject *TEObj_TEGetHiliteRgn(TEObject *_self, PyObject *_args)
Jack Jansena05ac601999-12-12 21:41:51 +0000628{
629 PyObject *_res = NULL;
630 OSErr _err;
631 RgnHandle region;
632 if (!PyArg_ParseTuple(_args, "O&",
633 ResObj_Convert, &region))
634 return NULL;
635 _err = TEGetHiliteRgn(region,
636 _self->ob_itself);
637 if (_err != noErr) return PyMac_Error(_err);
638 Py_INCREF(Py_None);
639 _res = Py_None;
640 return _res;
641}
642
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000643static PyObject *TEObj_as_Resource(TEObject *_self, PyObject *_args)
Jack Jansena1a0fef1999-12-23 14:32:06 +0000644{
645 PyObject *_res = NULL;
646 Handle _rv;
647 if (!PyArg_ParseTuple(_args, ""))
648 return NULL;
Jack Jansendeb63732000-03-22 15:35:24 +0000649 _rv = as_Resource(_self->ob_itself);
Jack Jansena1a0fef1999-12-23 14:32:06 +0000650 _res = Py_BuildValue("O&",
651 ResObj_New, _rv);
652 return _res;
653}
654
Jack Jansen8a452d61996-04-10 14:41:08 +0000655static PyMethodDef TEObj_methods[] = {
656 {"TESetText", (PyCFunction)TEObj_TESetText, 1,
657 "(Buffer text) -> None"},
658 {"TEGetText", (PyCFunction)TEObj_TEGetText, 1,
659 "() -> (CharsHandle _rv)"},
660 {"TEIdle", (PyCFunction)TEObj_TEIdle, 1,
661 "() -> None"},
662 {"TESetSelect", (PyCFunction)TEObj_TESetSelect, 1,
663 "(long selStart, long selEnd) -> None"},
664 {"TEActivate", (PyCFunction)TEObj_TEActivate, 1,
665 "() -> None"},
666 {"TEDeactivate", (PyCFunction)TEObj_TEDeactivate, 1,
667 "() -> None"},
668 {"TEKey", (PyCFunction)TEObj_TEKey, 1,
Jack Jansen21f96871998-02-20 16:02:09 +0000669 "(CharParameter key) -> None"},
Jack Jansen8a452d61996-04-10 14:41:08 +0000670 {"TECut", (PyCFunction)TEObj_TECut, 1,
671 "() -> None"},
672 {"TECopy", (PyCFunction)TEObj_TECopy, 1,
673 "() -> None"},
674 {"TEPaste", (PyCFunction)TEObj_TEPaste, 1,
675 "() -> None"},
676 {"TEDelete", (PyCFunction)TEObj_TEDelete, 1,
677 "() -> None"},
678 {"TEInsert", (PyCFunction)TEObj_TEInsert, 1,
679 "(Buffer text) -> None"},
680 {"TESetAlignment", (PyCFunction)TEObj_TESetAlignment, 1,
681 "(short just) -> None"},
682 {"TEUpdate", (PyCFunction)TEObj_TEUpdate, 1,
683 "(Rect rUpdate) -> None"},
684 {"TEScroll", (PyCFunction)TEObj_TEScroll, 1,
685 "(short dh, short dv) -> None"},
686 {"TESelView", (PyCFunction)TEObj_TESelView, 1,
687 "() -> None"},
688 {"TEPinScroll", (PyCFunction)TEObj_TEPinScroll, 1,
689 "(short dh, short dv) -> None"},
690 {"TEAutoView", (PyCFunction)TEObj_TEAutoView, 1,
691 "(Boolean fAuto) -> None"},
692 {"TECalText", (PyCFunction)TEObj_TECalText, 1,
693 "() -> None"},
694 {"TEGetOffset", (PyCFunction)TEObj_TEGetOffset, 1,
695 "(Point pt) -> (short _rv)"},
696 {"TEGetPoint", (PyCFunction)TEObj_TEGetPoint, 1,
697 "(short offset) -> (Point _rv)"},
698 {"TEClick", (PyCFunction)TEObj_TEClick, 1,
699 "(Point pt, Boolean fExtend) -> None"},
700 {"TESetStyleHandle", (PyCFunction)TEObj_TESetStyleHandle, 1,
701 "(TEStyleHandle theHandle) -> None"},
702 {"TEGetStyleHandle", (PyCFunction)TEObj_TEGetStyleHandle, 1,
703 "() -> (TEStyleHandle _rv)"},
704 {"TEGetStyle", (PyCFunction)TEObj_TEGetStyle, 1,
705 "(short offset) -> (TextStyle theStyle, short lineHeight, short fontAscent)"},
706 {"TEStylePaste", (PyCFunction)TEObj_TEStylePaste, 1,
707 "() -> None"},
708 {"TESetStyle", (PyCFunction)TEObj_TESetStyle, 1,
709 "(short mode, TextStyle newStyle, Boolean fRedraw) -> None"},
710 {"TEReplaceStyle", (PyCFunction)TEObj_TEReplaceStyle, 1,
711 "(short mode, TextStyle oldStyle, TextStyle newStyle, Boolean fRedraw) -> None"},
712 {"TEGetStyleScrapHandle", (PyCFunction)TEObj_TEGetStyleScrapHandle, 1,
713 "() -> (StScrpHandle _rv)"},
714 {"TEStyleInsert", (PyCFunction)TEObj_TEStyleInsert, 1,
715 "(Buffer text, StScrpHandle hST) -> None"},
716 {"TEGetHeight", (PyCFunction)TEObj_TEGetHeight, 1,
717 "(long endLine, long startLine) -> (long _rv)"},
718 {"TEContinuousStyle", (PyCFunction)TEObj_TEContinuousStyle, 1,
719 "(short mode, TextStyle aStyle) -> (Boolean _rv, short mode, TextStyle aStyle)"},
720 {"TEUseStyleScrap", (PyCFunction)TEObj_TEUseStyleScrap, 1,
721 "(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw) -> None"},
722 {"TENumStyles", (PyCFunction)TEObj_TENumStyles, 1,
723 "(long rangeStart, long rangeEnd) -> (long _rv)"},
724 {"TEFeatureFlag", (PyCFunction)TEObj_TEFeatureFlag, 1,
725 "(short feature, short action) -> (short _rv)"},
Jack Jansena05ac601999-12-12 21:41:51 +0000726 {"TEGetHiliteRgn", (PyCFunction)TEObj_TEGetHiliteRgn, 1,
727 "(RgnHandle region) -> None"},
Jack Jansendeb63732000-03-22 15:35:24 +0000728 {"as_Resource", (PyCFunction)TEObj_as_Resource, 1,
Jack Jansena1a0fef1999-12-23 14:32:06 +0000729 "() -> (Handle _rv)"},
Jack Jansen8a452d61996-04-10 14:41:08 +0000730 {NULL, NULL, 0}
731};
732
733PyMethodChain TEObj_chain = { TEObj_methods, NULL };
734
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000735static PyObject *TEObj_getattr(TEObject *self, char *name)
Jack Jansen8a452d61996-04-10 14:41:08 +0000736{
Jack Jansen46d9e791996-04-12 16:29:23 +0000737
738 if( strcmp(name, "destRect") == 0 )
739 return Py_BuildValue("O&", PyMac_BuildRect,
Jack Jansen19171a21996-04-16 14:32:01 +0000740 &(*self->ob_itself)->destRect);
Jack Jansen46d9e791996-04-12 16:29:23 +0000741 if( strcmp(name, "viewRect") == 0 )
742 return Py_BuildValue("O&", PyMac_BuildRect,
Jack Jansen19171a21996-04-16 14:32:01 +0000743 &(*self->ob_itself)->viewRect);
Jack Jansen46d9e791996-04-12 16:29:23 +0000744 if( strcmp(name, "selRect") == 0 )
745 return Py_BuildValue("O&", PyMac_BuildRect,
Jack Jansen19171a21996-04-16 14:32:01 +0000746 &(*self->ob_itself)->selRect);
Jack Jansen46d9e791996-04-12 16:29:23 +0000747 if( strcmp(name, "lineHeight") == 0 )
748 return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
749 if( strcmp(name, "fontAscent") == 0 )
750 return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
751 if( strcmp(name, "selPoint") == 0 )
752 return Py_BuildValue("O&", PyMac_BuildPoint,
Jack Jansendeb63732000-03-22 15:35:24 +0000753 (*self->ob_itself)->selPoint);
Jack Jansen46d9e791996-04-12 16:29:23 +0000754 if( strcmp(name, "selStart") == 0 )
755 return Py_BuildValue("h", (*self->ob_itself)->selStart);
756 if( strcmp(name, "selEnd") == 0 )
757 return Py_BuildValue("h", (*self->ob_itself)->selEnd);
758 if( strcmp(name, "active") == 0 )
759 return Py_BuildValue("h", (*self->ob_itself)->active);
Jack Jansen19171a21996-04-16 14:32:01 +0000760 if( strcmp(name, "just") == 0 )
761 return Py_BuildValue("h", (*self->ob_itself)->just);
Jack Jansen46d9e791996-04-12 16:29:23 +0000762 if( strcmp(name, "teLength") == 0 )
763 return Py_BuildValue("h", (*self->ob_itself)->teLength);
Jack Jansen19171a21996-04-16 14:32:01 +0000764 if( strcmp(name, "txFont") == 0 )
765 return Py_BuildValue("h", (*self->ob_itself)->txFont);
766 if( strcmp(name, "txFace") == 0 )
767 return Py_BuildValue("h", (*self->ob_itself)->txFace);
768 if( strcmp(name, "txMode") == 0 )
769 return Py_BuildValue("h", (*self->ob_itself)->txMode);
770 if( strcmp(name, "txSize") == 0 )
771 return Py_BuildValue("h", (*self->ob_itself)->txSize);
772 if( strcmp(name, "nLines") == 0 )
773 return Py_BuildValue("h", (*self->ob_itself)->nLines);
Jack Jansen46d9e791996-04-12 16:29:23 +0000774
Jack Jansen8a452d61996-04-10 14:41:08 +0000775 return Py_FindMethodInChain(&TEObj_chain, (PyObject *)self, name);
776}
777
778#define TEObj_setattr NULL
779
Jack Jansena05ac601999-12-12 21:41:51 +0000780#define TEObj_compare NULL
781
782#define TEObj_repr NULL
783
784#define TEObj_hash NULL
785
Jack Jansen8a452d61996-04-10 14:41:08 +0000786PyTypeObject TE_Type = {
787 PyObject_HEAD_INIT(&PyType_Type)
788 0, /*ob_size*/
789 "TE", /*tp_name*/
790 sizeof(TEObject), /*tp_basicsize*/
791 0, /*tp_itemsize*/
792 /* methods */
793 (destructor) TEObj_dealloc, /*tp_dealloc*/
794 0, /*tp_print*/
795 (getattrfunc) TEObj_getattr, /*tp_getattr*/
796 (setattrfunc) TEObj_setattr, /*tp_setattr*/
Jack Jansena05ac601999-12-12 21:41:51 +0000797 (cmpfunc) TEObj_compare, /*tp_compare*/
798 (reprfunc) TEObj_repr, /*tp_repr*/
799 (PyNumberMethods *)0, /* tp_as_number */
800 (PySequenceMethods *)0, /* tp_as_sequence */
801 (PyMappingMethods *)0, /* tp_as_mapping */
802 (hashfunc) TEObj_hash, /*tp_hash*/
Jack Jansen8a452d61996-04-10 14:41:08 +0000803};
804
805/* ----------------------- End object type TE ----------------------- */
806
807
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000808static PyObject *TE_TEScrapHandle(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000809{
810 PyObject *_res = NULL;
811 Handle _rv;
812 if (!PyArg_ParseTuple(_args, ""))
813 return NULL;
814 _rv = TEScrapHandle();
815 _res = Py_BuildValue("O&",
816 ResObj_New, _rv);
817 return _res;
818}
819
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000820static PyObject *TE_TEGetScrapLength(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000821{
822 PyObject *_res = NULL;
823 long _rv;
824 if (!PyArg_ParseTuple(_args, ""))
825 return NULL;
826 _rv = TEGetScrapLength();
827 _res = Py_BuildValue("l",
828 _rv);
829 return _res;
830}
831
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000832static PyObject *TE_TENew(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000833{
834 PyObject *_res = NULL;
835 TEHandle _rv;
836 Rect destRect;
837 Rect viewRect;
838 if (!PyArg_ParseTuple(_args, "O&O&",
839 PyMac_GetRect, &destRect,
840 PyMac_GetRect, &viewRect))
841 return NULL;
842 _rv = TENew(&destRect,
843 &viewRect);
844 _res = Py_BuildValue("O&",
845 TEObj_New, _rv);
846 return _res;
847}
848
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000849static PyObject *TE_TETextBox(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000850{
851 PyObject *_res = NULL;
852 char *text__in__;
853 long text__len__;
854 int text__in_len__;
855 Rect box;
856 short just;
857 if (!PyArg_ParseTuple(_args, "s#O&h",
858 &text__in__, &text__in_len__,
859 PyMac_GetRect, &box,
860 &just))
861 return NULL;
862 text__len__ = text__in_len__;
863 TETextBox(text__in__, text__len__,
864 &box,
865 just);
866 Py_INCREF(Py_None);
867 _res = Py_None;
868 text__error__: ;
869 return _res;
870}
871
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000872static PyObject *TE_TEStyleNew(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000873{
874 PyObject *_res = NULL;
875 TEHandle _rv;
876 Rect destRect;
877 Rect viewRect;
878 if (!PyArg_ParseTuple(_args, "O&O&",
879 PyMac_GetRect, &destRect,
880 PyMac_GetRect, &viewRect))
881 return NULL;
882 _rv = TEStyleNew(&destRect,
883 &viewRect);
884 _res = Py_BuildValue("O&",
885 TEObj_New, _rv);
886 return _res;
887}
888
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000889static PyObject *TE_TESetScrapLength(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000890{
891 PyObject *_res = NULL;
892 long length;
893 if (!PyArg_ParseTuple(_args, "l",
894 &length))
895 return NULL;
896 TESetScrapLength(length);
897 Py_INCREF(Py_None);
898 _res = Py_None;
899 return _res;
900}
901
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000902static PyObject *TE_TEFromScrap(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000903{
904 PyObject *_res = NULL;
905 OSErr _err;
906 if (!PyArg_ParseTuple(_args, ""))
907 return NULL;
908 _err = TEFromScrap();
909 if (_err != noErr) return PyMac_Error(_err);
910 Py_INCREF(Py_None);
911 _res = Py_None;
912 return _res;
913}
914
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000915static PyObject *TE_TEToScrap(PyObject *_self, PyObject *_args)
Jack Jansen8a452d61996-04-10 14:41:08 +0000916{
917 PyObject *_res = NULL;
918 OSErr _err;
919 if (!PyArg_ParseTuple(_args, ""))
920 return NULL;
921 _err = TEToScrap();
922 if (_err != noErr) return PyMac_Error(_err);
923 Py_INCREF(Py_None);
924 _res = Py_None;
925 return _res;
926}
927
Jack Jansen723ad8a2000-12-12 22:10:21 +0000928#if TARGET_API_MAC_CARBON
929
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000930static PyObject *TE_TEGetScrapHandle(PyObject *_self, PyObject *_args)
Jack Jansen723ad8a2000-12-12 22:10:21 +0000931{
932 PyObject *_res = NULL;
933 Handle _rv;
934 if (!PyArg_ParseTuple(_args, ""))
935 return NULL;
936 _rv = TEGetScrapHandle();
937 _res = Py_BuildValue("O&",
938 ResObj_New, _rv);
939 return _res;
940}
941#endif
942
943#if TARGET_API_MAC_CARBON
944
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000945static PyObject *TE_TESetScrapHandle(PyObject *_self, PyObject *_args)
Jack Jansen723ad8a2000-12-12 22:10:21 +0000946{
947 PyObject *_res = NULL;
948 Handle value;
949 if (!PyArg_ParseTuple(_args, "O&",
950 ResObj_Convert, &value))
951 return NULL;
952 TESetScrapHandle(value);
953 Py_INCREF(Py_None);
954 _res = Py_None;
955 return _res;
956}
957#endif
958
Jack Jansenfa77e1a2001-05-22 21:56:42 +0000959static PyObject *TE_as_TE(PyObject *_self, PyObject *_args)
Jack Jansena1a0fef1999-12-23 14:32:06 +0000960{
961 PyObject *_res = NULL;
962 TEHandle _rv;
963 Handle h;
964 if (!PyArg_ParseTuple(_args, "O&",
965 ResObj_Convert, &h))
966 return NULL;
967 _rv = as_TE(h);
968 _res = Py_BuildValue("O&",
969 TEObj_New, _rv);
970 return _res;
971}
972
Jack Jansen8a452d61996-04-10 14:41:08 +0000973static PyMethodDef TE_methods[] = {
974 {"TEScrapHandle", (PyCFunction)TE_TEScrapHandle, 1,
975 "() -> (Handle _rv)"},
976 {"TEGetScrapLength", (PyCFunction)TE_TEGetScrapLength, 1,
977 "() -> (long _rv)"},
978 {"TENew", (PyCFunction)TE_TENew, 1,
979 "(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
980 {"TETextBox", (PyCFunction)TE_TETextBox, 1,
981 "(Buffer text, Rect box, short just) -> None"},
982 {"TEStyleNew", (PyCFunction)TE_TEStyleNew, 1,
983 "(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
984 {"TESetScrapLength", (PyCFunction)TE_TESetScrapLength, 1,
985 "(long length) -> None"},
986 {"TEFromScrap", (PyCFunction)TE_TEFromScrap, 1,
987 "() -> None"},
988 {"TEToScrap", (PyCFunction)TE_TEToScrap, 1,
989 "() -> None"},
Jack Jansen723ad8a2000-12-12 22:10:21 +0000990
991#if TARGET_API_MAC_CARBON
992 {"TEGetScrapHandle", (PyCFunction)TE_TEGetScrapHandle, 1,
993 "() -> (Handle _rv)"},
994#endif
995
996#if TARGET_API_MAC_CARBON
997 {"TESetScrapHandle", (PyCFunction)TE_TESetScrapHandle, 1,
998 "(Handle value) -> None"},
999#endif
Jack Jansena1a0fef1999-12-23 14:32:06 +00001000 {"as_TE", (PyCFunction)TE_as_TE, 1,
1001 "(Handle h) -> (TEHandle _rv)"},
Jack Jansen8a452d61996-04-10 14:41:08 +00001002 {NULL, NULL, 0}
1003};
1004
1005
1006
1007
Jack Jansenfa77e1a2001-05-22 21:56:42 +00001008void initTE(void)
Jack Jansen8a452d61996-04-10 14:41:08 +00001009{
1010 PyObject *m;
1011 PyObject *d;
1012
1013
1014
Jack Jansenfa77e1a2001-05-22 21:56:42 +00001015 PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New);
1016 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert);
Jack Jansen0e04eec2001-05-17 21:58:34 +00001017
Jack Jansen8a452d61996-04-10 14:41:08 +00001018
1019 m = Py_InitModule("TE", TE_methods);
1020 d = PyModule_GetDict(m);
1021 TE_Error = PyMac_GetOSErrException();
1022 if (TE_Error == NULL ||
1023 PyDict_SetItemString(d, "Error", TE_Error) != 0)
Jack Jansen723ad8a2000-12-12 22:10:21 +00001024 return;
Jack Jansena755e681997-09-20 17:40:22 +00001025 TE_Type.ob_type = &PyType_Type;
1026 Py_INCREF(&TE_Type);
1027 if (PyDict_SetItemString(d, "TEType", (PyObject *)&TE_Type) != 0)
1028 Py_FatalError("can't initialize TEType");
Jack Jansen8a452d61996-04-10 14:41:08 +00001029}
1030
1031/* ========================= End module TE ========================== */
1032