X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PartDataModel.h;h=f81f303f40fe36c4fb5611c328f859cf9e81249f;hb=9fb117423f35d7271d96badbe4b8ec320641bc6e;hp=3d2c0cccd6797f214b4f4e352e3a15737205b7f7;hpb=a142c8797585ec0b35310ec3608d38b3a4908b7c;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.h b/src/XGUI/XGUI_PartDataModel.h index 3d2c0cccd..f81f303f4 100644 --- a/src/XGUI/XGUI_PartDataModel.h +++ b/src/XGUI/XGUI_PartDataModel.h @@ -2,22 +2,20 @@ #ifndef XGUI_PartDataModel_H #define XGUI_PartDataModel_H -#include - -class ModelAPI_Feature; -class ModelAPI_Document; - -class XGUI_TopDataModel : public QAbstractItemModel +#include "XGUI.h" +#include "XGUI_DataTreeModel.h" + +/**\class XGUI_TopDataModel + * \ingroup GUI + * \brief This is a data model for Object Browser (QTreeView). + * It represents only upper part of data tree (non-parts tree items) + */ +class XGUI_EXPORT XGUI_TopDataModel : public XGUI_FeaturesModel { Q_OBJECT public: - XGUI_TopDataModel(QObject* theParent); + XGUI_TopDataModel(const boost::shared_ptr& theDocument, QObject* theParent); virtual ~XGUI_TopDataModel(); - - virtual void setDocument(const std::shared_ptr& theDoc) - { - myDocument = theDoc; - } // Reimplementation from QAbstractItemModel virtual QVariant data(const QModelIndex& theIndex, int theRole) const; @@ -34,7 +32,18 @@ public: virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const; + //! Returns Feature object by the given Model index. + //! Returns 0 if the given index is not index of a feature + virtual FeaturePtr feature(const QModelIndex& theIndex) const; + + //! Returns parent index of the given feature + virtual QModelIndex findParent(const boost::shared_ptr& theFeature) const; + + //! Returns index corresponded to the group + virtual QModelIndex findGroup(const std::string& theGroup) const; + private: + //! Types of QModelIndexes enum DataIds { ParamsFolder, ParamObject, @@ -42,24 +51,21 @@ private: ConstructObject }; - std::shared_ptr myDocument; }; - -class XGUI_PartDataModel : public QAbstractItemModel +/**\class XGUI_PartDataModel + * \ingroup GUI + * \brief This is a data model for Object Browser (QTreeView). + * It represents data tree only of a one part + */ +class XGUI_PartDataModel : public XGUI_PartModel { Q_OBJECT public: - XGUI_PartDataModel(QObject* theParent); + XGUI_PartDataModel(const boost::shared_ptr& theDocument, QObject* theParent); virtual ~XGUI_PartDataModel(); - virtual void setDocument(const std::shared_ptr& theDoc, int theId) - { - myDocument = theDoc; - myId = theId; - } - // Reimplementation from QAbstractItemModel virtual QVariant data(const QModelIndex& theIndex, int theRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, @@ -75,10 +81,23 @@ public: virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const; -private: - std::shared_ptr featureDocument() const; + //! Returns Feature object by the given Model index. + //! Returns 0 if the given index is not index of a feature + virtual FeaturePtr feature(const QModelIndex& theIndex) const; + + //! Returns true if the given document is a sub-document of this tree + virtual bool hasDocument(const boost::shared_ptr& theDoc) const; + //! Returns parent index of the given feature + virtual QModelIndex findParent(const boost::shared_ptr& theFeature) const; + + //! Returns index corresponded to the group + virtual QModelIndex findGroup(const std::string& theGroup) const; + +private: + boost::shared_ptr featureDocument() const; + //! Types of QModelIndexes enum DataIds { MyRoot, ParamsFolder, @@ -87,8 +106,6 @@ private: ConstructObject }; - std::shared_ptr myDocument; - int myId; }; #endif \ No newline at end of file