X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_ObjectsBrowser.h;h=d92788abecde6f02730041ba7202c3690b3c1b5b;hb=40cb766e78a86842f588a765162aa04e25c0d399;hp=dff46d5aeb5ae6a7948adcf2842321041b8bb6b5;hpb=7ff9c971a42247ba4efd767781d0367dfb8a40e0;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.h b/src/XGUI/XGUI_ObjectsBrowser.h index dff46d5ae..d92788abe 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.h +++ b/src/XGUI/XGUI_ObjectsBrowser.h @@ -1,35 +1,164 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> #ifndef XGUI_ObjectsBrowser_H #define XGUI_ObjectsBrowser_H -#include "XGUI_Constants.h" +#include "XGUI.h" +#include +#include +#include +#include +#include #include -class XGUI_DocumentDataModel; +class ModuleBase_IDocumentDataModel; +class QLineEdit; +class XGUI_DataModel; -class XGUI_ObjectsBrowser : public QTreeView +//#define ModuleDataModel + +/** +* \ingroup GUI +* Implementation of Data Tree object for Object Browser +*/ +class XGUI_DataTree : public QTreeView +{ +Q_OBJECT + public: + /// Constructor + /// \param theParent a parent widget + XGUI_DataTree(QWidget* theParent); + + virtual ~XGUI_DataTree(); + + /// Returns current data model + ModuleBase_IDocumentDataModel* dataModel() const; + +signals: + //! Emited on context menu request + void contextMenuRequested(QContextMenuEvent* theEvent); + +public slots: + /// Clear content of data tree + virtual void clear(); + + protected slots: + /// Commit modified data (used for renaming of objects) + virtual void commitData(QWidget* theEditor); + + void onDoubleClick(const QModelIndex&); + + protected: + /// Redefinition of virtual method + virtual void contextMenuEvent(QContextMenuEvent* theEvent); + + /// Redefinition of virtual method + virtual void resizeEvent(QResizeEvent* theEvent); + +}; + +/**\class XGUI_ObjectsBrowser + * \ingroup GUI + * \brief Object browser window object. Represents data tree of current data structure + */ +class XGUI_EXPORT XGUI_ObjectsBrowser : public QWidget { - Q_OBJECT -public: +Q_OBJECT + public: + /// Constructor + /// \param theParent a parent widget XGUI_ObjectsBrowser(QWidget* theParent); virtual ~XGUI_ObjectsBrowser(); - XGUI_DocumentDataModel* dataModel() const { return myDocModel; } + //! 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) + QObjectPtrList selectedObjects(QModelIndexList* theIndexes = 0) const; + + /// Set selected list of objects + /// \param theObjects list of objects to select + void setObjectsSelected(const QObjectPtrList& theObjects); + + //! Returns currently selected indexes + QModelIndexList selectedIndexes() const + { + return myTreeView->selectionModel()->selectedIndexes(); + } + + //! Returns TreeView widget + XGUI_DataTree* treeView() const + { + return myTreeView; + } + + /// Returns active doc label object + QLineEdit* activeDocLabel() const { return myActiveDocLbl; } + + /// Rebuild data tree + void rebuildDataTree(); - QFeatureList selectedData() const { return mySelectedData; } + /// Resets the object browser into initial state + void clearContent(); + + /// Set Data Model for the Object Browser +#ifdef ModuleDataModel + void setDataModel(ModuleBase_IDocumentDataModel* theModel); +#endif + +public slots: + //! Called on Edit command request + void onEditItem(); signals: + //! Emited when selection is changed void selectionChanged(); + //! Emited on context menu request + void contextMenuRequested(QContextMenuEvent* theEvent); + + //! 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 + void onContextMenuRequested(QContextMenuEvent* theEvent); + + /// Show context menu on upper label + /// \param thePnt a position of context menu + void onLabelContextMenuRequested(const QPoint& thePnt); -private slots: + //! Called when selection in Data Tree is changed void onSelectionChanged(const QItemSelection& theSelected, const QItemSelection& theDeselected); -private: - XGUI_DocumentDataModel* myDocModel; + private: + void closeDocNameEditing(bool toSave); - QFeatureList mySelectedData; + //! Internal model +#ifdef ModuleDataModel + ModuleBase_IDocumentDataModel* myDocModel; +#else + XGUI_DataModel* myDocModel; +#endif + QLineEdit* myActiveDocLbl; + XGUI_DataTree* myTreeView; }; -#endif \ No newline at end of file +#endif