ftp.nice.ch/pub/next/unix/developer/ShellPanel.2.0.s.tar.gz#/ShellPanel/ShellPanel.h

This is ShellPanel.h in view mode; [Download] [Up]

/* File:	ShellPanel.h - support routines for ShellPanel utilities.
 *
 * By:		Tom Hageman <Tom_Hageman@RnA.nl>
 *
 * Date:	12-Mar-96
 */

#import <stdio.h>
#import <stdlib.h>
#import <appkit/appkit.h>
#import "getopt.h"

#ifndef EXIT_USAGE
#   define EXIT_USAGE	2
#endif

// dummy exit codes -- used only internally.
#define EXIT_HELP	(-2)
#define EXIT_VERSION	(-3)

#define VERSION "2.0 (R&A)"
#define VERSION_DATE	"May 1996"

#define _STRINGIZE(x)	#x
#define STRINGIZE(x)	_STRINGIZE(x)	// Indirection to expand cpp macros.

#ifdef USES_APPICON
void SetAppIconToFile(const char *iconFile)
{
	NXImage *icon;

	if (!iconFile) return;

	icon = [[NXImage alloc] init];

	if ([icon loadFromFile:iconFile]) {
		NXSize orgsize, newsize = {48, 48};

		[icon getSize:&orgsize];
		if (orgsize.width > orgsize.height) {
			newsize.height = newsize.height * orgsize.height / orgsize.width;
		}
		else if (orgsize.width < orgsize.height) {
			newsize.width = newsize.width * orgsize.width / orgsize.height;
		}
		[icon setScalable:YES];
		[icon setSize:&newsize];
		[icon setName:"app"];	// Works with NS 3.x at least.
	}
}
#endif

#ifdef USES_KEYEQUIV
void ProvideKeyEquivalents(void)
{
	static struct HiddenKey {
		const char *methodName;
		short keyEquiv;
	} HiddenKeys[] = {
		"cut:",		'x',
		"copy:",	'c',
		"paste:",	'v',
		"selectAll:",	'a',
#ifdef KEY_EQUIVALENTS
		KEY_EQUIVALENTS
#endif
	};
	const int HiddenKeyCount = sizeof(HiddenKeys)/sizeof(HiddenKeys[0]);
	Menu *menu = [Menu new];
	int i;

	for (i = 0;  i < HiddenKeyCount;  i++) {
		struct HiddenKey *hp = &HiddenKeys[i];

		[menu addItem:hp->methodName
		 action:sel_getUid(hp->methodName)
		 keyEquivalent:hp->keyEquiv];
	}
}
#endif

void HandleUsageHelpVersion(int what, const char *usage, const char *help)
{
	const char *appName = [NXApp appName];

	switch (what) {
	case EXIT_USAGE:
		fprintf(stderr, usage, appName);
		fprintf(stderr, "try `%s -H' for more information.\n", appName); 
		break;
	case EXIT_HELP:
		printf(usage, appName);
		printf(help, appName);
		what = EXIT_SUCCESS;
		break;
	case EXIT_VERSION:
		printf("%s: ShellPanel version %s, %s.\n",
		       appName, VERSION, VERSION_DATE);
		what = EXIT_SUCCESS;
		break;
	default:
		return; // no-op.
	}
	[NXApp free];
	exit(what);
}

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