X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.h;h=c1a9527bde13639ade41a9f18c05dfb6f2e4ca60;hb=fac255fcec3913e743169b3c207f28ca1303a0ff;hp=2c36641bc1247bdc1d67100fe2a4ee42926a77d5;hpb=f7721baf1eefd26b3cc15f08c0f407d5aa7c5fe8;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.h b/src/XGUI/XGUI_ObjectsBrowser.h index 2c36641bc..c1a9527bd 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.h +++ b/src/XGUI/XGUI_ObjectsBrowser.h @@ -1,4 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> +// Copyright (C) 2014-2017 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or +// email : webmaster.salome@opencascade.com +// #ifndef XGUI_ObjectsBrowser_H #define XGUI_ObjectsBrowser_H @@ -11,12 +29,56 @@ #include #include +#include class ModuleBase_IDocumentDataModel; -class QLineEdit; class XGUI_DataModel; +class Config_DataModelReader; + +/** +* \ingroup GUI +* Implementation of root label in Object Browser +*/ +class XGUI_ActiveDocLbl: public QLabel +{ +Q_OBJECT + public: + /// Constructor + /// \param theText a text + /// \param theParent a parent widget + XGUI_ActiveDocLbl(const QString& theText, QWidget* theParent ); + + /// Sets tree view + /// \param theView a view + void setTreeView(QTreeView* theView); + + /// Returns tree view + QTreeView* treePalette() const { return myTreeView;} + +#if (!defined HAVE_SALOME) && (defined WIN32) + virtual bool event(QEvent* theEvent); +#endif + +public slots: + /// On unselect + void unselect(); + +protected: + /// On mouse release + virtual void mouseReleaseEvent( QMouseEvent* e); + + /// Filter event + bool eventFilter(QObject* theObj, QEvent* theEvent); + +private: + QString myPreSelectionStyle; + QString myNeutralStyle; + QString mySelectionStyle; + + QTreeView* myTreeView; + bool myIsSelected; +}; -//#define ModuleDataModel /** * \ingroup GUI @@ -33,7 +95,7 @@ Q_OBJECT virtual ~XGUI_DataTree(); /// Returns current data model - ModuleBase_IDocumentDataModel* dataModel() const; + XGUI_DataModel* dataModel() const; signals: //! Emited on context menu request @@ -47,6 +109,7 @@ public slots: /// Commit modified data (used for renaming of objects) virtual void commitData(QWidget* theEditor); + /// A slot which is called on mouse double click void onDoubleClick(const QModelIndex&); protected: @@ -55,7 +118,6 @@ public slots: /// Redefinition of virtual method virtual void resizeEvent(QResizeEvent* theEvent); - }; /**\class XGUI_ObjectsBrowser @@ -72,17 +134,10 @@ Q_OBJECT virtual ~XGUI_ObjectsBrowser(); //! Returns Model which provides access to data objects -#ifdef ModuleDataModel - ModuleBase_IDocumentDataModel* dataModel() const - { - return myDocModel; - } -#else XGUI_DataModel* dataModel() const { return myDocModel; } -#endif //! Returns list of currently selected objects //! \param theIndexes - output list of corresponded indexes (can be NULL) @@ -105,7 +160,7 @@ Q_OBJECT } /// Returns active doc label object - QLineEdit* activeDocLabel() const { return myActiveDocLbl; } + QLabel* activeDocLabel() const { return myActiveDocLbl; } /// Rebuild data tree void rebuildDataTree(); @@ -113,8 +168,19 @@ Q_OBJECT /// Resets the object browser into initial state void clearContent(); - /// Set Data Model for the Object Browser - void setDataModel(ModuleBase_IDocumentDataModel* theModel); + /// Set XML reader object for data model + /// \param theReader the reader object + void setXMLReader(Config_DataModelReader* theReader); + + /// Returns list of folders opened state for the given document + /// \param theDoc the document + /// \return list of booleans with state expanded or not + std::list getStateForDoc(DocumentPtr theDoc) const; + + /// Set folders opened state for the given document + /// \param theDoc the document + /// \param theStates list of booleans with state expanded or not + void setStateForDoc(DocumentPtr theDoc, const std::list& theStates); public slots: //! Called on Edit command request @@ -130,10 +196,6 @@ signals: //! Segnal is emitted when user cliks by mouse in header label of object browser void headerMouseDblClicked(const QModelIndex&); - protected: - /// Redefinition of virtual method - virtual bool eventFilter(QObject* obj, QEvent* theEvent); - private slots: /// Show context menu /// \param theEvent a context menu event @@ -146,17 +208,20 @@ signals: //! Called when selection in Data Tree is changed void onSelectionChanged(const QItemSelection& theSelected, const QItemSelection& theDeselected); + void onBeforeReset(); + + void onAfterModelReset(); + private: - void closeDocNameEditing(bool toSave); + QModelIndexList expandedItems(const QModelIndex& theParent = QModelIndex()) const; //! Internal model -#ifdef ModuleDataModel - ModuleBase_IDocumentDataModel* myDocModel; -#else XGUI_DataModel* myDocModel; -#endif - QLineEdit* myActiveDocLbl; + XGUI_ActiveDocLbl* myActiveDocLbl; XGUI_DataTree* myTreeView; + + /// A field to store expanded items before model reset + QModelIndexList myExpandedItems; }; #endif