1 static char *rcsid = "$Id: UiSearch.c,v 1.1 1992/03/26 18:13:50 kny Exp kss $";
3 #include "UiIncludes.h"
6 static Widget uicreatesearchformdialog();
7 static Widget uicreatesearchtext(Widget formwdg);
8 static Widget uicreatesearchlevel(Widget formwdg, Widget textwdg);
9 static Widget uicreatesearchlevelform(Widget formwdg, Widget levelwdg);
10 static Widget uicreatesearchleveldown(Widget formwdg);
11 static Widget uicreatesearchlevelup(Widget formwdg);
12 static Widget uicreatesearchcase(Widget formwdg, Widget levelwdg);
13 static Widget uicreatesearchbackward(Widget formwdg, Widget levelwdg);
14 static Widget uicreatesearchforward(Widget formwdg, Widget textwdg);
15 static Widget uicreatesearchlabel(Widget formwdg, Widget closewdg);
16 static Widget uicreatesearchclose(Widget formwdg, Widget forwardwdg);
18 static void uisearchlevelcb(char *address, HText_t * htex,
19 HTextObject_t * htextobject, void *parameter);
20 static void uisearchclosecb(char *address, HText_t * htext,
21 HTextObject_t * htextobject, void *parameter);
24 int UiDisplaySearchDialog(type)
27 uiSearchGfx_t *searchgfx = &uiTopLevel.SearchGfx;
29 if (searchgfx->FormWdg) {
30 XtMapWidget(XtParent(searchgfx->FormWdg));
31 uiWidgetPlacement(XtParent(searchgfx->FormWdg),
32 uiTopLevel.GlobalSettings.SearchPlacement);
33 uiSearchUpdateDialog();
36 searchgfx->FormWdg = uicreatesearchformdialog();
37 searchgfx->TextWdg = uicreatesearchtext(searchgfx->FormWdg);
38 searchgfx->LevelWdg = uicreatesearchlevel(searchgfx->FormWdg,
40 searchgfx->LevelFormWdg = uicreatesearchlevelform(searchgfx->FormWdg,
42 searchgfx->CaseWdg = uicreatesearchcase(searchgfx->FormWdg,
44 searchgfx->BackwardWdg = uicreatesearchbackward(searchgfx->FormWdg,
46 searchgfx->ForwardWdg = uicreatesearchforward(searchgfx->FormWdg,
47 searchgfx->BackwardWdg);
48 searchgfx->CloseWdg = uicreatesearchclose(searchgfx->FormWdg,
49 searchgfx->ForwardWdg);
50 searchgfx->LabelWdg = uicreatesearchlabel(searchgfx->FormWdg,
53 XtManageChild(searchgfx->FormWdg);
54 XtRealizeWidget(XtParent(searchgfx->FormWdg));
56 uiWidgetPlacement(XtParent(searchgfx->FormWdg),
57 uiTopLevel.GlobalSettings.SearchPlacement);
63 void uiSearchUpdateDialog()
67 if (uiTopLevel.SearchGfx.FormWdg) {
68 if (uiPageInfo.CurrentPage) {
70 XmStringCreateSimple(HTAnchor_address((HTAnchor *)
71 uiPageInfo.CurrentPage->
73 XtVaSetValues(uiTopLevel.SearchGfx.LabelWdg,
74 XmNlabelString, labelstr, NULL);
75 XmStringFree(labelstr);
77 XtUnmapWidget(XtParent(uiTopLevel.SearchGfx.FormWdg));
83 uicreatesearchformdialog()
90 topwdg = XtCreateApplicationShell("Search",
91 topLevelShellWidgetClass,
94 XmNtitle, UI_SEARCH_TITLE, NULL);
96 args = uiVaSetArgs(&nargs,
97 XmNresizePolicy, XmRESIZE_NONE,
98 XmNautoUnmanage, FALSE, NULL);
99 formwdg = XmCreateForm(topwdg, "Search", args, nargs);
106 uicreatesearchtext(formwdg)
112 Widget labelwdg, textwdg;
114 labelstr = XmStringCreateSimple("Search for:");
115 args = uiVaSetArgs(&nargs,
116 XmNlabelString, labelstr,
117 XmNtopAttachment, XmATTACH_FORM,
118 XmNtopOffset, UI_SEARCH_WDG_OFFSET,
119 XmNleftAttachment, XmATTACH_FORM,
120 XmNleftOffset, UI_SEARCH_WDG_OFFSET, NULL);
121 labelwdg = XmCreateLabelGadget(formwdg, "TextLabel", args, nargs);
122 XtManageChild(labelwdg);
123 XmStringFree(labelstr);
125 args = uiVaSetArgs(&nargs,
127 XmNtopAttachment, XmATTACH_WIDGET,
128 XmNtopWidget, labelwdg,
129 XmNtopOffset, UI_SEARCH_WDG_OFFSET / 2,
130 XmNleftAttachment, XmATTACH_FORM,
131 XmNleftOffset, UI_SEARCH_WDG_OFFSET,
132 XmNrightAttachment, XmATTACH_FORM,
133 XmNrightOffset, UI_SEARCH_WDG_OFFSET, NULL);
134 textwdg = XmCreateText(formwdg, "Text", args, nargs);
135 XtAddCallback(textwdg, XmNactivateCallback,
136 (XtCallbackProc) uiDialogVariableCB, (caddr_t) "SearchText");
137 XtAddCallback(textwdg, XmNlosingFocusCallback,
138 (XtCallbackProc) uiDialogVariableCB, (caddr_t) "SearchText");
139 XtAddCallback(textwdg, XmNvalueChangedCallback,
140 (XtCallbackProc) uiDialogVariableCB, (caddr_t) "SearchText");
141 (void) uiAddWidgetInfo("SearchText", textwdg, uiWTtext); /* Ignore */
142 XtManageChild(textwdg);
149 uicreatesearchlevel(formwdg, textwdg)
156 Widget labelwdg, levelwdg;
158 labelstr = XmStringCreateSimple("Depth of search:");
159 args = uiVaSetArgs(&nargs,
160 XmNlabelString, labelstr,
161 XmNtopAttachment, XmATTACH_WIDGET,
162 XmNtopWidget, textwdg,
163 XmNtopOffset, UI_SEARCH_WDG_OFFSET,
164 XmNleftAttachment, XmATTACH_FORM,
165 XmNleftOffset, UI_SEARCH_WDG_OFFSET, NULL);
166 labelwdg = XmCreateLabelGadget(formwdg, "LevelLabel", args, nargs);
167 XtManageChild(labelwdg);
168 XmStringFree(labelstr);
170 args = uiVaSetArgs(&nargs,
171 XmNtopAttachment, XmATTACH_WIDGET,
172 XmNtopWidget, labelwdg,
173 XmNtopOffset, UI_SEARCH_WDG_OFFSET / 2,
174 XmNleftAttachment, XmATTACH_FORM,
175 XmNleftOffset, UI_SEARCH_WDG_OFFSET,
178 XmNvalue, "1", NULL);
179 levelwdg = XmCreateText(formwdg, "Level", args, nargs);
180 XtAddCallback(levelwdg, XmNactivateCallback,
181 (XtCallbackProc) uiDialogVariableCB,
182 (caddr_t) "SearchLevel");
183 XtAddCallback(levelwdg, XmNlosingFocusCallback,
184 (XtCallbackProc) uiDialogVariableCB,
185 (caddr_t) "SearchLevel");
186 XtAddCallback(levelwdg, XmNvalueChangedCallback,
187 (XtCallbackProc) uiDialogVariableCB,
188 (caddr_t) "SearchLevel");
189 (void) uiAddWidgetInfo("SearchLevel", levelwdg, uiWTtext); /* Ignore */
190 XtManageChild(levelwdg);
197 uicreatesearchlevelform(formwdg, levelwdg)
204 uiSearchGfx_t *searchgfx = &uiTopLevel.SearchGfx;
206 args = uiVaSetArgs(&nargs,
207 XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
208 XmNtopWidget, levelwdg,
209 XmNleftAttachment, XmATTACH_WIDGET,
210 XmNleftWidget, levelwdg,
211 XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
212 XmNbottomWidget, levelwdg, NULL);
213 levelformwdg = XmCreateForm(formwdg, "LevelForm", args, nargs);
214 XtManageChild(levelformwdg);
216 searchgfx->LevelDownWdg = uicreatesearchleveldown(levelformwdg);
217 searchgfx->LevelUpWdg = uicreatesearchlevelup(levelformwdg);
224 uicreatesearchleveldown(formwdg)
230 char *actionname = "LevelDown";
231 static uiActionData_t actiondata;
233 args = uiVaSetArgs(&nargs,
234 XmNarrowDirection, XmARROW_DOWN,
236 XmNtopAttachment, XmATTACH_POSITION,
238 XmNleftAttachment, XmATTACH_FORM,
239 XmNrightAttachment, XmATTACH_FORM,
240 XmNbottomAttachment, XmATTACH_FORM, NULL);
241 leveldownwdg = XmCreateArrowButtonGadget(formwdg, actionname,
243 actiondata.ActionName = actionname;
244 actiondata.Page = uiPageInfo.CurrentPage;
245 XtAddCallback(leveldownwdg, XmNactivateCallback,
246 (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
247 UiAttachCallback(actionname, uisearchlevelcb, (void *) actionname);
248 XtManageChild(leveldownwdg);
255 uicreatesearchlevelup(formwdg)
261 char *actionname = "LevelUp";
262 static uiActionData_t actiondata;
264 args = uiVaSetArgs(&nargs,
265 XmNarrowDirection, XmARROW_UP,
267 XmNtopAttachment, XmATTACH_FORM,
268 XmNleftAttachment, XmATTACH_FORM,
269 XmNrightAttachment, XmATTACH_FORM,
270 XmNbottomAttachment, XmATTACH_POSITION,
271 XmNbottomPosition, 50, NULL);
272 levelupwdg = XmCreateArrowButtonGadget(formwdg, "LevelUp",
274 actiondata.ActionName = actionname;
275 actiondata.Page = uiPageInfo.CurrentPage;
276 XtAddCallback(levelupwdg, XmNactivateCallback,
277 (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
278 UiAttachCallback(actionname, uisearchlevelcb, (void *) actionname);
279 XtManageChild(levelupwdg);
286 uicreatesearchcase(formwdg, levelwdg)
295 labelstr = XmStringCreateSimple("Case sensitive");
296 args = uiVaSetArgs(&nargs,
297 XmNlabelString, labelstr,
298 XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
299 XmNtopWidget, levelwdg,
300 XmNleftAttachment, XmATTACH_POSITION,
302 XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
303 XmNbottomWidget, levelwdg, NULL);
304 casewdg = XmCreateToggleButtonGadget(formwdg, "Case", args, nargs);
305 XtAddCallback(casewdg, XmNvalueChangedCallback,
306 (XtCallbackProc) uiDialogVariableCB, (caddr_t) "SearchCase");
308 (void) uiAddWidgetInfo("SearchCase", casewdg, uiWTcheckbutton);
309 XtManageChild(casewdg);
316 uicreatesearchbackward(formwdg, textwdg)
324 char *actionname = "SearchBackward";
325 static uiActionData_t actiondata;
327 labelstr = XmStringCreateSimple("Search backward");
328 args = uiVaSetArgs(&nargs,
329 XmNlabelString, labelstr,
330 XmNtopAttachment, XmATTACH_WIDGET,
331 XmNtopWidget, textwdg,
332 XmNtopOffset, UI_SEARCH_WDG_OFFSET,
333 XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
334 XmNrightWidget, textwdg, NULL);
335 backwardwdg = XmCreatePushButtonGadget(formwdg, "SearchBackward",
337 actiondata.ActionName = actionname;
338 actiondata.Page = uiPageInfo.CurrentPage;
339 XtAddCallback(backwardwdg, XmNactivateCallback,
340 (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
341 XtManageChild(backwardwdg);
342 XmStringFree(labelstr);
349 uicreatesearchforward(formwdg, backwardwdg)
357 char *actionname = "SearchForward";
358 static uiActionData_t actiondata;
360 labelstr = XmStringCreateSimple("Search forward");
361 args = uiVaSetArgs(&nargs,
362 XmNlabelString, labelstr,
363 XmNtopAttachment, XmATTACH_WIDGET,
364 XmNtopWidget, backwardwdg,
365 XmNtopOffset, UI_SEARCH_WDG_OFFSET / 2,
366 XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET,
367 XmNleftWidget, backwardwdg,
368 XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
369 XmNrightWidget, backwardwdg, NULL);
370 forwardwdg = XmCreatePushButtonGadget(formwdg, "SearchForward",
372 actiondata.ActionName = actionname;
373 actiondata.Page = uiPageInfo.CurrentPage;
374 XtAddCallback(forwardwdg, XmNactivateCallback,
375 (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
376 XtManageChild(forwardwdg);
377 XmStringFree(labelstr);
384 uicreatesearchclose(parentwdg, topwdg)
392 static uiActionData_t actiondata;
394 args = uiVaSetArgs(&nargs,
395 XmNtopAttachment, XmATTACH_WIDGET,
396 XmNtopWidget, topwdg,
397 XmNtopOffset, UI_SEARCH_WDG_OFFSET,
398 XmNleftAttachment, XmATTACH_FORM,
399 XmNrightAttachment, XmATTACH_FORM, NULL);
400 separatorwdg = XmCreateSeparatorGadget(parentwdg, "SearchSeparator",
402 XtManageChild(separatorwdg);
404 tmpwdg = XmCreatePushButtonGadget(parentwdg, "Close", (ArgList) NULL, 0);
405 XtVaSetValues(tmpwdg,
407 XmNbottomAttachment, XmATTACH_FORM,
408 XmNbottomOffset, UI_SEARCH_WDG_OFFSET,
409 XmNtopAttachment, XmATTACH_WIDGET,
410 XmNtopWidget, separatorwdg,
411 XmNtopOffset, UI_SEARCH_WDG_OFFSET,
412 XmNrightAttachment, XmATTACH_FORM,
413 XmNrightOffset, UI_SEARCH_WDG_OFFSET, NULL);
414 actiondata.ActionName = "SearchClose";
415 actiondata.Page = uiPageInfo.CurrentPage;
416 XtAddCallback(tmpwdg, XmNactivateCallback,
417 (XtCallbackProc) uiDialogActivateCB, (caddr_t) & actiondata);
418 UiAttachCallback("SearchClose", uisearchclosecb, "SearchClose");
420 XtManageChild(tmpwdg);
427 uicreatesearchlabel(formwdg, rightwdg)
435 args = uiVaSetArgs(&nargs,
436 XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET,
437 XmNtopWidget, rightwdg,
438 XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET,
439 XmNbottomWidget, rightwdg,
440 XmNleftAttachment, XmATTACH_FORM,
441 XmNleftOffset, UI_SEARCH_WDG_OFFSET,
442 XmNrightAttachment, XmATTACH_WIDGET,
443 XmNrightWidget, rightwdg,
444 XmNrightOffset, UI_SEARCH_WDG_OFFSET, NULL);
445 labelwdg = XmCreateLabelGadget(formwdg, "Label", args, nargs);
446 XtManageChild(labelwdg);
452 static void uisearchlevelcb(address, htext, htextobject, parameter)
455 HTextObject_t *htextobject;
458 Widget levelwdg = uiTopLevel.SearchGfx.LevelWdg;
463 leveltext = XmTextGetString(levelwdg);
464 level = atoi(leveltext);
466 if (!strcmp("LevelDown", (char *) parameter)) {
469 sprintf(tmpbuffer, "%d", level);
470 XmTextSetString(levelwdg, tmpbuffer);
472 } else if (level < 1) {
474 sprintf(tmpbuffer, "%d", level);
475 XmTextSetString(levelwdg, tmpbuffer);
481 static void uisearchclosecb(address, htext, htextobject, parameter)
484 HTextObject_t *htextobject;
487 XtUnmapWidget(XtParent(uiTopLevel.SearchGfx.FormWdg));