X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PartDataModel.cpp;h=532d88d787202869ce3140e6f6a22152097cc2e2;hb=0fb55fb5092b38612b54c34339d17e945480d2db;hp=44b74b3207eeb7af3b1b69ac16b41011d7e11e1c;hpb=be6e3770b8d97cc079f33efc8eaa571f645fbbdb;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.cpp b/src/XGUI/XGUI_PartDataModel.cpp index 44b74b320..532d88d78 100644 --- a/src/XGUI/XGUI_PartDataModel.cpp +++ b/src/XGUI/XGUI_PartDataModel.cpp @@ -6,10 +6,22 @@ #include #include #include +#include #include +#include -XGUI_TopDataModel::XGUI_TopDataModel(const boost::shared_ptr& theDocument, QObject* theParent) + +FeaturePtr featureObj(const FeaturePtr& theFeature) +{ + ObjectPtr aObject = boost::dynamic_pointer_cast(theFeature); + if (aObject) + return aObject->featureRef(); + return theFeature; +} + + +XGUI_TopDataModel::XGUI_TopDataModel(const DocumentPtr& theDocument, QObject* theParent) : XGUI_FeaturesModel(theDocument, theParent) { } @@ -29,7 +41,7 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex)); case ParamObject: { - boost::shared_ptr aFeature = myDocument->feature(PARAMETERS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(myDocument->feature(PARAMETERS_GROUP, theIndex.row())); if (aFeature) return aFeature->data()->getName().c_str(); } @@ -37,7 +49,7 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const return tr("Constructions") + QString(" (%1)").arg(rowCount(theIndex)); case ConstructObject: { - boost::shared_ptr aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row())); if (aFeature) return aFeature->data()->getName().c_str(); } @@ -53,7 +65,7 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const return QIcon(":pictures/constr_folder.png"); case ConstructObject: { - FeaturePtr aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row())); if (aFeature) return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind())); } @@ -63,6 +75,9 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const case Qt::ToolTipRole: // return Tooltip break; + case Qt::ForegroundRole: + return QBrush(myItemsColor); + break; } return QVariant(); } @@ -137,15 +152,15 @@ FeaturePtr XGUI_TopDataModel::feature(const QModelIndex& theIndex) const case ConstructFolder: return FeaturePtr(); case ParamObject: - return myDocument->feature(PARAMETERS_GROUP, theIndex.row()); + return featureObj(myDocument->feature(PARAMETERS_GROUP, theIndex.row())); case ConstructObject: - return myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + return featureObj(myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row())); } return FeaturePtr(); } -QModelIndex XGUI_TopDataModel::findParent(const boost::shared_ptr& theFeature) const +QModelIndex XGUI_TopDataModel::findParent(const FeaturePtr& theFeature) const { QString aGroup(theFeature->getGroup().c_str()); @@ -169,7 +184,7 @@ QModelIndex XGUI_TopDataModel::findGroup(const std::string& theGroup) const //****************************************************************** //****************************************************************** //****************************************************************** -XGUI_PartDataModel::XGUI_PartDataModel(const boost::shared_ptr& theDocument, QObject* theParent) +XGUI_PartDataModel::XGUI_PartDataModel(const DocumentPtr& theDocument, QObject* theParent) : XGUI_PartModel(theDocument, theParent) { } @@ -187,7 +202,7 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons switch (theIndex.internalId()) { case MyRoot: { - boost::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); + FeaturePtr aFeature = featureObj(myDocument->feature(PARTS_GROUP, myId)); if (aFeature) return aFeature->data()->getName().c_str(); } @@ -199,22 +214,19 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons return tr("Bodies") + QString(" (%1)").arg(rowCount(theIndex)); case ParamObject: { - boost::shared_ptr aFeature = - featureDocument()->feature(PARAMETERS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(featureDocument()->feature(PARAMETERS_GROUP, theIndex.row())); if (aFeature) return aFeature->data()->getName().c_str(); } case ConstructObject: { - boost::shared_ptr aFeature = - featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row())); if (aFeature) return aFeature->data()->getName().c_str(); } case HistoryObject: { - boost::shared_ptr aFeature = - featureDocument()->feature(FEATURES_GROUP, theIndex.row() - 3); + FeaturePtr aFeature = featureObj(featureDocument()->feature(FEATURES_GROUP, theIndex.row() - 3)); if (aFeature) return aFeature->data()->getName().c_str(); } @@ -232,14 +244,13 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons return QIcon(":pictures/constr_folder.png"); case ConstructObject: { - FeaturePtr aFeature = featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + FeaturePtr aFeature = featureObj(featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row())); if (aFeature) return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind())); } case HistoryObject: { - boost::shared_ptr aFeature = - featureDocument()->feature(FEATURES_GROUP, theIndex.row() - 3); + FeaturePtr aFeature = featureDocument()->feature(FEATURES_GROUP, theIndex.row() - 3); if (aFeature) return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind())); } @@ -248,6 +259,9 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons case Qt::ToolTipRole: // return Tooltip break; + case Qt::ForegroundRole: + return QBrush(myItemsColor); + break; } return QVariant(); } @@ -334,38 +348,38 @@ bool XGUI_PartDataModel::hasChildren(const QModelIndex& theParent) const } -boost::shared_ptr XGUI_PartDataModel::featureDocument() const +DocumentPtr XGUI_PartDataModel::featureDocument() const { - boost::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); + FeaturePtr aFeature = featureObj(myDocument->feature(PARTS_GROUP, myId)); return aFeature->data()->docRef("PartDocument")->value(); } - + FeaturePtr XGUI_PartDataModel::feature(const QModelIndex& theIndex) const { switch (theIndex.internalId()) { case MyRoot: - if (theIndex.row() < 3) - return myDocument->feature(PARTS_GROUP, myId); - else + if (theIndex.row() < 3) { + return featureObj(myDocument->feature(PARTS_GROUP, myId)); + } else return featureDocument()->feature(FEATURES_GROUP, theIndex.row() - 3); case ParamsFolder: case ConstructFolder: return FeaturePtr(); case ParamObject: - return featureDocument()->feature(PARAMETERS_GROUP, theIndex.row()); + return featureObj(featureDocument()->feature(PARAMETERS_GROUP, theIndex.row())); case ConstructObject: - return featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + return featureObj(featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row())); } return FeaturePtr(); } -bool XGUI_PartDataModel::hasDocument(const boost::shared_ptr& theDoc) const +bool XGUI_PartDataModel::hasDocument(const DocumentPtr& theDoc) const { return (featureDocument() == theDoc); } -QModelIndex XGUI_PartDataModel::findParent(const boost::shared_ptr& theFeature) const +QModelIndex XGUI_PartDataModel::findParent(const FeaturePtr& theFeature) const { QString aGroup(theFeature->getGroup().c_str()); @@ -387,5 +401,5 @@ QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const FeaturePtr XGUI_PartDataModel::part() const { - return myDocument->feature(PARTS_GROUP, myId); + return featureObj(myDocument->feature(PARTS_GROUP, myId)); } \ No newline at end of file