Some compile fixes, not enough
[erwise] / Ui / UiControlPanel.c
1 static char *rcsid = "$Id$";
2
3 #include "UiIncludes.h"
4
5 static Widget uicreatecpform();
6 static Widget
7  uicreatecpbutton(Widget parentwdg, char *name, char *actionname,
8                    int leftpos, int rightpos);
9 static Widget uicreatecpclosebutton(Widget parentwdg);
10 static Widget uicreatecplabel(Widget parentwdg, Widget rightwdg);
11 static Widget uicreatecplist(Widget parentwdg, Widget bottomwdg,
12                               Widget topwdg);
13 static void uicpclosecb(char *address, HText_t * htext,
14                          HTextObject_t * htextobject, void *parameter);
15 static void uicpclickcb(Widget wdg, caddr_t ignored,
16                          XmListCallbackStruct * calldata);
17
18
19 uiTopLevel_t uiTopLevel;
20
21
22 int UiDisplayControlPanel()
23 {
24     ArgList args;
25     Cardinal nargs;
26     uiTopLevelGfx_t *topgfx = &uiTopLevel.TopGfx;
27     uiControlPanelGfx_t *controlpanelgfx = &uiTopLevel.ControlPanelGfx;
28
29     if (controlpanelgfx->FormWdg) {
30         XtMapWidget(XtParent(controlpanelgfx->FormWdg));
31
32         uiWidgetPlacement(XtParent(controlpanelgfx->FormWdg),
33                         uiTopLevel.GlobalSettings.ControlPanelPlacement);
34
35         return UI_OK;
36     }
37     args = uiVaSetArgs(&nargs,
38                        XmNwidth, 280,
39                        XmNheight, 180,
40                        XmNresizePolicy, XmRESIZE_NONE,
41                        XmNautoUnmanage, FALSE, NULL);
42     controlpanelgfx->FormWdg = uicreatecpform();
43     controlpanelgfx->SearchWdg = uicreatecpbutton(controlpanelgfx->FormWdg,
44                                               "Search", "Search", 0, 25);
45     controlpanelgfx->HomeWdg = uicreatecpbutton(controlpanelgfx->FormWdg,
46                                                 "Home", "Home", 25, 50);
47     controlpanelgfx->RecallWdg = uicreatecpbutton(controlpanelgfx->FormWdg,
48                                              "Recall", "Recall", 50, 75);
49     controlpanelgfx->CloseWdg = uicreatecpbutton(controlpanelgfx->FormWdg,
50                                                  "Close\nhierarchy",
51                                              "Close hierarchy", 75, 100);
52     controlpanelgfx->DialogCloseWdg =
53         uicreatecpclosebutton(controlpanelgfx->FormWdg);
54     controlpanelgfx->LabelWdg =
55         uicreatecplabel(controlpanelgfx->FormWdg,
56                         controlpanelgfx->DialogCloseWdg);
57     controlpanelgfx->ListWdg = uicreatecplist(controlpanelgfx->FormWdg,
58                                               controlpanelgfx->SearchWdg,
59                                         controlpanelgfx->DialogCloseWdg);
60     XtManageChild(controlpanelgfx->FormWdg);
61     XtRealizeWidget(XtParent(controlpanelgfx->FormWdg));
62
63     uiWidgetPlacement(XtParent(controlpanelgfx->FormWdg),
64                       uiTopLevel.GlobalSettings.ControlPanelPlacement);
65
66     return UI_OK;
67 }
68
69
70 void uiControlPanelUpdateDialog()
71 {
72     if (uiTopLevel.ControlPanelGfx.FormWdg) {
73         if (uiPageInfo.CurrentPage) {
74         } else
75             XtUnmapWidget(XtParent(uiTopLevel.ControlPanelGfx.FormWdg));
76     }
77 }
78
79
80 static Widget
81  uicreatecpform()
82 {
83     ArgList args;
84     Cardinal nargs;
85     Widget formwdg;
86     Widget topwdg;
87
88     topwdg = XtCreateApplicationShell("ControlPanel",
89                                       topLevelShellWidgetClass,
90                                       NULL, 0);
91     XtVaSetValues(topwdg,
92                   XmNtitle, UI_CONTROL_TITLE, NULL);
93
94     args = uiVaSetArgs(&nargs,
95                        XmNresizePolicy, XmRESIZE_NONE,
96                        XmNautoUnmanage, FALSE, NULL);
97     formwdg = XmCreateForm(topwdg, "ControlPanel", args, nargs);
98
99     return formwdg;
100 }
101
102
103 static Widget
104  uicreatecpbutton(parentwdg, name, actionname, leftpos, rightpos)
105 Widget parentwdg;
106 char *name;
107 char *actionname;
108 int leftpos;
109 int rightpos;
110 {
111     Widget tmpwdg;
112     uiActionData_t *actiondata = uiMalloc(sizeof(*actiondata));
113
114     tmpwdg = XmCreatePushButtonGadget(parentwdg, name,
115                                       (ArgList) NULL, 0);
116     XtVaSetValues(tmpwdg,
117                   XmNheight, 65,
118                   XmNtopAttachment, XmATTACH_FORM,
119                   XmNleftAttachment, XmATTACH_POSITION,
120                   XmNleftPosition, leftpos,
121                   XmNrightAttachment, XmATTACH_POSITION,
122                   XmNrightPosition, rightpos, NULL);
123     actiondata->ActionName = actionname;
124     actiondata->Page = uiPageInfo.CurrentPage;
125     XtAddCallback(tmpwdg, XmNactivateCallback,
126               (XtCallbackProc) uiDialogActivateCB, (caddr_t) actiondata);
127     XtManageChild(tmpwdg);
128
129     return tmpwdg;
130 }
131
132
133 static Widget
134  uicreatecpclosebutton(parentwdg)
135 Widget parentwdg;
136 {
137     Widget tmpwdg;
138     static uiActionData_t actiondata;
139
140     tmpwdg = XmCreatePushButtonGadget(parentwdg, "Close", (ArgList) NULL, 0);
141     XtVaSetValues(tmpwdg,
142                   XmNwidth, 70,
143                   XmNbottomAttachment, XmATTACH_FORM,
144                   XmNbottomOffset, UI_CP_WDG_OFFSET,
145                   XmNrightAttachment, XmATTACH_FORM,
146                   XmNrightOffset, UI_CP_WDG_OFFSET, NULL);
147     actiondata.ActionName = "CpClose";
148     actiondata.Page = uiPageInfo.CurrentPage;
149     XtAddCallback(tmpwdg, XmNactivateCallback,
150             (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
151     UiAttachCallback("CpClose", uicpclosecb, "CpClose");
152
153     XtManageChild(tmpwdg);
154
155     return tmpwdg;
156 }
157
158
159 static Widget
160  uicreatecplabel(parentwdg, rightwdg)
161 Widget parentwdg;
162 Widget rightwdg;
163 {
164     Widget tmpwdg;
165
166     tmpwdg = XmCreateLabelGadget(parentwdg, "ControlPanelLabel",
167                                  (ArgList) NULL, 0);
168     XtVaSetValues(tmpwdg,
169                   XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
170                   XmNbottomWidget, rightwdg,
171                   XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
172                   XmNtopWidget, rightwdg,
173                   XmNrightAttachment, XmATTACH_WIDGET,
174                   XmNrightWidget, rightwdg,
175                   XmNrightOffset, UI_CP_WDG_OFFSET,
176                   XmNleftAttachment, XmATTACH_FORM,
177                   XmNleftOffset, UI_CP_WDG_OFFSET, NULL);
178
179     XtManageChild(tmpwdg);
180
181     return tmpwdg;
182 }
183
184
185 static Widget
186  uicreatecplist(formwdg, topwdg, bottomwdg)
187 Widget formwdg;
188 Widget topwdg;
189 Widget bottomwdg;
190 {
191     ArgList args;
192     Cardinal nargs;
193     Widget listwdg;
194     uiHierarchy_t *hierarchy = uiTopLevel.Hierarchies;
195     XmString dummystr;
196
197     args = uiVaSetArgs(&nargs,
198                        XmNvisibleItemCount, 5,
199                        XmNselectionPolicy, XmSINGLE_SELECT,
200                        XmNlistSizePolicy, XmCONSTANT,
201                        XmNscrollBarDisplayPolicy, XmSTATIC,
202                        XmNtopAttachment, XmATTACH_WIDGET,
203                        XmNtopWidget, topwdg,
204                        XmNtopOffset, UI_CP_WDG_OFFSET,
205                        XmNbottomAttachment, XmATTACH_WIDGET,
206                        XmNbottomWidget, bottomwdg,
207                        XmNbottomOffset, UI_CP_WDG_OFFSET,
208                        XmNrightAttachment, XmATTACH_FORM,
209                        XmNrightOffset, UI_CP_WDG_OFFSET,
210                        XmNleftAttachment, XmATTACH_FORM,
211                        XmNleftOffset, UI_CP_WDG_OFFSET, NULL);
212     listwdg = XmCreateScrolledList(formwdg, "CpList", args, nargs);
213     XtManageChild(listwdg);
214
215     while (hierarchy) {
216         dummystr = XmStringCreateSimple(hierarchy->Address);
217         XmListAddItem(listwdg, dummystr, 0);
218         XmStringFree(dummystr);
219         hierarchy = hierarchy->Next;
220     }
221
222     return listwdg;
223 }
224
225
226 static void uicpclickcb(wdg, ignored, calldata)
227 Widget wdg;
228 caddr_t ignored;
229 XmListCallbackStruct *calldata;
230 {
231     char *selection;
232
233     XmStringGetLtoR(calldata->item, XmSTRING_DEFAULT_CHARSET, &selection);
234 }
235
236
237 static void uicpclosecb(address, htext, htextobject, parameter)
238 char *address;
239 HText_t *htext;
240 HTextObject_t *htextobject;
241 void *parameter;
242 {
243     XtUnmapWidget(XtParent(uiTopLevel.ControlPanelGfx.FormWdg));
244 }