#include "SMESHGUI_Utils.h"
#include "SMDS_Mesh.hxx"
#include "SMESH_Actor.h"
+#include "SMESH_ActorProps.h"
#include "SMESH_ActorUtils.h"
#include "SMESH_CellLabelActor.h"
#include "SMESH_ControlsDef.hxx"
}
if ( objModified ) {
- // PAL16631. Mesurements showed that to show aVisualObj in SHADING(default) mode,
+ // PAL16631. Measurements showed that to show aVisualObj in SHADING(default) mode,
// ~5 times more memory is used than it occupies.
// Warn the user if there is less free memory than 30 sizes of a grid
// TODO: estimate memory usage in other modes and take current mode into account
/*! Return active view window, if it instantiates SVTK_ViewWindow class,
- * overwise find or create corresponding view window, make it active and return it.
+ * otherwise find or create corresponding view window, make it active and return it.
* \note Active VVTK_ViewWindow can be returned, because it inherits SVTK_ViewWindow.
*/
SVTK_ViewWindow* GetViewWindow (const SalomeApp_Module* theModule,
if (!aStudy)
return OK;
+ SUIT_ResourceMgr* resMgr;
{
OK = true;
vtkRenderer *aRenderer = aViewWnd->getRenderer();
anActor->SetVisibility(true);
if (theAction == eDisplayOnly) aRenderer->ResetCameraClippingRange();
aStudy->setVisibilityState(theEntry, Qtx::ShownState);
+ if (( theAction == eDisplayOnly ) &&
+ ( resMgr = SMESHGUI::resourceMgr() ) &&
+ ( resMgr->booleanValue( "SMESH", "fitall_on_displayonly", false )))
+ FitAll(); // PAL23615
break;
case eErase:
//MESSAGE("--- erase " << anActor);
anActor->SetVisibility(true);
aStudy->setVisibilityState(theEntry, Qtx::ShownState);
// FitAll(); - PAL16770(Display of a group performs an automatic fit all)
- if (needFitAll) FitAll();
- } else {
+ if (( !needFitAll ) &&
+ ( theAction == eDisplayOnly ) &&
+ ( resMgr = SMESHGUI::resourceMgr() ))
+ {
+ needFitAll = resMgr->booleanValue( "SMESH", "fitall_on_displayonly", false );
+ }
+ if ( needFitAll )
+ FitAll();
+ }
+ else {
OK = false;
}
}
return false;
}
- void UpdateView(){
+ void UpdateView( bool withChildrenOfSelected )
+ {
if ( SVTK_ViewWindow* aWnd = SMESH::GetCurrentVtkView()) {
LightApp_SelectionMgr* mgr = SMESHGUI::selectionMgr();
SALOME_ListIO selected; mgr->selectedObjects( selected );
- if( selected.Extent() == 0){
+ if ( selected.Extent() == 0 ) {
vtkRenderer* aRenderer = aWnd->getRenderer();
VTK::ActorCollectionCopy aCopy(aRenderer->GetActors());
vtkActorCollection *aCollection = aCopy.GetActors();
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
if(anActor->hasIO())
if (!Update(anActor->getIO(),anActor->GetVisibility()))
- break; // avoid multiple warinings if visu failed
+ break; // avoid multiple warnings if visu failed
}
}
- }else{
+ }
+ else
+ {
SALOME_ListIteratorOfListIO anIter( selected );
- for( ; anIter.More(); anIter.Next()){
+ for( ; anIter.More(); anIter.Next())
+ {
Handle(SALOME_InteractiveObject) anIO = anIter.Value();
- if ( !Update(anIO,true) )
- break; // avoid multiple warinings if visu failed
+ if ( !Update( anIO, true ))
+ break; // avoid multiple warnings if visu failed
+
+ if ( withChildrenOfSelected ) // update all visible children
+ {
+ QString aFatherID = anIO->getEntry();
+ vtkRenderer* aRenderer = aWnd->getRenderer();
+ VTK::ActorCollectionCopy aCopy(aRenderer->GetActors());
+ vtkActorCollection *aCollection = aCopy.GetActors();
+ aCollection->InitTraversal();
+ while ( vtkActor *anAct = aCollection->GetNextActor() ) {
+ if ( SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>( anAct )) {
+ if ( anActor->hasIO() && anActor->GetVisibility() )
+ {
+ QString aChildID = anActor->getIO()->getEntry();
+ if ( aChildID.size() > aFatherID.size() &&
+ aChildID.startsWith( aFatherID ))
+ if ( ! Update( anActor->getIO(), true ))
+ break;
+ }
+ }
+ }
+ }
}
}
RepaintCurrentView();
return;
}
+ SMESH_ActorProps::props()->reset();
+
QColor
- aHiColor = mgr->colorValue( "SMESH", "selection_object_color", Qt::white ),
+ //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 );
aCollection->InitTraversal();
while ( vtkActor *anAct = aCollection->GetNextActor() ) {
if ( SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct) ) {
- anActor->SetHighlightColor(aHiColor.red()/255.,
- aHiColor.green()/255.,
- aHiColor.blue()/255.);
- anActor->SetPreHighlightColor(aPreColor.red()/255.,
- aPreColor.green()/255.,
- aPreColor.blue()/255.);
+ anActor->UpdateSelectionProps();
}
}
}
//================================================================================
/*!
* \brief Find all SMESH_Actor's in the View Window.
- * If actor constains Plot2d_Histogram object remove it from each Plot2d Viewer.
+ * If actor contains Plot2d_Histogram object remove it from each Plot2d Viewer.
*/
//================================================================================