X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PartDataModel.cpp;h=ba5bbbea33ddeb56b71e88afd3bc741fe9ec67ff;hb=d86c77d1c6210bbe04fbc3e5b00f9e212e1ec930;hp=f48a27a7c72c594c44b00bf6bce54d91cf011042;hpb=a142c8797585ec0b35310ec3608d38b3a4908b7c;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.cpp b/src/XGUI/XGUI_PartDataModel.cpp index f48a27a7c..ba5bbbea3 100644 --- a/src/XGUI/XGUI_PartDataModel.cpp +++ b/src/XGUI/XGUI_PartDataModel.cpp @@ -4,13 +4,13 @@ #include #include #include -#include +#include #include #include -XGUI_TopDataModel::XGUI_TopDataModel(QObject* theParent) - : QAbstractItemModel(theParent) +XGUI_TopDataModel::XGUI_TopDataModel(const boost::shared_ptr& theDocument, QObject* theParent) + : XGUI_FeaturesModel(theDocument, theParent) { } @@ -29,15 +29,17 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const return tr("Parameters"); case ParamObject: { - std::shared_ptr aFeature = myDocument->feature(PARAMETERS_GROUP, theIndex.row()); - return aFeature->data()->getName().c_str(); + boost::shared_ptr aFeature = myDocument->feature(PARAMETERS_GROUP, theIndex.row()); + if (aFeature) + return aFeature->data()->getName().c_str(); } case ConstructFolder: return tr("Constructions"); case ConstructObject: { - std::shared_ptr aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); - return aFeature->data()->getName().c_str(); + boost::shared_ptr aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + if (aFeature) + return aFeature->data()->getName().c_str(); } } break; @@ -90,16 +92,16 @@ QModelIndex XGUI_TopDataModel::index(int theRow, int theColumn, const QModelInde if (!theParent.isValid()) { switch (theRow) { case 0: - return createIndex(theRow, theColumn, (quintptr) ParamsFolder); + return createIndex(theRow, theColumn, (qint32) ParamsFolder); case 1: - return createIndex(theRow, theColumn, (quintptr) ConstructFolder); + return createIndex(theRow, theColumn, (qint32) ConstructFolder); } } else { if (theParent.internalId() == ParamsFolder) - return createIndex(theRow, theColumn, (quintptr) ParamObject); + return createIndex(theRow, theColumn, (qint32) ParamObject); if (theParent.internalId() == ConstructFolder) - return createIndex(theRow, theColumn, (quintptr) ConstructObject); + return createIndex(theRow, theColumn, (qint32) ConstructObject); } return QModelIndex(); } @@ -112,9 +114,9 @@ QModelIndex XGUI_TopDataModel::parent(const QModelIndex& theIndex) const case ConstructFolder: return QModelIndex(); case ParamObject: - return createIndex(0, 0, (quintptr) ParamsFolder); + return createIndex(0, 0, (qint32) ParamsFolder); case ConstructObject: - return createIndex(1, 0, (quintptr) ConstructFolder); + return createIndex(1, 0, (qint32) ConstructFolder); } return QModelIndex(); } @@ -124,12 +126,47 @@ bool XGUI_TopDataModel::hasChildren(const QModelIndex& theParent) const return rowCount(theParent) > 0; } +FeaturePtr XGUI_TopDataModel::feature(const QModelIndex& theIndex) const +{ + switch (theIndex.internalId()) { + case ParamsFolder: + case ConstructFolder: + return FeaturePtr(); + case ParamObject: + return myDocument->feature(PARAMETERS_GROUP, theIndex.row()); + case ConstructObject: + return myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + } + return FeaturePtr(); +} + + +QModelIndex XGUI_TopDataModel::findParent(const boost::shared_ptr& theFeature) const +{ + QString aGroup(theFeature->getGroup().c_str()); + + if (theFeature->getGroup().compare(PARAMETERS_GROUP) == 0) + return createIndex(0, 0, (qint32) ParamsFolder); + if (theFeature->getGroup().compare(CONSTRUCTIONS_GROUP) == 0) + return createIndex(1, 0, (qint32) ConstructFolder); + return QModelIndex(); +} + +QModelIndex XGUI_TopDataModel::findGroup(const std::string& theGroup) const +{ + if (theGroup.compare(PARAMETERS_GROUP) == 0) + return createIndex(0, 0, (qint32) ParamsFolder); + if (theGroup.compare(CONSTRUCTIONS_GROUP) == 0) + return createIndex(1, 0, (qint32) ConstructFolder); + return QModelIndex(); +} + //****************************************************************** //****************************************************************** //****************************************************************** -XGUI_PartDataModel::XGUI_PartDataModel(QObject* theParent) - : QAbstractItemModel(theParent) +XGUI_PartDataModel::XGUI_PartDataModel(const boost::shared_ptr& theDocument, QObject* theParent) + : XGUI_PartModel(theDocument, theParent) { } @@ -146,8 +183,9 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons switch (theIndex.internalId()) { case MyRoot: { - std::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); - return aFeature->data()->getName().c_str(); + boost::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); + if (aFeature) + return aFeature->data()->getName().c_str(); } case ParamsFolder: return tr("Parameters"); @@ -155,15 +193,17 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons return tr("Constructions"); case ParamObject: { - std::shared_ptr aFeature = + boost::shared_ptr aFeature = featureDocument()->feature(PARAMETERS_GROUP, theIndex.row()); - return aFeature->data()->getName().c_str(); + if (aFeature) + return aFeature->data()->getName().c_str(); } case ConstructObject: { - std::shared_ptr aFeature = + boost::shared_ptr aFeature = featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row()); - return aFeature->data()->getName().c_str(); + if (aFeature) + return aFeature->data()->getName().c_str(); } } break; @@ -218,38 +258,37 @@ int XGUI_PartDataModel::columnCount(const QModelIndex &parent) const QModelIndex XGUI_PartDataModel::index(int theRow, int theColumn, const QModelIndex &theParent) const { if (!theParent.isValid()) - return createIndex(theRow, 0, (quintptr) MyRoot); + return createIndex(theRow, 0, (qint32) MyRoot); int aId = (int)theParent.internalId(); switch (aId) { case MyRoot: switch (theRow) { case 0: - return createIndex(0, 0, (quintptr) ParamsFolder); + return createIndex(0, 0, (qint32) ParamsFolder); case 1: - return createIndex(1, 0, (quintptr) ConstructFolder); + return createIndex(1, 0, (qint32) ConstructFolder); } case ParamsFolder: - return createIndex(theRow, 0, (quintptr) ParamObject); + return createIndex(theRow, 0, (qint32) ParamObject); case ConstructFolder: - return createIndex(theRow, 0, (quintptr) ConstructObject); + return createIndex(theRow, 0, (qint32) ConstructObject); } return QModelIndex(); } QModelIndex XGUI_PartDataModel::parent(const QModelIndex& theIndex) const { - int aId = (int)theIndex.internalId(); - switch (aId) { + switch (theIndex.internalId()) { case MyRoot: return QModelIndex(); case ParamsFolder: case ConstructFolder: - return createIndex(0, 0, (quintptr) MyRoot); + return createIndex(0, 0, (qint32) MyRoot); case ParamObject: - return createIndex(0, 0, (quintptr) ParamsFolder); + return createIndex(0, 0, (qint32) ParamsFolder); case ConstructObject: - return createIndex(1, 0, (quintptr) ConstructFolder); + return createIndex(1, 0, (qint32) ConstructFolder); } return QModelIndex(); } @@ -260,8 +299,50 @@ bool XGUI_PartDataModel::hasChildren(const QModelIndex& theParent) const } -std::shared_ptr XGUI_PartDataModel::featureDocument() const +boost::shared_ptr XGUI_PartDataModel::featureDocument() const { - std::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); + boost::shared_ptr aFeature = myDocument->feature(PARTS_GROUP, myId); return aFeature->data()->docRef("PartDocument")->value(); -} \ No newline at end of file +} + +FeaturePtr XGUI_PartDataModel::feature(const QModelIndex& theIndex) const +{ + switch (theIndex.internalId()) { + case MyRoot: + return myDocument->feature(PARTS_GROUP, myId); + case ParamsFolder: + case ConstructFolder: + return FeaturePtr(); + case ParamObject: + return featureDocument()->feature(PARAMETERS_GROUP, theIndex.row()); + case ConstructObject: + return featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row()); + } + return FeaturePtr(); +} + +bool XGUI_PartDataModel::hasDocument(const boost::shared_ptr& theDoc) const +{ + return (featureDocument() == theDoc); +} + + +QModelIndex XGUI_PartDataModel::findParent(const boost::shared_ptr& theFeature) const +{ + QString aGroup(theFeature->getGroup().c_str()); + + if (theFeature->getGroup().compare(PARAMETERS_GROUP) == 0) + return createIndex(0, 0, (qint32) ParamsFolder); + if (theFeature->getGroup().compare(CONSTRUCTIONS_GROUP) == 0) + return createIndex(1, 0, (qint32) ConstructFolder); + return QModelIndex(); +} + +QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const +{ + if (theGroup.compare(PARAMETERS_GROUP) == 0) + return createIndex(0, 0, (qint32) ParamsFolder); + if (theGroup.compare(CONSTRUCTIONS_GROUP) == 0) + return createIndex(1, 0, (qint32) ConstructFolder); + return QModelIndex(); +}