ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/objcX-0.87.tgz#/objcX-0.87/examples/SavePanel/Brain.m

This is Brain.m in view mode; [Download] [Up]

#include <stdio.h>
#import <appkit/Text.h>
#import "Brain.h"

#define MAXPATHLENGTH		300

@implementation Brain

- init
{
	FILE *systemCall;
	char *path = malloc(MAXPATHLENGTH);

	systemCall = popen("pwd", "r");
	fscanf(systemCall, "%s", path);
	pclose(systemCall);

	savePanel = [SavePanel new];
	//[savePanel setDirectory:path];
	openPanel = [OpenPanel new];
	//[openPanel setDirectory:path];
	outputString = (char *)malloc(500);

	free(path);
	return self;
}

- free
{
	[savePanel free];
	[openPanel free];
	free(outputString);
	return [super free];
}

- saveIt:sender
{
	int result;
	char *temp;
	
	result = [savePanel runModal];
	sprintf(outputString, "Result of running SavePanel modal is: %d\nThe"
	" filename is:\n%s\n", result, [savePanel filename]);
	if (result) {
		theFile = fopen([savePanel filename], "r");
		if (!theFile) {
			temp = (char *)malloc([fileText textLength] + 1);
			[fileText getSubstring:temp start:0
				length:[fileText textLength] + 1];
			theFile = fopen([savePanel filename], "w");
			fprintf(theFile, "%s", temp);
			fclose(theFile);
			strcat(outputString, "Wrote TEXT to file.\n");
			free(temp);
		} else {
			strcat(outputString, "File already exists--write aborted\n");
			fclose(theFile);
		}
	}
	[outputText setText:outputString];
    return self;
}

- openIt:sender
{
	int result;
	NXStream *theStream;
	
	result = [openPanel runModal];
	sprintf(outputString, "Result of running OpenPanel modal is: %d\nThe"
	" filename is:\n%s\n", result, [openPanel filename]);
	if (result) {
		theStream = NXMapFile([openPanel filename], NX_READONLY);
		if (!theStream) {
			strcat(outputString, "ERROR!  Could not open file!  Something is"
			" wrong with the OpenPanel.\n");
		} else {
			[fileText readText:theStream];
			NXClose(theStream);
			strcat(outputString, "Writing file's contents to TEXT.\n");			
		}
	}
	[outputText setText:outputString];
    return self;
}

- clearText:sender
{
	[fileText setText:""];
	return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.