This is Inputline.m in view mode; [Download] [Up]
/* File: Inputline.m
*
* By: Tom Hageman <Tom_Hageman@RnA.nl>, Gerben Wierda <Gerben_Wierda@RnA.nl>
* As inspired by Christopher Lane (lane@sumex-aim.stanford.edu)
*
* Date: 8 june 1994
*
* Modified:
* [17-Feb-96 TRH] Fix for Application option munching (like -NXHost).
* [12-Mar-96 TRH] add -V -H -A options; add EditMenu keyEquiv support.
*
* Copyright: 1994,1996 by R&A
*
* This program may be distributed without restriction.
*/
#define USES_APPICON
#define USES_KEYEQUIV
#import "ShellPanel.h"
#define TIMEOUT 0
#define DEFAULTWIDTH 300 //364
#define DEFAULTHEIGHT 60 //185
#define DEFAULTX 250
#define DEFAULTY 450
#define USAGE "\
usage: %s [-p prompt] [-t title] [-T sec] [-n|-e] [-V] [-H] [initial-text]\n"
#define HELP "\
options:\n\
-p prompt set prompt\n\
-t title set title (default %s)\n\
-i iconfile pathname of application icon to use (default none)\n\
-T seconds timeout in seconds, 0 means wait indefinitely (default "STRINGIZE(TIMEOUT)")\n\
-n don't echo input characters (default if invoked as `Password')\n\
-e echo input characters (default otherwise)\n\
-V print version string and exit\n\
-H this help\n\
"
#if 0
-x xpos\n\
-y ypos set origin of window, in screen coordinates.\n\
#endif
#import "InputlinePanel.m" // Cheat. Again.
void timer(DPSTimedEntry teNumber, double now, int status) { exit(status); }
void main(int argc, char *argv[])
{
const char *prompt = NULL;
const char *title = NULL;
const char *initialInput = "";
const char *iconFile = NULL;
double timeout = TIMEOUT;
int option, status = EXIT_SUCCESS;
BOOL invisible = NO;
NXPoint topleft = { 0, 0 };
/// NXSize size = { DEFAULTWIDTH, DEFAULTHEIGHT };
DPSTimedEntry teNumber = NULL;
/// NXApp = [InputlineApp new];
NXApp = [Application new];
argc = NXArgc, argv = NXArgv; // Application may munch options.
if (strcmp([NXApp appName], "Password") == 0) invisible = YES;
while ((option = getopt(argc, argv, "p:t:i:x:y:T:neVH")) != EOF)
{
switch (option)
{
case 'p': prompt = optarg; break;
case 't': title = optarg; break;
case 'i': iconFile = optarg; break;
case 'x': topleft.x = atof(optarg); break;
case 'y': topleft.y = atof(optarg); break;
case 'T': timeout = atol(optarg); break;
case 'n': invisible = YES; break;
case 'e': invisible = NO; break;
case 'V': status = EXIT_VERSION; break;
case 'H': status = EXIT_HELP; break;
default : status = EXIT_USAGE;
}
}
HandleUsageHelpVersion(status, USAGE, HELP);
SetAppIconToFile(iconFile);
ProvideKeyEquivalents();
if (prompt == NULL) prompt = (invisible) ? "Password:" : "Input:";
if (title == NULL) title = [NXApp appName];
/// if (title == NULL) title = (invisible) ? "Password" : "Inputline";
if (optind < argc) initialInput = argv[optind];
{
int context;
InputlinePanel *panel = [InputlinePanel new];
if (panel == nil)
{
// XXX Error mesage knows about .nib name and search order.
const char *const *searchPaths = [InputlinePanel resourcePaths];
fprintf(stderr, "%s: cannot load InputlinePanel.nib,\n", [NXApp appName]);
fprintf(stderr, "from: %s", [[NXBundle mainBundle] directory]);
while (*searchPaths) {
fprintf(stderr, ", %s", *searchPaths++);
}
fprintf(stderr, "\n");
exit(EXIT_FAILURE);
}
context = [NXApp activateSelf:YES];
[panel setTitle:title];
[panel setPrompt:prompt];
if ([panel runModalWithInputline:initialInput invisible:invisible])
{
puts([panel inputline]);
}
else
status = EXIT_FAILURE;
if(timeout) DPSRemoveTimedEntry(teNumber);
if (context) (void) [NXApp activate:context];
[panel free];
}
[NXApp free];
exit(status);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.