char *UISelectObject (Widget widget,DBObjectLIST<DBObject> *objList,DBInt (*condFunc) (const DBObject *)) { int i = 0; XmString *strings; DBObject *obj; if (objList->ItemNum () < 1) { UIMessage ((char *) "Empty List"); return (NULL); } if ((strings = (XmString *) calloc (objList->ItemNum (),sizeof (XmString))) == NULL) { CMmsgPrint (CMmsgSysError, "Memory Allocation Error in: %s %d",__FILE__,__LINE__); return (NULL); } if (condFunc == (UISelectCondFunc) NULL) condFunc = _UISelectObjectAll; for (obj = objList->First ();obj != NULL;obj = objList->Next ()) if (((obj->Flags () & DBObjectFlagIdle) != DBObjectFlagIdle) && (*condFunc) (obj)) strings [i++] = XmStringCreateSimple (obj->Name ()); _UISelection = NULL; XtVaSetValues (widget,XmNlistItems, strings,XmNlistItemCount, i,NULL); XtManageChild (widget); while (UILoop ()); XtUnmanageChild (widget); for (;i > 0;--i) XmStringFree (strings [i - 1]); free (strings); return (_UISelection); }
CMreturn Configure(bool shrink, bool flat, char *expStr) { size_t i; DBInt recID, layerID; DBFloat floatVal; DBObject *obj; DBObjTableField *fieldPTR; Operand = new DBMathOperand(expStr); if (Operand->Expand(Variables) == DBFault) return (CMfailed); CellSize.X = CellSize.Y = DBHugeVal; for (recID = 0; recID < Variables->ItemNum(); ++recID) { obj = Variables->Item(recID); if ((fieldPTR = Table->Field(obj->Name())) != (DBObjTableField *) NULL) continue; if ((GrdVar = (CMDgrdVariable **) realloc(GrdVar, sizeof(CMDgrdVariable *) * (VarNum + 1))) == (CMDgrdVariable **) NULL) { CMmsgPrint(CMmsgSysError, "Memory Allocation Error in: %s %d", __FILE__, __LINE__); return (CMfailed); } GrdVar[VarNum] = new CMDgrdVariable(obj->Name()); if (GrdVar[VarNum]->Configure(Table, flat) == DBFault) { for (i = 0; i <= VarNum; ++i) delete GrdVar[i]; free(GrdVar); return (CMfailed); } Extent.Expand(GrdVar[VarNum]->Extent()); floatVal = GrdVar[VarNum]->CellWidth(); if (CellSize.X > floatVal) CellSize.X = floatVal; floatVal = GrdVar[VarNum]->CellHeight(); if (CellSize.Y > floatVal) CellSize.Y = floatVal; layerID = (GrdVar[VarNum])->LayerNum(); if (LayerNum < layerID) { LayerNum = layerID; MasterVar = VarNum; } VarNum++; } for (i = 0; i < ExpNum; ++i) if (Expressions[i]->Configure(Table) == DBFault) return (CMfailed); Operand->Configure(Table->Fields()); if (shrink) for (i = 0; i < VarNum; ++i) Extent.Shrink(GrdVar[i]->Extent()); return (CMsucceeded); }