This is MOTextDocController.m in view mode; [Download] [Up]
// MOTextDocController.m // // by Mike Ferris // Part of MOKit // Copyright 1993, all rights reserved. // ABOUT MOKit // // MOKit is a collection of useful and general objects. Permission is // granted by the author to use MOKit in your own programs in any way // you see fit. All other rights to the kit are reserved by the author // including the right to sell these objects as part of a LIBRARY or as // SOURCE CODE. In plain English, I wish to retain rights to these // objects as objects, but allow the use of the objects as pieces in a // fully functional program. NO WARRANTY is expressed or implied. The author // will under no circumstances be held responsible for ANY consequences to // you from the use of these objects. Since you don't have to pay for // them, and full source is provided, I think this is perfectly fair. #import "MOTextDocController.h" #import "MOKit/MOPathString.h" #define CLASS_VERSION 0 #define CLASS_NIB "MOTextDocController.nib" @implementation MOTextDocController + initialize // Set the version. Configure the class. { if (self == [MOTextDocController class]) { [self setVersion:CLASS_VERSION]; [self setClassNib:CLASS_NIB]; [self setControllerName:"Rich Text"]; [self addDocType:1 name:"Rich Text" extension:"rtf" openSelector:@selector(doRevertRtf:) saveSelector:@selector(doSaveRtf:)]; [self addDocType:2 name:"Text Doc" extension:"txt" openSelector:@selector(doRevertTxt:) saveSelector:@selector(doSaveTxt:)]; [self addDocType:3 name:"Raw Man Page" extension:"1" openSelector:@selector(doRevertTxt:) saveSelector:NULL]; [self addDocType:4 name:"Ascii Text" extension:NULL openSelector:@selector(doRevertTxt:) saveSelector:@selector(doSaveTxt:)]; } return self; } - nibDidLoad // Set the text object's delegate. (We can't set it from inside the // scroll view in IB.) { [super nibDidLoad]; [textObj setDelegate:self]; return self; } - doSaveRtf:(MODocType *)type // The saveSelector for rich text. { NXStream *strm = NULL; id ret = self; strm = NXOpenMemory(NULL, 0, NX_WRITEONLY); if (strm) { [textObj setMonoFont:NO]; [textObj writeRichText:strm]; if (NXSaveToFile(strm, [self file]) == -1) { ret = nil; } NXCloseMemory(strm, NX_FREEBUFFER); } else { ret = nil; } return ret; } - doSaveTxt:(MODocType *)type // The saveSelector for ascii text. { NXStream *strm = NULL; id ret = self; strm = NXOpenMemory(NULL, 0, NX_WRITEONLY); if (strm) { [textObj setMonoFont:YES]; [textObj setFont:[Font userFixedPitchFontOfSize:12.0 matrix:NX_FLIPPEDMATRIX]]; [textObj writeText:strm]; if (NXSaveToFile(strm, [self file]) == -1) { ret = nil; } NXCloseMemory(strm, NX_FREEBUFFER); } else { ret = nil; } return ret; } - doRevertRtf:(MODocType *)type // The openSelector for rich text. { NXStream *strm = NULL; id ret = self; strm = NXMapFile([self file], NX_READONLY); if (strm) { [textObj setMonoFont:NO]; [textObj readRichText:strm]; NXCloseMemory(strm, NX_FREEBUFFER); } else { ret = nil; } return ret; } - doRevertTxt:(MODocType *)type // The openSelector for ascii text. { NXStream *strm = NULL; id ret = self; strm = NXMapFile([self file], NX_READONLY); if (strm) { [textObj setMonoFont:YES]; [textObj setFont:[Font userFixedPitchFontOfSize:12.0 matrix:NX_FLIPPEDMATRIX]]; [textObj readText:strm]; NXCloseMemory(strm, NX_FREEBUFFER); } else { ret = nil; } return ret; } - (BOOL)doClear // Clear the text object. { if (![super doClear]) return NO; [textObj setText:""]; [textObj setMonoFont:NO]; return YES; } - (BOOL)doPrint // Print the text object. { if (![super doClear]) return NO; [textObj printPSCode:self]; return YES; } - textObj // Return the text object. { return textObj; } - textDidGetKeys:sender isEmpty:(BOOL)flag // Mark ourselves as dirty. { [self setDirty:YES]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.