PageRenderTime 928ms CodeModel.GetById 141ms app.highlight 604ms RepoModel.GetById 171ms app.codeStats 1ms

/Mac/Modules/mlte/_Mltemodule.c

http://unladen-swallow.googlecode.com/
C | 1690 lines | 1529 code | 135 blank | 26 comment | 158 complexity | dc62f16ca304ea0d7b0443d80ba513d3 MD5 | raw file
   1
   2/* ========================== Module _Mlte ========================== */
   3
   4#include "Python.h"
   5
   6#ifndef __LP64__
   7
   8
   9#include "pymactoolbox.h"
  10
  11/* Macro to test whether a weak-loaded CFM function exists */
  12#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
  13        PyErr_SetString(PyExc_NotImplementedError, \
  14        "Not available in this shared library/OS version"); \
  15        return NULL; \
  16    }} while(0)
  17
  18
  19#include <Carbon/Carbon.h>
  20
  21/* For now we declare them forward here. They'll go to mactoolbox later */
  22static PyObject *TXNObj_New(TXNObject);
  23static int TXNObj_Convert(PyObject *, TXNObject *);
  24static PyObject *TXNFontMenuObj_New(TXNFontMenuObject);
  25static int TXNFontMenuObj_Convert(PyObject *, TXNFontMenuObject *);
  26
  27/* ADD declarations */
  28#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
  29/* extern PyObject *_CFTypeRefObj_New(CFTypeRef); */
  30/* extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); */
  31
  32/* #define CFTypeRefObj_New _CFTypeRefObj_New */
  33/* #define CFTypeRefObj_Convert _CFTypeRefObj_Convert */
  34#endif
  35
  36/*
  37** Parse an optional fsspec
  38*/
  39static int
  40OptFSSpecPtr_Convert(PyObject *v, FSSpec **p_itself)
  41{
  42        static FSSpec fss;
  43        if (v == Py_None)
  44        {
  45                *p_itself = NULL;
  46                return 1;
  47        }
  48        *p_itself = &fss;
  49        return PyMac_GetFSSpec(v, *p_itself);
  50}
  51
  52/*
  53** Parse an optional GWorld
  54*/
  55static int
  56OptGWorldObj_Convert(PyObject *v, GWorldPtr *p_itself)
  57{
  58        if (v == Py_None)
  59        {
  60                *p_itself = NULL;
  61                return 1;
  62        }
  63        return GWorldObj_Convert(v, p_itself);
  64}
  65
  66
  67static PyObject *Mlte_Error;
  68
  69/* --------------------- Object type TXNObject ---------------------- */
  70
  71PyTypeObject TXNObject_Type;
  72
  73#define TXNObj_Check(x) ((x)->ob_type == &TXNObject_Type || PyObject_TypeCheck((x), &TXNObject_Type))
  74
  75typedef struct TXNObjectObject {
  76	PyObject_HEAD
  77	TXNObject ob_itself;
  78} TXNObjectObject;
  79
  80PyObject *TXNObj_New(TXNObject itself)
  81{
  82	TXNObjectObject *it;
  83	if (itself == NULL) return PyMac_Error(resNotFound);
  84	it = PyObject_NEW(TXNObjectObject, &TXNObject_Type);
  85	if (it == NULL) return NULL;
  86	it->ob_itself = itself;
  87	return (PyObject *)it;
  88}
  89
  90int TXNObj_Convert(PyObject *v, TXNObject *p_itself)
  91{
  92	if (!TXNObj_Check(v))
  93	{
  94		PyErr_SetString(PyExc_TypeError, "TXNObject required");
  95		return 0;
  96	}
  97	*p_itself = ((TXNObjectObject *)v)->ob_itself;
  98	return 1;
  99}
 100
 101static void TXNObj_dealloc(TXNObjectObject *self)
 102{
 103	/* Cleanup of self->ob_itself goes here */
 104	self->ob_type->tp_free((PyObject *)self);
 105}
 106
 107static PyObject *TXNObj_TXNDeleteObject(TXNObjectObject *_self, PyObject *_args)
 108{
 109	PyObject *_res = NULL;
 110#ifndef TXNDeleteObject
 111	PyMac_PRECHECK(TXNDeleteObject);
 112#endif
 113	if (!PyArg_ParseTuple(_args, ""))
 114		return NULL;
 115	TXNDeleteObject(_self->ob_itself);
 116	Py_INCREF(Py_None);
 117	_res = Py_None;
 118	return _res;
 119}
 120
 121static PyObject *TXNObj_TXNResizeFrame(TXNObjectObject *_self, PyObject *_args)
 122{
 123	PyObject *_res = NULL;
 124	UInt32 iWidth;
 125	UInt32 iHeight;
 126	TXNFrameID iTXNFrameID;
 127#ifndef TXNResizeFrame
 128	PyMac_PRECHECK(TXNResizeFrame);
 129#endif
 130	if (!PyArg_ParseTuple(_args, "lll",
 131	                      &iWidth,
 132	                      &iHeight,
 133	                      &iTXNFrameID))
 134		return NULL;
 135	TXNResizeFrame(_self->ob_itself,
 136	               iWidth,
 137	               iHeight,
 138	               iTXNFrameID);
 139	Py_INCREF(Py_None);
 140	_res = Py_None;
 141	return _res;
 142}
 143
 144static PyObject *TXNObj_TXNSetFrameBounds(TXNObjectObject *_self, PyObject *_args)
 145{
 146	PyObject *_res = NULL;
 147	SInt32 iTop;
 148	SInt32 iLeft;
 149	SInt32 iBottom;
 150	SInt32 iRight;
 151	TXNFrameID iTXNFrameID;
 152#ifndef TXNSetFrameBounds
 153	PyMac_PRECHECK(TXNSetFrameBounds);
 154#endif
 155	if (!PyArg_ParseTuple(_args, "lllll",
 156	                      &iTop,
 157	                      &iLeft,
 158	                      &iBottom,
 159	                      &iRight,
 160	                      &iTXNFrameID))
 161		return NULL;
 162	TXNSetFrameBounds(_self->ob_itself,
 163	                  iTop,
 164	                  iLeft,
 165	                  iBottom,
 166	                  iRight,
 167	                  iTXNFrameID);
 168	Py_INCREF(Py_None);
 169	_res = Py_None;
 170	return _res;
 171}
 172
 173static PyObject *TXNObj_TXNKeyDown(TXNObjectObject *_self, PyObject *_args)
 174{
 175	PyObject *_res = NULL;
 176	EventRecord iEvent;
 177#ifndef TXNKeyDown
 178	PyMac_PRECHECK(TXNKeyDown);
 179#endif
 180	if (!PyArg_ParseTuple(_args, "O&",
 181	                      PyMac_GetEventRecord, &iEvent))
 182		return NULL;
 183	TXNKeyDown(_self->ob_itself,
 184	           &iEvent);
 185	Py_INCREF(Py_None);
 186	_res = Py_None;
 187	return _res;
 188}
 189
 190static PyObject *TXNObj_TXNAdjustCursor(TXNObjectObject *_self, PyObject *_args)
 191{
 192	PyObject *_res = NULL;
 193	RgnHandle ioCursorRgn;
 194#ifndef TXNAdjustCursor
 195	PyMac_PRECHECK(TXNAdjustCursor);
 196#endif
 197	if (!PyArg_ParseTuple(_args, "O&",
 198	                      OptResObj_Convert, &ioCursorRgn))
 199		return NULL;
 200	TXNAdjustCursor(_self->ob_itself,
 201	                ioCursorRgn);
 202	Py_INCREF(Py_None);
 203	_res = Py_None;
 204	return _res;
 205}
 206
 207static PyObject *TXNObj_TXNClick(TXNObjectObject *_self, PyObject *_args)
 208{
 209	PyObject *_res = NULL;
 210	EventRecord iEvent;
 211#ifndef TXNClick
 212	PyMac_PRECHECK(TXNClick);
 213#endif
 214	if (!PyArg_ParseTuple(_args, "O&",
 215	                      PyMac_GetEventRecord, &iEvent))
 216		return NULL;
 217	TXNClick(_self->ob_itself,
 218	         &iEvent);
 219	Py_INCREF(Py_None);
 220	_res = Py_None;
 221	return _res;
 222}
 223
 224static PyObject *TXNObj_TXNSelectAll(TXNObjectObject *_self, PyObject *_args)
 225{
 226	PyObject *_res = NULL;
 227#ifndef TXNSelectAll
 228	PyMac_PRECHECK(TXNSelectAll);
 229#endif
 230	if (!PyArg_ParseTuple(_args, ""))
 231		return NULL;
 232	TXNSelectAll(_self->ob_itself);
 233	Py_INCREF(Py_None);
 234	_res = Py_None;
 235	return _res;
 236}
 237
 238static PyObject *TXNObj_TXNFocus(TXNObjectObject *_self, PyObject *_args)
 239{
 240	PyObject *_res = NULL;
 241	Boolean iBecomingFocused;
 242#ifndef TXNFocus
 243	PyMac_PRECHECK(TXNFocus);
 244#endif
 245	if (!PyArg_ParseTuple(_args, "b",
 246	                      &iBecomingFocused))
 247		return NULL;
 248	TXNFocus(_self->ob_itself,
 249	         iBecomingFocused);
 250	Py_INCREF(Py_None);
 251	_res = Py_None;
 252	return _res;
 253}
 254
 255static PyObject *TXNObj_TXNUpdate(TXNObjectObject *_self, PyObject *_args)
 256{
 257	PyObject *_res = NULL;
 258#ifndef TXNUpdate
 259	PyMac_PRECHECK(TXNUpdate);
 260#endif
 261	if (!PyArg_ParseTuple(_args, ""))
 262		return NULL;
 263	TXNUpdate(_self->ob_itself);
 264	Py_INCREF(Py_None);
 265	_res = Py_None;
 266	return _res;
 267}
 268
 269static PyObject *TXNObj_TXNDraw(TXNObjectObject *_self, PyObject *_args)
 270{
 271	PyObject *_res = NULL;
 272	GWorldPtr iDrawPort;
 273#ifndef TXNDraw
 274	PyMac_PRECHECK(TXNDraw);
 275#endif
 276	if (!PyArg_ParseTuple(_args, "O&",
 277	                      OptGWorldObj_Convert, &iDrawPort))
 278		return NULL;
 279	TXNDraw(_self->ob_itself,
 280	        iDrawPort);
 281	Py_INCREF(Py_None);
 282	_res = Py_None;
 283	return _res;
 284}
 285
 286static PyObject *TXNObj_TXNForceUpdate(TXNObjectObject *_self, PyObject *_args)
 287{
 288	PyObject *_res = NULL;
 289#ifndef TXNForceUpdate
 290	PyMac_PRECHECK(TXNForceUpdate);
 291#endif
 292	if (!PyArg_ParseTuple(_args, ""))
 293		return NULL;
 294	TXNForceUpdate(_self->ob_itself);
 295	Py_INCREF(Py_None);
 296	_res = Py_None;
 297	return _res;
 298}
 299
 300static PyObject *TXNObj_TXNGetSleepTicks(TXNObjectObject *_self, PyObject *_args)
 301{
 302	PyObject *_res = NULL;
 303	UInt32 _rv;
 304#ifndef TXNGetSleepTicks
 305	PyMac_PRECHECK(TXNGetSleepTicks);
 306#endif
 307	if (!PyArg_ParseTuple(_args, ""))
 308		return NULL;
 309	_rv = TXNGetSleepTicks(_self->ob_itself);
 310	_res = Py_BuildValue("l",
 311	                     _rv);
 312	return _res;
 313}
 314
 315static PyObject *TXNObj_TXNIdle(TXNObjectObject *_self, PyObject *_args)
 316{
 317	PyObject *_res = NULL;
 318#ifndef TXNIdle
 319	PyMac_PRECHECK(TXNIdle);
 320#endif
 321	if (!PyArg_ParseTuple(_args, ""))
 322		return NULL;
 323	TXNIdle(_self->ob_itself);
 324	Py_INCREF(Py_None);
 325	_res = Py_None;
 326	return _res;
 327}
 328
 329static PyObject *TXNObj_TXNGrowWindow(TXNObjectObject *_self, PyObject *_args)
 330{
 331	PyObject *_res = NULL;
 332	EventRecord iEvent;
 333#ifndef TXNGrowWindow
 334	PyMac_PRECHECK(TXNGrowWindow);
 335#endif
 336	if (!PyArg_ParseTuple(_args, "O&",
 337	                      PyMac_GetEventRecord, &iEvent))
 338		return NULL;
 339	TXNGrowWindow(_self->ob_itself,
 340	              &iEvent);
 341	Py_INCREF(Py_None);
 342	_res = Py_None;
 343	return _res;
 344}
 345
 346static PyObject *TXNObj_TXNZoomWindow(TXNObjectObject *_self, PyObject *_args)
 347{
 348	PyObject *_res = NULL;
 349	SInt16 iPart;
 350#ifndef TXNZoomWindow
 351	PyMac_PRECHECK(TXNZoomWindow);
 352#endif
 353	if (!PyArg_ParseTuple(_args, "h",
 354	                      &iPart))
 355		return NULL;
 356	TXNZoomWindow(_self->ob_itself,
 357	              iPart);
 358	Py_INCREF(Py_None);
 359	_res = Py_None;
 360	return _res;
 361}
 362
 363static PyObject *TXNObj_TXNCanUndo(TXNObjectObject *_self, PyObject *_args)
 364{
 365	PyObject *_res = NULL;
 366	Boolean _rv;
 367	TXNActionKey oTXNActionKey;
 368#ifndef TXNCanUndo
 369	PyMac_PRECHECK(TXNCanUndo);
 370#endif
 371	if (!PyArg_ParseTuple(_args, ""))
 372		return NULL;
 373	_rv = TXNCanUndo(_self->ob_itself,
 374	                 &oTXNActionKey);
 375	_res = Py_BuildValue("bl",
 376	                     _rv,
 377	                     oTXNActionKey);
 378	return _res;
 379}
 380
 381static PyObject *TXNObj_TXNUndo(TXNObjectObject *_self, PyObject *_args)
 382{
 383	PyObject *_res = NULL;
 384#ifndef TXNUndo
 385	PyMac_PRECHECK(TXNUndo);
 386#endif
 387	if (!PyArg_ParseTuple(_args, ""))
 388		return NULL;
 389	TXNUndo(_self->ob_itself);
 390	Py_INCREF(Py_None);
 391	_res = Py_None;
 392	return _res;
 393}
 394
 395static PyObject *TXNObj_TXNCanRedo(TXNObjectObject *_self, PyObject *_args)
 396{
 397	PyObject *_res = NULL;
 398	Boolean _rv;
 399	TXNActionKey oTXNActionKey;
 400#ifndef TXNCanRedo
 401	PyMac_PRECHECK(TXNCanRedo);
 402#endif
 403	if (!PyArg_ParseTuple(_args, ""))
 404		return NULL;
 405	_rv = TXNCanRedo(_self->ob_itself,
 406	                 &oTXNActionKey);
 407	_res = Py_BuildValue("bl",
 408	                     _rv,
 409	                     oTXNActionKey);
 410	return _res;
 411}
 412
 413static PyObject *TXNObj_TXNRedo(TXNObjectObject *_self, PyObject *_args)
 414{
 415	PyObject *_res = NULL;
 416#ifndef TXNRedo
 417	PyMac_PRECHECK(TXNRedo);
 418#endif
 419	if (!PyArg_ParseTuple(_args, ""))
 420		return NULL;
 421	TXNRedo(_self->ob_itself);
 422	Py_INCREF(Py_None);
 423	_res = Py_None;
 424	return _res;
 425}
 426
 427static PyObject *TXNObj_TXNCut(TXNObjectObject *_self, PyObject *_args)
 428{
 429	PyObject *_res = NULL;
 430	OSStatus _err;
 431#ifndef TXNCut
 432	PyMac_PRECHECK(TXNCut);
 433#endif
 434	if (!PyArg_ParseTuple(_args, ""))
 435		return NULL;
 436	_err = TXNCut(_self->ob_itself);
 437	if (_err != noErr) return PyMac_Error(_err);
 438	Py_INCREF(Py_None);
 439	_res = Py_None;
 440	return _res;
 441}
 442
 443static PyObject *TXNObj_TXNCopy(TXNObjectObject *_self, PyObject *_args)
 444{
 445	PyObject *_res = NULL;
 446	OSStatus _err;
 447#ifndef TXNCopy
 448	PyMac_PRECHECK(TXNCopy);
 449#endif
 450	if (!PyArg_ParseTuple(_args, ""))
 451		return NULL;
 452	_err = TXNCopy(_self->ob_itself);
 453	if (_err != noErr) return PyMac_Error(_err);
 454	Py_INCREF(Py_None);
 455	_res = Py_None;
 456	return _res;
 457}
 458
 459static PyObject *TXNObj_TXNPaste(TXNObjectObject *_self, PyObject *_args)
 460{
 461	PyObject *_res = NULL;
 462	OSStatus _err;
 463#ifndef TXNPaste
 464	PyMac_PRECHECK(TXNPaste);
 465#endif
 466	if (!PyArg_ParseTuple(_args, ""))
 467		return NULL;
 468	_err = TXNPaste(_self->ob_itself);
 469	if (_err != noErr) return PyMac_Error(_err);
 470	Py_INCREF(Py_None);
 471	_res = Py_None;
 472	return _res;
 473}
 474
 475static PyObject *TXNObj_TXNClear(TXNObjectObject *_self, PyObject *_args)
 476{
 477	PyObject *_res = NULL;
 478	OSStatus _err;
 479#ifndef TXNClear
 480	PyMac_PRECHECK(TXNClear);
 481#endif
 482	if (!PyArg_ParseTuple(_args, ""))
 483		return NULL;
 484	_err = TXNClear(_self->ob_itself);
 485	if (_err != noErr) return PyMac_Error(_err);
 486	Py_INCREF(Py_None);
 487	_res = Py_None;
 488	return _res;
 489}
 490
 491static PyObject *TXNObj_TXNGetSelection(TXNObjectObject *_self, PyObject *_args)
 492{
 493	PyObject *_res = NULL;
 494	TXNOffset oStartOffset;
 495	TXNOffset oEndOffset;
 496#ifndef TXNGetSelection
 497	PyMac_PRECHECK(TXNGetSelection);
 498#endif
 499	if (!PyArg_ParseTuple(_args, ""))
 500		return NULL;
 501	TXNGetSelection(_self->ob_itself,
 502	                &oStartOffset,
 503	                &oEndOffset);
 504	_res = Py_BuildValue("ll",
 505	                     oStartOffset,
 506	                     oEndOffset);
 507	return _res;
 508}
 509
 510static PyObject *TXNObj_TXNShowSelection(TXNObjectObject *_self, PyObject *_args)
 511{
 512	PyObject *_res = NULL;
 513	Boolean iShowEnd;
 514#ifndef TXNShowSelection
 515	PyMac_PRECHECK(TXNShowSelection);
 516#endif
 517	if (!PyArg_ParseTuple(_args, "b",
 518	                      &iShowEnd))
 519		return NULL;
 520	TXNShowSelection(_self->ob_itself,
 521	                 iShowEnd);
 522	Py_INCREF(Py_None);
 523	_res = Py_None;
 524	return _res;
 525}
 526
 527static PyObject *TXNObj_TXNIsSelectionEmpty(TXNObjectObject *_self, PyObject *_args)
 528{
 529	PyObject *_res = NULL;
 530	Boolean _rv;
 531#ifndef TXNIsSelectionEmpty
 532	PyMac_PRECHECK(TXNIsSelectionEmpty);
 533#endif
 534	if (!PyArg_ParseTuple(_args, ""))
 535		return NULL;
 536	_rv = TXNIsSelectionEmpty(_self->ob_itself);
 537	_res = Py_BuildValue("b",
 538	                     _rv);
 539	return _res;
 540}
 541
 542static PyObject *TXNObj_TXNSetSelection(TXNObjectObject *_self, PyObject *_args)
 543{
 544	PyObject *_res = NULL;
 545	OSStatus _err;
 546	TXNOffset iStartOffset;
 547	TXNOffset iEndOffset;
 548#ifndef TXNSetSelection
 549	PyMac_PRECHECK(TXNSetSelection);
 550#endif
 551	if (!PyArg_ParseTuple(_args, "ll",
 552	                      &iStartOffset,
 553	                      &iEndOffset))
 554		return NULL;
 555	_err = TXNSetSelection(_self->ob_itself,
 556	                       iStartOffset,
 557	                       iEndOffset);
 558	if (_err != noErr) return PyMac_Error(_err);
 559	Py_INCREF(Py_None);
 560	_res = Py_None;
 561	return _res;
 562}
 563
 564static PyObject *TXNObj_TXNCountRunsInRange(TXNObjectObject *_self, PyObject *_args)
 565{
 566	PyObject *_res = NULL;
 567	OSStatus _err;
 568	TXNOffset iStartOffset;
 569	TXNOffset iEndOffset;
 570	ItemCount oRunCount;
 571#ifndef TXNCountRunsInRange
 572	PyMac_PRECHECK(TXNCountRunsInRange);
 573#endif
 574	if (!PyArg_ParseTuple(_args, "ll",
 575	                      &iStartOffset,
 576	                      &iEndOffset))
 577		return NULL;
 578	_err = TXNCountRunsInRange(_self->ob_itself,
 579	                           iStartOffset,
 580	                           iEndOffset,
 581	                           &oRunCount);
 582	if (_err != noErr) return PyMac_Error(_err);
 583	_res = Py_BuildValue("l",
 584	                     oRunCount);
 585	return _res;
 586}
 587
 588static PyObject *TXNObj_TXNDataSize(TXNObjectObject *_self, PyObject *_args)
 589{
 590	PyObject *_res = NULL;
 591	ByteCount _rv;
 592#ifndef TXNDataSize
 593	PyMac_PRECHECK(TXNDataSize);
 594#endif
 595	if (!PyArg_ParseTuple(_args, ""))
 596		return NULL;
 597	_rv = TXNDataSize(_self->ob_itself);
 598	_res = Py_BuildValue("l",
 599	                     _rv);
 600	return _res;
 601}
 602
 603static PyObject *TXNObj_TXNGetData(TXNObjectObject *_self, PyObject *_args)
 604{
 605	PyObject *_res = NULL;
 606	OSStatus _err;
 607	TXNOffset iStartOffset;
 608	TXNOffset iEndOffset;
 609	Handle oDataHandle;
 610#ifndef TXNGetData
 611	PyMac_PRECHECK(TXNGetData);
 612#endif
 613	if (!PyArg_ParseTuple(_args, "ll",
 614	                      &iStartOffset,
 615	                      &iEndOffset))
 616		return NULL;
 617	_err = TXNGetData(_self->ob_itself,
 618	                  iStartOffset,
 619	                  iEndOffset,
 620	                  &oDataHandle);
 621	if (_err != noErr) return PyMac_Error(_err);
 622	_res = Py_BuildValue("O&",
 623	                     ResObj_New, oDataHandle);
 624	return _res;
 625}
 626
 627static PyObject *TXNObj_TXNGetDataEncoded(TXNObjectObject *_self, PyObject *_args)
 628{
 629	PyObject *_res = NULL;
 630	OSStatus _err;
 631	TXNOffset iStartOffset;
 632	TXNOffset iEndOffset;
 633	Handle oDataHandle;
 634	TXNDataType iEncoding;
 635#ifndef TXNGetDataEncoded
 636	PyMac_PRECHECK(TXNGetDataEncoded);
 637#endif
 638	if (!PyArg_ParseTuple(_args, "llO&",
 639	                      &iStartOffset,
 640	                      &iEndOffset,
 641	                      PyMac_GetOSType, &iEncoding))
 642		return NULL;
 643	_err = TXNGetDataEncoded(_self->ob_itself,
 644	                         iStartOffset,
 645	                         iEndOffset,
 646	                         &oDataHandle,
 647	                         iEncoding);
 648	if (_err != noErr) return PyMac_Error(_err);
 649	_res = Py_BuildValue("O&",
 650	                     ResObj_New, oDataHandle);
 651	return _res;
 652}
 653
 654static PyObject *TXNObj_TXNSetDataFromFile(TXNObjectObject *_self, PyObject *_args)
 655{
 656	PyObject *_res = NULL;
 657	OSStatus _err;
 658	SInt16 iFileRefNum;
 659	OSType iFileType;
 660	ByteCount iFileLength;
 661	TXNOffset iStartOffset;
 662	TXNOffset iEndOffset;
 663#ifndef TXNSetDataFromFile
 664	PyMac_PRECHECK(TXNSetDataFromFile);
 665#endif
 666	if (!PyArg_ParseTuple(_args, "hO&lll",
 667	                      &iFileRefNum,
 668	                      PyMac_GetOSType, &iFileType,
 669	                      &iFileLength,
 670	                      &iStartOffset,
 671	                      &iEndOffset))
 672		return NULL;
 673	_err = TXNSetDataFromFile(_self->ob_itself,
 674	                          iFileRefNum,
 675	                          iFileType,
 676	                          iFileLength,
 677	                          iStartOffset,
 678	                          iEndOffset);
 679	if (_err != noErr) return PyMac_Error(_err);
 680	Py_INCREF(Py_None);
 681	_res = Py_None;
 682	return _res;
 683}
 684
 685static PyObject *TXNObj_TXNGetChangeCount(TXNObjectObject *_self, PyObject *_args)
 686{
 687	PyObject *_res = NULL;
 688	ItemCount _rv;
 689#ifndef TXNGetChangeCount
 690	PyMac_PRECHECK(TXNGetChangeCount);
 691#endif
 692	if (!PyArg_ParseTuple(_args, ""))
 693		return NULL;
 694	_rv = TXNGetChangeCount(_self->ob_itself);
 695	_res = Py_BuildValue("l",
 696	                     _rv);
 697	return _res;
 698}
 699
 700static PyObject *TXNObj_TXNSave(TXNObjectObject *_self, PyObject *_args)
 701{
 702	PyObject *_res = NULL;
 703	OSStatus _err;
 704	TXNFileType iType;
 705	OSType iResType;
 706	TXNPermanentTextEncodingType iPermanentEncoding;
 707	FSSpec iFileSpecification;
 708	SInt16 iDataReference;
 709	SInt16 iResourceReference;
 710#ifndef TXNSave
 711	PyMac_PRECHECK(TXNSave);
 712#endif
 713	if (!PyArg_ParseTuple(_args, "O&O&lO&hh",
 714	                      PyMac_GetOSType, &iType,
 715	                      PyMac_GetOSType, &iResType,
 716	                      &iPermanentEncoding,
 717	                      PyMac_GetFSSpec, &iFileSpecification,
 718	                      &iDataReference,
 719	                      &iResourceReference))
 720		return NULL;
 721	_err = TXNSave(_self->ob_itself,
 722	               iType,
 723	               iResType,
 724	               iPermanentEncoding,
 725	               &iFileSpecification,
 726	               iDataReference,
 727	               iResourceReference);
 728	if (_err != noErr) return PyMac_Error(_err);
 729	Py_INCREF(Py_None);
 730	_res = Py_None;
 731	return _res;
 732}
 733
 734static PyObject *TXNObj_TXNRevert(TXNObjectObject *_self, PyObject *_args)
 735{
 736	PyObject *_res = NULL;
 737	OSStatus _err;
 738#ifndef TXNRevert
 739	PyMac_PRECHECK(TXNRevert);
 740#endif
 741	if (!PyArg_ParseTuple(_args, ""))
 742		return NULL;
 743	_err = TXNRevert(_self->ob_itself);
 744	if (_err != noErr) return PyMac_Error(_err);
 745	Py_INCREF(Py_None);
 746	_res = Py_None;
 747	return _res;
 748}
 749
 750static PyObject *TXNObj_TXNPageSetup(TXNObjectObject *_self, PyObject *_args)
 751{
 752	PyObject *_res = NULL;
 753	OSStatus _err;
 754#ifndef TXNPageSetup
 755	PyMac_PRECHECK(TXNPageSetup);
 756#endif
 757	if (!PyArg_ParseTuple(_args, ""))
 758		return NULL;
 759	_err = TXNPageSetup(_self->ob_itself);
 760	if (_err != noErr) return PyMac_Error(_err);
 761	Py_INCREF(Py_None);
 762	_res = Py_None;
 763	return _res;
 764}
 765
 766static PyObject *TXNObj_TXNPrint(TXNObjectObject *_self, PyObject *_args)
 767{
 768	PyObject *_res = NULL;
 769	OSStatus _err;
 770#ifndef TXNPrint
 771	PyMac_PRECHECK(TXNPrint);
 772#endif
 773	if (!PyArg_ParseTuple(_args, ""))
 774		return NULL;
 775	_err = TXNPrint(_self->ob_itself);
 776	if (_err != noErr) return PyMac_Error(_err);
 777	Py_INCREF(Py_None);
 778	_res = Py_None;
 779	return _res;
 780}
 781
 782static PyObject *TXNObj_TXNGetViewRect(TXNObjectObject *_self, PyObject *_args)
 783{
 784	PyObject *_res = NULL;
 785	Rect oViewRect;
 786#ifndef TXNGetViewRect
 787	PyMac_PRECHECK(TXNGetViewRect);
 788#endif
 789	if (!PyArg_ParseTuple(_args, ""))
 790		return NULL;
 791	TXNGetViewRect(_self->ob_itself,
 792	               &oViewRect);
 793	_res = Py_BuildValue("O&",
 794	                     PyMac_BuildRect, &oViewRect);
 795	return _res;
 796}
 797
 798static PyObject *TXNObj_TXNSetViewRect(TXNObjectObject *_self, PyObject *_args)
 799{
 800	PyObject *_res = NULL;
 801	Rect iViewRect;
 802#ifndef TXNSetViewRect
 803	PyMac_PRECHECK(TXNSetViewRect);
 804#endif
 805	if (!PyArg_ParseTuple(_args, "O&",
 806	                      PyMac_GetRect, &iViewRect))
 807		return NULL;
 808	TXNSetViewRect(_self->ob_itself,
 809	               &iViewRect);
 810	Py_INCREF(Py_None);
 811	_res = Py_None;
 812	return _res;
 813}
 814
 815static PyObject *TXNObj_TXNAttachObjectToWindow(TXNObjectObject *_self, PyObject *_args)
 816{
 817	PyObject *_res = NULL;
 818	OSStatus _err;
 819	GWorldPtr iWindow;
 820	Boolean iIsActualWindow;
 821#ifndef TXNAttachObjectToWindow
 822	PyMac_PRECHECK(TXNAttachObjectToWindow);
 823#endif
 824	if (!PyArg_ParseTuple(_args, "O&b",
 825	                      GWorldObj_Convert, &iWindow,
 826	                      &iIsActualWindow))
 827		return NULL;
 828	_err = TXNAttachObjectToWindow(_self->ob_itself,
 829	                               iWindow,
 830	                               iIsActualWindow);
 831	if (_err != noErr) return PyMac_Error(_err);
 832	Py_INCREF(Py_None);
 833	_res = Py_None;
 834	return _res;
 835}
 836
 837static PyObject *TXNObj_TXNIsObjectAttachedToWindow(TXNObjectObject *_self, PyObject *_args)
 838{
 839	PyObject *_res = NULL;
 840	Boolean _rv;
 841#ifndef TXNIsObjectAttachedToWindow
 842	PyMac_PRECHECK(TXNIsObjectAttachedToWindow);
 843#endif
 844	if (!PyArg_ParseTuple(_args, ""))
 845		return NULL;
 846	_rv = TXNIsObjectAttachedToWindow(_self->ob_itself);
 847	_res = Py_BuildValue("b",
 848	                     _rv);
 849	return _res;
 850}
 851
 852static PyObject *TXNObj_TXNDragTracker(TXNObjectObject *_self, PyObject *_args)
 853{
 854	PyObject *_res = NULL;
 855	OSErr _err;
 856	TXNFrameID iTXNFrameID;
 857	DragTrackingMessage iMessage;
 858	WindowPtr iWindow;
 859	DragReference iDragReference;
 860	Boolean iDifferentObjectSameWindow;
 861#ifndef TXNDragTracker
 862	PyMac_PRECHECK(TXNDragTracker);
 863#endif
 864	if (!PyArg_ParseTuple(_args, "lhO&O&b",
 865	                      &iTXNFrameID,
 866	                      &iMessage,
 867	                      WinObj_Convert, &iWindow,
 868	                      DragObj_Convert, &iDragReference,
 869	                      &iDifferentObjectSameWindow))
 870		return NULL;
 871	_err = TXNDragTracker(_self->ob_itself,
 872	                      iTXNFrameID,
 873	                      iMessage,
 874	                      iWindow,
 875	                      iDragReference,
 876	                      iDifferentObjectSameWindow);
 877	if (_err != noErr) return PyMac_Error(_err);
 878	Py_INCREF(Py_None);
 879	_res = Py_None;
 880	return _res;
 881}
 882
 883static PyObject *TXNObj_TXNDragReceiver(TXNObjectObject *_self, PyObject *_args)
 884{
 885	PyObject *_res = NULL;
 886	OSErr _err;
 887	TXNFrameID iTXNFrameID;
 888	WindowPtr iWindow;
 889	DragReference iDragReference;
 890	Boolean iDifferentObjectSameWindow;
 891#ifndef TXNDragReceiver
 892	PyMac_PRECHECK(TXNDragReceiver);
 893#endif
 894	if (!PyArg_ParseTuple(_args, "lO&O&b",
 895	                      &iTXNFrameID,
 896	                      WinObj_Convert, &iWindow,
 897	                      DragObj_Convert, &iDragReference,
 898	                      &iDifferentObjectSameWindow))
 899		return NULL;
 900	_err = TXNDragReceiver(_self->ob_itself,
 901	                       iTXNFrameID,
 902	                       iWindow,
 903	                       iDragReference,
 904	                       iDifferentObjectSameWindow);
 905	if (_err != noErr) return PyMac_Error(_err);
 906	Py_INCREF(Py_None);
 907	_res = Py_None;
 908	return _res;
 909}
 910
 911static PyObject *TXNObj_TXNActivate(TXNObjectObject *_self, PyObject *_args)
 912{
 913	PyObject *_res = NULL;
 914	OSStatus _err;
 915	TXNFrameID iTXNFrameID;
 916	TXNScrollBarState iActiveState;
 917#ifndef TXNActivate
 918	PyMac_PRECHECK(TXNActivate);
 919#endif
 920	if (!PyArg_ParseTuple(_args, "ll",
 921	                      &iTXNFrameID,
 922	                      &iActiveState))
 923		return NULL;
 924	_err = TXNActivate(_self->ob_itself,
 925	                   iTXNFrameID,
 926	                   iActiveState);
 927	if (_err != noErr) return PyMac_Error(_err);
 928	Py_INCREF(Py_None);
 929	_res = Py_None;
 930	return _res;
 931}
 932
 933static PyObject *TXNObj_TXNEchoMode(TXNObjectObject *_self, PyObject *_args)
 934{
 935	PyObject *_res = NULL;
 936	OSStatus _err;
 937	UniChar iEchoCharacter;
 938	TextEncoding iEncoding;
 939	Boolean iOn;
 940#ifndef TXNEchoMode
 941	PyMac_PRECHECK(TXNEchoMode);
 942#endif
 943	if (!PyArg_ParseTuple(_args, "hlb",
 944	                      &iEchoCharacter,
 945	                      &iEncoding,
 946	                      &iOn))
 947		return NULL;
 948	_err = TXNEchoMode(_self->ob_itself,
 949	                   iEchoCharacter,
 950	                   iEncoding,
 951	                   iOn);
 952	if (_err != noErr) return PyMac_Error(_err);
 953	Py_INCREF(Py_None);
 954	_res = Py_None;
 955	return _res;
 956}
 957
 958static PyObject *TXNObj_TXNDoFontMenuSelection(TXNObjectObject *_self, PyObject *_args)
 959{
 960	PyObject *_res = NULL;
 961	OSStatus _err;
 962	TXNFontMenuObject iTXNFontMenuObject;
 963	SInt16 iMenuID;
 964	SInt16 iMenuItem;
 965#ifndef TXNDoFontMenuSelection
 966	PyMac_PRECHECK(TXNDoFontMenuSelection);
 967#endif
 968	if (!PyArg_ParseTuple(_args, "O&hh",
 969	                      TXNFontMenuObj_Convert, &iTXNFontMenuObject,
 970	                      &iMenuID,
 971	                      &iMenuItem))
 972		return NULL;
 973	_err = TXNDoFontMenuSelection(_self->ob_itself,
 974	                              iTXNFontMenuObject,
 975	                              iMenuID,
 976	                              iMenuItem);
 977	if (_err != noErr) return PyMac_Error(_err);
 978	Py_INCREF(Py_None);
 979	_res = Py_None;
 980	return _res;
 981}
 982
 983static PyObject *TXNObj_TXNPrepareFontMenu(TXNObjectObject *_self, PyObject *_args)
 984{
 985	PyObject *_res = NULL;
 986	OSStatus _err;
 987	TXNFontMenuObject iTXNFontMenuObject;
 988#ifndef TXNPrepareFontMenu
 989	PyMac_PRECHECK(TXNPrepareFontMenu);
 990#endif
 991	if (!PyArg_ParseTuple(_args, "O&",
 992	                      TXNFontMenuObj_Convert, &iTXNFontMenuObject))
 993		return NULL;
 994	_err = TXNPrepareFontMenu(_self->ob_itself,
 995	                          iTXNFontMenuObject);
 996	if (_err != noErr) return PyMac_Error(_err);
 997	Py_INCREF(Py_None);
 998	_res = Py_None;
 999	return _res;
1000}
1001
1002static PyObject *TXNObj_TXNPointToOffset(TXNObjectObject *_self, PyObject *_args)
1003{
1004	PyObject *_res = NULL;
1005	OSStatus _err;
1006	Point iPoint;
1007	TXNOffset oOffset;
1008#ifndef TXNPointToOffset
1009	PyMac_PRECHECK(TXNPointToOffset);
1010#endif
1011	if (!PyArg_ParseTuple(_args, "O&",
1012	                      PyMac_GetPoint, &iPoint))
1013		return NULL;
1014	_err = TXNPointToOffset(_self->ob_itself,
1015	                        iPoint,
1016	                        &oOffset);
1017	if (_err != noErr) return PyMac_Error(_err);
1018	_res = Py_BuildValue("l",
1019	                     oOffset);
1020	return _res;
1021}
1022
1023static PyObject *TXNObj_TXNOffsetToPoint(TXNObjectObject *_self, PyObject *_args)
1024{
1025	PyObject *_res = NULL;
1026	OSStatus _err;
1027	TXNOffset iOffset;
1028	Point oPoint;
1029#ifndef TXNOffsetToPoint
1030	PyMac_PRECHECK(TXNOffsetToPoint);
1031#endif
1032	if (!PyArg_ParseTuple(_args, "l",
1033	                      &iOffset))
1034		return NULL;
1035	_err = TXNOffsetToPoint(_self->ob_itself,
1036	                        iOffset,
1037	                        &oPoint);
1038	if (_err != noErr) return PyMac_Error(_err);
1039	_res = Py_BuildValue("O&",
1040	                     PyMac_BuildPoint, oPoint);
1041	return _res;
1042}
1043
1044static PyObject *TXNObj_TXNGetLineCount(TXNObjectObject *_self, PyObject *_args)
1045{
1046	PyObject *_res = NULL;
1047	OSStatus _err;
1048	ItemCount oLineTotal;
1049#ifndef TXNGetLineCount
1050	PyMac_PRECHECK(TXNGetLineCount);
1051#endif
1052	if (!PyArg_ParseTuple(_args, ""))
1053		return NULL;
1054	_err = TXNGetLineCount(_self->ob_itself,
1055	                       &oLineTotal);
1056	if (_err != noErr) return PyMac_Error(_err);
1057	_res = Py_BuildValue("l",
1058	                     oLineTotal);
1059	return _res;
1060}
1061
1062static PyObject *TXNObj_TXNGetLineMetrics(TXNObjectObject *_self, PyObject *_args)
1063{
1064	PyObject *_res = NULL;
1065	OSStatus _err;
1066	UInt32 iLineNumber;
1067	Fixed oLineWidth;
1068	Fixed oLineHeight;
1069#ifndef TXNGetLineMetrics
1070	PyMac_PRECHECK(TXNGetLineMetrics);
1071#endif
1072	if (!PyArg_ParseTuple(_args, "l",
1073	                      &iLineNumber))
1074		return NULL;
1075	_err = TXNGetLineMetrics(_self->ob_itself,
1076	                         iLineNumber,
1077	                         &oLineWidth,
1078	                         &oLineHeight);
1079	if (_err != noErr) return PyMac_Error(_err);
1080	_res = Py_BuildValue("O&O&",
1081	                     PyMac_BuildFixed, oLineWidth,
1082	                     PyMac_BuildFixed, oLineHeight);
1083	return _res;
1084}
1085
1086static PyObject *TXNObj_TXNIsObjectAttachedToSpecificWindow(TXNObjectObject *_self, PyObject *_args)
1087{
1088	PyObject *_res = NULL;
1089	OSStatus _err;
1090	WindowPtr iWindow;
1091	Boolean oAttached;
1092#ifndef TXNIsObjectAttachedToSpecificWindow
1093	PyMac_PRECHECK(TXNIsObjectAttachedToSpecificWindow);
1094#endif
1095	if (!PyArg_ParseTuple(_args, "O&",
1096	                      WinObj_Convert, &iWindow))
1097		return NULL;
1098	_err = TXNIsObjectAttachedToSpecificWindow(_self->ob_itself,
1099	                                           iWindow,
1100	                                           &oAttached);
1101	if (_err != noErr) return PyMac_Error(_err);
1102	_res = Py_BuildValue("b",
1103	                     oAttached);
1104	return _res;
1105}
1106
1107static PyObject *TXNObj_TXNRecalcTextLayout(TXNObjectObject *_self, PyObject *_args)
1108{
1109	PyObject *_res = NULL;
1110#ifndef TXNRecalcTextLayout
1111	PyMac_PRECHECK(TXNRecalcTextLayout);
1112#endif
1113	if (!PyArg_ParseTuple(_args, ""))
1114		return NULL;
1115	TXNRecalcTextLayout(_self->ob_itself);
1116	Py_INCREF(Py_None);
1117	_res = Py_None;
1118	return _res;
1119}
1120
1121static PyMethodDef TXNObj_methods[] = {
1122	{"TXNDeleteObject", (PyCFunction)TXNObj_TXNDeleteObject, 1,
1123	 PyDoc_STR("() -> None")},
1124	{"TXNResizeFrame", (PyCFunction)TXNObj_TXNResizeFrame, 1,
1125	 PyDoc_STR("(UInt32 iWidth, UInt32 iHeight, TXNFrameID iTXNFrameID) -> None")},
1126	{"TXNSetFrameBounds", (PyCFunction)TXNObj_TXNSetFrameBounds, 1,
1127	 PyDoc_STR("(SInt32 iTop, SInt32 iLeft, SInt32 iBottom, SInt32 iRight, TXNFrameID iTXNFrameID) -> None")},
1128	{"TXNKeyDown", (PyCFunction)TXNObj_TXNKeyDown, 1,
1129	 PyDoc_STR("(EventRecord iEvent) -> None")},
1130	{"TXNAdjustCursor", (PyCFunction)TXNObj_TXNAdjustCursor, 1,
1131	 PyDoc_STR("(RgnHandle ioCursorRgn) -> None")},
1132	{"TXNClick", (PyCFunction)TXNObj_TXNClick, 1,
1133	 PyDoc_STR("(EventRecord iEvent) -> None")},
1134	{"TXNSelectAll", (PyCFunction)TXNObj_TXNSelectAll, 1,
1135	 PyDoc_STR("() -> None")},
1136	{"TXNFocus", (PyCFunction)TXNObj_TXNFocus, 1,
1137	 PyDoc_STR("(Boolean iBecomingFocused) -> None")},
1138	{"TXNUpdate", (PyCFunction)TXNObj_TXNUpdate, 1,
1139	 PyDoc_STR("() -> None")},
1140	{"TXNDraw", (PyCFunction)TXNObj_TXNDraw, 1,
1141	 PyDoc_STR("(GWorldPtr iDrawPort) -> None")},
1142	{"TXNForceUpdate", (PyCFunction)TXNObj_TXNForceUpdate, 1,
1143	 PyDoc_STR("() -> None")},
1144	{"TXNGetSleepTicks", (PyCFunction)TXNObj_TXNGetSleepTicks, 1,
1145	 PyDoc_STR("() -> (UInt32 _rv)")},
1146	{"TXNIdle", (PyCFunction)TXNObj_TXNIdle, 1,
1147	 PyDoc_STR("() -> None")},
1148	{"TXNGrowWindow", (PyCFunction)TXNObj_TXNGrowWindow, 1,
1149	 PyDoc_STR("(EventRecord iEvent) -> None")},
1150	{"TXNZoomWindow", (PyCFunction)TXNObj_TXNZoomWindow, 1,
1151	 PyDoc_STR("(SInt16 iPart) -> None")},
1152	{"TXNCanUndo", (PyCFunction)TXNObj_TXNCanUndo, 1,
1153	 PyDoc_STR("() -> (Boolean _rv, TXNActionKey oTXNActionKey)")},
1154	{"TXNUndo", (PyCFunction)TXNObj_TXNUndo, 1,
1155	 PyDoc_STR("() -> None")},
1156	{"TXNCanRedo", (PyCFunction)TXNObj_TXNCanRedo, 1,
1157	 PyDoc_STR("() -> (Boolean _rv, TXNActionKey oTXNActionKey)")},
1158	{"TXNRedo", (PyCFunction)TXNObj_TXNRedo, 1,
1159	 PyDoc_STR("() -> None")},
1160	{"TXNCut", (PyCFunction)TXNObj_TXNCut, 1,
1161	 PyDoc_STR("() -> None")},
1162	{"TXNCopy", (PyCFunction)TXNObj_TXNCopy, 1,
1163	 PyDoc_STR("() -> None")},
1164	{"TXNPaste", (PyCFunction)TXNObj_TXNPaste, 1,
1165	 PyDoc_STR("() -> None")},
1166	{"TXNClear", (PyCFunction)TXNObj_TXNClear, 1,
1167	 PyDoc_STR("() -> None")},
1168	{"TXNGetSelection", (PyCFunction)TXNObj_TXNGetSelection, 1,
1169	 PyDoc_STR("() -> (TXNOffset oStartOffset, TXNOffset oEndOffset)")},
1170	{"TXNShowSelection", (PyCFunction)TXNObj_TXNShowSelection, 1,
1171	 PyDoc_STR("(Boolean iShowEnd) -> None")},
1172	{"TXNIsSelectionEmpty", (PyCFunction)TXNObj_TXNIsSelectionEmpty, 1,
1173	 PyDoc_STR("() -> (Boolean _rv)")},
1174	{"TXNSetSelection", (PyCFunction)TXNObj_TXNSetSelection, 1,
1175	 PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> None")},
1176	{"TXNCountRunsInRange", (PyCFunction)TXNObj_TXNCountRunsInRange, 1,
1177	 PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> (ItemCount oRunCount)")},
1178	{"TXNDataSize", (PyCFunction)TXNObj_TXNDataSize, 1,
1179	 PyDoc_STR("() -> (ByteCount _rv)")},
1180	{"TXNGetData", (PyCFunction)TXNObj_TXNGetData, 1,
1181	 PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset) -> (Handle oDataHandle)")},
1182	{"TXNGetDataEncoded", (PyCFunction)TXNObj_TXNGetDataEncoded, 1,
1183	 PyDoc_STR("(TXNOffset iStartOffset, TXNOffset iEndOffset, TXNDataType iEncoding) -> (Handle oDataHandle)")},
1184	{"TXNSetDataFromFile", (PyCFunction)TXNObj_TXNSetDataFromFile, 1,
1185	 PyDoc_STR("(SInt16 iFileRefNum, OSType iFileType, ByteCount iFileLength, TXNOffset iStartOffset, TXNOffset iEndOffset) -> None")},
1186	{"TXNGetChangeCount", (PyCFunction)TXNObj_TXNGetChangeCount, 1,
1187	 PyDoc_STR("() -> (ItemCount _rv)")},
1188	{"TXNSave", (PyCFunction)TXNObj_TXNSave, 1,
1189	 PyDoc_STR("(TXNFileType iType, OSType iResType, TXNPermanentTextEncodingType iPermanentEncoding, FSSpec iFileSpecification, SInt16 iDataReference, SInt16 iResourceReference) -> None")},
1190	{"TXNRevert", (PyCFunction)TXNObj_TXNRevert, 1,
1191	 PyDoc_STR("() -> None")},
1192	{"TXNPageSetup", (PyCFunction)TXNObj_TXNPageSetup, 1,
1193	 PyDoc_STR("() -> None")},
1194	{"TXNPrint", (PyCFunction)TXNObj_TXNPrint, 1,
1195	 PyDoc_STR("() -> None")},
1196	{"TXNGetViewRect", (PyCFunction)TXNObj_TXNGetViewRect, 1,
1197	 PyDoc_STR("() -> (Rect oViewRect)")},
1198	{"TXNSetViewRect", (PyCFunction)TXNObj_TXNSetViewRect, 1,
1199	 PyDoc_STR("(Rect iViewRect) -> None")},
1200	{"TXNAttachObjectToWindow", (PyCFunction)TXNObj_TXNAttachObjectToWindow, 1,
1201	 PyDoc_STR("(GWorldPtr iWindow, Boolean iIsActualWindow) -> None")},
1202	{"TXNIsObjectAttachedToWindow", (PyCFunction)TXNObj_TXNIsObjectAttachedToWindow, 1,
1203	 PyDoc_STR("() -> (Boolean _rv)")},
1204	{"TXNDragTracker", (PyCFunction)TXNObj_TXNDragTracker, 1,
1205	 PyDoc_STR("(TXNFrameID iTXNFrameID, DragTrackingMessage iMessage, WindowPtr iWindow, DragReference iDragReference, Boolean iDifferentObjectSameWindow) -> None")},
1206	{"TXNDragReceiver", (PyCFunction)TXNObj_TXNDragReceiver, 1,
1207	 PyDoc_STR("(TXNFrameID iTXNFrameID, WindowPtr iWindow, DragReference iDragReference, Boolean iDifferentObjectSameWindow) -> None")},
1208	{"TXNActivate", (PyCFunction)TXNObj_TXNActivate, 1,
1209	 PyDoc_STR("(TXNFrameID iTXNFrameID, TXNScrollBarState iActiveState) -> None")},
1210	{"TXNEchoMode", (PyCFunction)TXNObj_TXNEchoMode, 1,
1211	 PyDoc_STR("(UniChar iEchoCharacter, TextEncoding iEncoding, Boolean iOn) -> None")},
1212	{"TXNDoFontMenuSelection", (PyCFunction)TXNObj_TXNDoFontMenuSelection, 1,
1213	 PyDoc_STR("(TXNFontMenuObject iTXNFontMenuObject, SInt16 iMenuID, SInt16 iMenuItem) -> None")},
1214	{"TXNPrepareFontMenu", (PyCFunction)TXNObj_TXNPrepareFontMenu, 1,
1215	 PyDoc_STR("(TXNFontMenuObject iTXNFontMenuObject) -> None")},
1216	{"TXNPointToOffset", (PyCFunction)TXNObj_TXNPointToOffset, 1,
1217	 PyDoc_STR("(Point iPoint) -> (TXNOffset oOffset)")},
1218	{"TXNOffsetToPoint", (PyCFunction)TXNObj_TXNOffsetToPoint, 1,
1219	 PyDoc_STR("(TXNOffset iOffset) -> (Point oPoint)")},
1220	{"TXNGetLineCount", (PyCFunction)TXNObj_TXNGetLineCount, 1,
1221	 PyDoc_STR("() -> (ItemCount oLineTotal)")},
1222	{"TXNGetLineMetrics", (PyCFunction)TXNObj_TXNGetLineMetrics, 1,
1223	 PyDoc_STR("(UInt32 iLineNumber) -> (Fixed oLineWidth, Fixed oLineHeight)")},
1224	{"TXNIsObjectAttachedToSpecificWindow", (PyCFunction)TXNObj_TXNIsObjectAttachedToSpecificWindow, 1,
1225	 PyDoc_STR("(WindowPtr iWindow) -> (Boolean oAttached)")},
1226	{"TXNRecalcTextLayout", (PyCFunction)TXNObj_TXNRecalcTextLayout, 1,
1227	 PyDoc_STR("() -> None")},
1228	{NULL, NULL, 0}
1229};
1230
1231#define TXNObj_getsetlist NULL
1232
1233
1234#define TXNObj_compare NULL
1235
1236#define TXNObj_repr NULL
1237
1238#define TXNObj_hash NULL
1239#define TXNObj_tp_init 0
1240
1241#define TXNObj_tp_alloc PyType_GenericAlloc
1242
1243static PyObject *TXNObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
1244{
1245	PyObject *_self;
1246	TXNObject itself;
1247	char *kw[] = {"itself", 0};
1248
1249	if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TXNObj_Convert, &itself)) return NULL;
1250	if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
1251	((TXNObjectObject *)_self)->ob_itself = itself;
1252	return _self;
1253}
1254
1255#define TXNObj_tp_free PyObject_Del
1256
1257
1258PyTypeObject TXNObject_Type = {
1259	PyObject_HEAD_INIT(NULL)
1260	0, /*ob_size*/
1261	"_Mlte.TXNObject", /*tp_name*/
1262	sizeof(TXNObjectObject), /*tp_basicsize*/
1263	0, /*tp_itemsize*/
1264	/* methods */
1265	(destructor) TXNObj_dealloc, /*tp_dealloc*/
1266	0, /*tp_print*/
1267	(getattrfunc)0, /*tp_getattr*/
1268	(setattrfunc)0, /*tp_setattr*/
1269	(cmpfunc) TXNObj_compare, /*tp_compare*/
1270	(reprfunc) TXNObj_repr, /*tp_repr*/
1271	(PyNumberMethods *)0, /* tp_as_number */
1272	(PySequenceMethods *)0, /* tp_as_sequence */
1273	(PyMappingMethods *)0, /* tp_as_mapping */
1274	(hashfunc) TXNObj_hash, /*tp_hash*/
1275	0, /*tp_call*/
1276	0, /*tp_str*/
1277	PyObject_GenericGetAttr, /*tp_getattro*/
1278	PyObject_GenericSetAttr, /*tp_setattro */
1279	0, /*tp_as_buffer*/
1280	Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
1281	0, /*tp_doc*/
1282	0, /*tp_traverse*/
1283	0, /*tp_clear*/
1284	0, /*tp_richcompare*/
1285	0, /*tp_weaklistoffset*/
1286	0, /*tp_iter*/
1287	0, /*tp_iternext*/
1288	TXNObj_methods, /* tp_methods */
1289	0, /*tp_members*/
1290	TXNObj_getsetlist, /*tp_getset*/
1291	0, /*tp_base*/
1292	0, /*tp_dict*/
1293	0, /*tp_descr_get*/
1294	0, /*tp_descr_set*/
1295	0, /*tp_dictoffset*/
1296	TXNObj_tp_init, /* tp_init */
1297	TXNObj_tp_alloc, /* tp_alloc */
1298	TXNObj_tp_new, /* tp_new */
1299	TXNObj_tp_free, /* tp_free */
1300};
1301
1302/* ------------------- End object type TXNObject -------------------- */
1303
1304
1305/* ----------------- Object type TXNFontMenuObject ------------------ */
1306
1307PyTypeObject TXNFontMenuObject_Type;
1308
1309#define TXNFontMenuObj_Check(x) ((x)->ob_type == &TXNFontMenuObject_Type || PyObject_TypeCheck((x), &TXNFontMenuObject_Type))
1310
1311typedef struct TXNFontMenuObjectObject {
1312	PyObject_HEAD
1313	TXNFontMenuObject ob_itself;
1314} TXNFontMenuObjectObject;
1315
1316PyObject *TXNFontMenuObj_New(TXNFontMenuObject itself)
1317{
1318	TXNFontMenuObjectObject *it;
1319	if (itself == NULL) return PyMac_Error(resNotFound);
1320	it = PyObject_NEW(TXNFontMenuObjectObject, &TXNFontMenuObject_Type);
1321	if (it == NULL) return NULL;
1322	it->ob_itself = itself;
1323	return (PyObject *)it;
1324}
1325
1326int TXNFontMenuObj_Convert(PyObject *v, TXNFontMenuObject *p_itself)
1327{
1328	if (!TXNFontMenuObj_Check(v))
1329	{
1330		PyErr_SetString(PyExc_TypeError, "TXNFontMenuObject required");
1331		return 0;
1332	}
1333	*p_itself = ((TXNFontMenuObjectObject *)v)->ob_itself;
1334	return 1;
1335}
1336
1337static void TXNFontMenuObj_dealloc(TXNFontMenuObjectObject *self)
1338{
1339	/* Cleanup of self->ob_itself goes here */
1340	self->ob_type->tp_free((PyObject *)self);
1341}
1342
1343static PyObject *TXNFontMenuObj_TXNGetFontMenuHandle(TXNFontMenuObjectObject *_self, PyObject *_args)
1344{
1345	PyObject *_res = NULL;
1346	OSStatus _err;
1347	MenuHandle oFontMenuHandle;
1348#ifndef TXNGetFontMenuHandle
1349	PyMac_PRECHECK(TXNGetFontMenuHandle);
1350#endif
1351	if (!PyArg_ParseTuple(_args, ""))
1352		return NULL;
1353	_err = TXNGetFontMenuHandle(_self->ob_itself,
1354	                            &oFontMenuHandle);
1355	if (_err != noErr) return PyMac_Error(_err);
1356	_res = Py_BuildValue("O&",
1357	                     MenuObj_New, oFontMenuHandle);
1358	return _res;
1359}
1360
1361static PyObject *TXNFontMenuObj_TXNDisposeFontMenuObject(TXNFontMenuObjectObject *_self, PyObject *_args)
1362{
1363	PyObject *_res = NULL;
1364	OSStatus _err;
1365#ifndef TXNDisposeFontMenuObject
1366	PyMac_PRECHECK(TXNDisposeFontMenuObject);
1367#endif
1368	if (!PyArg_ParseTuple(_args, ""))
1369		return NULL;
1370	_err = TXNDisposeFontMenuObject(_self->ob_itself);
1371	if (_err != noErr) return PyMac_Error(_err);
1372	Py_INCREF(Py_None);
1373	_res = Py_None;
1374	return _res;
1375}
1376
1377static PyMethodDef TXNFontMenuObj_methods[] = {
1378	{"TXNGetFontMenuHandle", (PyCFunction)TXNFontMenuObj_TXNGetFontMenuHandle, 1,
1379	 PyDoc_STR("() -> (MenuHandle oFontMenuHandle)")},
1380	{"TXNDisposeFontMenuObject", (PyCFunction)TXNFontMenuObj_TXNDisposeFontMenuObject, 1,
1381	 PyDoc_STR("() -> None")},
1382	{NULL, NULL, 0}
1383};
1384
1385#define TXNFontMenuObj_getsetlist NULL
1386
1387
1388#define TXNFontMenuObj_compare NULL
1389
1390#define TXNFontMenuObj_repr NULL
1391
1392#define TXNFontMenuObj_hash NULL
1393#define TXNFontMenuObj_tp_init 0
1394
1395#define TXNFontMenuObj_tp_alloc PyType_GenericAlloc
1396
1397static PyObject *TXNFontMenuObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
1398{
1399	PyObject *_self;
1400	TXNFontMenuObject itself;
1401	char *kw[] = {"itself", 0};
1402
1403	if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, TXNFontMenuObj_Convert, &itself)) return NULL;
1404	if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
1405	((TXNFontMenuObjectObject *)_self)->ob_itself = itself;
1406	return _self;
1407}
1408
1409#define TXNFontMenuObj_tp_free PyObject_Del
1410
1411
1412PyTypeObject TXNFontMenuObject_Type = {
1413	PyObject_HEAD_INIT(NULL)
1414	0, /*ob_size*/
1415	"_Mlte.TXNFontMenuObject", /*tp_name*/
1416	sizeof(TXNFontMenuObjectObject), /*tp_basicsize*/
1417	0, /*tp_itemsize*/
1418	/* methods */
1419	(destructor) TXNFontMenuObj_dealloc, /*tp_dealloc*/
1420	0, /*tp_print*/
1421	(getattrfunc)0, /*tp_getattr*/
1422	(setattrfunc)0, /*tp_setattr*/
1423	(cmpfunc) TXNFontMenuObj_compare, /*tp_compare*/
1424	(reprfunc) TXNFontMenuObj_repr, /*tp_repr*/
1425	(PyNumberMethods *)0, /* tp_as_number */
1426	(PySequenceMethods *)0, /* tp_as_sequence */
1427	(PyMappingMethods *)0, /* tp_as_mapping */
1428	(hashfunc) TXNFontMenuObj_hash, /*tp_hash*/
1429	0, /*tp_call*/
1430	0, /*tp_str*/
1431	PyObject_GenericGetAttr, /*tp_getattro*/
1432	PyObject_GenericSetAttr, /*tp_setattro */
1433	0, /*tp_as_buffer*/
1434	Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
1435	0, /*tp_doc*/
1436	0, /*tp_traverse*/
1437	0, /*tp_clear*/
1438	0, /*tp_richcompare*/
1439	0, /*tp_weaklistoffset*/
1440	0, /*tp_iter*/
1441	0, /*tp_iternext*/
1442	TXNFontMenuObj_methods, /* tp_methods */
1443	0, /*tp_members*/
1444	TXNFontMenuObj_getsetlist, /*tp_getset*/
1445	0, /*tp_base*/
1446	0, /*tp_dict*/
1447	0, /*tp_descr_get*/
1448	0, /*tp_descr_set*/
1449	0, /*tp_dictoffset*/
1450	TXNFontMenuObj_tp_init, /* tp_init */
1451	TXNFontMenuObj_tp_alloc, /* tp_alloc */
1452	TXNFontMenuObj_tp_new, /* tp_new */
1453	TXNFontMenuObj_tp_free, /* tp_free */
1454};
1455
1456/* --------------- End object type TXNFontMenuObject ---------------- */
1457
1458
1459static PyObject *Mlte_TXNNewObject(PyObject *_self, PyObject *_args)
1460{
1461	PyObject *_res = NULL;
1462	OSStatus _err;
1463	FSSpec * iFileSpec;
1464	WindowPtr iWindow;
1465	Rect iFrame;
1466	TXNFrameOptions iFrameOptions;
1467	TXNFrameType iFrameType;
1468	TXNFileType iFileType;
1469	TXNPermanentTextEncodingType iPermanentEncoding;
1470	TXNObject oTXNObject;
1471	TXNFrameID oTXNFrameID;
1472#ifndef TXNNewObject
1473	PyMac_PRECHECK(TXNNewObject);
1474#endif
1475	if (!PyArg_ParseTuple(_args, "O&O&O&llO&l",
1476	                      OptFSSpecPtr_Convert, &iFileSpec,
1477	                      WinObj_Convert, &iWindow,
1478	                      PyMac_GetRect, &iFrame,
1479	                      &iFrameOptions,
1480	                      &iFrameType,
1481	                      PyMac_GetOSType, &iFileType,
1482	                      &iPermanentEncoding))
1483		return NULL;
1484	_err = TXNNewObject(iFileSpec,
1485	                    iWindow,
1486	                    &iFrame,
1487	                    iFrameOptions,
1488	                    iFrameType,
1489	                    iFileType,
1490	                    iPermanentEncoding,
1491	                    &oTXNObject,
1492	                    &oTXNFrameID,
1493	                    (TXNObjectRefcon)0);
1494	if (_err != noErr) return PyMac_Error(_err);
1495	_res = Py_BuildValue("O&l",
1496	                     TXNObj_New, oTXNObject,
1497	                     oTXNFrameID);
1498	return _res;
1499}
1500
1501static PyObject *Mlte_TXNTerminateTextension(PyObject *_self, PyObject *_args)
1502{
1503	PyObject *_res = NULL;
1504#ifndef TXNTerminateTextension
1505	PyMac_PRECHECK(TXNTerminateTextension);
1506#endif
1507	if (!PyArg_ParseTuple(_args, ""))
1508		return NULL;
1509	TXNTerminateTextension();
1510	Py_INCREF(Py_None);
1511	_res = Py_None;
1512	return _res;
1513}
1514
1515static PyObject *Mlte_TXNIsScrapPastable(PyObject *_self, PyObject *_args)
1516{
1517	PyObject *_res = NULL;
1518	Boolean _rv;
1519#ifndef TXNIsScrapPastable
1520	PyMac_PRECHECK(TXNIsScrapPastable);
1521#endif
1522	if (!PyArg_ParseTuple(_args, ""))
1523		return NULL;
1524	_rv = TXNIsScrapPastable();
1525	_res = Py_BuildValue("b",
1526	                     _rv);
1527	return _res;
1528}
1529
1530static PyObject *Mlte_TXNConvertToPublicScrap(PyObject *_self, PyObject *_args)
1531{
1532	PyObject *_res = NULL;
1533	OSStatus _err;
1534#ifndef TXNConvertToPublicScrap
1535	PyMac_PRECHECK(TXNConvertToPublicScrap);
1536#endif
1537	if (!PyArg_ParseTuple(_args, ""))
1538		return NULL;
1539	_err = TXNConvertToPublicScrap();
1540	if (_err != noErr) return PyMac_Error(_err);
1541	Py_INCREF(Py_None);
1542	_res = Py_None;
1543	return _res;
1544}
1545
1546static PyObject *Mlte_TXNConvertFromPublicScrap(PyObject *_self, PyObject *_args)
1547{
1548	PyObject *_res = NULL;
1549	OSStatus _err;
1550#ifndef TXNConvertFromPublicScrap
1551	PyMac_PRECHECK(TXNConvertFromPublicScrap);
1552#endif
1553	if (!PyArg_ParseTuple(_args, ""))
1554		return NULL;
1555	_err = TXNConvertFromPublicScrap();
1556	if (_err != noErr) return PyMac_Error(_err);
1557	Py_INCREF(Py_None);
1558	_res = Py_None;
1559	return _res;
1560}
1561
1562static PyObject *Mlte_TXNNewFontMenuObject(PyObject *_self, PyObject *_args)
1563{
1564	PyObject *_res = NULL;
1565	OSStatus _err;
1566	MenuHandle iFontMenuHandle;
1567	SInt16 iMenuID;
1568	SInt16 iStartHierMenuID;
1569	TXNFontMenuObject oTXNFontMenuObject;
1570#ifndef TXNNewFontMenuObject
1571	PyMac_PRECHECK(TXNNewFontMenuObject);
1572#endif
1573	if (!PyArg_ParseTuple(_args, "O&hh",
1574	                      MenuObj_Convert, &iFontMenuHandle,
1575	                      &iMenuID,
1576	                      &iStartHierMenuID))
1577		return NULL;
1578	_err = TXNNewFontMenuObject(iFontMenuHandle,
1579	                            iMenuID,
1580	                            iStartHierMenuID,
1581	                            &oTXNFontMenuObject);
1582	if (_err != noErr) return PyMac_Error(_err);
1583	_res = Py_BuildValue("O&",
1584	                     TXNFontMenuObj_New, oTXNFontMenuObject);
1585	return _res;
1586}
1587
1588static PyObject *Mlte_TXNVersionInformation(PyObject *_self, PyObject *_args)
1589{
1590	PyObject *_res = NULL;
1591	TXNVersionValue _rv;
1592	TXNFeatureBits oFeatureFlags;
1593#ifndef TXNVersionInformation
1594	PyMac_PRECHECK(TXNVersionInformation);
1595#endif
1596	if (!PyArg_ParseTuple(_args, ""))
1597		return NULL;
1598	_rv = TXNVersionInformation(&oFeatureFlags);
1599	_res = Py_BuildValue("ll",
1600	                     _rv,
1601	                     oFeatureFlags);
1602	return _res;
1603}
1604
1605static PyObject *Mlte_TXNInitTextension(PyObject *_self, PyObject *_args)
1606{
1607	PyObject *_res = NULL;
1608
1609	OSStatus _err;
1610	TXNMacOSPreferredFontDescription * iDefaultFonts = NULL;
1611	ItemCount iCountDefaultFonts = 0;
1612	TXNInitOptions iUsageFlags;
1613	PyMac_PRECHECK(TXNInitTextension);
1614	if (!PyArg_ParseTuple(_args, "l", &iUsageFlags))
1615	        return NULL;
1616	_err = TXNInitTextension(iDefaultFonts,
1617	                         iCountDefaultFonts,
1618	                         iUsageFlags);
1619	if (_err != noErr) return PyMac_Error(_err);
1620	Py_INCREF(Py_None);
1621	_res = Py_None;
1622	return _res;
1623
1624}
1625
1626#endif /* __LP64__ */
1627
1628static PyMethodDef Mlte_methods[] = {
1629#ifndef __LP64__
1630	{"TXNNewObject", (PyCFunction)Mlte_TXNNewObject, 1,
1631	 PyDoc_STR("(FSSpec * iFileSpec, WindowPtr iWindow, Rect iFrame, TXNFrameOptions iFrameOptions, TXNFrameType iFrameType, TXNFileType iFileType, TXNPermanentTextEncodingType iPermanentEncoding) -> (TXNObject oTXNObject, TXNFrameID oTXNFrameID)")},
1632	{"TXNTerminateTextension", (PyCFunction)Mlte_TXNTerminateTextension, 1,
1633	 PyDoc_STR("() -> None")},
1634	{"TXNIsScrapPastable", (PyCFunction)Mlte_TXNIsScrapPastable, 1,
1635	 PyDoc_STR("() -> (Boolean _rv)")},
1636	{"TXNConvertToPublicScrap", (PyCFunction)Mlte_TXNConvertToPublicScrap, 1,
1637	 PyDoc_STR("() -> None")},
1638	{"TXNConvertFromPublicScrap", (PyCFunction)Mlte_TXNConvertFromPublicScrap, 1,
1639	 PyDoc_STR("() -> None")},
1640	{"TXNNewFontMenuObject", (PyCFunction)Mlte_TXNNewFontMenuObject, 1,
1641	 PyDoc_STR("(MenuHandle iFontMenuHandle, SInt16 iMenuID, SInt16 iStartHierMenuID) -> (TXNFontMenuObject oTXNFontMenuObject)")},
1642	{"TXNVersionInformation", (PyCFunction)Mlte_TXNVersionInformation, 1,
1643	 PyDoc_STR("() -> (TXNVersionValue _rv, TXNFeatureBits oFeatureFlags)")},
1644	{"TXNInitTextension", (PyCFunction)Mlte_TXNInitTextension, 1,
1645	 PyDoc_STR("(TXNInitOptions) -> None")},
1646#endif /* __LP64__ */
1647	{NULL, NULL, 0}
1648};
1649
1650
1651
1652
1653void init_Mlte(void)
1654{
1655	PyObject *m;
1656#ifndef __LP64__
1657	PyObject *d;
1658
1659
1660
1661	/*      PyMac_INIT_TOOLBOX_OBJECT_NEW(xxxx); */
1662
1663#endif /* __LP64__ */
1664
1665	m = Py_InitModule("_Mlte", Mlte_methods);
1666#ifndef __LP64__
1667	d = PyModule_GetDict(m);
1668	Mlte_Error = PyMac_GetOSErrException();
1669	if (Mlte_Error == NULL ||
1670	    PyDict_SetItemString(d, "Error", Mlte_Error) != 0)
1671		return;
1672	TXNObject_Type.ob_type = &PyType_Type;
1673	if (PyType_Ready(&TXNObject_Type) < 0) return;
1674	Py_INCREF(&TXNObject_Type);
1675	PyModule_AddObject(m, "TXNObject", (PyObject *)&TXNObject_Type);
1676	/* Backward-compatible name */
1677	Py_INCREF(&TXNObject_Type);
1678	PyModule_AddObject(m, "TXNObjectType", (PyObject *)&TXNObject_Type);
1679	TXNFontMenuObject_Type.ob_type = &PyType_Type;
1680	if (PyType_Ready(&TXNFontMenuObject_Type) < 0) return;
1681	Py_INCREF(&TXNFontMenuObject_Type);
1682	PyModule_AddObject(m, "TXNFontMenuObject", (PyObject *)&TXNFontMenuObject_Type);
1683	/* Backward-compatible name */
1684	Py_INCREF(&TXNFontMenuObject_Type);
1685	PyModule_AddObject(m, "TXNFontMenuObjectType", (PyObject *)&TXNFontMenuObject_Type);
1686#endif /* __LP64__ */
1687}
1688
1689/* ======================== End module _Mlte ======================== */
1690