X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ObjectsBrowser.h;h=2b9ab1803390bbcaa8125ede8ffdeae784958ab6;hb=49d5a27258260087aad5e7ca30d6863e08a186d1;hp=169615c3d88c2e4ff3fa9cca619c1686c4346238;hpb=b1a9aba9a812f170668d0f4e04b3501d91da425e;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ObjectsBrowser.h b/src/XGUI/XGUI_ObjectsBrowser.h index 169615c3d..2b9ab1803 100644 --- a/src/XGUI/XGUI_ObjectsBrowser.h +++ b/src/XGUI/XGUI_ObjectsBrowser.h @@ -11,9 +11,79 @@ #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; +}; + + +#if (!defined HAVE_SALOME) && (defined WIN32) +#include +/** +* \ingroup GUI +* Implementation of XGUI_DataTree custom style +*/ +class XGUI_TreeViewStyle : public QWindowsVistaStyle +{ + Q_OBJECT +public: + XGUI_TreeViewStyle() : 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 @@ -30,7 +100,7 @@ Q_OBJECT virtual ~XGUI_DataTree(); /// Returns current data model - ModuleBase_IDocumentDataModel* dataModel() const; + XGUI_DataModel* dataModel() const; signals: //! Emited on context menu request @@ -44,6 +114,9 @@ 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: /// Redefinition of virtual method virtual void contextMenuEvent(QContextMenuEvent* theEvent); @@ -51,6 +124,13 @@ 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 }; /**\class XGUI_ObjectsBrowser @@ -67,16 +147,14 @@ Q_OBJECT virtual ~XGUI_ObjectsBrowser(); //! Returns Model which provides access to data objects - ModuleBase_IDocumentDataModel* dataModel() const + XGUI_DataModel* dataModel() const { return myDocModel; } //! Returns list of currently selected objects - QObjectPtrList selectedObjects() const - { - return mySelectedData; - } + //! \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 @@ -95,7 +173,7 @@ Q_OBJECT } /// Returns active doc label object - QLineEdit* activeDocLabel() const { return myActiveDocLbl; } + QLabel* activeDocLabel() const { return myActiveDocLbl; } /// Rebuild data tree void rebuildDataTree(); @@ -103,8 +181,13 @@ 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); + +public slots: + //! Called on Edit command request + void onEditItem(); signals: //! Emited when selection is changed @@ -113,9 +196,8 @@ signals: //! Emited on context menu request void contextMenuRequested(QContextMenuEvent* theEvent); - protected: - /// Redefinition of virtual method - virtual bool eventFilter(QObject* obj, QEvent* theEvent); + //! Segnal is emitted when user cliks by mouse in header label of object browser + void headerMouseDblClicked(const QModelIndex&); private slots: /// Show context menu @@ -126,22 +208,23 @@ signals: /// \param thePnt a position of context menu void onLabelContextMenuRequested(const QPoint& thePnt); - //! Called on Edit command request - void onEditItem(); - //! 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 - ModuleBase_IDocumentDataModel* myDocModel; - - QLineEdit* myActiveDocLbl; + XGUI_DataModel* myDocModel; + XGUI_ActiveDocLbl* myActiveDocLbl; XGUI_DataTree* myTreeView; - QObjectPtrList mySelectedData; + /// A field to store expanded items before model reset + QModelIndexList myExpandedItems; }; #endif