X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_DataModel.h;h=df3984e58e6bf49acb238e5f22ec504b147d7068;hb=20afea6c885668f6901e7ae42ee19c7b8fb40ac4;hp=e89546161dda5a6b3a564dcc0fe37741a607a222;hpb=c36b2edd26fdfd95930ba3f487d302e930aef961;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_DataModel.h b/src/XGUI/XGUI_DataModel.h index e89546161..df3984e58 100644 --- a/src/XGUI/XGUI_DataModel.h +++ b/src/XGUI/XGUI_DataModel.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef XGUI_DataModel_H @@ -29,8 +28,8 @@ #include -class Config_DataModelReader; class XGUI_Workshop; +class ModuleBase_ITreeNode; /**\class XGUI_DataModel * \ingroup GUI @@ -54,6 +53,11 @@ public: /// Destructor virtual ~XGUI_DataModel(); + + void setRoot(ModuleBase_ITreeNode* theRoot) { myRoot = theRoot; } + + ModuleBase_ITreeNode* root() const { return myRoot; } + /// Event Listener method /// \param theMessage an event message virtual void processEvent(const std::shared_ptr& theMessage); @@ -72,7 +76,6 @@ public: //! Rebuild data tree virtual void rebuildDataTree(); - /// Returns the data stored under the given role for the item referred to by the index. /// \param theIndex a model index /// \param theRole a data role (see Qt::ItemDataRole) @@ -134,10 +137,10 @@ public: QModelIndex documentRootIndex(DocumentPtr theDoc, int theColumn = 1) const; /// Returns last history object index - virtual QModelIndex lastHistoryIndex() const; + //virtual QModelIndex lastHistoryIndex() const; /// Initialises XML data model reader. It must be initialised before DataModel using. - void setXMLReader(Config_DataModelReader* theReader) { myXMLReader = theReader; } + //void setXMLReader(Config_DataModelReader* theReader) { myXMLReader = theReader; } /// Do not processing anymore events of model loop //bool blockEventsProcessing(const bool theState); @@ -147,7 +150,27 @@ public: /// \return boolean value bool hasHiddenState(const QModelIndex& theIndex); + /// Returns true if the given index exists in data tree + /// \param theIndex an index to check + bool hasIndex(const QModelIndex& theIndex) const; + + /// Returns true if the given node is a parto of the data tree + /// \param theNode a node to check + bool hasNode(ModuleBase_ITreeNode* theNode) const; + + /// Returns document of the given index + /// \param theIndex an index to check + DocumentPtr document(const QModelIndex& theIndex) const; + + /// Returns index for the node and column + /// \param theNode a node + /// \param thCol a column + QModelIndex getIndex(ModuleBase_ITreeNode* theNode, int thCol) const; + signals: + /// Signal send before tree rebuild + void beforeTreeRebuild(); + /// Signal about tree had been rebuilt void treeRebuilt(); @@ -158,69 +181,76 @@ private: SemiVisible, Hidden }; + + QModelIndex getParentIndex(ModuleBase_ITreeNode* theNode, int thCol) const; + + void updateSubTree(ModuleBase_ITreeNode* theParent); + /// Find a root index which contains objects of the given document /// \param theDoc the document object - QModelIndex findDocumentRootIndex(const ModelAPI_Document* theDoc, int aColumn = 1) const; + //QModelIndex findDocumentRootIndex(const ModelAPI_Document* theDoc, int aColumn = 1) const; /// Returns number of folders in document. /// Considered folders which has to be shown only if they are not empty. /// \param theDoc document which has to be checked. If 0 then Root document will be considered - int foldersCount(ModelAPI_Document* theDoc = 0) const; + //int foldersCount(ModelAPI_Document* theDoc = 0) const; /// Retrurns indexes of folders which can not be shown because they are empty /// \param theDoc document which has to be checked. If 0 then Root document will be considered - QIntList missedFolderIndexes(ModelAPI_Document* theDoc = 0) const; + //QIntList missedFolderIndexes(ModelAPI_Document* theDoc = 0) const; /// Returns Id (row) of a folder taking into consideration /// folders which can not be shown non empty /// \param theType Type of the folder /// \param theDoc a document which contains this folder - int folderId(std::string theType, ModelAPI_Document* theDoc = 0) const; + //int folderId(std::string theType, ModelAPI_Document* theDoc = 0) const; /// Removes a row from branch of tree /// \param theStart - start row to update indexes /// \param theSize - number of indexes in the folder /// \param theParent - index of parent folder - void rebuildBranch(int theRow, int theCount, const QModelIndex& theParent = QModelIndex()); + //void rebuildBranch(int theRow, int theCount, const QModelIndex& theParent = QModelIndex()); /// Returns list of folders types which can not be shown empty /// \param fromRoot - root document flag - QStringList listOfShowNotEmptyFolders(bool fromRoot = true) const; - - int getNumberOfFolderItems(const ModelAPI_Folder* theFolder) const; - ObjectPtr getObjectInFolder(const ModelAPI_Folder* theFolder, int theId) const; - - VisibilityState getVisibilityState(const QModelIndex& theIndex) const; - - void addShownFolder(DocumentPtr theDoc, QString theFolder) - { - if (!myShownFolders.contains(theDoc)) { - myShownFolders[theDoc] = QStringList(); - } - myShownFolders[theDoc].append(theFolder); - } - - void removeShownFolder(DocumentPtr theDoc, QString theFolder) - { - if (myShownFolders.contains(theDoc)) { - myShownFolders[theDoc].removeAll(theFolder); - if (myShownFolders[theDoc].isEmpty()) - myShownFolders.remove(theDoc); - } - } - - bool hasShownFolder(DocumentPtr theDoc, QString theFolder) const - { - if (myShownFolders.contains(theDoc)) - return myShownFolders[theDoc].contains(theFolder); - return false; - } - - Config_DataModelReader* myXMLReader; + //QStringList listOfShowNotEmptyFolders(bool fromRoot = true) const; + + //int getNumberOfFolderItems(const ModelAPI_Folder* theFolder) const; + //ObjectPtr getObjectInFolder(const ModelAPI_Folder* theFolder, int theId) const; + + //VisibilityState getVisibilityState(const QModelIndex& theIndex) const; + + //void addShownFolder(DocumentPtr theDoc, QString theFolder) + //{ + // if (!myShownFolders.contains(theDoc)) { + // myShownFolders[theDoc] = QStringList(); + // } + // myShownFolders[theDoc].append(theFolder); + //} + + //void removeShownFolder(DocumentPtr theDoc, QString theFolder) + //{ + // if (myShownFolders.contains(theDoc)) { + // myShownFolders[theDoc].removeAll(theFolder); + // if (myShownFolders[theDoc].isEmpty()) + // myShownFolders.remove(theDoc); + // } + //} + + //bool hasShownFolder(DocumentPtr theDoc, QString theFolder) const + //{ + // if (myShownFolders.contains(theDoc)) + // return myShownFolders[theDoc].contains(theFolder); + // return false; + //} + + //Config_DataModelReader* myXMLReader; XGUI_Workshop* myWorkshop; QMap myShownFolders; //bool myIsEventsProcessingBlocked; + + ModuleBase_ITreeNode* myRoot; }; #endif \ No newline at end of file