void QueryEditor::receive (ScopeCreated &msg, void* /*client_data*/) { int position = 0; const char *scope_name = msg.f_search_scope->name(); xList<UAS_SearchScope *> &scope_list = search_scope_mgr().scope_list(); List_Iterator<UAS_SearchScope *> s (scope_list); bool need_sep = TRUE; if (msg.f_search_scope->read_only()) { // insert read-only scopes at the start; reserve position 0 // for "Current Section" scope and position 1 for // the "All Libraries" scope position = 2; need_sep = FALSE; } else { // Scan the current menu to find the correct insertion position. UAS_SearchScope *scope; for (; s != NULL; s++, position++) { scope = s.item(); if (scope->read_only() != need_sep) { position++; // skip separator need_sep = FALSE; } if (scope->read_only()) continue; // Find the first item that the new entry belongs after. ON_DEBUG (printf ("Scope Edit strcmp to <%s>\n", s.item()->name())); if (strcmp (scope_name, scope->name()) < 0) break; } } ON_DEBUG (printf ("Final SE position = %d\n", position)); // Add a separator if this is the first user-defined entry. if (need_sep == TRUE) { DECLM (WXmSeparator, separator, f_scope_option.SubMenuId(), "separator"); separator.PositionIndex (position); position++; } // Create the new toggle button. DECLM (WXmPushButton, scope, f_scope_option.SubMenuId(), scope_name); scope.PositionIndex (position); scope.UserData (msg.f_search_scope); }
void QueryEditor::fill_menu() { int position = 0; // Create push buttons for each scope. xList<UAS_SearchScope *> &scope_list = search_scope_mgr().scope_list(); List_Iterator<UAS_SearchScope *> s (scope_list); bool old_read_only = TRUE; for (; s != NULL; s++) { // Add a separator when they change from read only to changable. if (old_read_only != s.item()->read_only()) { DECLM (WXmSeparator, sep1, f_scope_option.SubMenuId(), "separator"); sep1.PositionIndex (position++); old_read_only = FALSE; } DECLM (WXmPushButton, scope,f_scope_option.SubMenuId(),s.item()->name()); scope.UserData (s.item()); scope.PositionIndex (position++); } // Do not want first item (Current Section) #ifdef __osf__ #if 1 Widget w = f_scope_option.SubMenuId(); WComposite temp_composite(w); WXmPushButton(temp_composite.Children()[0]).Unmanage(); #else int i = 0; Widget w = f_scope_option.SubMenuId();; Arg args[1]; WidgetList wl; XtSetArg(args[i], XmNchildren, &wl); i++; XtGetValues(w, args, i); XtUnmanageChild(wl[0]); #endif #else WXmPushButton(WComposite(f_scope_option.SubMenuId()).Children()[0]).Unmanage(); #endif f_scope_option. MenuHistory (WComposite(f_scope_option.SubMenuId()).Children()[1]); //UAS_SearchScope::request ((UAS_Receiver<ScopeCreated> *) this); //UAS_SearchScope::request ((UAS_Receiver<ScopeDeleted> *) this); //UAS_SearchScope::request ((UAS_Receiver<ScopeRenamed> *) this); // //search_scope_mgr().option_menu(this); }
void PrefAgent::create_ui() { // Create main preferences window. XmStringLocalized mtfstring; String string; int decorations=MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | MWM_DECOR_MENU; f_shell = WTopLevelShell (window_system().toplevel(), WPopup, "preferences"); window_system().register_shell(&f_shell); string = CATGETS(Set_PrefAgent, 1, "Dtinfo: Preferences"); XtVaSetValues((Widget)f_shell, XmNtitle, string, XmNmwmDecorations, decorations, NULL); DECL (WXmForm, form, f_shell, "form"); DECLMC(WXmOptionMenu, options, form, "options"); DECLC (WXmPulldownMenu, options_menu, form, "options_menu"); mtfstring = CATGETS(Set_AgentLabel, 186, "Preferences for"); XtVaSetValues(options, XmNlabelString, (XmString)mtfstring, NULL); ASSNM (WXmPushButton, f_ok, form, "ok"); ASSNM (WXmPushButton, f_apply, form, "apply"); ASSNM (WXmPushButton, f_reset, form, "reset"); DECLM (WXmPushButton, cancel, form, "cancel"); DECLM (WXmPushButton, help, form, "help"); mtfstring = CATGETS(Set_AgentLabel, 161, "OK"); XtVaSetValues(f_ok, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 201, "Apply"); XtVaSetValues(f_apply, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 202, "Reset"); XtVaSetValues(f_reset, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 162, "Cancel"); XtVaSetValues(cancel, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 48, "Help"); XtVaSetValues(help, XmNlabelString, (XmString)mtfstring, NULL); SET_CALLBACK (f_ok,Activate,ok); SET_CALLBACK (f_apply,Activate,apply); SET_CALLBACK (f_reset,Activate,reset); SET_CALLBACK (cancel,Activate,cancel); help_agent().add_activate_help (help, (char*)"preferences_help"); DECLM (WXmFrame, frame, form, "frame"); DECL (WXmForm, container, frame, "container"); // Create browsing preferences. DECLM (WXmPushButton, browse, options_menu, "browse"); DECL (WXmForm, browse_form, container, "browse_prefs"); DECLM (WXmLabel, browse_label, browse_form, "browse_label"); DECLM (WXmPushButton, get_browse_geo, browse_form, "get_browse_geo"); ASSNM (WXmTextField, f_browse_geo, browse_form, "browse_geo"); DECLM (WXmLabel, fs_label, browse_form, "fs_label"); DECL (WXmForm, fs_form, browse_form, "fs_form"); ASSNM (WXmTextField, f_fs_field, fs_form, "scale_field"); DECLM (WXmArrowButton, scale_up, fs_form, "scale_up"); DECLM (WXmArrowButton, scale_down, fs_form, "scale_down"); DECLM (WXmLabel, lock_label, browse_form, "lock_label"); ASSNM (WXmToggleButton, f_lock_toggle, browse_form, "lock_toggle"); mtfstring = CATGETS(Set_AgentLabel, 187, "Browsing"); XtVaSetValues(browse, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 190, "Browser Geometry"); XtVaSetValues(browse_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 270, "..."); XtVaSetValues(get_browse_geo, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 192, "Font Scale"); XtVaSetValues(fs_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 193, "Pin Window"); XtVaSetValues(lock_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 194, "File a Bug"); XtVaSetValues(f_lock_toggle, XmNlabelString, (XmString)mtfstring, NULL); Dimension height; ChangeData *inc, *dec; // Assume that the fields are taller than the labels. If the user // changes the font resources and violates this assumtion he's screwed // and that's the way we like it. height = f_fs_field.Height(); browse_label.Height (height); fs_label.Height (height); scale_up.Height (height/2); scale_down.Height (height/2); f_lock_toggle.LabelType (XmPIXMAP); lock_label.Height (height); fs_form.Manage(); browse_form.Manage(); f_top_panel = browse_form; SET_CALLBACK_D (browse,Activate,switch_to_window,(Widget)browse_form); SET_CALLBACK_D (get_browse_geo,Activate,get_geometry,(Widget)f_browse_geo); SET_CALLBACK (f_browse_geo,ValueChanged,something_changed); SET_CALLBACK (f_fs_field,ValueChanged,something_changed); SET_CALLBACK (f_lock_toggle,ValueChanged,something_changed); SET_CALLBACK (f_lock_toggle,ValueChanged,lock_toggle); inc = new ChangeData(f_fs_field, scale_up, scale_down, 1, 5); dec = new ChangeData(f_fs_field, scale_up, scale_down, -1, -2); SET_CALLBACK_D (scale_up,Activate,change_cb,inc); SET_CALLBACK_D (scale_up,Arm,arm_arrow,inc); SET_CALLBACK (scale_up,Disarm,disarm_arrow); SET_CALLBACK_D (scale_down,Activate,change_cb,dec); SET_CALLBACK_D (scale_down,Arm,arm_arrow,dec); SET_CALLBACK (scale_down,Disarm,disarm_arrow); // Create map window preferences DECLM (WXmPushButton, map, options_menu, "map"); DECLM (WXmForm, map_form, container, "map_prefs"); DECLM (WXmLabel, map_label, map_form, "map_label"); DECLM (WXmPushButton, get_map_geo, map_form, "get_map_geo"); ASSNM (WXmTextField, f_map_geo, map_form, "map_geo"); DECLM (WXmLabel, update_label, map_form, "update_label"); ASSNM (WXmToggleButton, f_update_toggle, map_form, "update_toggle"); mtfstring = CATGETS(Set_AgentLabel, 188, "Map"); XtVaSetValues(map, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 195, "Map Geometry"); XtVaSetValues(map_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 270, "..."); XtVaSetValues(get_map_geo, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 196, "Auto Update"); XtVaSetValues(update_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 194, "File a Bug"); XtVaSetValues(f_update_toggle, XmNlabelString, (XmString)mtfstring, NULL); height = f_map_geo.Height(); map_label.Height (height); update_label.Height (height); SET_CALLBACK_D (get_map_geo,Activate,get_geometry,(Widget)f_map_geo); SET_CALLBACK_D (map,Activate,switch_to_window,(Widget)map_form); SET_CALLBACK (f_map_geo,ValueChanged,something_changed); SET_CALLBACK (f_update_toggle,ValueChanged,something_changed); SET_CALLBACK (f_update_toggle,ValueChanged,update_toggle); map_form.Manage(); // Create history preferences DECLM (WXmPushButton, history, options_menu, "history"); mtfstring = CATGETS(Set_AgentLabel, 260, "History"); XtVaSetValues(history, XmNlabelString, (XmString)mtfstring, NULL); DECL (WXmForm, hist_form, container, "history_prefs"); DECLM (WXmLabel, nh_label, hist_form, "nh_label"); DECL (WXmForm, nh_form, hist_form, "nh_form"); ASSNM (WXmTextField, f_nh_field, nh_form, "nh_field"); DECLM (WXmArrowButton, nh_up, nh_form, "nh_up"); DECLM (WXmArrowButton, nh_down, nh_form, "nh_down"); DECLM (WXmLabel, sh_label, hist_form, "sh_label"); DECL (WXmForm, sh_form, hist_form, "sh_form"); ASSNM (WXmTextField, f_sh_field, sh_form, "sh_field"); DECLM (WXmArrowButton, sh_up, sh_form, "sh_up"); DECLM (WXmArrowButton, sh_down, sh_form, "sh_down"); mtfstring = CATGETS(Set_AgentLabel, 197, "Section History Size"); XtVaSetValues(nh_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 198, "Search History Size"); XtVaSetValues(sh_label, XmNlabelString, (XmString)mtfstring, NULL); height = f_nh_field.Height(); nh_label.Height (height); nh_up.Height (height/2); nh_down.Height (height/2); height = f_sh_field.Height(); sh_label.Height (height); sh_up.Height (height/2); sh_down.Height (height/2); nh_form.Manage(); sh_form.Manage(); hist_form.Manage(); SET_CALLBACK_D (history,Activate,switch_to_window,(Widget)hist_form); SET_CALLBACK (f_nh_field,ValueChanged,something_changed); SET_CALLBACK (f_sh_field,ValueChanged,something_changed); inc = new ChangeData (f_nh_field, nh_up, nh_down, 10, 1000); dec = new ChangeData (f_nh_field, nh_up, nh_down, -10, 10); SET_CALLBACK_D (nh_up,Activate,change_cb,inc); SET_CALLBACK_D (nh_up,Arm,arm_arrow,inc); SET_CALLBACK (nh_up,Disarm,disarm_arrow); SET_CALLBACK_D (nh_down,Activate,change_cb,dec); SET_CALLBACK_D (nh_down,Arm,arm_arrow,dec); SET_CALLBACK (nh_down,Disarm,disarm_arrow); inc = new ChangeData (f_sh_field, sh_up, sh_down, 10, 1000); dec = new ChangeData (f_sh_field, sh_up, sh_down, -10, 10); SET_CALLBACK_D (sh_up,Activate,change_cb,inc); SET_CALLBACK_D (sh_up,Arm,arm_arrow,inc); SET_CALLBACK (sh_up,Disarm,disarm_arrow); SET_CALLBACK_D (sh_down,Activate,change_cb,dec); SET_CALLBACK_D (sh_down,Arm,arm_arrow,dec); SET_CALLBACK (sh_down,Disarm,disarm_arrow); // Create Search preferences. DECLM (WXmPushButton, search, options_menu, "search"); mtfstring = CATGETS(Set_AgentLabel, 189, "Searching"); XtVaSetValues(search, XmNlabelString, (XmString)mtfstring, NULL); DECL (WXmForm, search_form, container, "search_prefs"); DECLM (WXmLabel, max_hits_label, search_form, "max_hits"); DECL (WXmForm, hits_form, search_form, "hits_form"); ASSNM (WXmTextField, f_max_hits_field, hits_form, "hits_field"); DECLM (WXmArrowButton, hits_up, hits_form, "hits_up"); DECLM (WXmArrowButton, hits_down, hits_form, "hits_down"); DECLM (WXmLabel, adisplay_label, search_form, "adisplay_label"); ASSNM (WXmToggleButton, f_adisplay_toggle, search_form, "adisplay_toggle"); mtfstring = CATGETS(Set_AgentLabel, 199, "Maximum Search Hits"); XtVaSetValues(max_hits_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 200, "Auto Display First Hit"); XtVaSetValues(adisplay_label, XmNlabelString, (XmString)mtfstring, NULL); mtfstring = CATGETS(Set_AgentLabel, 194, "File a Bug"); XtVaSetValues(f_adisplay_toggle, XmNlabelString, (XmString)mtfstring, NULL); height = f_max_hits_field.Height(); max_hits_label.Height (height); hits_up.Height (height/2); hits_down.Height (height/2); adisplay_label.Height (height); hits_form.Manage(); search_form.Manage(); SET_CALLBACK_D (search,Activate,switch_to_window,(Widget)search_form); SET_CALLBACK (f_max_hits_field,ValueChanged,something_changed); inc = new ChangeData (f_max_hits_field, hits_up, hits_down, 10, 500); dec = new ChangeData (f_max_hits_field, hits_up, hits_down, -10, 10); SET_CALLBACK_D (hits_up,Activate,change_cb,inc); SET_CALLBACK_D (hits_up,Arm,arm_arrow,inc); SET_CALLBACK (hits_up,Disarm,disarm_arrow); SET_CALLBACK_D (hits_down,Activate,change_cb,dec); SET_CALLBACK_D (hits_down,Arm,arm_arrow,dec); SET_CALLBACK (hits_down,Disarm,disarm_arrow); SET_CALLBACK (f_adisplay_toggle,ValueChanged,something_changed); SET_CALLBACK (f_adisplay_toggle,ValueChanged,adisplay_toggle); /* -------- node history size, search history size -------- */ options.SubMenuId (options_menu); container.Manage(); form.DefaultButton (f_ok); form.ShadowThickness (0); form.Manage(); f_shell.Realize(); Dimension width; f_shell.Get (WArgList (XmNheight, (XtArgVal) &height, XmNwidth, &width, NULL)); f_shell.Set (WArgList (XmNminHeight, height, XmNmaxHeight, height, XmNminWidth, width, XmNmaxWidth, width, NULL)); map_form.Unmanage(); hist_form.Unmanage(); search_form.Unmanage(); // Values get displayed when reset() is called on dialog display. init_values(); }
void ScopeMenu::receive (ScopeCreated &msg, void *client_data) { int position = 0; const char *scope_name = msg.f_search_scope->name(); xList<UAS_SearchScope *> &scope_list = search_scope_mgr().scope_list(); List_Iterator<UAS_SearchScope *> s (scope_list); bool need_sep = TRUE; int n; Arg args[2]; WidgetList kids; Cardinal num_kids; n = 0; XtSetArg(args[n], XmNnumChildren, &num_kids); n++; XtSetArg(args[n], XmNchildren, &kids); n++; XtGetValues(f_pull_menu, args, n); UAS_SearchScope *scope; if (msg.f_search_scope->read_only()) { // insert read-only scopes at the start; reserve position 0 // for "Current Section" scope and position 1 for // the "All Libraries" scope position = 2; need_sep = FALSE; } else { // Scan the current menu to find the correct insertion position. for (; s != 0; s++, position++) { scope = s.item(); if (need_sep != scope->read_only()) { position++; // skip separator need_sep = FALSE; } if (scope->read_only()) continue; // Find the first item that the new entry belongs after. ON_DEBUG (printf ("Scope strcmp to <%s>\n", scope->name())); if (strcmp (scope_name, scope->name()) < 0) break; } } ON_DEBUG (printf ("Final position = %d\n", position)); // Add a separator if this is the first user-defined entry. if (need_sep == TRUE) { DECLM (WXmSeparator, separator, f_pull_menu, "separator"); separator.PositionIndex (position); position++; } // Create the new toggle button. DECLM (WXmPushButtonGadget, scope_btn, f_pull_menu, scope_name); scope_btn.PositionIndex (position); scope_btn.UserData (msg.f_search_scope); WCallback *cb = SET_CALLBACK(scope_btn,Activate,set_scope); SET_CALLBACK_D(scope_btn,Destroy,destroy_scope,cb); }
void ScopeMenu::fill_menu() { int position = 0; Wait_Cursor bob; // Create toggle buttons for each scope. xList<UAS_SearchScope *> &scope_list = search_scope_mgr().scope_list(); List_Iterator<UAS_SearchScope *> s (scope_list); bool old_read_only = TRUE; // Set the current scope to the first entry // (Current Section or Information Library) f_current_scope = s.item(); ON_DEBUG(cerr << "Scope Popup" << endl); int first = TRUE; for (; s != 0; s++) { // in case we are not using Current Section if (f_current_scope == NULL) f_current_scope = s.item(); ON_DEBUG(cerr << "\t" << f_current_scope->name() << endl); // ON_DEBUG(f_current_scope->dump_items()); // Add a separator when they change from read only to changable. if (old_read_only != s.item()->read_only()) { DECLM (WXmSeparator, sep1, f_pull_menu, "separator"); sep1.PositionIndex (position++); old_read_only = FALSE; } DECLM (WXmPushButtonGadget, scope, f_pull_menu, s.item()->name()); if (first && !f_use_current_section) { first = FALSE; scope.Unmanage(); // Reset current scope so that it is set to Library on next pass. f_current_scope = NULL; } scope.UserData (s.item()); scope.PositionIndex (position++); WCallback *cb = SET_CALLBACK(scope,Activate,set_scope); SET_CALLBACK_D (scope,Destroy,destroy_scope,cb); if (f_current_scope == s.item()) { Arg args[1]; int n = 0; XtSetArg(args[n], XmNmenuHistory, (Widget)scope); n++; XtSetValues(f_option_menu, args, n); } } //UAS_SearchScope::request ((UAS_Receiver<ScopeCreated> *) this); //UAS_SearchScope::request ((UAS_Receiver<ScopeDeleted> *) this); //UAS_SearchScope::request ((UAS_Receiver<ScopeRenamed> *) this); }