{\rtf0\ansi{\fonttbl\f0\fmodern Courier;\f1\ftech Symbol;\f2\fmodern Ohlfs;}
\margl40
\margr40
\pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\f0\b0\i0\ulnone\fs24\fc0\cf0 //ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп\
//
\i 	
\b FILENAME
\b0 :	
\b\i0 eText.Class.m\

\b0 //
\i 	
\b SUMMARY
\b0 :	
\b\i0 Implementation of the Class Management functions of eText:Text
\b0 \
//	
\b\i SUPERCLASS
\b0\i0 :	
\b Object:Responder:View:Text:eText
\b0 \
//	
\b\i PROTOCOLS
\b0\i0 :	
\b <Annotation>
\b0 ,
\b  <SearchableText>
\b0 \
//	
\b\i INTERFACE
\b0\i0 :	
\b None, indirectly through eTDoc.nib
\b0 \
//	
\b\i AUTHOR
\b0 :		
\b\i0 Rohit Khare
\b0 \
//	
\b\i COPYRIGHT
\b0 :	
\f1\i0 с
\f0\b 1993,94 California Institure of Technology, eText Project\

\b0 //ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп\
//	
\b\i Implementation Comments
\b0\i0 \
//		These initialization and lifecycle methods bear the brunt of\
//	integrating all the diverse bits of code in the different categories.\
//ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп\
//	
\b\i History
\b0\i0 \
//	10/17/94:	
\b Cleaned up for eText5.
\b0 \
//	08/05/94:	
\b Completely Rearchitected for 5.0. RK
\b0 \
//	07/10/94:	
\b Rewrote HTML parsing routines; moved code out of eTDoc
\b0 \
//	06/18/94:	
\b Added writeHTML:from:length:. RK & TRZ.
\b0 \
//	05/09/94:	
\b Added positionForAnnotation
\b0 \
//	01/20/94:	
\b Revised throughout for eText4.0
\b0 \
//	09/11/93:	
\b Added Dragging support
\b0 \
//	08/19/93:	
\b Created. Based directly on 1.0 sources, edited down.
\b0 \
//	06/24/93: 	
\b Version 1.0 Created (Rohit Khare)
\b0 \
//ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп\
//	
\b Imported Interfaces
\b0 \
//\
	#import "
\b eText.Class.h
\b0 "\
\

\i @implementation eText\

\i0 //ппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп\
//	
\b Class Management
\b0 \
//\
+ 
\b initialize
\b0  \{\
	// 
\i Register %v for HTML and %w for LaTeX for encoding with NXPrintf
\i0 \
	
\b NXRegisterPrintfProc
\b0 ('
\b V
\b0 ', (NXPrintfProc *)&
\b URIEncoder
\b0 ,NULL);\
	
\b NXRegisterPrintfProc
\b0 ('
\b v
\b0 ', (NXPrintfProc *)&
\b HTMLEncoder
\b0 ,NULL);\
	
\b NXRegisterPrintfProc
\b0 ('
\b w
\b0 ', (NXPrintfProc *)&
\b LaTeXEncoder
\b0 ,NULL);\
\
	// ... 
\i and set the encoding table
\i0  \
	[
\b userModel
\b0  
\b defaultValue
\b0 :"
\b WebStep
\b0 " 
\b for
\b0 :"
\b HTMLEncoding
\b0 "];\
\
	// 
\i Register %y for the PlainText encoding that uses NXToAscii()
\i0 \
	
\b NXRegisterPrintfProc
\b0 ('
\b y
\b0 ', (NXPrintfProc *)&
\b ASCIIEncoder
\b0 ,NULL);\
	return self;\
\}\
\
- 
\b awakeFromNib
\b0 \{\
	
\b NXCoord
\b0  left,right,top,bottom;\
	NXAtom	
\b supportedTypes
\b0 [13] = \{	NXFilenamePboardType,\
									NXFileContentsPboardType, \
									NXSoundPboardType,\
									NXPostScriptPboardType, \
									NXTIFFPboardType,\
									N3DRIBPboardType, \
									NXColorPboardType,\
									NXFontPboardType,\
									NXRulerPboardType,\
									NXRTFPboardType,\
									NXAsciiPboardType,\
									NXTabularTextPboardType,\
									NULL\};\
	[self 
\b setMonoFont
\b0 :
\b NO
\b0 ];\
	[self 
\b setRetainedWhileDrawing
\b0 :
\b YES
\b0 ];\
	[self 
\b setGraphicsImportEnabled
\b0 :
\b NO
\b0 ];\
	[self 
\b registerForDraggedTypes
\b0 :
\b supportedTypes
\b0  count:12];\
	[self 
\b setDelegate
\b0 :
\b self
\b0 ];\
\
 	[self 
\b getMarginLeft
\b0 :&left 
\b right
\b0 :&right 
\b top
\b0 :&top 
\b bottom
\b0 :&bottom];\
	[self 
\b setMarginLeft
\b0 :((
\b left
\b0  < 72.0) ? 72.0 : 
\b left
\b0 ) right:
\b 4
\b0  top:
\b 4
\b0  bottom:
\b 4
\b0 ];\
\
	
\b oldTextFilter
\b0  = [self 
\b textFilter
\b0 ];\
 	[self 
\b setTextFilter
\b0 :&
\b undoFilterFunc
\b0 ];\
	\
	[self 
\b setInitialAction
\b0 :[[
\b XTDispatchAction
\b0  alloc] 
\b initBase
\b0 :"" 
\b estream
\b0 :
\b nil
\b0 ]];\
	return self;\
\}\
\
- 
\b initFrame
\b0 :(const NXRect *)
\b frameRect\

\b0 	   
\b text
\b0 :(const STR)
\b theText
\b0 \
  
\b alignment
\b0 :(int)
\b mode
\b0  \{\
	[
\b super
\b0  initFrame:frameRect text:theText alignment:mode];\
	
\b etDoc
\b0  = 
\b nil
\b0 ;\
	
\b undoManager
\b0  = 
\b nil
\b0 ;\
	
\b nextAction
\b0  = 
\b nil
\b0 ;\
	
\b strictRTF
\b0  = 
\b NO
\b0 ;\
	
\b initialAction
\b0  = 
\b nil
\b0 ;\
	
\b errorStream
\b0  = [ErrorStream 
\b default
\b0 ];\
	
\b posHint
\b0  = 
\b -1
\b0 ;\
	
\b xHintPos
\b0  = 
\b -1
\b0 ;\
	return self;\
\}\
\
- 
\b free
\b0  \{\
	
\b etDoc
\b0  = 
\b nil
\b0 ;\
	
\b undoManager
\b0  = 
\b nil
\b0 ;\
	[self 
\b setText
\b0 :""];		// 
\i Nukes all remaining annotations
\i0 \
	return self = [
\b super
\b0  free];\
\}\
\

\i @end
}
