else \
str = QString(); }
-#define VTK_DISPLAY_MODE_TO_STRING( str, dm ) { \
- if ( dm == 0 ) \
- str = QString( "Wireframe" ); \
- else if ( dm == 1 ) \
- str = QString( "Shading" ); \
- else if ( dm == 3 ) \
- str = QString( "ShadingWithEdges" ); \
- else \
- str = QString(); }
-
#define USE_VISUAL_PROP_MAP
+#ifdef USE_VISUAL_PROP_MAP
+ #define VTK_DISPLAY_MODE_TO_STRING( str, dm ) { \
+ if ( dm == 0 ) \
+ str = QString( "Wireframe" ); \
+ else if ( dm == 1 ) \
+ str = QString( "Shading" ); \
+ else if ( dm == 2 ) \
+ str = QString( "ShadingWithEdges" ); \
+ else \
+ str = QString(); }
+#else
+ #define VTK_DISPLAY_MODE_TO_STRING( str, dm ) { \
+ if ( dm == 0 ) \
+ str = QString( "Wireframe" ); \
+ else if ( dm == 1 ) \
+ str = QString( "Shading" ); \
+ else if ( dm == 3 ) \
+ str = QString( "ShadingWithEdges" ); \
+ else \
+ str = QString(); }
+#endif
+
GEOMGUI_Selection::GEOMGUI_Selection()
: LightApp_Selection()
{
v = isAutoColor( idx );
else if ( p == "isVectorsMode" )
v = isVectorsMode( idx );
+ else if ( p == "isVerticesMode" )
+ v = isVerticesMode( idx );
else if ( p == "topLevel" )
v = topLevel( idx );
else if ( p == "autoBringToFront" )
bool GEOMGUI_Selection::autoBringToFront( const int /*index*/ ) const
{
- return SUIT_Session::session()->resourceMgr()->booleanValue( "Geometry", "auto_bring_to_front" );
+ return SUIT_Session::session()->resourceMgr()->booleanValue( "Geometry", "auto_bring_to_front", "false" );
}
bool GEOMGUI_Selection::isVectorsMode( const int index ) const
return res;
}
+bool GEOMGUI_Selection::isVerticesMode( const int index ) const
+{
+#ifdef USE_VISUAL_PROP_MAP
+ QVariant v = visibleProperty( entry( index ), GEOM::propertyName( GEOM::Vertices ) );
+ if ( v.canConvert( QVariant::Bool ) )
+ return v.toBool();
+#endif
+
+ bool res = false;
+
+ SALOME_View* view = GEOM_Displayer::GetActiveView();
+ QString viewType = activeViewType();
+ if ( view && ( viewType == OCCViewer_Viewer::Type() || viewType == SVTK_Viewer::Type() ) ) {
+ SALOME_Prs* prs = view->CreatePrs( entry( index ).toLatin1().constData() );
+ if ( prs ) {
+ if ( viewType == OCCViewer_Viewer::Type() ) { // assuming OCC
+ SOCC_Prs* occPrs = (SOCC_Prs*) prs;
+ AIS_ListOfInteractive lst;
+ occPrs->GetObjects( lst );
+ if ( lst.Extent() ) {
+ Handle(AIS_InteractiveObject) io = lst.First();
+ if ( !io.IsNull() ) {
+ Handle(GEOM_AISShape) aSh = Handle(GEOM_AISShape)::DownCast(io);
+ if ( !aSh.IsNull() )
+ res = aSh->isShowVertices();
+ }
+ }
+ }
+ else if ( viewType == SVTK_Viewer::Type() ) { // assuming VTK
+ SVTK_Prs* vtkPrs = dynamic_cast<SVTK_Prs*>( prs );
+ vtkActorCollection* lst = vtkPrs ? vtkPrs->GetObjects() : 0;
+ if ( lst ) {
+ lst->InitTraversal();
+ vtkActor* actor = lst->GetNextActor();
+ if ( actor ) {
+ GEOM_Actor* aGeomActor = GEOM_Actor::SafeDownCast(actor);
+ if ( aGeomActor )
+ res = aGeomActor->GetVerticesMode();
+ }
+ }
+ }
+ }
+ }
+
+ return res;
+}
+
bool GEOMGUI_Selection::hasChildren( const _PTR(SObject)& obj )
{
if ( obj ) {
GEOM_Actor* aGeomGActor = GEOM_Actor::SafeDownCast( actor );
if ( aGeomGActor ) {
GEOM_VTKPropertyMaterial* mat = GEOM_VTKPropertyMaterial::SafeDownCast(aGeomGActor->GetProperty());
- res = mat->GetPhysical();
+ if ( mat )
+ res = mat->GetPhysical();
} // if ( salome actor )
} // if ( actor )
} // if ( lst == vtkPrs->GetObjects() )