Ejemplo n.º 1
0
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);
	}
Ejemplo n.º 2
0
    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);
    }