X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_SelectionMgr.cpp;h=9f830a74ec5757257915168ab59afcb277ad6e58;hb=a3b2736968186ac435b1e05e530c40becbc82301;hp=c4c09491de67d2fe34635116cb1ee8888ef4fc70;hpb=bfc592b7af1751c4a64d5e545f5ac1dc513ecd01;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_SelectionMgr.cpp b/src/XGUI/XGUI_SelectionMgr.cpp index c4c09491d..9f830a74e 100644 --- a/src/XGUI/XGUI_SelectionMgr.cpp +++ b/src/XGUI/XGUI_SelectionMgr.cpp @@ -1,42 +1,87 @@ #include "XGUI_SelectionMgr.h" + #include "XGUI_Workshop.h" #include "XGUI_MainWindow.h" #include "XGUI_ObjectsBrowser.h" +#include "XGUI_SalomeConnector.h" +#include "XGUI_ViewerProxy.h" +#include "XGUI_Displayer.h" #include #include #include -#include +#include XGUI_SelectionMgr::XGUI_SelectionMgr(XGUI_Workshop* theParent) : QObject(theParent), myWorkshop(theParent) { - XGUI_ObjectsBrowser* aObjBrowser = myWorkshop->mainWindow()->objectBrowser(); - - connect(aObjBrowser, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); } - XGUI_SelectionMgr::~XGUI_SelectionMgr() { } -void XGUI_SelectionMgr::onSelectionChanged() +//************************************************************** +void XGUI_SelectionMgr::connectViewers() { - XGUI_ObjectsBrowser* aObjBrowser = myWorkshop->mainWindow()->objectBrowser(); - mySelectedData = aObjBrowser->selectedData(); - - // Set current document - if (mySelectedData.size() > 0) { - FeaturePtr aFeature = mySelectedData.first(); - - std::shared_ptr aMgr = ModelAPI_PluginManager::get(); - std::shared_ptr aDocRef = aFeature->data()->docRef("PartDocument"); - if (aDocRef) - aMgr->setCurrentDocument(aDocRef->value()); - } + connect(myWorkshop->objectBrowser(), SIGNAL(selectionChanged()), + this, SLOT(onObjectBrowserSelection())); + + //Connect to other viewers + connect(myWorkshop->viewer(), SIGNAL(selectionChanged()), + this, SLOT(onViewerSelection())); +} +//************************************************************** +void XGUI_SelectionMgr::onObjectBrowserSelection() +{ + QFeatureList aFeatures = selectedFeatures(); + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + aDisplayer->setSelected(aFeatures); + + emit selectionChanged(); +} + +//************************************************************** +void XGUI_SelectionMgr::onViewerSelection() +{ + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + QFeatureList aFeatures = aDisplayer->selectedFeatures(); + myWorkshop->objectBrowser()->setFeaturesSelected(aFeatures); emit selectionChanged(); -} \ No newline at end of file +} + +//************************************************************** +QFeatureList XGUI_SelectionMgr::selectedFeatures() const +{ + return myWorkshop->objectBrowser()->selectedFeatures(); +} + +//************************************************************** +QModelIndexList XGUI_SelectionMgr::selectedIndexes() const +{ + return myWorkshop->objectBrowser()->selectedIndexes(); +} + +//************************************************************** +void XGUI_SelectionMgr::selectedAISObjects(AIS_ListOfInteractive& theList) const +{ + Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); + theList.Clear(); + for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) + theList.Append(aContext->SelectedInteractive()); +} + +//************************************************************** +void XGUI_SelectionMgr::selectedShapes(NCollection_List& theList) const +{ + theList.Clear(); + Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); + for (aContext->InitSelected(); aContext->MoreSelected(); aContext->NextSelected()) { + TopoDS_Shape aShape = aContext->SelectedShape(); + if (!aShape.IsNull()) + theList.Append(aShape); + } +}