This is CompressApp.m in view mode; [Download] [Up]
/* * Filename: CompressApp.m * Created : Mon Jul 1 16:13:24 1991 * Author : Vince DeMarco * <demarco@cpsc.ucalgary.ca> */ /* Generated by Interface Builder */ #import <stdlib.h> #import <stdio.h> #import <strings.h> #import <appkit/OpenPanel.h> #import <appkit/Pasteboard.h> #import <appkit/Listener.h> #import <mach.h> #import <mach_interface.h> #import "CompressApp.h" #import "Compress.h" @implementation CompressApp + new { self = [super new]; OpenPanelObject = [OpenPanel new]; [OpenPanelObject allowMultipleFiles:YES]; [self setDelegate:self]; return(self); } - free { [OpenPanelObject free]; [super free]; return(self); } - (int)openFile:(const char*)filename ok:(int *)flag { char tempfilename[1024]; strcpy(tempfilename,filename); [CompressObject uncompressFile:tempfilename]; *flag = YES; return(0); } - (BOOL)appAcceptsAnotherFile:sender { return(YES); } - compressfile:sender { char tempfilename[1024]; const char *directory; char **file_list; int counter =0; [OpenPanelObject setTitle:"Compress File"]; [OpenPanelObject setRequiredFileType:"\000"]; if ([OpenPanelObject runModal] != 0){ file_list = (char **)[OpenPanelObject filenames]; directory = (const char *)[OpenPanelObject directory]; while(file_list[counter] != NULL){ sprintf(tempfilename,"%s/%s",directory,file_list[counter++]); [CompressObject compressFile:tempfilename]; } } [OpenPanelObject _updateWorkspace:sender]; return(self); } - uncompressfile:sender { char tempfilename[1024]; const char *directory; char **file_list; int counter =0; char *filetypes[3] = { {"Z"},{NULL}}; [OpenPanelObject setTitle:"UnCompress File"]; if ([OpenPanelObject runModalForDirectory:"." file:NULL types:filetypes] != 0){ file_list = (char **)[OpenPanelObject filenames]; directory = (const char *)[OpenPanelObject directory]; while(file_list[counter] != NULL){ sprintf(tempfilename,"%s/%s",directory,file_list[counter++]); [CompressObject uncompressFile:tempfilename]; } } [OpenPanelObject _updateWorkspace:sender]; return(self); } - appDidInit:sender { [[NXApp appListener] setServicesDelegate:self]; return(self); } - compressDocument:myPasteboard userData:(const char*)userData error:(char**)message { char *data; int length; char *temp; char *temp2; const NXAtom *myTypes; myTypes = [myPasteboard types]; // You need this for some stupid idiotic reason if ([myPasteboard readType:NXFilenamePboardType data:&data length:&length]){ data[length]= '\000'; if ((temp = index(data,'\t')) == NULL){ // Check if multiple files selected [CompressObject compressFile:data]; }else{ temp2 = data; while(temp != NULL){ *temp = '\000'; temp = temp+1; [CompressObject compressFile:temp2]; temp2 = temp; temp = index(temp2,'\t'); } [CompressObject compressFile:temp2]; } vm_deallocate(task_self(),(vm_address_t)data,(vm_size_t)length); } return(self); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.