Salome HOME
Bodies folder in Part data tree
[modules/shaper.git] / src / XGUI / XGUI_SelectionMgr.cpp
1 #include "XGUI_SelectionMgr.h"
2
3 #include "XGUI_Workshop.h"
4 #include "XGUI_MainWindow.h"
5 #include "XGUI_ObjectsBrowser.h"
6 #include "XGUI_SalomeConnector.h"
7 #include "XGUI_ViewerProxy.h"
8 #include "XGUI_Displayer.h"
9 #include "XGUI_Selection.h"
10
11 #include <ModelAPI_Feature.h>
12 #include <ModelAPI_PluginManager.h>
13 #include <ModelAPI_AttributeDocRef.h>
14 #include <ModelAPI_Data.h>
15 #include <ModelAPI_Result.h>
16 #include <ModelAPI_Object.h>
17
18
19
20 XGUI_SelectionMgr::XGUI_SelectionMgr(XGUI_Workshop* theParent) :
21   QObject(theParent), myWorkshop(theParent)
22 {
23   mySelection = new XGUI_Selection(myWorkshop);
24 }
25
26 XGUI_SelectionMgr::~XGUI_SelectionMgr()
27 {
28   delete mySelection;
29 }
30
31 //**************************************************************
32 void XGUI_SelectionMgr::connectViewers()
33 {
34   connect(myWorkshop->objectBrowser(), SIGNAL(selectionChanged()), 
35     this, SLOT(onObjectBrowserSelection()));
36
37   //Connect to other viewers
38   connect(myWorkshop->viewer(), SIGNAL(selectionChanged()),
39     this, SLOT(onViewerSelection()));
40 }
41
42 //**************************************************************
43 void XGUI_SelectionMgr::onObjectBrowserSelection()
44 {
45   QList<ObjectPtr> aObjects = myWorkshop->objectBrowser()->selectedObjects();
46   XGUI_Displayer* aDisplayer = myWorkshop->displayer();
47   aDisplayer->setSelected(aObjects);
48   emit selectionChanged();
49 }
50
51 //**************************************************************
52 void XGUI_SelectionMgr::onViewerSelection()
53 {
54   QList<ObjectPtr> aFeatures;
55   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
56   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
57     Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
58     ObjectPtr aResult = myWorkshop->displayer()->getObject(anIO);
59     if (aResult)
60       aFeatures.append(aResult);
61   }
62   bool aBlocked = myWorkshop->objectBrowser()->blockSignals(true);
63   myWorkshop->objectBrowser()->setObjectsSelected(aFeatures);
64   myWorkshop->objectBrowser()->blockSignals(aBlocked);
65
66   emit selectionChanged();
67 }
68
69 //**************************************************************
70 /*QFeatureList XGUI_SelectionMgr::selectedFeatures() const 
71
72   return myWorkshop->objectBrowser()->selectedFeatures(); 
73 }
74
75 //**************************************************************
76 QModelIndexList XGUI_SelectionMgr::selectedIndexes() const 
77
78   return myWorkshop->objectBrowser()->selectedIndexes();
79 }
80
81 //**************************************************************
82 void XGUI_SelectionMgr::selectedAISObjects(AIS_ListOfInteractive& theList) const
83 {
84   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
85   theList.Clear();
86   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected())
87     theList.Append(aContext->SelectedInteractive());
88 }
89
90 //**************************************************************
91 void XGUI_SelectionMgr::selectedShapes(NCollection_List<TopoDS_Shape>& theList) const
92 {
93   theList.Clear();
94   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
95   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
96     TopoDS_Shape aShape = aContext->SelectedShape();
97     if (!aShape.IsNull())
98       theList.Append(aShape);
99   }
100 }*/