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;
}
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.