This is GateDocEditor.m in view mode; [Download] [Up]
//***************************************************************************** // // GateDocEditor.m. // // Create, edit and link using a Gate doc // // by Felipe A. Rodriguez // // This code is supplied "as is" the author makes no warranty as to its // suitability for any purpose. This code is free and may be distributed // in accordance with the terms of the: // // GNU GENERAL PUBLIC LICENSE // Version 2, June 1991 // copyright (C) 1989, 1991 Free Software Foundation, Inc. // 675 Mass Ave, Cambridge, MA 02139, USA // //***************************************************************************** #import "GKdefs.h" #import "GateDocEditor.h" #import "options.h" #import "Coordinator.h" #import "OptionsEditor.h" #import <dbkit/DBImageView.h> // filter for Gate doc path's const char *filter[2] = {"Gate", NULL}; @implementation GateDocEditor //***************************************************************************** // // create new Gate Document with default files inside. // //***************************************************************************** - newDoc:sender { theSavePanel = [SavePanel new]; [theSavePanel setTitle:[[NXApp delegate] localString:"New"]]; [theSavePanel setRequiredFileType:filter[0]]; // append ext if not supplied if(NX_OKTAG == [theSavePanel runModalForDirectory: NXGetDefaultValue([NXApp appName], "path") file:NULL]) { // create .Gate doc wrapper mkdir([theSavePanel filename], (_S_IRUSR | _S_IWUSR | _S_IXUSR)); chown([theSavePanel filename], getuid(), getgid()); [self addDefaultFiles:[theSavePanel filename]]; [self editGateDoc:[theSavePanel filename]]; } return self; } //***************************************************************************** // // execute pppd with info from .Gate open document // //***************************************************************************** - linkDoc:sender { if((strcmp([[[NXApp mainMenu] findCellWithTag:2] title], [[NXApp delegate] localString:"Connect"]) == 0) && [[[NXApp mainMenu] findCellWithTag:2] isEnabled]) { // is link menu item enabled? [[sender window] close]; [[NXApp delegate] linkWithFile:NXGetDefaultValue([NXApp appName], "path")]; } else [[NXApp delegate] showAlert:"A ppp session is already active."]; return self; } //***************************************************************************** // // open an existing .Gate document // //***************************************************************************** - openDoc:sender { theOpenPanel = [OpenPanel new]; [theOpenPanel setTitle:[[NXApp delegate] localString:"Open"]]; if(NX_OKTAG == [theOpenPanel runModalForDirectory: NXGetDefaultValue([NXApp appName], "path") file:NULL types:filter]) [self editGateDoc:[theOpenPanel filename]]; return self; } //***************************************************************************** // // edit an existing .Gate document using built in editor // //***************************************************************************** - editGateDoc:(const char *)aGateDoc { id image; if(!NXWriteDefault([NXApp appName],"path", aGateDoc)) [[NXApp delegate] showAlert:"ddbWriteError"]; strcpy(Path, aGateDoc); strcat(Path, PPPUP); // pppup file inside of dir if([[NXApp delegate] readable:Path]) { if(!theOptionsEditor) // open edit doc window [NXApp loadNibSection:"EditDoc.nib" owner:self withNames:NO]; [docPath setStringValue:aGateDoc]; // display name [docName setStringValue:[[NXApp delegate] extractName:aGateDoc]]; strcpy(Path, aGateDoc); strcat(Path, OPTION); // file name inside of dir [theOptionsEditor parseOptionsFile:Path]; strcpy(Path, aGateDoc); strcat(Path, "/Icon.tiff"); [[GDEImageView setEditable:NO] setStyle:DB_ImageNoFrame]; if(!(image = [[NXImage alloc] initFromFile:Path])) // if imge image = [NXImage findImageNamed: ".dir"]; // else use blank [GDEImageView setImage:image]; [[theOptionsEditor editorWindow] center]; [[theOptionsEditor editorWindow] makeKeyAndOrderFront:self]; } return self; } //***************************************************************************** // // add our default options and pppup files to our new Gate document // // paths for pppup file set from pref editor path // //***************************************************************************** - addDefaultFiles:(const char *)nameOfFile { NXStream *Stream; // add example options if(![[NXBundle mainBundle]getPath:Path forResource:"Examples" ofType:NULL]) [[NXApp delegate] showAlert:"Error getting examples path"]; strncat(Path, XOPTION, MAXPATHLEN - strlen(XOPTION) - strlen(Path) + 1); if((Stream = NXMapFile(Path, NX_READONLY)) == NULL) [[NXApp delegate] showAlert:"Unable to open example options File"]; else { strncpy(Path, nameOfFile, MAXPATHLEN - strlen(OPTION)); strncat(Path, OPTION, (strlen(OPTION) + 1)); if((NXSaveToFile(Stream, Path)) == -1) [[NXApp delegate] showAlert:"Error saving options to Gate doc"]; else chown(Path, getuid(), getgid()); NXCloseMemory(Stream, NX_FREEBUFFER); } // add example pppup if(![[NXBundle mainBundle]getPath:Path forResource:"Examples" ofType:NULL]) [[NXApp delegate] showAlert:"Error getting examples path"]; strncat(Path, PPPUP, MAXPATHLEN - strlen(PPPUP) - strlen(Path) + 1); if((Stream = NXMapFile(Path, NX_READONLY)) == NULL) [[NXApp delegate] showAlert:"Unable to open pppup example File"]; else { strncpy(Path, nameOfFile, MAXPATHLEN - strlen(PPPUP)); strncat(Path, PPPUP, (strlen(PPPUP) + 1)); if((NXSaveToFile(Stream, Path)) == -1) [[NXApp delegate] showAlert:"Error saving pppup to .Gate doc"]; else { chmod(Path, (_S_IRUSR | _S_IWUSR)); // set to owner read/write chown(Path, getuid(), getgid()); } NXCloseMemory(Stream, NX_FREEBUFFER); } // add default Icon.tiff if(![[NXBundle mainBundle] getPath:Path forResource:"Icon.tiff" ofType:NULL]) [[NXApp delegate] showAlert:"Error getting Icon.tiff path"]; if((Stream = NXMapFile(Path, NX_READONLY)) == NULL) [[NXApp delegate] showAlert:"Unable to open Icon.tiff File"]; strncpy(Path, nameOfFile, MAXPATHLEN - strlen(IMAGE)); strncat(Path, IMAGE, (strlen(IMAGE) + 1)); if((NXSaveToFile(Stream, Path)) == -1) [[NXApp delegate] showAlert:"Unable to save Icon.tiff to Gate doc"]; else chown(Path, getuid(), getgid()); NXCloseMemory(Stream, NX_FREEBUFFER); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.