This commit is contained in:
asl 2005-09-27 06:33:42 +00:00
parent 98fe24f8c9
commit 40793ae45e
6 changed files with 143 additions and 3 deletions

View File

@ -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 \

View File

@ -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<SalomeApp_Study*>( getApp()->activeStudy() ) );
return myDisplayer;
}

View File

@ -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<int, int>& ) const;
@ -135,6 +136,7 @@ private :
QDialog* myActiveDialogBox;
int myState;
QMap<int,QString> myRules;
SalomeApp_Displayer* myDisplayer;
};
#endif

View File

@ -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 <SalomeApp_Study.h>
#include <SVTK_ViewModel.h>
#include <SVTK_ViewWindow.h>
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<SVTK_Viewer*>( 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;
}

View File

@ -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 <SalomeApp_Displayer.h>
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

View File

@ -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 );
}
//=======================================================================