X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PartDataModel.cpp;h=567ad5677e050e0d4923001afdbc3a23f2a75709;hb=c2651507a52942e0632863b1e5e384396a285d25;hp=42d22cce9ed799b35889a657a8a086d5c7055677;hpb=a14dc0cf16291c2bf3c4e66af355dda33a7ea324;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.cpp b/src/XGUI/XGUI_PartDataModel.cpp index 42d22cce9..567ad5677 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" @@ -19,7 +21,7 @@ //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; @@ -259,7 +261,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)); @@ -273,14 +275,14 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameters::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 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 +297,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 +321,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,9 +363,9 @@ 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: @@ -398,7 +401,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 +456,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 @@ -473,7 +484,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 +501,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_ResultParameters::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 +516,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 @@ -536,7 +547,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