1070 lines
26 KiB
C
1070 lines
26 KiB
C
|
|
/* =========================== Module _TE =========================== */
|
|
|
|
#include "Python.h"
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
#include "pywintoolbox.h"
|
|
#else
|
|
#include "macglue.h"
|
|
#include "pymactoolbox.h"
|
|
#endif
|
|
|
|
/* Macro to test whether a weak-loaded CFM function exists */
|
|
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
|
|
PyErr_SetString(PyExc_NotImplementedError, \
|
|
"Not available in this shared library/OS version"); \
|
|
return NULL; \
|
|
}} while(0)
|
|
|
|
|
|
#ifdef WITHOUT_FRAMEWORKS
|
|
#include <TextEdit.h>
|
|
#else
|
|
#include <Carbon/Carbon.h>
|
|
#endif
|
|
|
|
#ifdef USE_TOOLBOX_OBJECT_GLUE
|
|
extern PyObject *_TEObj_New(TEHandle);
|
|
extern int _TEObj_Convert(PyObject *, TEHandle *);
|
|
|
|
#define TEObj_New _TEObj_New
|
|
#define TEObj_Convert _TEObj_Convert
|
|
#endif
|
|
|
|
#define as_TE(h) ((TEHandle)h)
|
|
#define as_Resource(teh) ((Handle)teh)
|
|
|
|
/*
|
|
** Parse/generate TextStyle records
|
|
*/
|
|
static PyObject *
|
|
TextStyle_New(TextStylePtr itself)
|
|
{
|
|
|
|
return Py_BuildValue("lllO&", (long)itself->tsFont, (long)itself->tsFace, (long)itself->tsSize, QdRGB_New,
|
|
&itself->tsColor);
|
|
}
|
|
|
|
static int
|
|
TextStyle_Convert(PyObject *v, TextStylePtr p_itself)
|
|
{
|
|
long font, face, size;
|
|
|
|
if( !PyArg_ParseTuple(v, "lllO&", &font, &face, &size, QdRGB_Convert, &p_itself->tsColor) )
|
|
return 0;
|
|
p_itself->tsFont = (short)font;
|
|
p_itself->tsFace = (Style)face;
|
|
p_itself->tsSize = (short)size;
|
|
return 1;
|
|
}
|
|
|
|
static PyObject *TE_Error;
|
|
|
|
/* ------------------------- Object type TE ------------------------- */
|
|
|
|
PyTypeObject TE_Type;
|
|
|
|
#define TEObj_Check(x) ((x)->ob_type == &TE_Type)
|
|
|
|
typedef struct TEObject {
|
|
PyObject_HEAD
|
|
TEHandle ob_itself;
|
|
} TEObject;
|
|
|
|
PyObject *TEObj_New(TEHandle itself)
|
|
{
|
|
TEObject *it;
|
|
if (itself == NULL) {
|
|
PyErr_SetString(TE_Error,"Cannot create null TE");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(TEObject, &TE_Type);
|
|
if (it == NULL) return NULL;
|
|
it->ob_itself = itself;
|
|
return (PyObject *)it;
|
|
}
|
|
int TEObj_Convert(PyObject *v, TEHandle *p_itself)
|
|
{
|
|
if (!TEObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "TE required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((TEObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void TEObj_dealloc(TEObject *self)
|
|
{
|
|
TEDispose(self->ob_itself);
|
|
PyMem_DEL(self);
|
|
}
|
|
|
|
static PyObject *TEObj_TESetText(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
char *text__in__;
|
|
long text__len__;
|
|
int text__in_len__;
|
|
if (!PyArg_ParseTuple(_args, "s#",
|
|
&text__in__, &text__in_len__))
|
|
return NULL;
|
|
text__len__ = text__in_len__;
|
|
TESetText(text__in__, text__len__,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetText(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CharsHandle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEGetText(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEIdle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEIdle(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TESetSelect(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long selStart;
|
|
long selEnd;
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&selStart,
|
|
&selEnd))
|
|
return NULL;
|
|
TESetSelect(selStart,
|
|
selEnd,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEActivate(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEActivate(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEDeactivate(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEDeactivate(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEKey(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CharParameter key;
|
|
if (!PyArg_ParseTuple(_args, "h",
|
|
&key))
|
|
return NULL;
|
|
TEKey(key,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TECut(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TECut(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TECopy(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TECopy(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEPaste(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEPaste(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEDelete(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEDelete(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEInsert(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
char *text__in__;
|
|
long text__len__;
|
|
int text__in_len__;
|
|
if (!PyArg_ParseTuple(_args, "s#",
|
|
&text__in__, &text__in_len__))
|
|
return NULL;
|
|
text__len__ = text__in_len__;
|
|
TEInsert(text__in__, text__len__,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TESetAlignment(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short just;
|
|
if (!PyArg_ParseTuple(_args, "h",
|
|
&just))
|
|
return NULL;
|
|
TESetAlignment(just,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEUpdate(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Rect rUpdate;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
PyMac_GetRect, &rUpdate))
|
|
return NULL;
|
|
TEUpdate(&rUpdate,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEScroll(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short dh;
|
|
short dv;
|
|
if (!PyArg_ParseTuple(_args, "hh",
|
|
&dh,
|
|
&dv))
|
|
return NULL;
|
|
TEScroll(dh,
|
|
dv,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TESelView(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TESelView(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEPinScroll(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short dh;
|
|
short dv;
|
|
if (!PyArg_ParseTuple(_args, "hh",
|
|
&dh,
|
|
&dv))
|
|
return NULL;
|
|
TEPinScroll(dh,
|
|
dv,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEAutoView(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean fAuto;
|
|
if (!PyArg_ParseTuple(_args, "b",
|
|
&fAuto))
|
|
return NULL;
|
|
TEAutoView(fAuto,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TECalText(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TECalText(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetOffset(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short _rv;
|
|
Point pt;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
PyMac_GetPoint, &pt))
|
|
return NULL;
|
|
_rv = TEGetOffset(pt,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("h",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetPoint(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Point _rv;
|
|
short offset;
|
|
if (!PyArg_ParseTuple(_args, "h",
|
|
&offset))
|
|
return NULL;
|
|
_rv = TEGetPoint(offset,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
PyMac_BuildPoint, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEClick(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Point pt;
|
|
Boolean fExtend;
|
|
if (!PyArg_ParseTuple(_args, "O&b",
|
|
PyMac_GetPoint, &pt,
|
|
&fExtend))
|
|
return NULL;
|
|
TEClick(pt,
|
|
fExtend,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TESetStyleHandle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
TEStyleHandle theHandle;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
ResObj_Convert, &theHandle))
|
|
return NULL;
|
|
TESetStyleHandle(theHandle,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetStyleHandle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
TEStyleHandle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEGetStyleHandle(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetStyle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short offset;
|
|
TextStyle theStyle;
|
|
short lineHeight;
|
|
short fontAscent;
|
|
if (!PyArg_ParseTuple(_args, "h",
|
|
&offset))
|
|
return NULL;
|
|
TEGetStyle(offset,
|
|
&theStyle,
|
|
&lineHeight,
|
|
&fontAscent,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&hh",
|
|
TextStyle_New, &theStyle,
|
|
lineHeight,
|
|
fontAscent);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEStylePaste(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
TEStylePaste(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TESetStyle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short mode;
|
|
TextStyle newStyle;
|
|
Boolean fRedraw;
|
|
if (!PyArg_ParseTuple(_args, "hO&b",
|
|
&mode,
|
|
TextStyle_Convert, &newStyle,
|
|
&fRedraw))
|
|
return NULL;
|
|
TESetStyle(mode,
|
|
&newStyle,
|
|
fRedraw,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEReplaceStyle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short mode;
|
|
TextStyle oldStyle;
|
|
TextStyle newStyle;
|
|
Boolean fRedraw;
|
|
if (!PyArg_ParseTuple(_args, "hO&O&b",
|
|
&mode,
|
|
TextStyle_Convert, &oldStyle,
|
|
TextStyle_Convert, &newStyle,
|
|
&fRedraw))
|
|
return NULL;
|
|
TEReplaceStyle(mode,
|
|
&oldStyle,
|
|
&newStyle,
|
|
fRedraw,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetStyleScrapHandle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
StScrpHandle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEGetStyleScrapHandle(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEStyleInsert(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
char *text__in__;
|
|
long text__len__;
|
|
int text__in_len__;
|
|
StScrpHandle hST;
|
|
if (!PyArg_ParseTuple(_args, "s#O&",
|
|
&text__in__, &text__in_len__,
|
|
ResObj_Convert, &hST))
|
|
return NULL;
|
|
text__len__ = text__in_len__;
|
|
TEStyleInsert(text__in__, text__len__,
|
|
hST,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetHeight(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long _rv;
|
|
long endLine;
|
|
long startLine;
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&endLine,
|
|
&startLine))
|
|
return NULL;
|
|
_rv = TEGetHeight(endLine,
|
|
startLine,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEContinuousStyle(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
short mode;
|
|
TextStyle aStyle;
|
|
if (!PyArg_ParseTuple(_args, "hO&",
|
|
&mode,
|
|
TextStyle_Convert, &aStyle))
|
|
return NULL;
|
|
_rv = TEContinuousStyle(&mode,
|
|
&aStyle,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("bhO&",
|
|
_rv,
|
|
mode,
|
|
TextStyle_New, &aStyle);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEUseStyleScrap(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long rangeStart;
|
|
long rangeEnd;
|
|
StScrpHandle newStyles;
|
|
Boolean fRedraw;
|
|
if (!PyArg_ParseTuple(_args, "llO&b",
|
|
&rangeStart,
|
|
&rangeEnd,
|
|
ResObj_Convert, &newStyles,
|
|
&fRedraw))
|
|
return NULL;
|
|
TEUseStyleScrap(rangeStart,
|
|
rangeEnd,
|
|
newStyles,
|
|
fRedraw,
|
|
_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TENumStyles(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long _rv;
|
|
long rangeStart;
|
|
long rangeEnd;
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&rangeStart,
|
|
&rangeEnd))
|
|
return NULL;
|
|
_rv = TENumStyles(rangeStart,
|
|
rangeEnd,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEFeatureFlag(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
short _rv;
|
|
short feature;
|
|
short action;
|
|
if (!PyArg_ParseTuple(_args, "hh",
|
|
&feature,
|
|
&action))
|
|
return NULL;
|
|
_rv = TEFeatureFlag(feature,
|
|
action,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("h",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_TEGetHiliteRgn(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
OSErr _err;
|
|
RgnHandle region;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
ResObj_Convert, ®ion))
|
|
return NULL;
|
|
_err = TEGetHiliteRgn(region,
|
|
_self->ob_itself);
|
|
if (_err != noErr) return PyMac_Error(_err);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TEObj_as_Resource(TEObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Handle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = as_Resource(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef TEObj_methods[] = {
|
|
{"TESetText", (PyCFunction)TEObj_TESetText, 1,
|
|
"(Buffer text) -> None"},
|
|
{"TEGetText", (PyCFunction)TEObj_TEGetText, 1,
|
|
"() -> (CharsHandle _rv)"},
|
|
{"TEIdle", (PyCFunction)TEObj_TEIdle, 1,
|
|
"() -> None"},
|
|
{"TESetSelect", (PyCFunction)TEObj_TESetSelect, 1,
|
|
"(long selStart, long selEnd) -> None"},
|
|
{"TEActivate", (PyCFunction)TEObj_TEActivate, 1,
|
|
"() -> None"},
|
|
{"TEDeactivate", (PyCFunction)TEObj_TEDeactivate, 1,
|
|
"() -> None"},
|
|
{"TEKey", (PyCFunction)TEObj_TEKey, 1,
|
|
"(CharParameter key) -> None"},
|
|
{"TECut", (PyCFunction)TEObj_TECut, 1,
|
|
"() -> None"},
|
|
{"TECopy", (PyCFunction)TEObj_TECopy, 1,
|
|
"() -> None"},
|
|
{"TEPaste", (PyCFunction)TEObj_TEPaste, 1,
|
|
"() -> None"},
|
|
{"TEDelete", (PyCFunction)TEObj_TEDelete, 1,
|
|
"() -> None"},
|
|
{"TEInsert", (PyCFunction)TEObj_TEInsert, 1,
|
|
"(Buffer text) -> None"},
|
|
{"TESetAlignment", (PyCFunction)TEObj_TESetAlignment, 1,
|
|
"(short just) -> None"},
|
|
{"TEUpdate", (PyCFunction)TEObj_TEUpdate, 1,
|
|
"(Rect rUpdate) -> None"},
|
|
{"TEScroll", (PyCFunction)TEObj_TEScroll, 1,
|
|
"(short dh, short dv) -> None"},
|
|
{"TESelView", (PyCFunction)TEObj_TESelView, 1,
|
|
"() -> None"},
|
|
{"TEPinScroll", (PyCFunction)TEObj_TEPinScroll, 1,
|
|
"(short dh, short dv) -> None"},
|
|
{"TEAutoView", (PyCFunction)TEObj_TEAutoView, 1,
|
|
"(Boolean fAuto) -> None"},
|
|
{"TECalText", (PyCFunction)TEObj_TECalText, 1,
|
|
"() -> None"},
|
|
{"TEGetOffset", (PyCFunction)TEObj_TEGetOffset, 1,
|
|
"(Point pt) -> (short _rv)"},
|
|
{"TEGetPoint", (PyCFunction)TEObj_TEGetPoint, 1,
|
|
"(short offset) -> (Point _rv)"},
|
|
{"TEClick", (PyCFunction)TEObj_TEClick, 1,
|
|
"(Point pt, Boolean fExtend) -> None"},
|
|
{"TESetStyleHandle", (PyCFunction)TEObj_TESetStyleHandle, 1,
|
|
"(TEStyleHandle theHandle) -> None"},
|
|
{"TEGetStyleHandle", (PyCFunction)TEObj_TEGetStyleHandle, 1,
|
|
"() -> (TEStyleHandle _rv)"},
|
|
{"TEGetStyle", (PyCFunction)TEObj_TEGetStyle, 1,
|
|
"(short offset) -> (TextStyle theStyle, short lineHeight, short fontAscent)"},
|
|
{"TEStylePaste", (PyCFunction)TEObj_TEStylePaste, 1,
|
|
"() -> None"},
|
|
{"TESetStyle", (PyCFunction)TEObj_TESetStyle, 1,
|
|
"(short mode, TextStyle newStyle, Boolean fRedraw) -> None"},
|
|
{"TEReplaceStyle", (PyCFunction)TEObj_TEReplaceStyle, 1,
|
|
"(short mode, TextStyle oldStyle, TextStyle newStyle, Boolean fRedraw) -> None"},
|
|
{"TEGetStyleScrapHandle", (PyCFunction)TEObj_TEGetStyleScrapHandle, 1,
|
|
"() -> (StScrpHandle _rv)"},
|
|
{"TEStyleInsert", (PyCFunction)TEObj_TEStyleInsert, 1,
|
|
"(Buffer text, StScrpHandle hST) -> None"},
|
|
{"TEGetHeight", (PyCFunction)TEObj_TEGetHeight, 1,
|
|
"(long endLine, long startLine) -> (long _rv)"},
|
|
{"TEContinuousStyle", (PyCFunction)TEObj_TEContinuousStyle, 1,
|
|
"(short mode, TextStyle aStyle) -> (Boolean _rv, short mode, TextStyle aStyle)"},
|
|
{"TEUseStyleScrap", (PyCFunction)TEObj_TEUseStyleScrap, 1,
|
|
"(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw) -> None"},
|
|
{"TENumStyles", (PyCFunction)TEObj_TENumStyles, 1,
|
|
"(long rangeStart, long rangeEnd) -> (long _rv)"},
|
|
{"TEFeatureFlag", (PyCFunction)TEObj_TEFeatureFlag, 1,
|
|
"(short feature, short action) -> (short _rv)"},
|
|
{"TEGetHiliteRgn", (PyCFunction)TEObj_TEGetHiliteRgn, 1,
|
|
"(RgnHandle region) -> None"},
|
|
{"as_Resource", (PyCFunction)TEObj_as_Resource, 1,
|
|
"() -> (Handle _rv)"},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
PyMethodChain TEObj_chain = { TEObj_methods, NULL };
|
|
|
|
static PyObject *TEObj_getattr(TEObject *self, char *name)
|
|
{
|
|
|
|
if( strcmp(name, "destRect") == 0 )
|
|
return Py_BuildValue("O&", PyMac_BuildRect,
|
|
&(*self->ob_itself)->destRect);
|
|
if( strcmp(name, "viewRect") == 0 )
|
|
return Py_BuildValue("O&", PyMac_BuildRect,
|
|
&(*self->ob_itself)->viewRect);
|
|
if( strcmp(name, "selRect") == 0 )
|
|
return Py_BuildValue("O&", PyMac_BuildRect,
|
|
&(*self->ob_itself)->selRect);
|
|
if( strcmp(name, "lineHeight") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->lineHeight);
|
|
if( strcmp(name, "fontAscent") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->fontAscent);
|
|
if( strcmp(name, "selPoint") == 0 )
|
|
return Py_BuildValue("O&", PyMac_BuildPoint,
|
|
(*self->ob_itself)->selPoint);
|
|
if( strcmp(name, "selStart") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->selStart);
|
|
if( strcmp(name, "selEnd") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->selEnd);
|
|
if( strcmp(name, "active") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->active);
|
|
if( strcmp(name, "just") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->just);
|
|
if( strcmp(name, "teLength") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->teLength);
|
|
if( strcmp(name, "txFont") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->txFont);
|
|
if( strcmp(name, "txFace") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->txFace);
|
|
if( strcmp(name, "txMode") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->txMode);
|
|
if( strcmp(name, "txSize") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->txSize);
|
|
if( strcmp(name, "nLines") == 0 )
|
|
return Py_BuildValue("h", (*self->ob_itself)->nLines);
|
|
|
|
return Py_FindMethodInChain(&TEObj_chain, (PyObject *)self, name);
|
|
}
|
|
|
|
#define TEObj_setattr NULL
|
|
|
|
#define TEObj_compare NULL
|
|
|
|
#define TEObj_repr NULL
|
|
|
|
#define TEObj_hash NULL
|
|
|
|
PyTypeObject TE_Type = {
|
|
PyObject_HEAD_INIT(NULL)
|
|
0, /*ob_size*/
|
|
"_TE.TE", /*tp_name*/
|
|
sizeof(TEObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) TEObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc) TEObj_getattr, /*tp_getattr*/
|
|
(setattrfunc) TEObj_setattr, /*tp_setattr*/
|
|
(cmpfunc) TEObj_compare, /*tp_compare*/
|
|
(reprfunc) TEObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) TEObj_hash, /*tp_hash*/
|
|
};
|
|
|
|
/* ----------------------- End object type TE ----------------------- */
|
|
|
|
|
|
static PyObject *TE_TEScrapHandle(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Handle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEScrapHandle();
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TEGetScrapLength(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEGetScrapLength();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TENew(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
TEHandle _rv;
|
|
Rect destRect;
|
|
Rect viewRect;
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
PyMac_GetRect, &destRect,
|
|
PyMac_GetRect, &viewRect))
|
|
return NULL;
|
|
_rv = TENew(&destRect,
|
|
&viewRect);
|
|
_res = Py_BuildValue("O&",
|
|
TEObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TETextBox(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
char *text__in__;
|
|
long text__len__;
|
|
int text__in_len__;
|
|
Rect box;
|
|
short just;
|
|
if (!PyArg_ParseTuple(_args, "s#O&h",
|
|
&text__in__, &text__in_len__,
|
|
PyMac_GetRect, &box,
|
|
&just))
|
|
return NULL;
|
|
text__len__ = text__in_len__;
|
|
TETextBox(text__in__, text__len__,
|
|
&box,
|
|
just);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TEStyleNew(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
TEHandle _rv;
|
|
Rect destRect;
|
|
Rect viewRect;
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
PyMac_GetRect, &destRect,
|
|
PyMac_GetRect, &viewRect))
|
|
return NULL;
|
|
_rv = TEStyleNew(&destRect,
|
|
&viewRect);
|
|
_res = Py_BuildValue("O&",
|
|
TEObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TESetScrapLength(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
long length;
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&length))
|
|
return NULL;
|
|
TESetScrapLength(length);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TEFromScrap(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
OSErr _err;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_err = TEFromScrap();
|
|
if (_err != noErr) return PyMac_Error(_err);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_TEToScrap(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
OSErr _err;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_err = TEToScrap();
|
|
if (_err != noErr) return PyMac_Error(_err);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
#if TARGET_API_MAC_CARBON
|
|
|
|
static PyObject *TE_TEGetScrapHandle(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Handle _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = TEGetScrapHandle();
|
|
_res = Py_BuildValue("O&",
|
|
ResObj_New, _rv);
|
|
return _res;
|
|
}
|
|
#endif
|
|
|
|
#if TARGET_API_MAC_CARBON
|
|
|
|
static PyObject *TE_TESetScrapHandle(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Handle value;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
ResObj_Convert, &value))
|
|
return NULL;
|
|
TESetScrapHandle(value);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
#endif
|
|
|
|
static PyObject *TE_LMGetWordRedraw(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
UInt8 _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = LMGetWordRedraw();
|
|
_res = Py_BuildValue("b",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_LMSetWordRedraw(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
UInt8 value;
|
|
if (!PyArg_ParseTuple(_args, "b",
|
|
&value))
|
|
return NULL;
|
|
LMSetWordRedraw(value);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *TE_as_TE(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
TEHandle _rv;
|
|
Handle h;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
ResObj_Convert, &h))
|
|
return NULL;
|
|
_rv = as_TE(h);
|
|
_res = Py_BuildValue("O&",
|
|
TEObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef TE_methods[] = {
|
|
{"TEScrapHandle", (PyCFunction)TE_TEScrapHandle, 1,
|
|
"() -> (Handle _rv)"},
|
|
{"TEGetScrapLength", (PyCFunction)TE_TEGetScrapLength, 1,
|
|
"() -> (long _rv)"},
|
|
{"TENew", (PyCFunction)TE_TENew, 1,
|
|
"(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
|
|
{"TETextBox", (PyCFunction)TE_TETextBox, 1,
|
|
"(Buffer text, Rect box, short just) -> None"},
|
|
{"TEStyleNew", (PyCFunction)TE_TEStyleNew, 1,
|
|
"(Rect destRect, Rect viewRect) -> (TEHandle _rv)"},
|
|
{"TESetScrapLength", (PyCFunction)TE_TESetScrapLength, 1,
|
|
"(long length) -> None"},
|
|
{"TEFromScrap", (PyCFunction)TE_TEFromScrap, 1,
|
|
"() -> None"},
|
|
{"TEToScrap", (PyCFunction)TE_TEToScrap, 1,
|
|
"() -> None"},
|
|
|
|
#if TARGET_API_MAC_CARBON
|
|
{"TEGetScrapHandle", (PyCFunction)TE_TEGetScrapHandle, 1,
|
|
"() -> (Handle _rv)"},
|
|
#endif
|
|
|
|
#if TARGET_API_MAC_CARBON
|
|
{"TESetScrapHandle", (PyCFunction)TE_TESetScrapHandle, 1,
|
|
"(Handle value) -> None"},
|
|
#endif
|
|
{"LMGetWordRedraw", (PyCFunction)TE_LMGetWordRedraw, 1,
|
|
"() -> (UInt8 _rv)"},
|
|
{"LMSetWordRedraw", (PyCFunction)TE_LMSetWordRedraw, 1,
|
|
"(UInt8 value) -> None"},
|
|
{"as_TE", (PyCFunction)TE_as_TE, 1,
|
|
"(Handle h) -> (TEHandle _rv)"},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
|
|
|
|
|
|
void init_TE(void)
|
|
{
|
|
PyObject *m;
|
|
PyObject *d;
|
|
|
|
|
|
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(TEHandle, TEObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(TEHandle, TEObj_Convert);
|
|
|
|
|
|
m = Py_InitModule("_TE", TE_methods);
|
|
d = PyModule_GetDict(m);
|
|
TE_Error = PyMac_GetOSErrException();
|
|
if (TE_Error == NULL ||
|
|
PyDict_SetItemString(d, "Error", TE_Error) != 0)
|
|
return;
|
|
TE_Type.ob_type = &PyType_Type;
|
|
Py_INCREF(&TE_Type);
|
|
if (PyDict_SetItemString(d, "TEType", (PyObject *)&TE_Type) != 0)
|
|
Py_FatalError("can't initialize TEType");
|
|
}
|
|
|
|
/* ========================= End module _TE ========================= */
|
|
|