~ubuntu-branches/ubuntu/edgy/xbill/edgy

« back to all changes in this revision

Viewing changes to x11-motif.cc

  • Committer: Bazaar Package Importer
  • Author(s): Adrian Bridgett
  • Date: 2004-09-07 09:52:14 UTC
  • mfrom: (2.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20040907095214-d0m46ojc8f7upuqm
Tags: 2.1-4
maintainer upload of NMU - many thanks Tollef (closes: #268885) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include "objects.h"
2
 
#include "x11.h"
3
 
#include "menu.h"
4
 
 
5
 
#include <Xm/Xm.h>
6
 
#include <Xm/Label.h>
7
 
#include <Xm/RowColumn.h>
8
 
#include <Xm/DrawingA.h>
9
 
#include <Xm/PushB.h>
10
 
#include <Xm/CascadeB.h>
11
 
#include <Xm/MessageB.h>
12
 
#include <Xm/SelectioB.h>
13
 
#include <Xm/Text.h>
14
 
 
15
 
extern Widget scorebox, highscorebox;
16
 
 
17
 
Widget CreateMenuBar(const char *name, Widget parent) {
18
 
        int i, j;
19
 
        Widget menubar, temp;
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,
24
 
                        "menu", NULL, 0);
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);
36
 
                }
37
 
        }
38
 
        return menubar;
39
 
}
40
 
 
41
 
Widget CreatePixmapBox(const char *name, Widget parent, Pixmap pixmap,
42
 
        const char *text)
43
 
{
44
 
        Arg wargs[2];
45
 
        XmString mstr;
46
 
        Widget dialog, base;
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);
51
 
 
52
 
        base = CreateRowCol("", dialog);
53
 
 
54
 
        XtVaCreateManagedWidget("", xmLabelWidgetClass, base, XmNlabelType,
55
 
                XmPIXMAP, XmNlabelPixmap, game.logo.pix, NULL);
56
 
 
57
 
        if (pixmap) XtVaCreateManagedWidget("", xmLabelWidgetClass, base,
58
 
                XmNlabelType, XmPIXMAP, XmNlabelPixmap, pixmap, NULL);
59
 
 
60
 
        if (text) {
61
 
                mstr = XmStringCreateLtoR(text, XmSTRING_DEFAULT_CHARSET);
62
 
                XtVaCreateManagedWidget(text, xmLabelWidgetClass, base,
63
 
                        XmNlabelString, mstr, NULL);
64
 
                XmStringFree(mstr);
65
 
        }
66
 
 
67
 
        XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_CANCEL_BUTTON));
68
 
        XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON));
69
 
        XtAddCallback(XtParent(dialog), XtNpopdownCallback,
70
 
                (XtCallbackProc) popdown, NULL);
71
 
        return dialog;
72
 
}
73
 
 
74
 
void warp_apply (Widget w, Widget text, XtPointer client_data) {
75
 
        char *str;
76
 
        int i;
77
 
        str = XmTextGetString(text);
78
 
        i=atoi(str);
79
 
        XtFree(str);
80
 
        game.warp_to_level(i);
81
 
}
82
 
 
83
 
void enter_name (Widget w, Widget text, XtPointer client_data) {
84
 
        char *str, *nl;
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 */
89
 
        scores.recalc(str);
90
 
        XtFree(str);
91
 
}
92
 
 
93
 
Widget CreateEnterText (const char *name, Widget parent, const char *text,
94
 
        XtCallbackProc callback)
95
 
{
96
 
        Widget dialog;
97
 
        Arg wargs[2];
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);
107
 
        return dialog;
108
 
}
109
 
 
110
 
Widget CreateDialog (const char *name, Widget parent, int buttonmask,
111
 
        Pixmap icon, const char *text, const char *buttonlabel, XtCallbackProc
112
 
        callback)
113
 
{
114
 
        Widget dialog;
115
 
        Arg wargs[2];
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);
121
 
        XmStringFree(mstr);
122
 
        if (!(buttonmask&CANCEL))
123
 
                XtUnmanageChild(XmMessageBoxGetChild(dialog,
124
 
                        XmDIALOG_CANCEL_BUTTON));
125
 
        XtUnmanageChild(XmMessageBoxGetChild(dialog, XmDIALOG_HELP_BUTTON));
126
 
        if (buttonlabel) {
127
 
                mstr=XmStringCreateLtoR(buttonlabel, XmSTRING_DEFAULT_CHARSET);
128
 
                XtVaSetValues(XmMessageBoxGetChild(dialog, XmDIALOG_OK_BUTTON),
129
 
                        XmNlabelString, mstr, NULL);
130
 
                XmStringFree(mstr);
131
 
        }
132
 
        if (callback) XtAddCallback(dialog, XmNokCallback, callback, NULL);
133
 
        XtAddCallback(XtParent(dialog), XtNpopdownCallback, popdown, NULL);
134
 
        return dialog;
135
 
}
136
 
 
137
 
Widget CreateDrawingArea(const char *name, Widget parent, int width,
138
 
        int height)
139
 
{
140
 
        return XtVaCreateManagedWidget(name, xmDrawingAreaWidgetClass, parent,
141
 
                XtNwidth, width, XtNheight, height, XmNresizePolicy, FALSE,
142
 
                NULL);
143
 
}
144
 
 
145
 
void UI::update_hsbox(char *str) {
146
 
        XmString mstr = XmStringCreateLtoR(str, XmSTRING_DEFAULT_CHARSET);
147
 
        XtVaSetValues (
148
 
                XmMessageBoxGetChild(highscorebox, XmDIALOG_MESSAGE_LABEL),
149
 
                XmNlabelString, mstr, NULL);
150
 
        XmStringFree(mstr);
151
 
}
152
 
 
153
 
void UI::update_scorebox(int level, int score) {
154
 
        char str[40];
155
 
        XmString mstr;
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);
160
 
        XmStringFree(mstr);
161
 
}
162
 
 
163
 
Widget CreateRowCol(const char *name, Widget parent) {
164
 
        return XtCreateManagedWidget(name, xmRowColumnWidgetClass, parent,
165
 
                NULL, 0);
166
 
}
167