X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.h;h=f3e335eefd4cedeb448d075fdce4def7167cd6e4;hb=1035d41ad342fb22f5ea2552a8fc135aed95f3b8;hp=28a01ca2fe3c96c0545311109f80710edc4df3cd;hpb=78f72e4cdfd3f4fd0cbc0ff133ec8000b0996c2e;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.h b/src/XGUI/XGUI_ObjectsBrowser.h index 28a01ca2f..f3e335eef 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.h +++ b/src/XGUI/XGUI_ObjectsBrowser.h @@ -1,4 +1,21 @@ -// Copyright (C) 2014-20xx 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 +// 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 @@ -8,14 +25,20 @@ #include #include #include +#include #include #include #include +#include class ModuleBase_IDocumentDataModel; class XGUI_DataModel; class Config_DataModelReader; +class XGUI_Workshop; +class ModuleBase_ITreeNode; + +//#define DEBUG_INDXES /** * \ingroup GUI @@ -62,34 +85,11 @@ private: }; -//#if (!defined HAVE_SALOME) && (defined WIN32) -//#include -// /** -//* \ingroup GUI -//* Implementation of XGUI_DataTree custom style -//*/ -//class XGUI_TreeViewStyle : public QCommonStyle // PORTING_TO_SALOME_8 QWindowsVistaStyle -//{ -// Q_OBJECT -//public: -// XGUI_TreeViewStyle() : QCommonStyle/*QWindowsVistaStyle*/() {} -// -// void drawPrimitive(PrimitiveElement theElement, const QStyleOption* theOption, -// QPainter* thePainter, const QWidget* theWidget = 0) const; -// -// void setIndex(const QModelIndex& theIndex) { myIndex = theIndex; } -// QModelIndex index() const { return myIndex; } -// -//private: -// QModelIndex myIndex; -//}; -//#endif - /** * \ingroup GUI * Implementation of Data Tree object for Object Browser */ -class XGUI_DataTree : public QTreeView +class XGUI_EXPORT XGUI_DataTree : public QTreeView { Q_OBJECT public: @@ -124,13 +124,21 @@ public slots: /// Redefinition of virtual method virtual void resizeEvent(QResizeEvent* theEvent); -//#if (!defined HAVE_SALOME) && (defined WIN32) -// virtual void drawRow(QPainter* thePainter, -// const QStyleOptionViewItem& theOptions, -// const QModelIndex& theIndex) const; -//private: -// XGUI_TreeViewStyle* myStyle; -//#endif + /// Redefinition of virtual method + virtual void mouseReleaseEvent(QMouseEvent* theEvent); + +#ifdef DEBUG_INDXES + virtual void mousePressEvent(QMouseEvent* theEvent); +#endif + +private: + /// Process a history change request + /// \param theIndex a clicked data index + void processHistoryChange(const QModelIndex& theIndex); + + /// Process a visibility change request + /// \param theIndex a clicked data index + void processEyeClick(const QModelIndex& theIndex); }; /**\class XGUI_ObjectsBrowser @@ -143,7 +151,7 @@ Q_OBJECT public: /// Constructor /// \param theParent a parent widget - XGUI_ObjectsBrowser(QWidget* theParent); + XGUI_ObjectsBrowser(QWidget* theParent, XGUI_Workshop* theWorkshop); virtual ~XGUI_ObjectsBrowser(); //! Returns Model which provides access to data objects @@ -160,10 +168,17 @@ Q_OBJECT /// \param theObjects list of objects to select void setObjectsSelected(const QObjectPtrList& theObjects); + //! Scroll TreeView to make given object visible + //! \param theObject object to make it visible + void ensureVisible(const ObjectPtr theObject); + //! Returns currently selected indexes QModelIndexList selectedIndexes() const { - return myTreeView->selectionModel()->selectedIndexes(); + if (myTreeView->selectionModel()) + return myTreeView->selectionModel()->selectedIndexes(); + else + return QModelIndexList(); } //! Returns TreeView widget @@ -181,9 +196,8 @@ Q_OBJECT /// Resets the object browser into initial state void clearContent(); - /// Set XML reader object for data model - /// \param theReader the reader object - void setXMLReader(Config_DataModelReader* theReader); + /// Initialize the Object browser + void initialize(ModuleBase_ITreeNode* theRoot); /// Returns list of folders opened state for the given document /// \param theDoc the document @@ -195,6 +209,20 @@ Q_OBJECT /// \param theStates list of booleans with state expanded or not void setStateForDoc(DocumentPtr theDoc, const std::list& theStates); + /// Returns current workshop + XGUI_Workshop* workshop() const { return myWorkshop; } + + void onSelectionChanged(); + + /// Updates all items of object browser + /// \param theColumn - column of items + /// \param theParent - a parent item (by default from root) + void updateAllIndexes(int theColumn = 0, const QModelIndex& theParent = QModelIndex()); + + QMap getFoldersState(DocumentPtr theDoc) const; + + void setFoldersState(const QMap& theStates); + public slots: //! Called on Edit command request void onEditItem(); @@ -209,6 +237,15 @@ signals: //! Segnal is emitted when user cliks by mouse in header label of object browser void headerMouseDblClicked(const QModelIndex&); + //! An signal emitted on resize of the Object Browser + void sizeChanged(); + + +protected: + //! redefinition of a virtual method + void resizeEvent(QResizeEvent* theEvent); + + private slots: /// Show context menu /// \param theEvent a context menu event @@ -226,15 +263,17 @@ signals: void onAfterModelReset(); private: - QModelIndexList expandedItems(const QModelIndex& theParent = QModelIndex()) const; + QList expandedItems(const QModelIndex& theParent = QModelIndex()) const; //! Internal model XGUI_DataModel* myDocModel; XGUI_ActiveDocLbl* myActiveDocLbl; XGUI_DataTree* myTreeView; + XGUI_Workshop* myWorkshop; /// A field to store expanded items before model reset - QModelIndexList myExpandedItems; + //QModelIndexList myExpandedItems; + QList myExpandedItems; }; #endif