|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 8506 (0x213a) Types: TextFile Notes: UNIX file Names: »motifgif.c«
└─⟦a85bd4a7c⟧ Bits:30004636/disk2.imd INTERACTIVE Motif Environment Development System └─⟦a85bd4a7c⟧ UNIX Filesystem └─⟦this⟧ »xt/new/usr/lib/X11/examples/motifgif/motifgif.c«
#ifdef REV_INFO #ifndef lint static char SCCSID[] = "OSF/Motif: @(#)motifgif.c 1.1 - 89/08/30 - 11:52:29"; #endif /* lint */ #endif /* REV_INFO */ /**************************************************************************** **************************************************************************** ** ** File: motifgif.c ** ** Project: Motif - gif file display program ** Written by Peter Levine, OSF. ** ** NOTE: This program is boiler-plate which calls pict ** to actually display the picture... ** ** (c) Copyright 1989 by Open Software Foundation, Inc. ** All Rights Reserved. ** ** **************************************************************************** ****************************************************************************/ /*************************************************** * * * Revision history: * * * * 07/4/89 pjlevine * * ****************************************************/ #include "motifgif.h" #define STRING_OFFSET 14 int dialog_up = 1; static XtResourceList resource; char filename [256]; /***********************************************************/ void Quit() { printf("exiting...\n\r"); fflush(stdout); exit(0); } /***********************************************************/ /* Quit */ /**********************************************************/ XtCallbackProc MenuQuit (w, client_data, call_data) Widget w; caddr_t client_data, call_data; { exit (0); } /***********************************************************/ /* displayed on file selection */ /**********************************************************/ XtCallbackProc ShowFiles (w, client_data, call_data) Widget w; caddr_t client_data, call_data; { XtManageChild (FileDialog); XtManageChild (FileSelection); } /***********************************************************/ /* displayed on OK file selection */ /***********************************************************/ XtCallbackProc FileSelectOK (w, client_data, callback_data) Widget w; char *client_data; XmSelectionBoxCallbackStruct *callback_data; { char *textstr, *extract_normal_string (); int i; char *buffer, *GetSource (); char *filebuff; filebuff = (char *) calloc (1, 256); textstr = extract_normal_string (callback_data->value); strcpy (filebuff, "pict -nsc "); strcat (filebuff, textstr); strcat (filebuff, " &"); system (filebuff); } /***********************************************************/ Widget CreateCascade (label, mnemonic, submenu, parent) char *label, mnemonic; Widget submenu, parent; { Widget widget; int n; Arg args[MAX_ARGS]; XmString tcs; n = 0; tcs = XmStringLtoRCreate (label, XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNlabelString, tcs); n++; XtSetArg(args[n], XmNmnemonic, mnemonic); n++; XtSetArg(args[n], XmNsubMenuId, submenu); n++; widget = XmCreateCascadeButton (parent, "cascade", args, n); XtManageChild(widget); XmStringFree(tcs); return (widget); } /***********************************************************/ Widget CreateDialogShell (parent, say, x, y) Widget parent; char *say; Cardinal x, y; { static Widget widget; int n; Arg args[MAX_ARGS]; n = 0; XtSetArg(args[n], XmNwidth, 400); n++; XtSetArg(args[n], XmNheight, 400); n++; XtSetArg(args[n], XmNx, x); n++; XtSetArg(args[n], XmNy, y); n++; widget = XmCreateDialogShell (parent, say, args, n); return (widget); } /***********************************************************/ Widget CreateFileSelection (parent, name) Widget parent; char *name; { static Widget widget; int n; Arg args[MAX_ARGS]; XmString tcs; n = 0; tcs = XmStringLtoRCreate ("*.gif", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNdirMask, tcs); n++; widget = XmCreateFileSelectionBox (parent, name, args, n); XmStringFree(tcs); XtAddCallback (widget, XmNokCallback, FileSelectOK, NULL); return (widget); } /***********************************************************/ Widget CreatePushButton (label, mnemonic, parent) char *label, mnemonic; Widget parent; { static Widget widget; int n; Arg args[MAX_ARGS]; XmString tcs, acc_text; n = 0; tcs = XmStringLtoRCreate(label, XmSTRING_DEFAULT_CHARSET); acc_text = XmStringLtoRCreate("^A", XmSTRING_DEFAULT_CHARSET); XtSetArg(args[n], XmNmnemonic, mnemonic); n++; /* if default, extra border */ if (bit_flag & DEFAULT) { XtSetArg(args[n], XmNshowAsDefault, 1); n++; } /* if there is an accelerator associated with the button */ if (bit_flag & ACCEL) { XtSetArg(args[n], XmNaccelerator, "Ctrl<Key>A"); n++; XtSetArg(args[n], XmNacceleratorText, acc_text);n++; } /* if the button is inactive; greyed out */ if (bit_flag & INACTIVE) { XtSetArg(args[n], XmNsensitive, False); n++; } widget = XmCreatePushButton(parent, label, args, n); XtManageChild(widget); XmStringFree(tcs); if (bit_flag & ACCEL) XmStringFree(acc_text); bit_flag = BITSOFF; return(widget); } /***************************************************************/ void main(argc, argv) int argc; char **argv; { register int n; Arg args[MAX_ARGS]; int num_items; Widget Dummy; Widget XmCreateScrolledText (); /* this will be the contents of the dialog selection box */ XmString *addrstr, *GetWidgetHierarchy ();; MenuBar = (Widget) NULL; signal(SIGHUP, Quit); signal(SIGINT, Quit); signal(SIGQUIT, Quit); XtToolkitInitialize(); if ((display = XtOpenDisplay (NULL, NULL, argv[1], "XMclient", NULL, 0, &argc, argv)) == NULL) { fprintf (stderr,"\n%s: Can't open display\n", argv[0]); exit(1); } strcpy (filename, argv[0]); strcat (filename, ".c"); printf ("filename = %s\n", filename); n = 0; XtSetArg(args[n], XmNwidth, WIDTH); n++; XtSetArg(args[n], XmNheight, HEIGHT); n++; XtSetArg(args[n], XmNallowShellResize, True); n++; Shell = XtAppCreateShell(argv[0], NULL, applicationShellWidgetClass, display, args, n); n = 0; MainWindow = XmCreateMainWindow(Shell, "MainWindow", args, n); XtManageChild(MainWindow); WorkRegion = XmCreateBulletinBoard (MainWindow, "s_text", args, n); XtManageChild (WorkRegion); CreateMenuBar (); FileDialog = CreateDialogShell (Shell, "Picture Selection Window",300,300); FileSelection = CreateFileSelection (FileDialog, "Select File"); XtRealizeWidget(Shell); XtMainLoop(); } /***********************************************************/ CreateMenuBar () { int n; Arg args[MAX_ARGS]; /* ** the menubar */ n = 0; MenuBar = (Widget) XmCreateMenuBar ((Widget) MainWindow, "MenuBar", args, n); if (MenuBar == NULL) { printf ("null menu bar\n\r"); exit (0); } XtManageChild(MenuBar); /* create the first level pulldowns */ n = 0; PullDown1 = XmCreatePulldownMenu (MenuBar, "File", args, n); PullDown2 = XmCreatePulldownMenu (MenuBar, "Show", args, n); /* create cascade buttons for menubar */ MenuBtn1 = CreateCascade ("File", 'F', PullDown1, MenuBar); MenuBtn2 = CreateCascade ("Show", 'S', PullDown2, MenuBar); /* ** Menu1 */ Label1A = CreatePushButton ("Quit",'1',PullDown1); XtAddCallback (Label1A, XmNactivateCallback, MenuQuit, NULL); Label2A = CreatePushButton ("Show Files",'1',PullDown2); XtAddCallback (Label2A, XmNactivateCallback, ShowFiles, NULL); } /* support routine to get normal string from XmString */ char *extract_normal_string(cs) XmString cs; { XmStringContext context; XmStringCharSet charset; XmStringDirection direction; Boolean separator; static char *primitive_string; XmStringInitContext (&context,cs); XmStringGetNextSegment (context,&primitive_string, &charset,&direction,&separator); XmStringFreeContext (context); return ((char *) primitive_string); }