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 );
70 if ( !CORBA::is_nil( aVisuObj ) ){
71 VISU::VISUType aType = aVisuObj->GetType();
73 ENUM2STRING( aResStr, VISU::TVISUGEN );
74 ENUM2STRING( aResStr, VISU::TRESULT );
75 ENUM2STRING( aResStr, VISU::TTABLE );
76 ENUM2STRING( aResStr, VISU::TCURVE );
77 ENUM2STRING( aResStr, VISU::TCONTAINER );
78 ENUM2STRING( aResStr, VISU::TMESH );
79 ENUM2STRING( aResStr, VISU::TSCALARMAP );
80 ENUM2STRING( aResStr, VISU::TISOSURFACE );
81 ENUM2STRING( aResStr, VISU::TDEFORMEDSHAPE );
82 ENUM2STRING( aResStr, VISU::TCUTPLANES );
83 ENUM2STRING( aResStr, VISU::TCUTLINES );
84 ENUM2STRING( aResStr, VISU::TVECTORS );
85 ENUM2STRING( aResStr, VISU::TSTREAMLINES );
86 ENUM2STRING( aResStr, VISU::TPLOT3D );
87 ENUM2STRING( aResStr, VISU::TANIMATION );
93 VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue( aMap, "myType", &isExist).toInt();
96 ENUM2STRING( aResStr, VISU::TENTITY );
97 ENUM2STRING( aResStr, VISU::TFAMILY );
98 ENUM2STRING( aResStr, VISU::TGROUP );
99 ENUM2STRING( aResStr, VISU::TVIEW3D );
100 ENUM2STRING( aResStr, VISU::TFIELD );
101 ENUM2STRING( aResStr, VISU::TTIMESTAMP );
106 if(aResStr.isNull()){
108 QString aVal = VISU::Storable::FindValue(aMap,"myComment",&isExist);
109 if ( isExist && aVal!="MESH" )
110 aResStr = "VISU::T" + aVal;
116 QString VisuGUI_Selection::nbComponents( const int ind ) const
119 VISU::Storable::TRestoringMap aMap;
120 GetSelectedObj( study(), entry( ind ), &aMap );
122 const QString& aVal = VISU::Storable::FindValue(aMap,"myNumComponent",&isExist);
128 QString VisuGUI_Selection::nbTimeStamps( const int ind ) const
131 VISU::Storable::TRestoringMap aMap;
132 GetSelectedObj( study(), entry( ind ), &aMap );
134 const QString& aVal = VISU::Storable::FindValue(aMap,"myNbTimeStamps",&isExist);
140 QString VisuGUI_Selection::representation( const int ind ) const
144 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) ){
145 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) ){
146 int aRepresent = anVISUActor->GetRepresentation();
147 switch ( aRepresent ){
148 ENUM2STRING( aResStr, VISU::POINT );
149 ENUM2STRING( aResStr, VISU::WIREFRAME );
150 ENUM2STRING( aResStr, VISU::SHADED );
151 ENUM2STRING( aResStr, VISU::INSIDEFRAME );
152 ENUM2STRING( aResStr, VISU::SURFACEFRAME );
160 int VisuGUI_Selection::nbChild( const int ind, const bool named ) const
163 _PTR(Study) aStudy = GetCStudy( study() );
165 _PTR(SObject) SO = aStudy->FindObjectID( entry( ind ).latin1() );
167 for ( _PTR(ChildIterator) Iter = aStudy->NewChildIterator( SO ); Iter->More(); Iter->Next() ) {
169 if ( !Iter->Value()->ReferencedObject( refSO ) && ( !named || Iter->Value()->GetName().size() ) )
177 QString VisuGUI_Selection::nbChildren( const int ind ) const
180 aResStr.setNum( nbChild( ind, false ) );
184 QString VisuGUI_Selection::nbNamedChildren( const int ind ) const
187 aResStr.setNum( nbChild( ind, true ) );
191 QString VisuGUI_Selection::isVisible( const int ind ) const
195 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
196 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
197 aResStr = anVISUActor->GetVisibility() ? "1" : "0";
202 QString VisuGUI_Selection::isShrunk( const int ind ) const
206 if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
207 if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
208 if ( anVISUActor->IsShrunkable() )
209 aResStr = anVISUActor->IsShrunk() ? "1" : "0";
214 QString VisuGUI_Selection::hasActor( const int ind ) const
216 return representation( ind ).isEmpty() ? "0" : "1";