X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Selection.cxx;h=1c99de1d85176c7e9cd25d17ce726f604f3c6cf3;hb=d64c9cac70573c5789a61c314f5ac5ffc3428f4a;hp=f90e76ca0a5aac85c4e069c67865174fafea2ae7;hpb=15e0993d69189f5b30a4adb90767044c3f653952;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index f90e76ca0..1c99de1d8 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -80,8 +80,10 @@ void SMESHGUI_Selection::init( const QString& client, LightApp_SelectionMgr* mgr return; _PTR(Study) aStudy = aSStudy->studyDS(); - for( int i=0, n=count(); i ( ow ); - if( owner ) + if( owner ) { myActors.append( dynamic_cast( owner->GetActor() ) ); - else + } + else if ( ow ) { // SVTK selection disabled + QString entry = ow->entry(); + myActors.append( SMESH::FindActorByEntry( entry.toStdString().c_str() )); + } + else { myActors.append( 0 ); + } return true; } @@ -116,7 +124,6 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const else if ( p=="labeledTypes" ) val = QVariant( labeledTypes( ind ) ); else if ( p=="shrinkMode" ) val = QVariant( shrinkMode( ind ) ); else if ( p=="entityMode" ) val = QVariant( entityMode( ind ) ); - else if ( p=="controlMode" ) val = QVariant( controlMode( ind ) ); else if ( p=="isNumFunctor" ) val = QVariant( isNumFunctor( ind ) ); else if ( p=="displayMode" ) val = QVariant( displayMode( ind ) ); else if ( p=="isComputable" ) val = QVariant( isComputable( ind ) ); @@ -127,6 +134,7 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const else if ( p=="groupType" ) val = QVariant( groupType( ind ) ); else if ( p=="quadratic2DMode") val = QVariant( quadratic2DMode( ind ) ); else if ( p=="isDistributionVisible") val = QVariant( isDistributionVisible( ind ) ); + else if ( p=="isScalarBarVisible") val = QVariant( isScalarBarVisible( ind ) ); else if ( p=="hasChildren") val = QVariant( hasChildren( ind ) ); else if ( p=="nbChildren") val = QVariant( nbChildren( ind ) ); else if ( p=="isContainer") val = QVariant( isContainer( ind ) ); @@ -137,6 +145,21 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const return LightApp_Selection::parameter( ind, p ); } +//======================================================================= +//function : parameter +//purpose : +//======================================================================= +QVariant SMESHGUI_Selection::parameter( const QString& p ) const +{ + QVariant val; + if ( p=="controlMode" ) val = QVariant( controlMode() ); + + if ( val.isValid() ) + return val; + else + return LightApp_Selection::parameter( p ); +} + //======================================================================= //function : getVtkOwner //purpose : @@ -235,6 +258,16 @@ bool SMESHGUI_Selection::isDistributionVisible(int ind) const { return (actor && actor->GetScalarBarActor() && actor->GetScalarBarActor()->GetDistributionVisibility()); } +//======================================================================= +//function : isScalarBarVisible +//purpose : Visible/Invisible Scalar Bar +//======================================================================= + +bool SMESHGUI_Selection::isScalarBarVisible(int ind) const { + SMESH_Actor* actor = getActor( ind ); + return (actor && actor->GetScalarBarActor() && actor->GetScalarBarActor()->GetVisibility()); +} + //======================================================================= //function : shrinkMode //purpose : return either 'IsSrunk', 'IsNotShrunk' or 'IsNotShrinkable' @@ -312,6 +345,23 @@ QString SMESHGUI_Selection::controlMode( int ind ) const return mode; } +//======================================================================= +//function : controlMode +//purpose : gets global control mode; return SMESH_Actor::eControl +//======================================================================= +QString SMESHGUI_Selection::controlMode() const +{ + if( myControls.count() > 0 ) { + QString mode = myControls[0]; + for( int ind = 1; ind < myControls.count(); ind++ ) { + if( mode != myControls[ind] ) + return "eNone"; + } + return mode; + } + return "eNone"; +} + bool SMESHGUI_Selection::isNumFunctor( int ind ) const { bool result = false; @@ -433,7 +483,7 @@ int SMESHGUI_Selection::dim( int ind ) const case SMESH::BALL : dim = std::max( dim, 0 ); break; default: break; } - } + } } } } @@ -454,19 +504,19 @@ QVariant SMESHGUI_Selection::isComputable( int ind ) const if( !CORBA::is_nil( obj ) ) { SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj ); if ( !CORBA::is_nil( mesh ) ) { - if ( mesh->HasShapeToMesh() ) { - GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); - return QVariant( !shape->_is_nil() ); - } - else - { - return QVariant( mesh->NbFaces() !=0 ); - } + if ( mesh->HasShapeToMesh() ) { + GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); + return QVariant( !shape->_is_nil() ); + } + else + { + return QVariant( mesh->NbFaces() !=0 ); + } } else { - GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); - return QVariant( !shape->_is_nil() ); + GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); + return QVariant( !shape->_is_nil() ); } } } @@ -582,42 +632,42 @@ int SMESHGUI_Selection::type( const QString& entry, _PTR(Study) study ) if ( objComponent->ComponentDataType() == "SMESH" ) { if ( objComponent->GetIOR() == obj->GetIOR() ) { - res = SMESH::COMPONENT; + res = SMESH::COMPONENT; } else { - int aLevel = obj->Depth() - objComponent->Depth(), - aFTag = objFather->Tag(), - anOTag = obj->Tag(); - - switch ( aLevel ) - { - case 1: - if ( anOTag >= SMESH::Tag_FirstMeshRoot ) - res = SMESH::MESH; - break; - case 2: - switch ( aFTag ) - { - case SMESH::Tag_HypothesisRoot: res = SMESH::HYPOTHESIS; break; - case SMESH::Tag_AlgorithmsRoot: res = SMESH::ALGORITHM; break; - default: break; - } - break; - case 3: - switch ( aFTag ) - { - case SMESH::Tag_SubMeshOnVertex: res = SMESH::SUBMESH_VERTEX; break; - case SMESH::Tag_SubMeshOnEdge: res = SMESH::SUBMESH_EDGE; break; - case SMESH::Tag_SubMeshOnFace: res = SMESH::SUBMESH_FACE; break; - case SMESH::Tag_SubMeshOnSolid: res = SMESH::SUBMESH_SOLID; break; - case SMESH::Tag_SubMeshOnCompound: res = SMESH::SUBMESH_COMPOUND; break; - default: - if ( aFTag >= SMESH::Tag_FirstGroup) res = SMESH::GROUP; - else res = SMESH::SUBMESH; - break; - } - break; - } + int aLevel = obj->Depth() - objComponent->Depth(), + aFTag = objFather->Tag(), + anOTag = obj->Tag(); + + switch ( aLevel ) + { + case 1: + if ( anOTag >= SMESH::Tag_FirstMeshRoot ) + res = SMESH::MESH; + break; + case 2: + switch ( aFTag ) + { + case SMESH::Tag_HypothesisRoot: res = SMESH::HYPOTHESIS; break; + case SMESH::Tag_AlgorithmsRoot: res = SMESH::ALGORITHM; break; + default: break; + } + break; + case 3: + switch ( aFTag ) + { + case SMESH::Tag_SubMeshOnVertex: res = SMESH::SUBMESH_VERTEX; break; + case SMESH::Tag_SubMeshOnEdge: res = SMESH::SUBMESH_EDGE; break; + case SMESH::Tag_SubMeshOnFace: res = SMESH::SUBMESH_FACE; break; + case SMESH::Tag_SubMeshOnSolid: res = SMESH::SUBMESH_SOLID; break; + case SMESH::Tag_SubMeshOnCompound: res = SMESH::SUBMESH_COMPOUND; break; + default: + if ( aFTag >= SMESH::Tag_FirstGroup) res = SMESH::GROUP; + else res = SMESH::SUBMESH; + break; + } + break; + } } } }