Salome HOME
Sources formated according to the codeing standards
[modules/shaper.git] / src / XGUI / XGUI_ObjectsBrowser.h
1 #ifndef XGUI_ObjectsBrowser_H
2 #define XGUI_ObjectsBrowser_H
3
4 #include "XGUI.h"
5 #include <ModuleBase_Definitions.h>
6 #include <ModelAPI_Object.h>
7 #include <ModelAPI_ResultPart.h>
8
9 #include <QWidget>
10 #include <QTreeView>
11
12 class XGUI_DocumentDataModel;
13 class QLineEdit;
14
15 class XGUI_DataTree : public QTreeView
16 {
17 Q_OBJECT
18  public:
19   XGUI_DataTree(QWidget* theParent);
20   virtual ~XGUI_DataTree();
21
22   //! Returns list of currently selected objects
23   QList<ObjectPtr> selectedObjects() const
24   {
25     return mySelectedData;
26   }
27
28   XGUI_DocumentDataModel* dataModel() const;
29
30 signals:
31   //! Emited when selection is changed
32   void selectionChanged();
33   void activePartChanged(ObjectPtr thePart);
34
35   //! Emited on context menu request
36   void contextMenuRequested(QContextMenuEvent* theEvent);
37
38  protected slots:
39   virtual void commitData(QWidget* theEditor);
40
41  protected:
42   virtual void mouseDoubleClickEvent(QMouseEvent* theEvent);
43   virtual void contextMenuEvent(QContextMenuEvent* theEvent);
44
45  private slots:
46   //! Called when selection in Data Tree is changed
47   void onSelectionChanged(const QItemSelection& theSelected, const QItemSelection& theDeselected);
48
49  private:
50   //! List of currently selected data
51   QList<ObjectPtr> mySelectedData;
52 };
53
54 /**\class XGUI_ObjectsBrowser
55  * \ingroup GUI
56  * \brief Object browser window object. Represents data tree of current data structure
57  */
58 class XGUI_EXPORT XGUI_ObjectsBrowser : public QWidget
59 {
60 Q_OBJECT
61  public:
62   XGUI_ObjectsBrowser(QWidget* theParent);
63   virtual ~XGUI_ObjectsBrowser();
64
65   //! Returns Model which provides access to data objects
66   XGUI_DocumentDataModel* dataModel() const
67   {
68     return myDocModel;
69   }
70
71   //! Returns list of currently selected objects
72   QList<ObjectPtr> selectedObjects() const
73   {
74     return myObjectsList;
75   }
76
77   void setObjectsSelected(const QList<ObjectPtr>& theObjects);
78
79   //! Returns currently selected indexes
80   QModelIndexList selectedIndexes() const
81   {
82     return myTreeView->selectionModel()->selectedIndexes();
83   }
84
85   //! Returns TreeView widget
86   XGUI_DataTree* treeView() const
87   {
88     return myTreeView;
89   }
90
91   //! Activates currently selected part. Signal activePartChanged will not be sent
92   void activatePart(const ResultPartPtr& thePart);
93
94   void rebuildDataTree();
95
96 signals:
97   //! Emited when selection is changed
98   void selectionChanged();
99
100   //! Emited when current active document is changed
101   void activePartChanged(ObjectPtr thePart);
102
103   //! Emited on context menu request
104   void contextMenuRequested(QContextMenuEvent* theEvent);
105
106  protected:
107   virtual bool eventFilter(QObject* obj, QEvent* theEvent);
108
109  private slots:
110   void onActivePartChanged(ObjectPtr thePart);
111   void onContextMenuRequested(QContextMenuEvent* theEvent);
112   void onLabelContextMenuRequested(const QPoint& thePnt);
113
114   //! Called on Edit command request
115   void onEditItem();
116
117   void onSelectionChanged();
118
119  private:
120   void closeDocNameEditing(bool toSave);
121
122   //! Internal model
123   XGUI_DocumentDataModel* myDocModel;
124
125   QLineEdit* myActiveDocLbl;
126   XGUI_DataTree* myTreeView;
127
128   QList<ObjectPtr> myObjectsList;
129 };
130
131 #endif