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.