diff options
Diffstat (limited to 'support/hypertex/tanmoy/ghostview-1.5-hacked/dialogs.c')
-rw-r--r-- | support/hypertex/tanmoy/ghostview-1.5-hacked/dialogs.c | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/support/hypertex/tanmoy/ghostview-1.5-hacked/dialogs.c b/support/hypertex/tanmoy/ghostview-1.5-hacked/dialogs.c new file mode 100644 index 0000000000..2dbc5d1b59 --- /dev/null +++ b/support/hypertex/tanmoy/ghostview-1.5-hacked/dialogs.c @@ -0,0 +1,195 @@ +/* + * dialogs.c -- Dialog box for ghostview. + * Copyright (C) 1992 Timothy O. Theisen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Author: Tim Theisen Systems Programmer + * Internet: tim@cs.wisc.edu Department of Computer Sciences + * UUCP: uwvax!tim University of Wisconsin-Madison + * Phone: (608)262-0438 1210 West Dayton Street + * FAX: (608)262-9777 Madison, WI 53706 + */ + +#include <X11/Intrinsic.h> +#include <X11/StringDefs.h> +#include <X11/Xos.h> +#include <X11/Xaw/Cardinals.h> +#include <X11/Xaw/Form.h> +#include <X11/Xaw/Label.h> +#include <X11/Xaw/AsciiText.h> +#include <X11/Xaw/Command.h> +#include "gv.h" + +static String okay_accelerators = + "#override\n\ + <Key>Return: set() notify() unset()\n"; + +/* Create a dialog widget */ +/* It is just a form widget with + * a label prompt + * a text response + * an oky button + * a cancel button */ +Widget +CreateDialog(parent, name, okay_callback, cancel_callback) + Widget parent; + String name; + XtCallbackProc okay_callback; + XtCallbackProc cancel_callback; +{ + Widget form, prompt, response, okay, cancel; + Arg args[20]; + Cardinal num_args; + + form = XtCreateManagedWidget(name, formWidgetClass, parent, NULL, ZERO); + + num_args = 0; + XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNresizable, True); num_args++; + XtSetArg(args[num_args], XtNborderWidth, 0); num_args++; + prompt = XtCreateManagedWidget("prompt", labelWidgetClass, + form, args, num_args); + + num_args = 0; + XtSetArg(args[num_args], XtNfromVert, prompt); num_args++; + XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNresizable, True); num_args++; + XtSetArg(args[num_args], XtNeditType, XawtextEdit); num_args++; + XtSetArg(args[num_args], XtNresize, XawtextResizeWidth); num_args++; + XtSetArg(args[num_args], XtNstring, ""); num_args++; + response = XtCreateManagedWidget("response", asciiTextWidgetClass, + form, args, num_args); + + num_args = 0; + XtSetArg(args[num_args], XtNfromVert, response); num_args++; + XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNresizable, True); num_args++; + XtSetArg(args[num_args], XtNaccelerators, + XtParseAcceleratorTable(okay_accelerators)); num_args++; + okay = XtCreateManagedWidget("okay", commandWidgetClass, + form, args, num_args); + XtAddCallback(okay, XtNcallback, okay_callback, form); + + num_args = 0; + XtSetArg(args[num_args], XtNfromVert, response); num_args++; + XtSetArg(args[num_args], XtNfromHoriz, okay); num_args++; + XtSetArg(args[num_args], XtNtop, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNbottom, XtChainTop); num_args++; + XtSetArg(args[num_args], XtNleft, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNright, XtChainLeft); num_args++; + XtSetArg(args[num_args], XtNresizable, True); num_args++; + cancel = XtCreateManagedWidget("cancel", commandWidgetClass, + form, args, num_args); + XtAddCallback(cancel, XtNcallback, cancel_callback, parent); + + XtInstallAccelerators(response, okay); + XtSetKeyboardFocus(form, response); + + return form; +} + +/* get the prompt from the dialog box. Used a startup time to + * save away the initial prompt */ +String +GetDialogPrompt(w) + Widget w; +{ + Arg args[1]; + Widget label; + String s; + + label = XtNameToWidget(w, "prompt"); + XtSetArg(args[0], XtNlabel, &s); + XtGetValues(label, args, ONE); + return XtNewString(s); +} + +/* set the prompt. This is used to put error information in the prompt */ +void +SetDialogPrompt(w, newprompt) + Widget w; + String newprompt; +{ + Arg args[1]; + Widget label; + + label = XtNameToWidget(w, "prompt"); + XtSetArg(args[0], XtNlabel, newprompt); + XtSetValues(label, args, ONE); +} + +/* get what the user typed */ +String +GetDialogResponse(w) + Widget w; +{ + Arg args[1]; + Widget response; + String s; + + response = XtNameToWidget(w, "response"); + XtSetArg(args[0], XtNstring, &s); + XtGetValues(response, args, ONE); + return XtNewString(s); +} + +/* set the default reponse */ +void +SetDialogResponse(w, s) + Widget w; + String s; +{ + Arg args[3]; + Widget response; + XFontStruct *font; + Dimension width, leftMargin, rightMargin; + + response = XtNameToWidget(w, "response"); + XtSetArg(args[0], XtNfont, &font); + XtSetArg(args[1], XtNleftMargin, &leftMargin); + XtSetArg(args[2], XtNrightMargin, &rightMargin); + XtGetValues(response, args, THREE); + width = font->max_bounds.width * strlen(s) + leftMargin + rightMargin; + + XtSetArg(args[0], XtNstring, s); + XtSetArg(args[1], XtNwidth, width); + XtSetValues(response, args, TWO); + XawTextSetInsertionPoint(response, strlen(s)); + +} + +/* clear the response */ +void +ClearDialogResponse(w) + Widget w; +{ + Arg args[2]; + Widget response; + + response = XtNameToWidget(w, "response"); + XtSetArg(args[0], XtNstring, ""); + XtSetArg(args[1], XtNwidth, 100); + XtSetValues(response, args, TWO); +} |