mirror of
https://github.com/AdaCore/cpython.git
synced 2026-02-12 12:57:15 -08:00
Weaklink most toolbox modules, improving backward compatibility. Modules will no longer fail to load if a single routine is missing on the curent OS version, in stead calling the missing routine will raise an exception. Should finally fix 531398. 2.2.1 candidate. Also blacklisted some constants with definitions that were not Python-compatible.
1220 lines
29 KiB
C
1220 lines
29 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__;
|
|
#ifndef TESetText
|
|
PyMac_PRECHECK(TESetText);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetText
|
|
PyMac_PRECHECK(TEGetText);
|
|
#endif
|
|
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;
|
|
#ifndef TEIdle
|
|
PyMac_PRECHECK(TEIdle);
|
|
#endif
|
|
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;
|
|
#ifndef TESetSelect
|
|
PyMac_PRECHECK(TESetSelect);
|
|
#endif
|
|
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;
|
|
#ifndef TEActivate
|
|
PyMac_PRECHECK(TEActivate);
|
|
#endif
|
|
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;
|
|
#ifndef TEDeactivate
|
|
PyMac_PRECHECK(TEDeactivate);
|
|
#endif
|
|
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;
|
|
#ifndef TEKey
|
|
PyMac_PRECHECK(TEKey);
|
|
#endif
|
|
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;
|
|
#ifndef TECut
|
|
PyMac_PRECHECK(TECut);
|
|
#endif
|
|
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;
|
|
#ifndef TECopy
|
|
PyMac_PRECHECK(TECopy);
|
|
#endif
|
|
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;
|
|
#ifndef TEPaste
|
|
PyMac_PRECHECK(TEPaste);
|
|
#endif
|
|
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;
|
|
#ifndef TEDelete
|
|
PyMac_PRECHECK(TEDelete);
|
|
#endif
|
|
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__;
|
|
#ifndef TEInsert
|
|
PyMac_PRECHECK(TEInsert);
|
|
#endif
|
|
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;
|
|
#ifndef TESetAlignment
|
|
PyMac_PRECHECK(TESetAlignment);
|
|
#endif
|
|
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;
|
|
#ifndef TEUpdate
|
|
PyMac_PRECHECK(TEUpdate);
|
|
#endif
|
|
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;
|
|
#ifndef TEScroll
|
|
PyMac_PRECHECK(TEScroll);
|
|
#endif
|
|
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;
|
|
#ifndef TESelView
|
|
PyMac_PRECHECK(TESelView);
|
|
#endif
|
|
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;
|
|
#ifndef TEPinScroll
|
|
PyMac_PRECHECK(TEPinScroll);
|
|
#endif
|
|
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;
|
|
#ifndef TEAutoView
|
|
PyMac_PRECHECK(TEAutoView);
|
|
#endif
|
|
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;
|
|
#ifndef TECalText
|
|
PyMac_PRECHECK(TECalText);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetOffset
|
|
PyMac_PRECHECK(TEGetOffset);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetPoint
|
|
PyMac_PRECHECK(TEGetPoint);
|
|
#endif
|
|
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;
|
|
#ifndef TEClick
|
|
PyMac_PRECHECK(TEClick);
|
|
#endif
|
|
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;
|
|
#ifndef TESetStyleHandle
|
|
PyMac_PRECHECK(TESetStyleHandle);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetStyleHandle
|
|
PyMac_PRECHECK(TEGetStyleHandle);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetStyle
|
|
PyMac_PRECHECK(TEGetStyle);
|
|
#endif
|
|
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;
|
|
#ifndef TEStylePaste
|
|
PyMac_PRECHECK(TEStylePaste);
|
|
#endif
|
|
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;
|
|
#ifndef TESetStyle
|
|
PyMac_PRECHECK(TESetStyle);
|
|
#endif
|
|
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;
|
|
#ifndef TEReplaceStyle
|
|
PyMac_PRECHECK(TEReplaceStyle);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetStyleScrapHandle
|
|
PyMac_PRECHECK(TEGetStyleScrapHandle);
|
|
#endif
|
|
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;
|
|
#ifndef TEStyleInsert
|
|
PyMac_PRECHECK(TEStyleInsert);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetHeight
|
|
PyMac_PRECHECK(TEGetHeight);
|
|
#endif
|
|
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;
|
|
#ifndef TEContinuousStyle
|
|
PyMac_PRECHECK(TEContinuousStyle);
|
|
#endif
|
|
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;
|
|
#ifndef TEUseStyleScrap
|
|
PyMac_PRECHECK(TEUseStyleScrap);
|
|
#endif
|
|
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;
|
|
#ifndef TENumStyles
|
|
PyMac_PRECHECK(TENumStyles);
|
|
#endif
|
|
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;
|
|
#ifndef TEFeatureFlag
|
|
PyMac_PRECHECK(TEFeatureFlag);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetHiliteRgn
|
|
PyMac_PRECHECK(TEGetHiliteRgn);
|
|
#endif
|
|
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;
|
|
#ifndef as_Resource
|
|
PyMac_PRECHECK(as_Resource);
|
|
#endif
|
|
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;
|
|
#ifndef TEScrapHandle
|
|
PyMac_PRECHECK(TEScrapHandle);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetScrapLength
|
|
PyMac_PRECHECK(TEGetScrapLength);
|
|
#endif
|
|
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;
|
|
#ifndef TENew
|
|
PyMac_PRECHECK(TENew);
|
|
#endif
|
|
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;
|
|
#ifndef TETextBox
|
|
PyMac_PRECHECK(TETextBox);
|
|
#endif
|
|
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;
|
|
#ifndef TEStyleNew
|
|
PyMac_PRECHECK(TEStyleNew);
|
|
#endif
|
|
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;
|
|
#ifndef TESetScrapLength
|
|
PyMac_PRECHECK(TESetScrapLength);
|
|
#endif
|
|
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;
|
|
#ifndef TEFromScrap
|
|
PyMac_PRECHECK(TEFromScrap);
|
|
#endif
|
|
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;
|
|
#ifndef TEToScrap
|
|
PyMac_PRECHECK(TEToScrap);
|
|
#endif
|
|
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;
|
|
#ifndef TEGetScrapHandle
|
|
PyMac_PRECHECK(TEGetScrapHandle);
|
|
#endif
|
|
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;
|
|
#ifndef TESetScrapHandle
|
|
PyMac_PRECHECK(TESetScrapHandle);
|
|
#endif
|
|
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;
|
|
#ifndef LMGetWordRedraw
|
|
PyMac_PRECHECK(LMGetWordRedraw);
|
|
#endif
|
|
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;
|
|
#ifndef LMSetWordRedraw
|
|
PyMac_PRECHECK(LMSetWordRedraw);
|
|
#endif
|
|
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;
|
|
#ifndef as_TE
|
|
PyMac_PRECHECK(as_TE);
|
|
#endif
|
|
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 ========================= */
|
|
|