void MakeSearchWidget(ManpageGlobals * man_globals, Widget parent) { Widget dialog, command, text, cancel; Arg arglist[2]; Cardinal num_args = 0; XtSetArg(arglist[0], XtNtransientFor, parent); man_globals->search_widget = XtCreatePopupShell(SEARCHNAME, transientShellWidgetClass, parent, arglist, 1); if (resources.clear_search_string) { XtSetArg(arglist[0], XtNvalue, ""); num_args++; } dialog = XtCreateManagedWidget(DIALOG, dialogWidgetClass, man_globals->search_widget, arglist, num_args); if ((text = XtNameToWidget(dialog, "value")) == (Widget) NULL) PopupWarning(NULL, "Could not find text widget in MakeSearchWidget."); else XtSetKeyboardFocus(dialog, text); XawDialogAddButton(dialog, MANUALSEARCH, NULL, NULL); XawDialogAddButton(dialog, APROPOSSEARCH, NULL, NULL); XawDialogAddButton(dialog, CANCEL, NULL, NULL); /* * This is a bit gross, but it get the cancel button underneath the * others, and forms them up to the right size.. */ if (((command = XtNameToWidget(dialog, MANUALSEARCH)) == (Widget) NULL) || ((cancel = XtNameToWidget(dialog, CANCEL)) == (Widget) NULL)) PopupWarning(NULL, "Could not find manual search widget in MakeSearchWidget."); else { static const char *half_size[] = { MANUALSEARCH, APROPOSSEARCH, NULL }; static const char *full_size[] = { "label", "value", CANCEL, NULL }; num_args = 0; XtSetArg(arglist[num_args], XtNfromVert, command); num_args++; XtSetArg(arglist[num_args], XtNfromHoriz, NULL); num_args++; XtSetValues(cancel, arglist, num_args); FormUpWidgets(dialog, full_size, half_size); } }
void MakeTopBox() { Widget form, command, label; /* widgets. */ Arg arglist[TOPARGS]; /* An argument list */ Cardinal num_args = 0; /* The number of arguments. */ ManpageGlobals * man_globals; static char * full_size[] = { "topLabel", MANPAGE_BUTTON, NULL }; static char * half_size[] = { HELP_BUTTON, QUIT_BUTTON, NULL }; /* create the top icon. */ num_args = 0; XtSetArg(arglist[num_args], XtNiconPixmap, XCreateBitmapFromData( XtDisplay(initial_widget), XtScreen(initial_widget)->root, (char *)iconclosed_bits, iconclosed_width, iconclosed_height)); num_args++; XtSetArg(arglist[num_args], XtNtitle, resources.title); num_args++; XtSetArg(arglist[num_args], XtNiconic, resources.iconic); num_args++; top = XtCreatePopupShell(TOPBOXNAME, topLevelShellWidgetClass, initial_widget, arglist, num_args); form = XtCreateManagedWidget("form", formWidgetClass, top, NULL, (Cardinal) 0); label = XtCreateManagedWidget("topLabel", labelWidgetClass, form, NULL, (Cardinal) 0); num_args = 0; XtSetArg(arglist[num_args], XtNfromVert, label); num_args++; command = XtCreateManagedWidget(HELP_BUTTON, commandWidgetClass, form, arglist, num_args); /* use same vertical as help widget. */ XtSetArg(arglist[num_args], XtNfromHoriz, command); num_args++; command = XtCreateManagedWidget(QUIT_BUTTON, commandWidgetClass, form, arglist, num_args); num_args = 0; XtSetArg(arglist[num_args], XtNfromVert, command); num_args++; command = XtCreateManagedWidget(MANPAGE_BUTTON, commandWidgetClass, form, arglist, num_args); help_widget = NULL; /* We have not seen the help yet. */ FormUpWidgets(form, full_size, half_size); XtRealizeWidget(top); /* add WM_COMMAND property */ XSetCommand(XtDisplay(top), XtWindow(top), saved_argv, saved_argc); man_globals = (ManpageGlobals*) XtMalloc( (Cardinal) sizeof(ManpageGlobals)); man_globals->label = NULL; man_globals->manpagewidgets.directory = NULL; man_globals->manpagewidgets.manpage = NULL; man_globals->manpagewidgets.box = NULL; man_globals->current_directory = 0; MakeSearchWidget(man_globals, top); MakeSaveWidgets(man_globals, top); SaveGlobals( (man_globals->This_Manpage = top), man_globals); XtMapWidget(top); AddCursor(top, resources.cursors.top); /* * Set up ICCCM delete window. */ wm_delete_window = XInternAtom(XtDisplay(top), "WM_DELETE_WINDOW", False); XtOverrideTranslations (top, XtParseTranslationTable ("<Message>WM_PROTOCOLS: Quit()")); (void) XSetWMProtocols (XtDisplay(top), XtWindow(top), &wm_delete_window, 1); }