This is eTPointmark.m in view mode; [Download] [Up]
/////////////////////////////////////////////////////////////////////////////// // FILENAME: eTPointmark.m // SUMMARY: Implementation of single-point markers in eText // SUPERCLASS: eTBookmark // INTERFACE: None // PROTOCOLS: <Annotation,HTMDSupport,ASCIISupport,LaTeXSupport,Tool, // InspectableTarget> // AUTHOR: Rohit Khare // COPYRIGHT: (c) 1994 California Institure of Technology, eText Project /////////////////////////////////////////////////////////////////////////////// // IMPLEMENTATION COMMENTS // This is a tricky set of workarounds for eTBookmark. /////////////////////////////////////////////////////////////////////////////// // HISTORY // 10/31/94: Created. Kludged together as a subclass of Bookmarks. /////////////////////////////////////////////////////////////////////////////// #import "eTPointmark.h" #define _eTPointmarkVERSION 10 @implementation eTPointmark + toolAwake:theApp { char buf[MAXPATHLEN]; NXBundle *bundle; bundle = [NXBundle bundleForClass:[eTBookmark class]]; if ([bundle getPath:buf forResource:".pm" ofType:"tiff"] ) { theIcon = [[NXImage alloc] initFromFile:buf]; [theIcon setName:".pm"]; } else { NXLogError("Image not found: .pm"); } [theApp registerAnnotation: [eTPointmark class] name: "eTPointmark" RTFDirective: "eTPointmark" menuLabel: "Mark Point" menuKey: 0 menuIcon: (NXImage *) theIcon]; return self; } - init { [super init]; theIcon = [NXImage findImageNamed:".pm"]; if (theTextFieldCell) { theTextFieldCell=[theTextFieldCell free]; } collapsed = NO; return self; } - initFromPboard:thePboard inDoc:theDoc linked:(BOOL) linked { // No registration calls! [self init]; etDoc = theDoc; anchorID = [NXApp uniqueID]; anchorTitle = NXUniqueString([[theDoc docInfo] docTitle]); [etDoc registerNotification:self]; [self click:self]; return self; } - setCondition:(const char *) newCondition {return self;} - collapse {return self;} - expand {return self;} - doubleClick:sender { return self; } - highlight:sender { int begin,end; begin = [theText positionForAnnotation:self]; if (begin == -1) {NXBeep(); return self;} // find eoparagraph and insert an end there end =[theText positionFromLine:([theText lineFromPosition:begin]+1)]-1; if (end < begin) end = begin+1; [theText setSel:(begin) :(end+1)]; [theText scrollSelToVisible]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.