X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_DocumentDataModel.h;h=a5257a981c7d1041f9a991d97447bcbf08f54269;hb=2e6153d900999f7ddc85ba595ef5c74474fc796c;hp=592308ae8adcdbcb30e069f62c5a3f05fedb64ae;hpb=9fb117423f35d7271d96badbe4b8ec320641bc6e;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_DocumentDataModel.h b/src/XGUI/XGUI_DocumentDataModel.h index 592308ae8..a5257a981 100644 --- a/src/XGUI/XGUI_DocumentDataModel.h +++ b/src/XGUI/XGUI_DocumentDataModel.h @@ -6,7 +6,7 @@ #include "XGUI_Constants.h" #include -#include +#include #include @@ -19,7 +19,7 @@ class XGUI_TopDataModel; * \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 Event_Listener +class XGUI_EXPORT XGUI_DocumentDataModel : public QAbstractItemModel, public Events_Listener { Q_OBJECT public: @@ -29,7 +29,7 @@ public: 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; @@ -46,14 +46,44 @@ public: virtual bool hasChildren(const QModelIndex& theParent = QModelIndex()) const; + bool insertRows(int theRow, int theCount, const QModelIndex& theParent = QModelIndex()); + + bool removeRows(int theRow, int theCount, const QModelIndex& theParent = QModelIndex()); + + Qt::ItemFlags flags(const QModelIndex& theIndex) 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; + QModelIndex featureIndex(const FeaturePtr theFeature) const; + + //! Returns QModelIndex which corresponds to the given feature if this is a part + //! If the feature is not found then index is not valid + QModelIndex partIndex(const FeaturePtr& theFeature) const; + + //! Activates a part data model if the index is a Part node index. + //! Returns true if active part changed. + bool activatedIndex(const QModelIndex& theIndex); + + //! Retrurns Feature which corresponds to active part + FeaturePtr activePart() const; + + //! Retrurns QModelIndex of active part + QModelIndex activePartIndex() const { return myActivePartIndex; } + + //! Deactivates a Part + void deactivatePart(); + + void rebuildDataTree(); + private: + enum {PartsFolder, HistoryNode}; + + //! Converts QModelIndex of this model to QModelIndex of a one of sub-models. - QModelIndex toSourceModelIndex(const QModelIndex& theProxy) const; + QModelIndex* toSourceModelIndex(const QModelIndex& theProxy) const; //! Finds a pointer on QModelIndex which is equal to the given one QModelIndex* findModelIndex(const QModelIndex& theIndex) const; @@ -64,17 +94,20 @@ private: //! Deletes all saved pointers on QModelIndex objects. void clearModelIndexes(); - //! 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; + //! Returns true if the given model is a one of sub-models (of both types) + bool isSubModel(const QAbstractItemModel* theModel) const; + + //! Returns true if the given model is a one of sub-models of Part type + bool isPartSubModel(const QAbstractItemModel* theModel) const; + + //! Returns Parts Folder node + QModelIndex partFolderNode() const; + + int historyOffset() const; - //! Document - boost::shared_ptr myDocument; //! Data model of top part of data tree (not parts object) XGUI_TopDataModel* myModel; @@ -82,8 +115,14 @@ private: //! Data models for Parts data tree representation (one data model per a one part) QList myPartModels; + //! Active part in part editing mode + XGUI_PartModel* myActivePart; + + QModelIndex myActivePartIndex; + //! List of saved QModelIndexes created by sub-models QList myIndexes; + }; #endif \ No newline at end of file