From: asl Date: Tue, 27 Sep 2005 06:33:42 +0000 (+0000) Subject: PAL9391 X-Git-Tag: V3_1_0a1~3 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=40793ae45e14edfdc3aa185537e495f2c905b3c7;p=modules%2Fsmesh.git PAL9391 --- diff --git a/src/SMESHGUI/Makefile.in b/src/SMESHGUI/Makefile.in index c6d5fd476..565329b66 100644 --- a/src/SMESHGUI/Makefile.in +++ b/src/SMESHGUI/Makefile.in @@ -110,7 +110,8 @@ LIB_SRC = SMESHGUI.cxx \ SMESHGUI_SelectionOp.cxx \ SMESHGUI_Dialog.cxx \ SMESHGUI_MeshDlg.cxx \ - SMESHGUI_MeshOp.cxx + SMESHGUI_MeshOp.cxx \ + SMESHGUI_Displayer.cxx LIB_MOC = \ SMESHGUI.h \ diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 2440a8439..aade73a3e 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -64,6 +64,7 @@ #include "SMESHGUI_Selection.h" #include "SMESHGUI_CreatePolyhedralVolumeDlg.h" #include "SMESHGUI_MeshOp.h" +#include "SMESHGUI_Displayer.h" #include "SMESHGUI_Utils.h" #include "SMESHGUI_GEOMGenUtils.h" @@ -806,6 +807,7 @@ SalomeApp_Module( "SMESH" ) myActiveDialogBox = 0 ; myState = -1 ; + myDisplayer = 0; SMESH::GetFilterManager(); SMESH::GetPattern(); @@ -3045,5 +3047,14 @@ SalomeApp_Operation* SMESHGUI::createOperation( const int id ) const break; } + if( !op ) + op = SalomeApp_Module::createOperation( id ); return op; } + +SalomeApp_Displayer* SMESHGUI::displayer() +{ + if( !myDisplayer ) + myDisplayer = new SMESHGUI_Displayer( dynamic_cast( getApp()->activeStudy() ) ); + return myDisplayer; +} diff --git a/src/SMESHGUI/SMESHGUI.h b/src/SMESHGUI/SMESHGUI.h index 5ccfbe869..821fffa02 100644 --- a/src/SMESHGUI/SMESHGUI.h +++ b/src/SMESHGUI/SMESHGUI.h @@ -71,6 +71,7 @@ public : static bool automaticUpdate(); + virtual SalomeApp_Displayer* displayer(); virtual QString engineIOR() const; virtual void initialize( CAM_Application* ); virtual void windows( QMap& ) const; @@ -135,6 +136,7 @@ private : QDialog* myActiveDialogBox; int myState; QMap myRules; + SalomeApp_Displayer* myDisplayer; }; #endif diff --git a/src/SMESHGUI/SMESHGUI_Displayer.cxx b/src/SMESHGUI/SMESHGUI_Displayer.cxx new file mode 100644 index 000000000..f1ddb5b2d --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Displayer.cxx @@ -0,0 +1,74 @@ +// SMESH SMESHGUI : Displayer for SMESH module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SMESHGUI_Displayer.cxx +// Author : Alexander SOLOVYOV +// Module : SMESH +// $Header: /home/server/cvs/SMESH/SMESH_SRC/src/SMESHGUI/SMESHGUI_Displayer.cxx + +#include "SMESHGUI_Displayer.h" +#include "SMESHGUI_VTKUtils.h" + +#include +#include +#include + +SMESHGUI_Displayer::SMESHGUI_Displayer( SalomeApp_Study* st ) +: SalomeApp_Displayer(), + myStudy( st ) +{ +} + +SMESHGUI_Displayer::~SMESHGUI_Displayer() +{ +} + +SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) +{ + SALOME_Prs* prs = 0; + + SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView(); + + if ( aViewFrame ) + { + SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); + if( vtk_viewer ) + { + SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView(); + SMESH_Actor* anActor = SMESH::FindActorByEntry( wnd, entry.latin1() ); + if( !anActor ) + anActor = SMESH::CreateActor( myStudy->studyDS(), entry.latin1(), true ); + if( anActor ) + { + SMESH::DisplayActor( wnd, anActor ); + prs = SalomeApp_Displayer::buildPresentation( entry.latin1(), aViewFrame ); + } + if( prs ) + UpdatePrs( prs ); + else if( anActor ) + SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor ); + } + } + + return prs; +} diff --git a/src/SMESHGUI/SMESHGUI_Displayer.h b/src/SMESHGUI/SMESHGUI_Displayer.h new file mode 100644 index 000000000..b8458e6c7 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Displayer.h @@ -0,0 +1,48 @@ +// SMESH SMESHGUI : Displayer for SMESH module +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// +// +// +// File : SMESHGUI_Displayer.h +// Author : Alexander SOLOVYOV +// Module : SMESH +// $Header: /home/server/cvs/SMESH/SMESH_SRC/src/SMESHGUI/SMESHGUI_Displayer.h + +#ifndef SMESHGUI_DISPLAYER_HEADER +#define SMESHGUI_DISPLAYER_HEADER + +#include + +class SalomeApp_Study; + +class SMESHGUI_Displayer : public SalomeApp_Displayer +{ +public: + SMESHGUI_Displayer( SalomeApp_Study* ); + ~SMESHGUI_Displayer(); + + virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 ); + +private: + SalomeApp_Study* myStudy; +}; + +#endif diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index 014e88a5a..ee4b1e60d 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -84,12 +84,16 @@ QtxValue SMESHGUI_Selection::param( const int ind, const QString& p ) const else if ( p=="displayMode" ) val = QtxValue( displayMode( ind ) ); else if ( p=="isComputable" ) val = QtxValue( isComputable( ind ) ); else if ( p=="hasReference" ) val = QtxValue( hasReference( ind ) ); - else if ( p=="isVisible" ) val = QtxValue( isVisible( ind ) ); +// else if ( p=="isVisible" ) val = QtxValue( isVisible( ind ) ); // printf( "--> param() : [%s] = %s (%s)\n", p.latin1(), val.toString().latin1(), val.typeName() ); //if ( val.type() == QVariant::List ) //cout << "size: " << val.toList().count() << endl; - return val; + + if( val.isValid() ) + return val; + else + return SalomeApp_Selection::param( ind, p ); } //=======================================================================