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, planets, misc;
14 static Widget navlabel, weaplabel, planlabel, misclabel;
16 static String fallback[] = {
17 "*text.resizable: true",
18 "*text.resize: ResizeBoth",
21 "*text.autoFill: True",
22 "*text.scrollVertical: Always",
23 "*text.scrollHorizontal: WhenNeeded",
24 "*text.displayCaret: True",
25 "*navigation.fromVert: text",
26 "*navigation.borderWidth: 0",
27 "*navlabel.label: Navigation: ",
28 "*navlabel.borderWidth: 0",
29 "*weapons.fromVert: navigation",
30 "*weapons.borderWidth: 0",
31 "*weaplabel.label: Weapons: ",
32 "*weaplabel.borderWidth: 0",
33 "*planets.fromVert: weapons",
34 "*planets.borderWidth: 0",
35 "*planlabel.label: Planets: ",
36 "*planlabel.borderWidth: 0",
37 "*misc.fromVert: planets",
38 "*misc.borderWidth: 0",
39 "*misclabel.label: Miscellaneous:",
40 "*misclabel.borderWidth: 0",
46 void (*callback)(Widget, XtPointer, XtPointer);
53 static void quit_proc(Widget w, XtPointer client_data, XtPointer call_data)
55 XtDestroyApplicationContext (app_context);
59 static void noargs_proc(Widget w, XtPointer client_data, XtPointer call_data)
60 /* use this for commands that take no arguments */
62 /* currently a stub */
63 printf("Button %s pressed\n", XtName(w));
66 static struct cmd_t commands[] = {
67 {"Move", NULL, &navigation, 0},
68 {"Dock", noargs_proc, &navigation, 0},
69 {"Chart", noargs_proc, &navigation, 0},
70 {"Impulse", NULL, &navigation, 0},
71 {"Rest", NULL, &navigation, 0},
72 {"Warp", NULL, &navigation, 0},
73 {"Probe", NULL, &navigation, OPTION_PROBE},
75 {"Phasers", NULL, &weapons, 0},
76 {"Torpedo", NULL, &weapons, 0},
77 {"Shields", NULL, &weapons, 0},
78 {"Damages", noargs_proc, &weapons, 0},
79 {"Abandon", noargs_proc, &weapons, 0},
80 {"Destruct", noargs_proc, &weapons, 0},
81 {"Deathray", noargs_proc, &weapons, 0},
82 {"Mayday", noargs_proc, &weapons, 0},
84 {"Sensors", noargs_proc, &planets, OPTION_PLANETS},
85 {"Orbit", noargs_proc, &planets, OPTION_PLANETS},
86 {"Transport", noargs_proc, &planets, OPTION_PLANETS},
87 {"Mine", noargs_proc, &planets, OPTION_PLANETS},
88 {"Crystals", noargs_proc, &planets, OPTION_PLANETS},
89 {"Shuttle", noargs_proc, &planets, OPTION_PLANETS},
90 {"Planets", noargs_proc, &planets, OPTION_PLANETS},
92 {"Score", noargs_proc, &misc, 0},
93 {"Report", noargs_proc, &misc, 0},
94 {"Computer", noargs_proc, &misc, 0},
95 {"Save", NULL, &misc, 0},
96 {"Quit", quit_proc, &misc, 0},
97 {"Help", noargs_proc, &misc, 0},
100 static void instantiate_main(int argc, char **argv)
104 toplevel = XtVaOpenApplication(&app_context, "sst2k", NULL, 0, &argc,
106 applicationShellWidgetClass,
107 XtNallowShellResize, True, NULL);
108 form = XtVaCreateManagedWidget("form", formWidgetClass, toplevel, NULL);
109 /* the command window */
110 text = XtVaCreateManagedWidget("text",
111 asciiTextWidgetClass, form,
112 XtNeditType, XawtextEdit,
114 /* The button panels */
115 navigation = XtVaCreateManagedWidget("navigation",
116 boxWidgetClass, form,
117 XtNorientation, XtorientHorizontal,
119 navlabel = XtVaCreateManagedWidget("navlabel",
120 labelWidgetClass, navigation,
122 weapons = XtVaCreateManagedWidget("weapons",
123 boxWidgetClass, form,
124 XtNorientation, XtorientHorizontal,
126 weaplabel = XtVaCreateManagedWidget("weaplabel",
127 labelWidgetClass, weapons,
129 planets = XtVaCreateManagedWidget("planets",
130 boxWidgetClass, form,
131 XtNorientation, XtorientHorizontal,
133 planlabel = XtVaCreateManagedWidget("planlabel",
134 labelWidgetClass, planets,
137 misc = XtVaCreateManagedWidget("misc",
138 boxWidgetClass, form,
139 XtNorientation, XtorientHorizontal,
141 misclabel = XtVaCreateManagedWidget("misclabel",
142 labelWidgetClass, misc,
144 for (cp = commands; cp < commands + sizeof(commands)/sizeof(commands[0]); cp++) {
145 cp->widget = XtVaCreateManagedWidget(cp->name,
151 XtAddCallback (cp->widget, XtNcallback, cp->callback, NULL);
153 XtRealizeWidget(toplevel);
154 XtAppMainLoop(app_context);
155 /* loop may be interrupted */
156 XtDestroyApplicationContext(app_context);
159 int main(int argc, char **argv)
161 instantiate_main(argc, argv);