Salome HOME
Issue #459: Selection has to be cleared in Object Browser also on clearing selection...
[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   //! Clears selection in Viewer and object Browser
54   void clearSelection();
55
56 signals:
57   //! Emited when selection in a one of viewers was changed
58   void selectionChanged();
59
60  private slots:
61    /// Reaction on selectio0n in Object browser
62   void onObjectBrowserSelection();
63
64    /// Reaction on selectio0n in Viewer
65   void onViewerSelection();
66
67  private:
68    /// Reference to workshop
69   XGUI_Workshop* myWorkshop;
70
71   /// Current selection object
72   XGUI_Selection* mySelection;
73 };
74
75 #endif