X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PartDataModel.cpp;h=bbf0ef9fcc1afa8f45ece496083184ab2d82692b;hb=52a2aa0728f8694d5774a20bd1eeba8e5e2f8b27;hp=42d22cce9ed799b35889a657a8a086d5c7055677;hpb=9a800459af4cb3265d13a7abd7a68508e61e7878;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.cpp b/src/XGUI/XGUI_PartDataModel.cpp index 42d22cce9..bbf0ef9fc 100644 --- a/src/XGUI/XGUI_PartDataModel.cpp +++ b/src/XGUI/XGUI_PartDataModel.cpp @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + #include "XGUI_PartDataModel.h" #include "XGUI_Workshop.h" @@ -10,16 +12,17 @@ #include #include #include -#include +#include #include #include +#include #include #include //ObjectPtr featureObj(const ObjectPtr& theFeature) //{ -// ObjectPtr aObject = boost::dynamic_pointer_cast(theFeature); +// ObjectPtr aObject = std::dynamic_pointer_cast(theFeature); // if (aObject) // return aObject->featureRef(); // return theFeature; @@ -44,9 +47,14 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex)); case ParamObject: { DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); - ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultParameters::group(), theIndex.row()); - if (aObject) - return aObject->data()->name().c_str(); + ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultParameter::group(), theIndex.row()); + if (aObject) { + ResultParameterPtr aParam = std::dynamic_pointer_cast(aObject); + AttributeDoublePtr aValueAttribute = aParam->data()->real(ModelAPI_ResultParameter::VALUE()); + QString aVal = QString::number(aValueAttribute->value()); + QString aTitle = QString(aObject->data()->name().c_str()); + return aTitle + " = " + aVal; + } } break; case ConstructFolder: @@ -110,7 +118,7 @@ int XGUI_TopDataModel::rowCount(const QModelIndex& theParent) const DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); if (theParent.internalId() == ParamsFolder) - return aRootDoc->size(ModelAPI_ResultParameters::group()); + return aRootDoc->size(ModelAPI_ResultParameter::group()); if (theParent.internalId() == ConstructFolder) return aRootDoc->size(ModelAPI_ResultConstruction::group()); @@ -181,7 +189,7 @@ ObjectPtr XGUI_TopDataModel::object(const QModelIndex& theIndex) const return ObjectPtr(); case ParamObject: { DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); - return aRootDoc->object(ModelAPI_ResultParameters::group(), theIndex.row()); + return aRootDoc->object(ModelAPI_ResultParameter::group(), theIndex.row()); } case ConstructObject: { DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); @@ -202,7 +210,7 @@ QModelIndex XGUI_TopDataModel::findParent(const ObjectPtr& theObject) const QModelIndex XGUI_TopDataModel::findGroup(const std::string& theGroup) const { - if (theGroup == ModelAPI_ResultParameters::group()) + if (theGroup == ModelAPI_ResultParameter::group()) return createIndex(0, 0, (qint32) ParamsFolder); if (theGroup == ModelAPI_ResultConstruction::group()) return createIndex(1, 0, (qint32) ConstructFolder); @@ -226,7 +234,7 @@ QModelIndex XGUI_TopDataModel::objectIndex(const ObjectPtr& theObject) const } } if (aRow != -1) { - if (aGroup == ModelAPI_ResultParameters::group()) + if (aGroup == ModelAPI_ResultParameter::group()) return createIndex(aRow, 0, (qint32) ParamObject); if (aGroup == ModelAPI_ResultConstruction::group()) return createIndex(aRow, 0, (qint32) ConstructObject); @@ -259,7 +267,7 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId); if (aObject) - return boost::dynamic_pointer_cast(aObject)->data()->name().c_str(); + return std::dynamic_pointer_cast(aObject)->data()->name().c_str(); } case ParamsFolder: return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex)); @@ -270,17 +278,22 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons case GroupsFolder: return tr("Groups") + QString(" (%1)").arg(rowCount(theIndex)); case ParamObject: { - ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameters::group(), + ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameter::group(), theIndex.row()); - if (aObject) - return boost::dynamic_pointer_cast(aObject)->data()->name().c_str(); + if (aObject) { + ResultParameterPtr aParam = std::dynamic_pointer_cast(aObject); + AttributeDoublePtr aValueAttribute = aParam->data()->real(ModelAPI_ResultParameter::VALUE()); + QString aVal = QString::number(aValueAttribute->value()); + QString aTitle = QString(aObject->data()->name().c_str()); + return aTitle + " = " + aVal; + } } break; case ConstructObject: { ObjectPtr aObject = partDocument()->object(ModelAPI_ResultConstruction::group(), theIndex.row()); if (aObject) - return boost::dynamic_pointer_cast(aObject)->data()->name().c_str(); + return std::dynamic_pointer_cast(aObject)->data()->name().c_str(); } break; case BodiesObject: { @@ -295,7 +308,7 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons return aObject->data()->name().c_str(); } case HistoryObject: { - ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4); + ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber()); if (aObject) return aObject->data()->name().c_str(); } @@ -319,16 +332,17 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons std::string aGroup = theIndex.internalId() == ConstructObject ? ModelAPI_ResultConstruction::group() : ModelAPI_ResultBody::group(); ObjectPtr anObject = partDocument()->object(aGroup, theIndex.row()); - if (anObject && anObject->data() && anObject->data()->mustBeUpdated()) { + if (anObject && anObject->data() && + anObject->data()->execState() == ModelAPI_StateMustBeUpdated) { return QIcon(":pictures/constr_object_modified.png"); } return QIcon(":pictures/constr_object.png"); } case HistoryObject: { - ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4); - FeaturePtr aFeature = boost::dynamic_pointer_cast(aObject); + ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber()); + FeaturePtr aFeature = std::dynamic_pointer_cast(aObject); if (aFeature) - return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind())); + return XGUI_Workshop::featureIcon(aFeature); } } break; @@ -360,13 +374,13 @@ int XGUI_PartDataModel::rowCount(const QModelIndex& parent) const case MyRoot: { DocumentPtr aDoc = partDocument(); - if (aDoc) - return 4 + aDoc->size(ModelAPI_Feature::group()); - else + if (aDoc) { + return getRowsNumber() + aDoc->size(ModelAPI_Feature::group()); + } else return 0; } case ParamsFolder: - return partDocument()->size(ModelAPI_ResultParameters::group()); + return partDocument()->size(ModelAPI_ResultParameter::group()); case ConstructFolder: return partDocument()->size(ModelAPI_ResultConstruction::group()); case BodiesFolder: @@ -398,7 +412,13 @@ QModelIndex XGUI_PartDataModel::index(int theRow, int theColumn, const QModelInd case 2: return createIndex(theRow, 0, (qint32) BodiesFolder); case 3: - return createIndex(theRow, 0, (qint32) GroupsFolder); + { + int aSize = partDocument()->size(ModelAPI_ResultGroup::group()); + if (aSize > 0) + return createIndex(theRow, 0, (qint32) GroupsFolder); + else + return createIndex(theRow, theColumn, (qint32) HistoryObject); + } default: return createIndex(theRow, theColumn, (qint32) HistoryObject); } @@ -447,8 +467,10 @@ DocumentPtr XGUI_PartDataModel::partDocument() const { DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId); - ResultPartPtr aPart = boost::dynamic_pointer_cast(aObject); - return aPart->partDoc(); + ResultPartPtr aPart = std::dynamic_pointer_cast(aObject); + if (aPart) + return aPart->partDoc(); + return DocumentPtr(); // null if not found } ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const @@ -465,7 +487,7 @@ ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const return ObjectPtr(); case ParamObject: - return partDocument()->object(ModelAPI_ResultParameters::group(), theIndex.row()); + return partDocument()->object(ModelAPI_ResultParameter::group(), theIndex.row()); case ConstructObject: return partDocument()->object(ModelAPI_ResultConstruction::group(), theIndex.row()); case BodiesObject: @@ -473,7 +495,7 @@ ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const case GroupObject: return partDocument()->object(ModelAPI_ResultGroup::group(), theIndex.row()); case HistoryObject: - return partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4); + return partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber()); } return ObjectPtr(); } @@ -490,13 +512,13 @@ QModelIndex XGUI_PartDataModel::findParent(const ObjectPtr& theObject) const QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const { - if (theGroup.compare(ModelAPI_ResultParameters::group()) == 0) + if (theGroup == ModelAPI_ResultParameter::group()) return createIndex(0, 0, (qint32) ParamsFolder); - if (theGroup.compare(ModelAPI_ResultConstruction::group()) == 0) + if (theGroup == ModelAPI_ResultConstruction::group()) return createIndex(1, 0, (qint32) ConstructFolder); - if (theGroup.compare(ModelAPI_ResultBody::group()) == 0) + if (theGroup == ModelAPI_ResultBody::group()) return createIndex(2, 0, (qint32) BodiesFolder); - if (theGroup.compare(ModelAPI_ResultGroup::group()) == 0) + if (theGroup == ModelAPI_ResultGroup::group()) return createIndex(3, 0, (qint32) GroupsFolder); return QModelIndex(); } @@ -505,7 +527,7 @@ ResultPartPtr XGUI_PartDataModel::part() const { DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument(); ObjectPtr aObj = aRootDoc->object(ModelAPI_ResultPart::group(), myId); - return boost::dynamic_pointer_cast(aObj); + return std::dynamic_pointer_cast(aObj); } QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const @@ -527,7 +549,7 @@ QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const } if (aRow == -1) return aIndex; - if (aGroup == ModelAPI_ResultParameters::group()) + if (aGroup == ModelAPI_ResultParameter::group()) return createIndex(aRow, 0, (qint32) ParamObject); else if (aGroup == ModelAPI_ResultConstruction::group()) return createIndex(aRow, 0, (qint32) ConstructObject); @@ -536,7 +558,16 @@ QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const else if (aGroup == ModelAPI_ResultGroup::group()) return createIndex(aRow, 0, (qint32) GroupObject); else - return createIndex(aRow + 4, 0, (qint32) HistoryObject); + return createIndex(aRow + getRowsNumber(), 0, (qint32) HistoryObject); } return aIndex; } + + +int XGUI_PartDataModel::getRowsNumber() const +{ + int aSize = partDocument()->size(ModelAPI_ResultGroup::group()); + if (aSize == 0) // If there are no groups then do not show group folder + return 3; + return 4; +} \ No newline at end of file