Salome HOME
Merge branch 'Dev_0.7.1' of newgeom:newgeom into Dev_0.7.1
[modules/shaper.git] / src / XGUI / XGUI_SelectionMgr.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 #ifndef XGUI_SelectionMgr_H
4 #define XGUI_SelectionMgr_H
5
6 #include "XGUI.h"
7 #include <ModuleBase_Definitions.h>
8 #include <QObject>
9 #include <QModelIndexList>
10
11 #include <AIS_ListOfInteractive.hxx>
12 #include <NCollection_List.hxx>
13 #include <TopoDS_Shape.hxx>
14 #include <SelectMgr_IndexedMapOfOwner.hxx>
15
16 class XGUI_Workshop;
17 class XGUI_ObjectsBrowser;
18 class XGUI_Selection;
19
20 /**\class XGUI_SelectionMgr
21  * \ingroup GUI
22  * \brief Selection manager. Provides selection event on selection in 
23  * Object Browser and Viewer
24  */
25 class XGUI_EXPORT XGUI_SelectionMgr : public QObject
26 {
27 Q_OBJECT
28  public:
29    /// Constructor
30    /// \param theParent a parent workshop
31   XGUI_SelectionMgr(XGUI_Workshop* theParent);
32   virtual ~XGUI_SelectionMgr();
33
34   /// Returns current selection
35   XGUI_Selection* selection() const
36   {
37     return mySelection;
38   }
39
40   //! Connects the manager to all viewers accessible by Workshop
41   void connectViewers();
42
43   //! Selects the owners in the context.
44   //! \param theSelectedOwners a container of owners
45   /// \param isUpdateViewer the parameter whether the viewer should be update immediatelly
46   void setSelectedOwners(const SelectMgr_IndexedMapOfOwner& theSelectedOwners,
47                          bool isUpdateViewer);
48
49   //! Check that the selected owners are valid for the current filters
50   /// \param isUpdateViewer the parameter whether the viewer should be update immediatelly
51   void updateSelectedOwners(bool isUpdateViewer);
52
53 signals:
54   //! Emited when selection in a one of viewers was changed
55   void selectionChanged();
56
57  private slots:
58    /// Reaction on selectio0n in Object browser
59   void onObjectBrowserSelection();
60
61    /// Reaction on selectio0n in Viewer
62   void onViewerSelection();
63
64  private:
65    /// Reference to workshop
66   XGUI_Workshop* myWorkshop;
67
68   /// Current selection object
69   XGUI_Selection* mySelection;
70 };
71
72 #endif