X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_VTKUtils.cxx;h=76a8cb1a608233aceb6e8fc244863624ef189e2c;hb=57b43b4d010e2d0a1529d3c131bbb9d416e63258;hp=b918db58dd3b97815a6eda2571f020e04a26a026;hpb=792462956dd1d73a68d681b931e91998d80a4500;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_VTKUtils.cxx b/src/SMESHGUI/SMESHGUI_VTKUtils.cxx index b918db58d..76a8cb1a6 100644 --- a/src/SMESHGUI/SMESHGUI_VTKUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_VTKUtils.cxx @@ -31,14 +31,11 @@ #include #include -#include "SalomeApp_SelectionMgr.h" +#include "LightApp_SelectionMgr.h" #include "SVTK_Selector.h" #include "SVTK_ViewModel.h" #include "SVTK_ViewWindow.h" -#include "SVTK_RenderWindow.h" -#include "SVTK_InteractorStyle.h" -#include "SVTK_RenderWindowInteractor.h" #include "utilities.h" @@ -53,7 +50,7 @@ #include "SMESH_ObjectDef.h" #include -#include +#include #include #include @@ -93,7 +90,7 @@ namespace SMESH{ if(!aMesh->_is_nil()){ aVisualObj.reset(new SMESH_MeshObj(aMesh)); aVisualObj->Update(); - TVisualObjCont::value_type aValue(aKey,aVisualObj); + TVisualObjCont::value_type aValue(aKey,aVisualObj); VISUAL_OBJ_CONT.insert(aValue); return aVisualObj; } @@ -145,15 +142,8 @@ namespace SMESH{ SVTK_ViewWindow* GetViewWindow(const SalomeApp_Module* theModule) { - if(SalomeApp_Application* anApp = theModule->getApp()){ - if(SUIT_ViewManager* aViewManager = anApp->activeViewManager()){ - if(aViewManager->getType() == SVTK_Viewer::Type()){ - if(SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView()){ - return dynamic_cast(aViewWindow); - } - } - } - } + if (SalomeApp_Application* anApp = theModule->getApp()) + return dynamic_cast(anApp->desktop()->activeWindow()); return NULL; } @@ -311,8 +301,10 @@ namespace SMESH{ void RepaintCurrentView(){ if(SVTK_ViewWindow* wnd = GetCurrentVtkView() ) - wnd->getRenderer()->Render(); - //wnd->Repaint(); + { + wnd->getRenderer()->Render(); + wnd->Repaint(false); + } } void UpdateView(SUIT_ViewWindow *theWnd, EDisplaing theAction, const char* theEntry) @@ -378,7 +370,7 @@ namespace SMESH{ void UpdateView(){ if(SVTK_ViewWindow* aWnd = SMESH::GetCurrentVtkView()){ - SalomeApp_SelectionMgr* mgr = SMESHGUI::selectionMgr(); + LightApp_SelectionMgr* mgr = SMESHGUI::selectionMgr(); SALOME_ListIO selected; mgr->selectedObjects( selected ); if( selected.Extent() == 0){ @@ -416,102 +408,120 @@ namespace SMESH{ } - void UpdateSelectionProp() { - SUIT_Study* aStudy = GetActiveStudy(); - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( aStudy->application() ); + void UpdateSelectionProp( SMESHGUI* theModule ) { + if( !theModule ) + return; + + SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( theModule->application() ); + if( !app ) + { + MESSAGE( "UpdateSelectionProp: Application is null" ); + return; + } + SUIT_ViewManager* vm = app->activeViewManager(); + if( !vm ) + { + MESSAGE( "UpdateSelectionProp: View manager is null" ); + return; + } + QPtrVector views = vm->getViews(); - SUIT_ResourceMgr* mgr = SMESHGUI::resourceMgr(); - - QColor aHiColor = mgr->colorValue( "SMESH", "SettingsSelectColor", Qt::white ), - aSelColor = mgr->colorValue( "SMESH", "SettingsItemSelectColor", Qt::yellow ), - aPreColor = mgr->colorValue( "SMESH", "SettingsPreSelectColor", Qt::cyan ); - - int SW = mgr->integerValue( "SMESH", "SettingsItemSelectWidth", 5 ), - PW = mgr->integerValue( "SMESH", "SettingsPreSelectWidth", 5 ); - - double SP1 = mgr->doubleValue( "SMESH", "SettingsNodeSelectTol", 0.025 ), - SP2 = mgr->doubleValue( "SMESH", "SettingsElementsSelectTol", 0.001 ); - - for ( int i=0, n=views.count(); igetRWInteractor(); - if (anInteractor) { - // mesh element selection - anInteractor->SetSelectionProp(aSelColor.red()/255., aSelColor.green()/255., - aSelColor.blue()/255., SW ); - - // tolerances - anInteractor->SetSelectionTolerance(SP1, SP2); - - // pre-selection - SVTK_InteractorStyle* aStyle = - dynamic_cast( anInteractor->GetInteractorStyle() ); - if (aStyle) { - aStyle->setPreselectionProp(aPreColor.red()/255., aPreColor.green()/255., - aPreColor.blue()/255., PW); - } - } + SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( theModule ); + if( !mgr ) + { + MESSAGE( "UpdateSelectionProp: Resource manager is null" ); + return; + } + + QColor aHiColor = mgr->colorValue( "SMESH", "selection_object_color", Qt::white ), + aSelColor = mgr->colorValue( "SMESH", "selection_element_color", Qt::yellow ), + aPreColor = mgr->colorValue( "SMESH", "highlight_color", Qt::cyan ); + + int SW = mgr->integerValue( "SMESH", "selection_width", 5 ), + PW = mgr->integerValue( "SMESH", "highlight_width", 5 ); + + double SP1 = mgr->doubleValue( "SMESH", "selection_precision_node", 0.025 ), + SP2 = mgr->doubleValue( "SMESH", "selection_precision_element", 0.001 ); + + for ( int i=0, n=views.count(); iSetSelectionProp(aSelColor.red()/255., + aSelColor.green()/255., + aSelColor.blue()/255., + SW ); + // tolerances + aVtkView->SetSelectionTolerance(SP1, SP2); + + // pre-selection + aVtkView->SetPreselectionProp(aPreColor.red()/255., + aPreColor.green()/255., + aPreColor.blue()/255., + PW); // update actors vtkRenderer* aRenderer = aVtkView->getRenderer(); vtkActorCollection *aCollection = aRenderer->GetActors(); aCollection->InitTraversal(); while(vtkActor *anAct = aCollection->GetNextActor()){ if(SMESH_Actor *anActor = dynamic_cast(anAct)){ - anActor->SetHighlightColor(aHiColor.red()/255., aHiColor.green()/255., + anActor->SetHighlightColor(aHiColor.red()/255., + aHiColor.green()/255., aHiColor.blue()/255.); - anActor->SetPreHighlightColor(aPreColor.red()/255., aPreColor.green()/255., + anActor->SetPreHighlightColor(aPreColor.red()/255., + aPreColor.green()/255., aPreColor.blue()/255.); } } + } } } //---------------------------------------------------------------------------- - SVTK_InteractorStyle* GetInteractorStyle(SUIT_ViewWindow *theWindow){ - if(SVTK_ViewWindow* aWnd = GetVtkViewWindow(theWindow)){ - if(SVTK_RenderWindowInteractor* anInteractor = aWnd->getRWInteractor()){ - return dynamic_cast( anInteractor->GetInteractorStyle() ); - } - } + SVTK_Selector* + GetSelector(SUIT_ViewWindow *theWindow) + { + if(SVTK_ViewWindow* aWnd = GetVtkViewWindow(theWindow)) + return aWnd->GetSelector(); + return NULL; } void SetFilter(const Handle(VTKViewer_Filter)& theFilter, - SVTK_InteractorStyle* theStyle) + SVTK_Selector* theSelector) { - theStyle->SetFilter(theFilter); + if (theSelector) + theSelector->SetFilter(theFilter); } - Handle(VTKViewer_Filter) GetFilter(int theId, SVTK_InteractorStyle* theStyle) + Handle(VTKViewer_Filter) GetFilter(int theId, SVTK_Selector* theSelector) { - return theStyle->GetFilter(theId); + return theSelector->GetFilter(theId); } - bool IsFilterPresent(int theId, SVTK_InteractorStyle* theStyle) + bool IsFilterPresent(int theId, SVTK_Selector* theSelector) { - return theStyle->IsFilterPresent(theId); + return theSelector->IsFilterPresent(theId); } - void RemoveFilter(int theId, SVTK_InteractorStyle* theStyle) + void RemoveFilter(int theId, SVTK_Selector* theSelector) { - theStyle->RemoveFilter(theId); + theSelector->RemoveFilter(theId); } - void RemoveFilters(SVTK_InteractorStyle* theStyle) + void RemoveFilters(SVTK_Selector* theSelector) { - for ( int id = SMESHGUI_NodeFilter; theStyle && id < SMESHGUI_LastFilter; id++ ) - theStyle->RemoveFilter( id ); + for ( int id = SMESHGUI_NodeFilter; theSelector && id < SMESHGUI_LastFilter; id++ ) + theSelector->RemoveFilter( id ); } bool IsValid(SALOME_Actor* theActor, int theCellId, - SVTK_InteractorStyle* theStyle) + SVTK_Selector* theSelector) { - return theStyle->IsValid(theActor,theCellId); + return theSelector->IsValid(theActor,theCellId); } @@ -554,8 +564,8 @@ namespace SMESH{ //---------------------------------------------------------------------------- - int GetNameOfSelectedNodes(SVTK_Selector* theSelector, - const Handle(SALOME_InteractiveObject)& theIO, + int GetNameOfSelectedNodes(SVTK_Selector* theSelector, + const Handle(SALOME_InteractiveObject)& theIO, QString& theName) { theName = ""; @@ -568,8 +578,8 @@ namespace SMESH{ return aMapIndex.Extent(); } - int GetNameOfSelectedElements(SVTK_Selector* theSelector, - const Handle(SALOME_InteractiveObject)& theIO, + int GetNameOfSelectedElements(SVTK_Selector* theSelector, + const Handle(SALOME_InteractiveObject)& theIO, QString& theName) { theName = ""; @@ -589,12 +599,12 @@ namespace SMESH{ } - int GetEdgeNodes(SVTK_Selector* theSelector, + int GetEdgeNodes(SVTK_Selector* theSelector, const TVisualObjPtr& theVisualObject, - int& theId1, + int& theId1, int& theId2) { - const SALOME_ListIO& selected = theSelector->StoredIObjects(); + const SALOME_ListIO& selected = theSelector->StoredIObjects(); if ( selected.Extent() != 1 ) return -1; @@ -624,7 +634,7 @@ namespace SMESH{ } //---------------------------------------------------------------------------- - int GetNameOfSelectedNodes(SalomeApp_SelectionMgr *theMgr, + int GetNameOfSelectedNodes(LightApp_SelectionMgr *theMgr, const Handle(SALOME_InteractiveObject)& theIO, QString& theName) { @@ -642,7 +652,7 @@ namespace SMESH{ return -1; } - int GetNameOfSelectedNodes(SalomeApp_SelectionMgr *theMgr, QString& theName){ + int GetNameOfSelectedNodes(LightApp_SelectionMgr *theMgr, QString& theName){ theName = ""; SALOME_ListIO selected; theMgr->selectedObjects( selected ); if(selected.Extent() == 1){ @@ -651,9 +661,9 @@ namespace SMESH{ } return -1; } - - int GetNameOfSelectedElements(SalomeApp_SelectionMgr *theMgr, + + int GetNameOfSelectedElements(LightApp_SelectionMgr *theMgr, const Handle(SALOME_InteractiveObject)& theIO, QString& theName) { @@ -677,7 +687,7 @@ namespace SMESH{ } - int GetNameOfSelectedElements(SalomeApp_SelectionMgr *theMgr, QString& theName) + int GetNameOfSelectedElements(LightApp_SelectionMgr *theMgr, QString& theName) { theName = ""; SALOME_ListIO selected; theMgr->selectedObjects( selected ); @@ -689,7 +699,7 @@ namespace SMESH{ return -1; } - int GetSelected(SalomeApp_SelectionMgr* theMgr, + int GetSelected(LightApp_SelectionMgr* theMgr, TColStd_IndexedMapOfInteger& theMap, const bool theIsElement) { @@ -707,7 +717,7 @@ namespace SMESH{ } - int GetEdgeNodes( SalomeApp_SelectionMgr* theMgr, int& theId1, int& theId2 ) + int GetEdgeNodes( LightApp_SelectionMgr* theMgr, int& theId1, int& theId2 ) { SALOME_ListIO selected; theMgr->selectedObjects( selected ); @@ -749,7 +759,7 @@ namespace SMESH{ vtkRenderer *aRenderer = aWnd->getRenderer(); vtkActorCollection *aCollection = aRenderer->GetActors(); aCollection->InitTraversal(); - + while ( vtkActor *anAct = aCollection->GetNextActor()) { if ( SMESH_Actor *anActor = dynamic_cast( anAct ) )