// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#include "SMESHGUI_VTKUtils.h"
#include <SUIT_Session.h>
#include <SUIT_Study.h>
-#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"
#include "SMESH_ObjectDef.h"
#include <SalomeApp_Application.h>
-#include <SalomeApp_SelectionMgr.h>
+#include <LightApp_SelectionMgr.h>
#include <SalomeApp_Study.h>
#include <SALOMEDSClient_Study.hxx>
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;
}
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<SVTK_ViewWindow*>(aViewWindow);
- }
- }
- }
- }
+ if (SalomeApp_Application* anApp = theModule->getApp())
+ return dynamic_cast<SVTK_ViewWindow*>(anApp->desktop()->activeWindow());
return NULL;
}
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)
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){
}
- 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<SUIT_ViewWindow> 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(); i<n; i++ ) {
- SVTK_ViewWindow* aVtkView = GetVtkViewWindow( views[i] );
- if (!aVtkView) continue;
- // update VTK viewer properties
- SVTK_RenderWindowInteractor* anInteractor = aVtkView->getRWInteractor();
- 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<SVTK_InteractorStyle*>( 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(); i<n; i++ ){
+ // update VTK viewer properties
+ if(SVTK_ViewWindow* aVtkView = GetVtkViewWindow( views[i] )){
+ // mesh element selection
+ aVtkView->SetSelectionProp(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<SMESH_Actor*>(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<SVTK_InteractorStyle*>( 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);
}
//----------------------------------------------------------------------------
- int GetNameOfSelectedNodes(SVTK_Selector* theSelector,
- const Handle(SALOME_InteractiveObject)& theIO,
+ int GetNameOfSelectedNodes(SVTK_Selector* theSelector,
+ const Handle(SALOME_InteractiveObject)& theIO,
QString& theName)
{
theName = "";
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 = "";
}
- 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;
}
//----------------------------------------------------------------------------
- int GetNameOfSelectedNodes(SalomeApp_SelectionMgr *theMgr,
+ int GetNameOfSelectedNodes(LightApp_SelectionMgr *theMgr,
const Handle(SALOME_InteractiveObject)& theIO,
QString& theName)
{
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){
}
return -1;
}
-
- int GetNameOfSelectedElements(SalomeApp_SelectionMgr *theMgr,
+
+ int GetNameOfSelectedElements(LightApp_SelectionMgr *theMgr,
const Handle(SALOME_InteractiveObject)& theIO,
QString& theName)
{
}
- int GetNameOfSelectedElements(SalomeApp_SelectionMgr *theMgr, QString& theName)
+ int GetNameOfSelectedElements(LightApp_SelectionMgr *theMgr, QString& theName)
{
theName = "";
SALOME_ListIO selected; theMgr->selectedObjects( selected );
return -1;
}
- int GetSelected(SalomeApp_SelectionMgr* theMgr,
+ int GetSelected(LightApp_SelectionMgr* theMgr,
TColStd_IndexedMapOfInteger& theMap,
const bool theIsElement)
{
}
- int GetEdgeNodes( SalomeApp_SelectionMgr* theMgr, int& theId1, int& theId2 )
+ int GetEdgeNodes( LightApp_SelectionMgr* theMgr, int& theId1, int& theId2 )
{
SALOME_ListIO selected; theMgr->selectedObjects( selected );
vtkRenderer *aRenderer = aWnd->getRenderer();
vtkActorCollection *aCollection = aRenderer->GetActors();
aCollection->InitTraversal();
-
+
while ( vtkActor *anAct = aCollection->GetNextActor())
{
if ( SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>( anAct ) )