Salome HOME
Create selection validator and selection object
[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
16
17
18 XGUI_SelectionMgr::XGUI_SelectionMgr(XGUI_Workshop* theParent) :
19   QObject(theParent), myWorkshop(theParent)
20 {
21   mySelection = new XGUI_Selection(myWorkshop);
22 }
23
24 XGUI_SelectionMgr::~XGUI_SelectionMgr()
25 {
26   delete mySelection;
27 }
28
29 //**************************************************************
30 void XGUI_SelectionMgr::connectViewers()
31 {
32   connect(myWorkshop->objectBrowser(), SIGNAL(selectionChanged()), 
33     this, SLOT(onObjectBrowserSelection()));
34
35   //Connect to other viewers
36   connect(myWorkshop->viewer(), SIGNAL(selectionChanged()),
37     this, SLOT(onViewerSelection()));
38 }
39
40 //**************************************************************
41 void XGUI_SelectionMgr::onObjectBrowserSelection()
42 {
43   QFeatureList aFeatures = myWorkshop->objectBrowser()->selectedFeatures();
44   XGUI_Displayer* aDisplayer = myWorkshop->displayer();
45   aDisplayer->setSelected(aFeatures);
46   emit selectionChanged();
47 }
48
49 //**************************************************************
50 void XGUI_SelectionMgr::onViewerSelection()
51 {
52   QFeatureList aFeatures;
53   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
54   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
55     Handle(AIS_InteractiveObject) anIO = aContext->SelectedInteractive();
56     FeaturePtr aFeature = myWorkshop->displayer()->getFeature(anIO);
57     if (aFeature)
58       aFeatures.append(aFeature);
59   }
60   myWorkshop->objectBrowser()->setFeaturesSelected(aFeatures);
61   emit selectionChanged();
62 }
63
64 //**************************************************************
65 /*QFeatureList XGUI_SelectionMgr::selectedFeatures() const 
66
67   return myWorkshop->objectBrowser()->selectedFeatures(); 
68 }
69
70 //**************************************************************
71 QModelIndexList XGUI_SelectionMgr::selectedIndexes() const 
72
73   return myWorkshop->objectBrowser()->selectedIndexes();
74 }
75
76 //**************************************************************
77 void XGUI_SelectionMgr::selectedAISObjects(AIS_ListOfInteractive& theList) const
78 {
79   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
80   theList.Clear();
81   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected())
82     theList.Append(aContext->SelectedInteractive());
83 }
84
85 //**************************************************************
86 void XGUI_SelectionMgr::selectedShapes(NCollection_List<TopoDS_Shape>& theList) const
87 {
88   theList.Clear();
89   Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
90   for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) {
91     TopoDS_Shape aShape = aContext->SelectedShape();
92     if (!aShape.IsNull())
93       theList.Append(aShape);
94   }
95 }*/