/*-------------------------------------------------------------------------*/ static void qmonUsersetFillConf( Widget w, lListElem *ep ) { lList *ul; DENTER(GUI_LAYER, "qmonUsersetFillConf"); if (!ep) { /* ** clear the userset_user_list */ XtVaSetValues( userset_user_list, XmNitems, NULL, XmNitemCount, 0, NULL); DEXIT; return; } userset_type_state = (int)lGetUlong(ep, US_type); XmtChooserSetState(userset_type, userset_type_state, False); ul = lGetList(ep, US_entries); lPSortList(ul, "%I+", UE_name); UpdateXmListFromCull(userset_user_list, XmFONTLIST_DEFAULT_TAG, ul, UE_name); DEXIT; }
/*-------------------------------------------------------------------------*/ static void updateUsersetList(void) { lList *al; XmString *selectedItems; Cardinal selectedItemCount; Cardinal itemCount; DENTER(GUI_LAYER, "updateUsersetList"); al = qmonMirrorList(SGE_US_LIST); lPSortList(al, "%I+", US_name); UpdateXmListFromCull(userset_names, XmFONTLIST_DEFAULT_TAG, al, US_name); XtVaGetValues( userset_names, XmNselectedItems, &selectedItems, XmNselectedItemCount, &selectedItemCount, XmNitemCount, &itemCount, NULL); if (selectedItemCount) XmListSelectItem(userset_names, selectedItems[0], True); else if (itemCount) XmListSelectPos(userset_names, 1, True); DEXIT; }
/*-------------------------------------------------------------------------*/ void updateCkptList(void) { lList *cl; DENTER(GUI_LAYER, "updateCkptList"); cl = qmonMirrorList(SGE_CK_LIST); lPSortList(cl, "%I+", CK_name); UpdateXmListFromCull(ckpt_names, XmFONTLIST_DEFAULT_TAG, cl, CK_name); DEXIT; }
/*-------------------------------------------------------------------------*/ static void qmonManopFillList(void) { lList *lp, *cl; lListElem *ep; DENTER(GUI_LAYER, "qmonManopFillList"); /* manager list */ lp = qmonMirrorList(SGE_UM_LIST); lPSortList(lp, "%I+", UM_name); UpdateXmListFromCull(manager_list, XmFONTLIST_DEFAULT_TAG, lp, UM_name); /* operator list */ lp = qmonMirrorList(SGE_UO_LIST); lPSortList(lp, "%I+", UO_name); UpdateXmListFromCull(operator_list, XmFONTLIST_DEFAULT_TAG, lp, UO_name); /* userset list */ updateUsersetList(); /* user list */ lp = qmonMirrorList(SGE_UU_LIST); lPSortList(lp, "%I+", UU_name); /* ** set UU_default_project to NONE */ cl = lCopyList("cl", lp); for_each (ep, cl) { if (ep && !lGetString(ep, UU_default_project)) lSetString(ep, UU_default_project, "NONE"); } qmonSetNxN(user_matrix, cl, 3, UU_name, UU_default_project, UU_delete_time); lFreeList(&cl); DEXIT; }
/*-------------------------------------------------------------------------*/ void updateQueueList(void) { lList *qlp = NULL; lList *hl = NULL; lList *rl = NULL; lList *cl = NULL; lEnumeration *whatall = NULL; lCondition *where = NULL; static Boolean filter_on = False; DENTER(GUI_LAYER, "updateQueueList"); cl = qmonMirrorList(SGE_CE_LIST); /* ** copy of host list */ hl = lCopyList("HL", qmonMirrorList(SGE_EH_LIST)); /* ** ** select a subset of the whole queue list (->where) ** and get the list sorted ** */ #ifdef FIXME where = lWhere("%T(%I!=%s)", QU_Type, QU_qname, QU_TEMPLATE); whatall = lWhat("%T(ALL)", QU_Type); #else whatall = lWhat("%T(ALL)", CQ_Type); #endif qlp = lSelect("SQL", qmonMirrorList(SGE_CQ_LIST), where, whatall); lFreeWhere(&where); lFreeWhat(&whatall); #ifdef FIXME /* ** additional filtering */ rl = qmonQFilterRequest(); if (rl) { if (!filter_on) { setButtonLabel(queue_customize, "@{Customize +}"); filter_on = True; } match_queue(&qlp, rl, cl, hl); } else { if (filter_on) { setButtonLabel(queue_customize, "@{Customize}"); filter_on = False; } } /* ** sort the queues according to sequence number and alphabetically */ lPSortList(qlp, "%I+ %I+ %I+", QU_seq_no, QU_qhostname, QU_qname); #endif /* ** save the queue in hash table */ qmonQueueHash(qlp, hl); qmonQueueSetPos(qlp); /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ** qlp must not be freed it is referenced in qmonHashQueue ** and freed there */ DEXIT; }
/*-------------------------------------------------------------------------*/ static void qmonUserAskForProject(Widget w, XtPointer cld, XtPointer cad) { XbaeMatrixLabelActivateCallbackStruct *cbs = (XbaeMatrixLabelActivateCallbackStruct *) cad; Boolean status = False; lList *pl = NULL; lListElem *cep = NULL; int n, i; StringConst *strs = NULL; static char buf[BUFSIZ]; lList *lp = NULL; lList *alp = NULL; lListElem *ep; static lEnumeration *what = NULL; DENTER(GUI_LAYER, "qmonUserAskForProject"); if (!what) { what = lWhat("%T(%I %I)", UU_Type, UU_name, UU_default_project); } if (cbs->column != 1) { DEXIT; return; } qmonMirrorMultiAnswer(PROJECT_T, &alp); if (alp) { qmonMessageBox(w, alp, 0); lFreeList(&alp); DEXIT; return; } pl = qmonMirrorList(SGE_PR_LIST); lPSortList(pl, "%I+", PR_name); n = lGetNumberOfElem(pl); if (n>0) { strs = (StringConst*)XtMalloc(sizeof(String)*(n+1)); strs[0] = "NONE"; for (cep=lFirst(pl), i=0; i<n; cep=lNext(cep), i++) { /* ** we get only references don't free, the strings */ strs[i+1] = lGetString(cep, PR_name); } strcpy(buf, ""); /* FIX_CONST_GUI */ status = XmtAskForItem(w, NULL, "@{Select a project}", "@{Available projects}", (String*)strs, n+1, False, buf, BUFSIZ, NULL); if (status) { int rows, i; rows = XbaeMatrixNumRows(user_matrix); for (i=0; i<rows; i++) { String s = XbaeMatrixGetCell(user_matrix, i, 0); if (XbaeMatrixIsRowSelected(user_matrix, i) && s && strcmp(s, "")) { ep = lAddElemStr(&lp, UU_name, s, UU_Type); lSetString(ep, UU_default_project, buf); } } XbaeMatrixDeselectAll(user_matrix); /* ** send to master as modify request */ for_each (ep, lp) { if (ep && lGetString(ep, UU_default_project) && !strcasecmp(lGetString(ep, UU_default_project), "NONE")) lSetString(ep, UU_default_project, NULL); } if (lp) { alp = qmonModList(SGE_UU_LIST, qmonMirrorListRef(SGE_UU_LIST), UU_name, &lp, NULL, what); qmonMessageBox(w, alp, 0); updateManopList(); lFreeList(&alp); lFreeList(&lp); } } /* ** don't free referenced strings, they are in the pl list */ XtFree((char*)strs); }