This is PasteBoardSaver.m in view mode; [Download] [Up]
/* * Written by Joe Freeman 10/91 * This program comes with no warrenty or copyright. * Use at your own risk. If you don't like it, fix it. * Thats why you have the sources. * * V1 27 lines of code * V2 terminate instead of deactivate * V3 hide instead of deactivate * */ #import "PasteBoardSaver.h" #import <libc.h> #import <appkit/Application.h> /* NXApp */ #import <appkit/Pasteboard.h> #import <appkit/SavePanel.h> #import <appkit/Listener.h> #import <defaults.h> @implementation PasteBoardSaver - appDidInit:sender { [[NXApp appListener] setServicesDelegate:self]; return self; } #define EPS 1 #define TIFF 2 #define ASCII 3 #define RTF 4 - pbToFile:pb userData:(const char *)uDat error:(char **)aMsg { const NXAtom *types; char *data; int length; int requested; NXStream *memStream; id savePanel = [SavePanel new]; requested = atoi(uDat) ; types = [pb types]; while (types && *types){ if (requested == EPS && *types == NXPostScriptPboardType) { [savePanel setRequiredFileType:"eps"]; break; } else if (requested == TIFF && *types == NXTIFFPboardType){ [savePanel setRequiredFileType:"tiff"]; break; } else if (requested == ASCII && *types == NXAsciiPboardType){ [savePanel setRequiredFileType:""]; break; } else if (requested == RTF && *types == NXRTFPboardType){ [savePanel setRequiredFileType:"rtf"]; break; } types++; } if (types && *types){ /* need to get the data out of the pasteboard */ [pb readType:*types data:&data length:&length]; /* open up save panel, ask for a place to put it and put it there */ if ([savePanel runModal]){ memStream = NXOpenMemory(NULL, 0, NX_WRITEONLY); NXWrite(memStream, data, length); NXSaveToFile(memStream, [savePanel filename]); NXCloseMemory(memStream, NX_FREEBUFFER); /* everyone hated the fact the old app didn't come back */ } else { //strcpy(*aMsg, "User aborted pasteboard save."); } } if ( NXGetDefaultValue([NXApp appName], "HangAround")) [NXApp hide:self]; else [NXApp perform:@selector(terminate:) with:self afterDelay: 1 cancelPrevious:YES]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.