1 // VISU VISUGUI : GUI of VISU component
3 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : VisuGUI_PopupTools.cxx
25 // Author : Sergey Anikin
28 #include "VisuGUI_PopupTools.h"
29 #include "VisuGUI_Tools.h"
31 #include "VISU_Actor.h"
35 //////////////////////////////////////////////////
36 // Class: VisuGUI_Selection
37 //////////////////////////////////////////////////
39 QtxValue VisuGUI_Selection::param( const int ind, const QString& p ) const
41 QtxValue val( SalomeApp_Selection::param( ind, p ) );
42 if ( !val.isValid() ) {
43 if ( p == "type" ) val = QtxValue( type( ind ) );
44 else if ( p == "nbComponents" ) val = QtxValue( nbComponents( ind ) );
45 else if ( p == "representation" ) val = QtxValue( representation( ind ) );
46 else if ( p == "nbTimeStamps" ) val = QtxValue( nbTimeStamps( ind ) );
47 else if ( p == "nbChildren" ) val = QtxValue( nbChildren( ind ) );
48 else if ( p == "nbNamedChildren") val = QtxValue( nbNamedChildren( ind ) );
49 else if ( p == "isVisible" ) val = QtxValue( isVisible( ind ) );
50 else if ( p == "isShrunk" ) val = QtxValue( isShrunk( ind ) );
51 else if ( p == "hasActor" ) val = QtxValue( hasActor( ind ) );
57 // Macro for converting VISU enumeration items into corresponding strings
58 #define ENUM2STRING( x, y ) \
63 QString VisuGUI_Selection::type( const int ind ) const
66 VISU::Storable::TRestoringMap aMap;
67 GetSelectedObj( study(), entry( ind ), &aMap );
69 const QString& aVal = VISU::Storable::FindValue(aMap,"myComment",&isExist);
71 aResStr = "VISU::T" + aVal;
75 QString VisuGUI_Selection::nbComponents( const int ind ) const
78 VISU::Storable::TRestoringMap aMap;
79 GetSelectedObj( study(), entry( ind ), &aMap );
81 const QString& aVal = VISU::Storable::FindValue(aMap,"myNumComponent",&isExist);
87 QString VisuGUI_Selection::nbTimeStamps( const int ind ) const
90 VISU::Storable::TRestoringMap aMap;
91 GetSelectedObj( study(), entry( ind ), &aMap );
93 const QString& aVal = VISU::Storable::FindValue(aMap,"myNbTimeStamps",&isExist);
99 QString VisuGUI_Selection::representation( const int ind ) const
103 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) ){
104 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) ){
105 int aRepresent = anVISUActor->GetRepresentation();
106 switch ( aRepresent ){
107 ENUM2STRING( aResStr, VISU::POINT )
108 ENUM2STRING( aResStr, VISU::WIREFRAME )
109 ENUM2STRING( aResStr, VISU::SHADED )
110 ENUM2STRING( aResStr, VISU::INSIDEFRAME )
111 ENUM2STRING( aResStr, VISU::SURFACEFRAME )
119 int VisuGUI_Selection::nbChild( const int ind, const bool named ) const
122 _PTR(Study) aStudy = GetCStudy( study() );
124 _PTR(SObject) SO = aStudy->FindObjectID( entry( ind ).latin1() );
126 for ( _PTR(ChildIterator) Iter = aStudy->NewChildIterator( SO ); Iter->More(); Iter->Next() ) {
128 if ( !Iter->Value()->ReferencedObject( refSO ) && ( !named || Iter->Value()->GetName().size() ) )
136 QString VisuGUI_Selection::nbChildren( const int ind ) const
139 aResStr.setNum( nbChild( ind, false ) );
143 QString VisuGUI_Selection::nbNamedChildren( const int ind ) const
146 aResStr.setNum( nbChild( ind, true ) );
150 QString VisuGUI_Selection::isVisible( const int ind ) const
154 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
155 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
156 aResStr = anVISUActor->GetVisibility() ? "1" : "0";
161 QString VisuGUI_Selection::isShrunk( const int ind ) const
165 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
166 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
167 if ( anVISUActor->IsShrunkable() )
168 aResStr = anVISUActor->IsShrunk() ? "1" : "0";
173 QString VisuGUI_Selection::hasActor( const int ind ) const
175 return representation( ind ).isEmpty() ? "0" : "1";