home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- *
- * xdbx - X Window System interface to dbx
- *
- * Copyright 1989, 1990 The University of Texas at Austin
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of The University of Texas
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission. The
- * University of Texas makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- *
- * THE UNIVERSITY OF TEXAS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE UNIVERSITY OF TEXAS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Po Cheung, The University of Texas at Austin
- * Created: March 10, 1989
- *
- *****************************************************************************/
-
- /* windows.c:
- *
- * CreateTitleBar() : Create title bar.
- * CreateFileLabel() : Create file label in file window.
- * CreateLineLabel() : Create line label in file window.
- * CreateFileWindow() : Create file window.
- * CreateMessageWindow() : Create message window.
- * CreateDisplayWindow() : Create display window.
- * CreateSubWindows() : Create the subwindows.
- * UpdateFileLabel() : Update file label.
- * UpdateLineLabel() : Update line label.
- * UpdateMessageWindow() : Update message window.
- */
-
- #include "global.h"
-
- Widget fileWindow, /* parent of fileLabel and lineLabel */
- messageWindow, /* window for displaying messages */
- separator, /* separator in vpane */
- displayWindow; /* area for displaying variables */
-
- static Widget fileLabel, /* filename of displayed text */
- lineLabel; /* line number of caret position */
-
- /*
- * Private routines for creating various subwindows for xdbx.
- */
-
- static void CreateFileLabel(parent)
- Widget parent;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) "No Source File"); n++;
- XtSetArg(args[n], XtNborderWidth, (XtArgVal) 0); n++;
- fileLabel = XtCreateManagedWidget("fileLabel", labelWidgetClass,
- parent, args, n);
- }
-
- static void CreateLineLabel(parent)
- Widget parent;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) ""); n++;
- XtSetArg(args[n], XtNborderWidth, (XtArgVal) 0); n++;
- XtSetArg(args[n], XtNfromHoriz, (XtArgVal) fileLabel); n++;
- XtSetArg(args[n], XtNhorizDistance, (XtArgVal) 0); n++;
- lineLabel = XtCreateManagedWidget("lineLabel", labelWidgetClass,
- parent, args, n);
- }
-
- static void CreateFileWindow(parent)
- Widget parent;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNshowGrip, (XtArgVal) False); n++;
- fileWindow = XtCreateManagedWidget("fileWindow", formWidgetClass,
- parent, args, n);
- CreateFileLabel(fileWindow);
- CreateLineLabel(fileWindow);
- }
-
- static void CreateMessageWindow(parent)
- Widget parent;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) ""); n++;
- XtSetArg(args[n], XtNjustify, (XtArgVal) XtJustifyLeft); n++;
- XtSetArg(args[n], XtNshowGrip, (XtArgVal) False); n++;
- messageWindow = XtCreateManagedWidget("messageWindow", labelWidgetClass,
- parent, args, n);
- }
-
- /* Create a window for displaying variables as specified by the display
- * command in dbx.
- */
- static void CreateDisplayWindow(parent)
- Widget parent;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNborderWidth, (XtArgVal) 0); n++;
- XtSetArg(args[n], XtNmin, (XtArgVal) 2); n++;
- XtSetArg(args[n], XtNmax, (XtArgVal) 2); n++;
- XtSetArg(args[n], XtNshowGrip, (XtArgVal) False); n++;
- separator = XtCreateWidget("", labelWidgetClass, parent, args, n);
-
- n = 0;
- XtSetArg(args[n], XtNeditType, (XtArgVal) XawtextRead); n++;
- displayWindow = XtCreateWidget("displayWindow", asciiTextWidgetClass,
- parent, args, n);
-
- if (app_resources.displayWindow) {
- XtManageChild(separator);
- XtManageChild(displayWindow);
- }
- }
-
-
- /* PUBLIC ROUTINES */
- /*
- * Top level function for creating all the xdbx subwindows.
- */
- void CreateSubWindows(parent)
- Widget parent;
- {
- Widget vpane; /* outer widget containing various subwindows */
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- vpane = XtCreateManagedWidget("vpane", panedWidgetClass, parent, args, n);
-
- CreateFileWindow(vpane);
- CreateSourceWindow(vpane);
- CreateMessageWindow(vpane);
- CreateCommandPanel(vpane);
- CreateDialogWindow(vpane);
- #ifndef BSD
- CreateDisplayWindow(vpane);
- #endif
- }
-
- /*
- * Routines for updating fields for the filename and line number
- * in the file window, and the execution status in the message window.
- */
-
- void UpdateFileLabel(string)
- char *string;
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) string); n++;
- XtSetValues(fileLabel, args, n);
- }
-
- void UpdateLineLabel(line)
- Cardinal line;
- {
- Arg args[MAXARGS];
- Cardinal n;
- char string[10];
-
- n = 0;
- if (line > 0)
- sprintf(string, "%d", line);
- else
- strcpy(string, "");
- XtSetArg(args[n], XtNlabel, (XtArgVal) string); n++;
- XtSetValues(lineLabel, args, n);
- }
-
- void UpdateMessageWindow(format, arg)
- char *format, *arg;
- {
- char message[LINESIZ], string[LINESIZ];
- Arg args[MAXARGS];
- Cardinal n;
-
- strcpy(message, " ");
- sprintf(string, format, arg);
- strcat(message, string);
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) message); n++;
- XtSetValues(messageWindow, args, n);
- }
-
- void ClearMessageWindow()
- {
- Arg args[MAXARGS];
- Cardinal n;
-
- n = 0;
- XtSetArg(args[n], XtNlabel, (XtArgVal) ""); n++;
- XtSetValues(messageWindow, args, n);
- }
-
-