X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_DocumentDataModel.h;h=80d69f3b69b2bb4225589dde9c64487d15dc52da;hb=d86c77d1c6210bbe04fbc3e5b00f9e212e1ec930;hp=1181b08052ed4ddafa15953279518ff8c4a18a44;hpb=200f77f7819b363ecafeebbdec21dc6d1d0f8e0b;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_DocumentDataModel.h b/src/XGUI/XGUI_DocumentDataModel.h index 1181b0805..80d69f3b6 100644 --- a/src/XGUI/XGUI_DocumentDataModel.h +++ b/src/XGUI/XGUI_DocumentDataModel.h @@ -2,25 +2,34 @@ #ifndef XGUI_DocumentDataModel_H #define XGUI_DocumentDataModel_H +#include "XGUI.h" +#include "XGUI_Constants.h" + #include -#include +#include #include class ModelAPI_Document; -class XGUI_PartDataModel; +class XGUI_PartModel; class XGUI_TopDataModel; - -class XGUI_DocumentDataModel : public QAbstractItemModel, public Event_Listener +/**\class XGUI_DocumentDataModel + * \ingroup GUI + * \brief This is a proxy data model for Object Browser (QTreeView). + * It contains several sub-models for generation of each sub-part of data tree. + */ +class XGUI_EXPORT XGUI_DocumentDataModel : public QAbstractItemModel, public Events_Listener { Q_OBJECT public: + + XGUI_DocumentDataModel(QObject* theParent); virtual ~XGUI_DocumentDataModel(); // Event Listener method - virtual void processEvent(const Event_Message* theMessage); + virtual void processEvent(const Events_Message* theMessage); virtual QVariant data(const QModelIndex& theIndex, int theRole) const; @@ -37,18 +46,43 @@ 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 + FeaturePtr feature(const QModelIndex& theIndex) const; + private: - QModelIndex toSourceModel(const QModelIndex& theProxy) const; + //! Converts QModelIndex of this model to QModelIndex of a one of sub-models. + QModelIndex toSourceModelIndex(const QModelIndex& theProxy) const; + + //! Finds a pointer on QModelIndex which is equal to the given one QModelIndex* findModelIndex(const QModelIndex& theIndex) const; + + //! Returns pointer on QModelIndex which is equal to the given one. QModelIndex* getModelIndex(const QModelIndex& theIndex) const; + + //! Deletes all saved pointers on QModelIndex objects. void clearModelIndexes(); - std::shared_ptr myDocument; + //! Causes inserting of new nodes for given parent and indexes + void insertRows(const QModelIndex& theParent, int theStart, int theEnd); + + //! Removes sub-model on removing a part object. Also it removes QModelIndex-es which refer to this model + void removeSubModel(int theModelId); + //! + bool hasSubModel(const QAbstractItemModel* theModel) const; + + //! Document + boost::shared_ptr myDocument; + + //! Data model of top part of data tree (not parts object) XGUI_TopDataModel* myModel; - QList myPartModels; + //! Data models for Parts data tree representation (one data model per a one part) + QList myPartModels; + + //! List of saved QModelIndexes created by sub-models QList myIndexes; };