X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVISUGUI%2FVisuGUI_Displayer.cxx;h=2939ca9082a037cab8963a7456937b517924be61;hb=e208a04edd5d8cebc0185834ecdf3faec4514f99;hp=1fa6f098984eb6b1e560bf44fc517dd634a0beea;hpb=776278fcaf14fcaa6265ddca8116a6a0209aa375;p=modules%2Fvisu.git diff --git a/src/VISUGUI/VisuGUI_Displayer.cxx b/src/VISUGUI/VisuGUI_Displayer.cxx index 1fa6f098..2939ca90 100644 --- a/src/VISUGUI/VisuGUI_Displayer.cxx +++ b/src/VISUGUI/VisuGUI_Displayer.cxx @@ -27,10 +27,13 @@ // $Header: /home/server/cvs/VISU/VISU_SRC/src/VISUGUI/VisuGUI_Displayer.cxx #include "VisuGUI_Displayer.h" -#include "VVTK_ViewModel.h" + #include "VisuGUI_Tools.h" +#include "VISU_ViewManager_i.hh" #include "VISU_Actor.h" +#include "VVTK_ViewModel.h" + #include #include @@ -41,7 +44,7 @@ #include #include -#include "VISU_ViewManager_i.hh" +#include VisuGUI_Displayer::VisuGUI_Displayer( SalomeApp_Application* app ) : LightApp_Displayer(), @@ -67,7 +70,9 @@ SALOME_Prs* VisuGUI_Displayer::buildPresentation( const QString& entry, SALOME_V if( CORBA::is_nil( anObj ) ) return 0; - SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); + SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); + if (!vtk_viewer) + vtk_viewer = dynamic_cast( aViewFrame ); if( vtk_viewer ) { SVTK_ViewWindow* wnd = @@ -116,14 +121,22 @@ SALOME_Prs* VisuGUI_Displayer::buildPresentation( const QString& entry, SALOME_V void VisuGUI_Displayer::buildPrs3d( SVTK_ViewWindow* wnd, VISU::Prs3d_i* thePrs ) const { - VISU_Actor* newAct = VISU::FindActor( wnd, thePrs ); - if( !newAct ) - { - newAct = thePrs->CreateActor(); + VISU_Actor* newAct = VISU::FindActor(wnd, thePrs); + if (!newAct) { + try { + newAct = thePrs->CreateActor(); + } catch (std::runtime_error& exc) { + thePrs->RemoveActors(); + + INFOS(exc.what()); + SUIT_MessageBox::warn1 + (myApp->desktop(), QObject::tr("WRN_VISU"), + QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(exc.what()), + QObject::tr("BUT_OK")); + } } - if( newAct ) - { - wnd->AddActor( newAct ); + if (newAct) { + wnd->AddActor(newAct); wnd->Repaint(); } }