
/* =========================== 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);
	PyObject_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, &region))
		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 ========================= */

