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 CORBA::Object_var anObject = GetSelectedObj( study(), entry( ind ), &aMap );
69 VISU::Base_var aVisuObj = VISU::Base::_narrow( anObject );
71 if ( !CORBA::is_nil( aVisuObj ) ){
72 VISU::VISUType aType = aVisuObj->GetType();
74 ENUM2STRING( aTypeStr, VISU::TVISUGEN )
75 ENUM2STRING( aTypeStr, VISU::TRESULT )
76 ENUM2STRING( aTypeStr, VISU::TTABLE )
77 ENUM2STRING( aTypeStr, VISU::TCURVE )
78 ENUM2STRING( aTypeStr, VISU::TCONTAINER )
79 ENUM2STRING( aTypeStr, VISU::TMESH )
80 ENUM2STRING( aTypeStr, VISU::TSCALARMAP )
81 ENUM2STRING( aTypeStr, VISU::TISOSURFACE )
82 ENUM2STRING( aTypeStr, VISU::TDEFORMEDSHAPE )
83 ENUM2STRING( aTypeStr, VISU::TCUTPLANES )
84 ENUM2STRING( aTypeStr, VISU::TCUTLINES )
85 ENUM2STRING( aTypeStr, VISU::TVECTORS )
86 ENUM2STRING( aTypeStr, VISU::TSTREAMLINES )
87 ENUM2STRING( aTypeStr, VISU::TPLOT3D )
88 ENUM2STRING( aTypeStr, VISU::TANIMATION )
93 VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue( aMap, "myType", &isExist).toInt();
96 ENUM2STRING( aTypeStr, VISU::TENTITY )
97 ENUM2STRING( aTypeStr, VISU::TFAMILY )
98 ENUM2STRING( aTypeStr, VISU::TGROUP )
99 ENUM2STRING( aTypeStr, VISU::TVIEW3D )
100 ENUM2STRING( aTypeStr, VISU::TFIELD )
101 ENUM2STRING( aTypeStr, VISU::TTIMESTAMP )
109 QString VisuGUI_Selection::nbComponents( const int ind ) const
112 VISU::Storable::TRestoringMap aMap;
113 GetSelectedObj( study(), entry( ind ), &aMap );
115 const QString& aVal = VISU::Storable::FindValue(aMap,"myNumComponent",&isExist);
121 QString VisuGUI_Selection::nbTimeStamps( const int ind ) const
124 VISU::Storable::TRestoringMap aMap;
125 GetSelectedObj( study(), entry( ind ), &aMap );
127 const QString& aVal = VISU::Storable::FindValue(aMap,"myNbTimeStamps",&isExist);
133 QString VisuGUI_Selection::representation( const int ind ) const
137 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) ){
138 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) ){
139 int aRepresent = anVISUActor->GetRepresentation();
140 switch ( aRepresent ){
141 ENUM2STRING( aResStr, VISU::POINT )
142 ENUM2STRING( aResStr, VISU::WIREFRAME )
143 ENUM2STRING( aResStr, VISU::SHADED )
144 ENUM2STRING( aResStr, VISU::INSIDEFRAME )
145 ENUM2STRING( aResStr, VISU::SURFACEFRAME )
153 int VisuGUI_Selection::nbChild( const int ind, const bool named ) const
156 _PTR(Study) aStudy = GetCStudy( study() );
158 _PTR(SObject) SO = aStudy->FindObjectID( entry( ind ).latin1() );
160 for ( _PTR(ChildIterator) Iter = aStudy->NewChildIterator( SO ); Iter->More(); Iter->Next() ) {
162 if ( !Iter->Value()->ReferencedObject( refSO ) && ( !named || Iter->Value()->GetName().size() ) )
170 QString VisuGUI_Selection::nbChildren( const int ind ) const
173 aResStr.setNum( nbChild( ind, false ) );
177 QString VisuGUI_Selection::nbNamedChildren( const int ind ) const
180 aResStr.setNum( nbChild( ind, true ) );
184 QString VisuGUI_Selection::isVisible( const int ind ) const
188 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
189 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
190 aResStr = anVISUActor->GetVisibility() ? "1" : "0";
195 QString VisuGUI_Selection::isShrunk( const int ind ) const
199 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
200 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
201 if ( anVISUActor->IsShrunkable() )
202 aResStr = anVISUActor->IsShrunk() ? "1" : "0";
207 QString VisuGUI_Selection::hasActor( const int ind ) const
209 return representation( ind ).isEmpty() ? "0" : "1";