X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_SWIG_WITHIHM%2FlibSMESH_Swig.cxx;h=231dd33b5eb7a132013d734008dc5fdcad81441f;hb=442fd64c19a6e27a339ca36264c15ec91732cf32;hp=1adb3d4f0178b5c68a78971b6725e57a43ae3fc3;hpb=c98d9fcd7f02c1f1f5c24dd3e709ed75228d66c4;p=modules%2Fsmesh.git diff --git a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx index 1adb3d4f0..231dd33b5 100644 --- a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx +++ b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.cxx @@ -302,7 +302,7 @@ SMESH_Swig::SMESH_Swig() } }; - MESSAGE("Constructeur"); + //MESSAGE("Constructeur"); if(CORBA::is_nil(anORB)) ProcessVoidEvent(new TEvent(anORB)); @@ -402,7 +402,7 @@ SMESH_Swig::Init(int theStudyID) } }; - MESSAGE("Init"); + //MESSAGE("Init"); ProcessVoidEvent(new TEvent(theStudyID, myStudy, @@ -414,14 +414,13 @@ SMESH_Swig::Init(int theStudyID) //=============================================================== SMESH_Swig::~SMESH_Swig() { - MESSAGE("Destructeur"); + //MESSAGE("Destructeur"); } //=============================================================== const char* SMESH_Swig::AddNewMesh(const char* theIOR) { - MESSAGE("AddNewMesh"); // VSR: added temporarily - to be removed - objects are published automatically by engine SALOMEDS::SObject_var aSObject = myStudy->FindObjectIOR(theIOR); @@ -456,8 +455,6 @@ const char* SMESH_Swig::AddNewMesh(const char* theIOR) //=============================================================== const char* SMESH_Swig::AddNewHypothesis(const char* theIOR) { - MESSAGE("AddNewHypothesis"); - SALOMEDS::SObject_var aSObject = ::AddHypothesis(theIOR, mySComponentMesh, myStudyBuilder); @@ -471,8 +468,6 @@ const char* SMESH_Swig::AddNewHypothesis(const char* theIOR) //=============================================================== const char* SMESH_Swig::AddNewAlgorithms(const char* theIOR) { - MESSAGE("AddNewAlgorithms"); - SALOMEDS::SObject_var aSObject = ::AddAlgorithms(theIOR, mySComponentMesh, myStudyBuilder); @@ -615,6 +610,148 @@ const char* SMESH_Swig::AddSubMeshOnShape(const char* theMeshEntry, return ""; } +/*! + \brief Gets window with specified identifier + \internal + \param id window identifier + \return pointer on the window +*/ + +SUIT_ViewWindow* getWnd( const int id ) +{ + SUIT_ViewWindow* resWnd = 0; + SUIT_Session* aSession = SUIT_Session::session(); + SUIT_Application* anApplication = aSession->activeApplication(); + SalomeApp_Application* app = dynamic_cast(anApplication); + if ( app ) { + ViewManagerList vmlist = app->viewManagers(); + foreach( SUIT_ViewManager* vm, vmlist ) { + QVector vwlist = vm->getViews(); + foreach ( SUIT_ViewWindow* vw, vwlist ) { + if ( id == vw->getId() ) { + resWnd = vw; + break; + } + } + } + } + return resWnd; +} + +class TGetActorAspect: public SALOME_Event +{ +public: + typedef actorAspect TResult; + TResult myResult; + const char* _entry; + int _wid; + TGetActorAspect( const char* Mesh_Entry, int viewId ) + { + _entry = Mesh_Entry; + _wid = viewId; + } + virtual void Execute() + { + SMESH_Actor* anActor; + if (_wid) + { + SUIT_ViewWindow* w = getWnd(_wid); + anActor = SMESH::FindActorByEntry( w, _entry ); + } + else + anActor = SMESH::FindActorByEntry( _entry ); + if ( !anActor ) + { + MESSAGE("GetActorAspect: no actor corresponding to: " << _entry); + return; + } + anActor->GetSufaceColor(myResult.surfaceColor.r, + myResult.surfaceColor.g, + myResult.surfaceColor.b, + myResult.surfaceColor.delta); + anActor->GetVolumeColor(myResult.volumeColor.r, + myResult.volumeColor.g, + myResult.volumeColor.b, + myResult.volumeColor.delta); + anActor->GetEdgeColor(myResult.edgeColor.r, + myResult.edgeColor.g, + myResult.edgeColor.b); + anActor->GetNodeColor(myResult.nodeColor.r, + myResult.nodeColor.g, + myResult.nodeColor.b); + myResult.opacity= anActor->GetOpacity(); + MESSAGE("opacity: " << myResult.opacity); + } +}; + +actorAspect SMESH_Swig::GetActorAspect( const char* Mesh_Entry, int viewId ) +{ + return ProcessEvent(new TGetActorAspect( Mesh_Entry, viewId)); +} + +void SMESH_Swig::SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId ) +{ + class TSetActorAspect: public SALOME_Event + { + public: + const char* _entry; + actorAspect _actorPres; + int _wid; + TSetActorAspect(const actorAspect& actorPres, const char* Mesh_Entry, int viewId ) + { + _entry = Mesh_Entry; + _actorPres = actorPres; + _wid = viewId; + } + virtual void Execute() + { + SMESH_Actor* anActor; + if (_wid) + { + SUIT_ViewWindow* w = getWnd(_wid); + anActor = SMESH::FindActorByEntry( w, _entry ); + } + else + anActor = SMESH::FindActorByEntry( _entry ); + if ( !anActor ) + { + MESSAGE("SetActorAspect: no actor corresponding to: " << _entry); + return; + } + anActor->SetSufaceColor(_actorPres.surfaceColor.r, + _actorPres.surfaceColor.g, + _actorPres.surfaceColor.b, + _actorPres.surfaceColor.delta); + anActor->SetVolumeColor(_actorPres.volumeColor.r, + _actorPres.volumeColor.g, + _actorPres.volumeColor.b, + _actorPres.volumeColor.delta); + anActor->SetEdgeColor(_actorPres.edgeColor.r, + _actorPres.edgeColor.g, + _actorPres.edgeColor.b); + anActor->SetNodeColor(_actorPres.nodeColor.r, + _actorPres.nodeColor.g, + _actorPres.nodeColor.b); + anActor->SetOpacity(_actorPres.opacity); + if (_wid) + { + SUIT_ViewWindow* w = getWnd(_wid); + w->repaint(); + } + else + { + SUIT_Session* aSession = SUIT_Session::session(); + SUIT_Application* anApplication = aSession->activeApplication(); + SalomeApp_Application* anApp = dynamic_cast(anApplication); + SUIT_ViewManager* vman = anApp->getViewManager(VTKViewer_Viewer::Type(),true); + vman->getActiveView()->repaint(); + } + } + }; + + ProcessVoidEvent(new TSetActorAspect(actorPres, Mesh_Entry, viewId)); +} + void SMESH_Swig::CreateAndDisplayActor( const char* Mesh_Entry ) { // SMESH_Actor* Mesh = smeshGUI->ReadScript(aM);