7
#include <Xm/RowColumn.h>
8
#include <Xm/DrawingA.h>
10
#include <Xm/CascadeB.h>
11
#include <Xm/MessageB.h>
12
#include <Xm/SelectioB.h>
15
extern Widget scorebox, highscorebox;
17
Widget CreateMenuBar(const char *name, Widget parent) {
20
menubar = XmCreateMenuBar(parent, name, NULL, 0);
21
XtManageChild(menubar);
22
for (j=0; j<menu.size; j++) {
23
menu.submenu[j].pulldown = XmCreatePulldownMenu(menubar,
25
temp = XtVaCreateManagedWidget(menu.submenu[j].name,
26
xmCascadeButtonWidgetClass, menubar,
27
XmNsubMenuId, menu.submenu[j].pulldown, NULL);
28
for (i=0; i<menu.submenu[j].size; i++) {
29
temp = XtCreateManagedWidget(
30
menu.submenu[j].button[i].name,
31
xmPushButtonWidgetClass,
32
menu.submenu[j].pulldown, NULL, 0);
33
XtAddCallback (temp, XmNactivateCallback,
34
(XtCallbackProc)popup,
35
menu.submenu[j].button[i].dialog);
41
Widget CreatePixmapBox(const char *name, Widget parent, Pixmap pixmap,
47
mstr = XmStringCreateLtoR("", XmSTRING_DEFAULT_CHARSET);
48
XtSetArg(wargs[0], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL);
49
XtSetArg(wargs[1], XmNmessageString, mstr);
50
dialog = XmCreateMessageDialog(parent, name, wargs, 2);
52
base = CreateRowCol("", dialog);
54
XtVaCreateManagedWidget("", xmLabelWidgetClass, base, XmNlabelType,
55
XmPIXMAP, XmNlabelPixmap, game.logo.pix, NULL);
57
if (pixmap) XtVaCreateManagedWidget("", xmLabelWidgetClass, base,
58
XmNlabelType, XmPIXMAP, XmNlabelPixmap, pixmap, NULL);
61
mstr = XmStringCreateLtoR(text, XmSTRING_DEFAULT_CHARSET);
62
XtVaCreateManagedWidget(text, xmLabelWidgetClass, base,
63
XmNlabelString, mstr, NULL);
67
XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON));
68
XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON));
69
XtAddCallback(XtParent(dialog), XtNpopdownCallback,
70
(XtCallbackProc) popdown, NULL);
74
void warp_apply (Widget w, Widget text, XtPointer client_data) {
77
str = XmTextGetString(text);
80
game.warp_to_level(i);
83
void enter_name (Widget w, Widget text, XtPointer client_data) {
85
str = XmTextGetString(text);
86
if (!str[0]) strcpy(str, "Anonymous");
87
else if ((nl = strchr(str,'\n'))) *nl=0;
88
if (strlen(str)>20) str[20] = 0; /* truncate string if too long */
93
Widget CreateEnterText (const char *name, Widget parent, const char *text,
94
XtCallbackProc callback)
98
XmString mstr = XmStringCreateLtoR(text, XmSTRING_DEFAULT_CHARSET);
99
XtSetArg(wargs[0], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL);
100
XtSetArg(wargs[1], XmNselectionLabelString, mstr);
101
dialog = XmCreatePromptDialog(parent, name, wargs, 2);
102
XtUnmanageChild(XmSelectionBoxGetChild(dialog, XmDIALOG_HELP_BUTTON));
103
XtUnmanageChild(XmSelectionBoxGetChild(dialog, XmDIALOG_APPLY_BUTTON));
104
XtAddCallback(dialog, XmNokCallback, callback,
105
XmSelectionBoxGetChild(dialog, XmDIALOG_TEXT));
106
XtAddCallback(XtParent(dialog), XtNpopdownCallback, popdown, NULL);
110
Widget CreateDialog (const char *name, Widget parent, int buttonmask,
111
Pixmap icon, const char *text, const char *buttonlabel, XtCallbackProc
116
XmString mstr = XmStringCreateLtoR(text, XmSTRING_DEFAULT_CHARSET);
117
XtSetArg(wargs[0], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL);
118
XtSetArg(wargs[1], XmNmessageString, mstr);
119
dialog = XmCreateMessageDialog(parent, name, wargs, 2);
120
if (icon) XtVaSetValues(dialog, XmNsymbolPixmap, icon, NULL);
122
if (!(buttonmask&CANCEL))
123
XtUnmanageChild(XmMessageBoxGetChild(dialog,
124
XmDIALOG_CANCEL_BUTTON));
125
XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON));
127
mstr=XmStringCreateLtoR(buttonlabel, XmSTRING_DEFAULT_CHARSET);
128
XtVaSetValues(XmMessageBoxGetChild(dialog, XmDIALOG_OK_BUTTON),
129
XmNlabelString, mstr, NULL);
132
if (callback) XtAddCallback(dialog, XmNokCallback, callback, NULL);
133
XtAddCallback(XtParent(dialog), XtNpopdownCallback, popdown, NULL);
137
Widget CreateDrawingArea(const char *name, Widget parent, int width,
140
return XtVaCreateManagedWidget(name, xmDrawingAreaWidgetClass, parent,
141
XtNwidth, width, XtNheight, height, XmNresizePolicy, FALSE,
145
void UI::update_hsbox(char *str) {
146
XmString mstr = XmStringCreateLtoR(str, XmSTRING_DEFAULT_CHARSET);
148
XmMessageBoxGetChild(highscorebox, XmDIALOG_MESSAGE_LABEL),
149
XmNlabelString, mstr, NULL);
153
void UI::update_scorebox(int level, int score) {
156
sprintf (str, "After Level %d:\nYour score: %d", level, score);
157
mstr = XmStringCreateLtoR(str, XmSTRING_DEFAULT_CHARSET);
158
XtVaSetValues (XmMessageBoxGetChild(scorebox, XmDIALOG_MESSAGE_LABEL),
159
XmNlabelString, mstr, NULL);
163
Widget CreateRowCol(const char *name, Widget parent) {
164
return XtCreateManagedWidget(name, xmRowColumnWidgetClass, parent,