X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_PartDataModel.h;h=7e96a6705bdc035b42f2613a6d42fa37561f44a6;hb=ed165fd07e71c11885fdc5f475a8522a5914e00d;hp=fc597f0349c2dc9f513fb03d7727087c6de2319a;hpb=c5a608bb7f2f754085388cd0fa4e3971239f95c5;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PartDataModel.h b/src/XGUI/XGUI_PartDataModel.h index fc597f034..7e96a6705 100644 --- a/src/XGUI/XGUI_PartDataModel.h +++ b/src/XGUI/XGUI_PartDataModel.h @@ -1,25 +1,22 @@ - #ifndef XGUI_PartDataModel_H #define XGUI_PartDataModel_H -#include - -class ModelAPI_Feature; -class ModelAPI_Document; +#include "XGUI.h" +#include "XGUI_DataTreeModel.h" -class XGUI_TopDataModel : public QAbstractItemModel +/**\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: +Q_OBJECT + public: XGUI_TopDataModel(QObject* theParent); virtual ~XGUI_TopDataModel(); - - virtual void setDocument(const std::shared_ptr& theDoc) - { - myDocument = theDoc; - } - // Reimplementation from QAbstractItemModel + // Reimpl from QAbstractItemModel virtual QVariant data(const QModelIndex& theIndex, int theRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; @@ -27,40 +24,52 @@ public: virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; - virtual QModelIndex index(int theRow, int theColumn, - const QModelIndex& theParent = QModelIndex()) const; + virtual QModelIndex index(int theRow, int theColumn, const QModelIndex& theParent = + QModelIndex()) const; virtual QModelIndex parent(const QModelIndex& theIndex) const; virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const; -private: - enum DataIds { + //! Returns object by the given Model index. + //! Returns 0 if the given index is not index of a object + virtual ObjectPtr object(const QModelIndex& theIndex) const; + + //! Returns QModelIndex which corresponds to the given object + //! If the object is not found then index is not valid + virtual QModelIndex objectIndex(const ObjectPtr& theObject) const; + + //! Returns parent index of the given object + virtual QModelIndex findParent(const ObjectPtr& theObject) const; + + //! Returns index corresponded to the group + virtual QModelIndex findGroup(const std::string& theGroup) const; + + private: + //! Types of QModelIndexes + enum DataIds + { ParamsFolder, ParamObject, ConstructFolder, 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: +Q_OBJECT + public: XGUI_PartDataModel(QObject* theParent); virtual ~XGUI_PartDataModel(); - virtual void setDocument(const std::shared_ptr& theDoc, int theId) - { - myDocument = theDoc; - myId = theId; - } - - // Reimplementation from QAbstractItemModel + // Reimpl from QAbstractItemModel virtual QVariant data(const QModelIndex& theIndex, int theRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; @@ -68,24 +77,51 @@ public: virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; - virtual QModelIndex index(int theRow, int theColumn, - const QModelIndex& theParent = QModelIndex()) const; + virtual QModelIndex index(int theRow, int theColumn, const QModelIndex& theParent = + QModelIndex()) const; virtual QModelIndex parent(const QModelIndex& theIndex) const; virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const; -private: - enum DataIds { + //! Returns object by the given Model index. + //! Returns 0 if the given index is not index of a object + virtual ObjectPtr object(const QModelIndex& theIndex) const; + + //! Returns QModelIndex which corresponds to the given object + //! If the object is not found then index is not valid + virtual QModelIndex objectIndex(const ObjectPtr& theObject) const; + + //! Returns true if the given document is a sub-document of this tree + virtual bool hasDocument(const DocumentPtr& theDoc) const; + + //! Returns parent index of the given object + virtual QModelIndex findParent(const ObjectPtr& theObject) const; + + //! Returns index corresponded to the group + virtual QModelIndex findGroup(const std::string& theGroup) const; + + //! Return a Part object + virtual ResultPartPtr part() const; + + private: + + //! Returns document of the current part + DocumentPtr partDocument() const; + + //! Types of QModelIndexes + enum DataIds + { MyRoot, ParamsFolder, ParamObject, ConstructFolder, - ConstructObject + ConstructObject, + BodiesFolder, + BodiesObject, + HistoryObject }; - std::shared_ptr myDocument; - int myId; }; -#endif \ No newline at end of file +#endif