2 #include <X11/Intrinsic.h>
3 #include <X11/StringDefs.h>
5 #include <X11/Xaw/Box.h>
6 #include <X11/Xaw/Form.h>
7 #include <X11/Xaw/Command.h>
8 #include <X11/Xaw/AsciiText.h>
11 static XtAppContext app_context;
12 static Widget toplevel, text, form;
13 static Widget navigation, weapons, status, planets, misc;
14 static Widget navlabel, weaplabel, statlabel, planlabel, misclabel;
16 static String fallback[] = {
17 /* text window resources */
18 "*text.resizable: true",
19 "*text.resize: ResizeBoth",
25 void (*callback)(Widget, XtPointer, XtPointer);
32 static void quit_proc(Widget w, XtPointer client_data, XtPointer call_data)
34 XtDestroyApplicationContext (app_context);
38 static void noargs_proc(Widget w, XtPointer client_data, XtPointer call_data)
39 /* use this for commands that take no arguments */
41 /* currently a stub */
44 static struct cmd_t commands[] = {
45 {"Move", NULL, &navigation, 0},
46 {"Dock", noargs_proc, &navigation, 0},
47 {"Chart", noargs_proc, &navigation, 0},
48 {"Impulse", NULL, &navigation, 0},
49 {"Rest", NULL, &navigation, 0},
50 {"Warp", NULL, &navigation, 0},
51 {"Probe", NULL, &navigation, OPTION_PROBE},
53 {"Phasers", NULL, &weapons, 0},
54 {"Torpedo", NULL, &weapons, 0},
55 {"Shields", NULL, &weapons, 0},
56 {"Damages", noargs_proc, &weapons, 0},
57 {"Abandon", noargs_proc, &weapons, 0},
58 {"Destruct", noargs_proc, &weapons, 0},
59 {"Deathray", noargs_proc, &weapons, 0},
60 {"Mayday", noargs_proc, &weapons, 0},
62 {"Score", noargs_proc, &status, 0},
63 {"Report", noargs_proc, &status, 0},
64 {"Computer", noargs_proc, &status, 0},
66 {"Sensors", noargs_proc, &planets, OPTION_PLANETS},
67 {"Orbit", noargs_proc, &planets, OPTION_PLANETS},
68 {"Transport", noargs_proc, &planets, OPTION_PLANETS},
69 {"Mine", noargs_proc, &planets, OPTION_PLANETS},
70 {"Crystals", noargs_proc, &planets, OPTION_PLANETS},
71 {"Shuttle", noargs_proc, &planets, OPTION_PLANETS},
72 {"Planets", noargs_proc, &planets, OPTION_PLANETS},
74 {"Emexit", noargs_proc, &misc, 0},
75 {"Save", NULL, &misc, 0},
76 {"Quit", quit_proc, &misc, 0},
77 {"Help", noargs_proc, &misc, 0},
81 #define TEXTHEIGHT 200
83 int main(int argc, char **argv)
87 toplevel = XtVaOpenApplication(&app_context, "sst2k", NULL, 0, &argc,
89 applicationShellWidgetClass,
90 XtNallowShellResize, True, NULL);
91 form = XtVaCreateManagedWidget("form", formWidgetClass, toplevel, NULL);
92 /* the command window */
93 text = XtVaCreateManagedWidget("text", asciiTextWidgetClass, form,
94 XtNwidth, MAXWIDTH, XtNheight, TEXTHEIGHT,
96 XtVaSetValues(text, XtNeditType,XawtextRead, XtNdisplayCaret,False, NULL);
97 /* The button panels */
98 navigation = XtVaCreateManagedWidget("navigation",
102 XtNorientation, XtorientHorizontal,
104 navlabel = XtVaCreateManagedWidget("Navigation: ",
105 labelWidgetClass, navigation,
108 weapons = XtVaCreateManagedWidget("weapons",
109 boxWidgetClass, form,
111 XtNfromVert, navigation,
112 XtNorientation, XtorientHorizontal,
114 weaplabel = XtVaCreateManagedWidget("Weapons: ",
115 labelWidgetClass, weapons,
118 status = XtVaCreateManagedWidget("status",
119 boxWidgetClass, form,
121 XtNfromVert, weapons,
122 XtNorientation, XtorientHorizontal,
124 statlabel = XtVaCreateManagedWidget("Status: ",
125 labelWidgetClass, status,
128 planets = XtVaCreateManagedWidget("planets",
129 boxWidgetClass, form,
132 XtNorientation, XtorientHorizontal,
134 planlabel = XtVaCreateManagedWidget("Planets: ",
135 labelWidgetClass, planets,
138 misc = XtVaCreateManagedWidget("misc",
139 boxWidgetClass, form,
141 XtNfromVert, planets,
142 XtNorientation, XtorientHorizontal,
144 misclabel = XtVaCreateManagedWidget("Miscellaneous:",
145 labelWidgetClass, misc,
148 for (cp = commands; cp < commands + sizeof(commands)/sizeof(commands[0]); cp++) {
149 cp->widget = XtVaCreateManagedWidget(cp->name,
155 XtAddCallback (cp->widget, XtNcallback, cp->callback, NULL);
157 XtRealizeWidget(toplevel);
158 XtAppMainLoop(app_context);
159 /* loop may be interrupted */
160 XtDestroyApplicationContext(app_context);