X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVISU_I%2FVISU_Gen_i.cc;h=4801ceeef3c7abd026389d9abb8ae7f135e36580;hb=a7e9d108adf9283e24d85357125a07022f409d3a;hp=a6a499534b3cd652517d064ebdb9ce95acf4ad44;hpb=ee919bc9e211e2a3ba05ce0a5e21f9a716f2321a;p=modules%2Fvisu.git diff --git a/src/VISU_I/VISU_Gen_i.cc b/src/VISU_I/VISU_Gen_i.cc index a6a49953..4801ceee 100644 --- a/src/VISU_I/VISU_Gen_i.cc +++ b/src/VISU_I/VISU_Gen_i.cc @@ -38,6 +38,7 @@ #include "VISU_CutLines_i.hh" #include "VISU_Vectors_i.hh" #include "VISU_StreamLines_i.hh" +#include "VISU_Plot3D_i.hh" #include "VISU_Table_i.hh" #include "VISU_TimeAnimation.h" @@ -52,7 +53,7 @@ #include "SUIT_Session.h" #include "SalomeApp_Study.h" #include "SalomeApp_Application.h" -#include "SalomeApp_SelectionMgr.h" +#include "LightApp_SelectionMgr.h" #include "SVTK_ViewModel.h" #include "SVTK_ViewWindow.h" #include "SALOME_Event.hxx" @@ -190,6 +191,7 @@ namespace VISU{ Storable::Registry(CutLines_i::myComment.c_str(),&(Restore)); Storable::Registry(IsoSurfaces_i::myComment.c_str(),&(Restore)); Storable::Registry(StreamLines_i::myComment.c_str(),&(Restore)); + Storable::Registry(Plot3D_i::myComment.c_str(),&(Restore)); Storable::Registry(Vectors_i::myComment.c_str(),&(Restore)); Storable::Registry(Table_i::myComment.c_str(),&(Table_i::Restore)); Storable::Registry(Curve_i::myComment.c_str(),&(Curve_i::Restore)); @@ -406,11 +408,11 @@ namespace VISU{ void VISU_Gen_i::SetCurrentStudy (SALOMEDS::Study_ptr theStudy) { - class TEvent: public SALOME_Event { - QString myStudyName; + class TEvent: public SALOME_Event { + std::string myStudyName; public: - TEvent(const QString& theStudyName):myStudyName(theStudyName) - {} + TEvent(const std::string theStudyName):myStudyName(theStudyName) + {} virtual void Execute() { bool isActive = false; @@ -422,10 +424,13 @@ namespace VISU{ ++anIter; if (SUIT_Study* aSStudy = anApp->activeStudy()) { if (SalomeApp_Study* aStudy = dynamic_cast(aSStudy)) { - MESSAGE("There is an application with active study : " << aStudy->studyName()); - if (myStudyName == aStudy->studyName()) { - isActive = true; - break; + if (_PTR(Study) aCStudy = aStudy->studyDS()) { + MESSAGE("There is an application with active study : StudyId = " + << aCStudy->StudyId() << "; Name = '" << aCStudy->Name() << "'"); + if (myStudyName == aCStudy->Name()) { + isActive = true; + break; + } } } } @@ -434,19 +439,19 @@ namespace VISU{ MESSAGE("!!! anApp->onLoadDoc(myStudyName) !!!"); // Has to be loaded in an empty or in a new application SalomeApp_Application* anApp = dynamic_cast(aFirstApp); - anApp->onLoadDoc(myStudyName); + anApp->onLoadDoc(myStudyName.c_str()); } } }; - + if (!CORBA::is_nil(theStudy)) { CORBA::String_var aName = theStudy->Name(); - QString aStudyName (aName.in()); + std::string aStudyName (aName.in()); MESSAGE("StudyId = " << theStudy->StudyId() << "; Name = '" << aName.in() << "'"); myStudyDocument = SALOMEDS::Study::_duplicate(theStudy); - ProcessVoidEvent(new TEvent(aStudyName)); + ProcessVoidEvent(new TEvent(aStudyName)); } else { MESSAGE("CORBA::is_nil(theStudy)"); } @@ -506,12 +511,6 @@ namespace VISU{ return aResult._retn(); } - Result_ptr VISU_Gen_i::ClientImportMed (_PTR(SObject) theMedSObject) - { - SALOMEDS::SObject_ptr aMedSObject = GetSObject(theMedSObject); - return ImportMed(aMedSObject); - } - Result_ptr VISU_Gen_i::ImportMed (SALOMEDS::SObject_ptr theMedSObject) { if (myStudyDocument->GetProperties()->IsLocked()) @@ -644,6 +643,15 @@ namespace VISU{ return Prs3dOnField(theResult,theMeshName,theEntity,theFieldName,theIteration)._retn(); } + Plot3D_ptr VISU_Gen_i::Plot3DOnField(Result_ptr theResult, + const char* theMeshName, + VISU::Entity theEntity, + const char* theFieldName, + CORBA::Double theIteration) + { + return Prs3dOnField(theResult,theMeshName,theEntity,theFieldName,theIteration)._retn(); + } + CutPlanes_ptr VISU_Gen_i::CutPlanesOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, @@ -716,119 +724,26 @@ namespace VISU{ return VISU::Animation::_nil(); } - void DeletePrs3d (Prs3d_ptr thePrs3d) - { - Prs3d_i* aPrs3d = dynamic_cast(GetServant(thePrs3d).in()); - if (!aPrs3d) - return; - - // 1. Find appropriate application (code like in VISU_ViewManager_i.cxx) - SALOMEDS::Study_var myStudyDocument = aPrs3d->GetStudyDocument(); - SalomeApp_Application* anApp = NULL; - CORBA::String_var studyName = myStudyDocument->Name(); - std::string aStudyName = studyName.in(); - SUIT_Session* aSession = SUIT_Session::session(); - QPtrList anApplications = aSession->applications(); - QPtrListIterator anIter (anApplications); - while (SUIT_Application* aSUITApp = anIter.current()) { - ++anIter; - if (SUIT_Study* aSStudy = aSUITApp->activeStudy()) { - if (SalomeApp_Study* aStudy = dynamic_cast(aSStudy)) { - if (_PTR(Study) aCStudy = aStudy->studyDS()) { - if (aStudyName == aCStudy->Name()) { - anApp = dynamic_cast(aSUITApp); - break; - } - } - } - } - } - if (!anApp) - return; - - // 2. Remove corresponding IO from selection - SALOMEDS::SObject_var aSObject = aPrs3d->GetSObject(); - CORBA::String_var anEntry = aSObject->GetID(); - - SalomeApp_SelectionMgr* aSelectionMgr = anApp->selectionMgr(); - SALOME_ListIO aListIO, aNewListIO; - aSelectionMgr->selectedObjects(aListIO); - - for (SALOME_ListIteratorOfListIO it (aListIO); it.More(); it.Next()) { - if (it.Value()->hasEntry()) { - std::string aCurEntry (it.Value()->getEntry()); - if (aCurEntry != anEntry) { - aNewListIO.Append(it.Value()); - } - } - } - - aSelectionMgr->setSelectedObjects(aNewListIO); - - // 3. Remove Actors - ViewManagerList aViewManagerList; - anApp->viewManagers(SVTK_Viewer::Type(), aViewManagerList); - QPtrListIterator anVMIter (aViewManagerList); - for (; anVMIter.current(); ++anVMIter) { - SUIT_ViewManager* aViewManager = anVMIter.current(); - QPtrVector aViews = aViewManager->getViews(); - for (int i = 0, iEnd = aViews.size(); i < iEnd; i++) { - if (SUIT_ViewWindow* aViewWindow = aViews.at(i)) { - if (SVTK_ViewWindow* vw = dynamic_cast(aViewWindow)) { - //VISU_Actor* anActor = aVISUViewManager->GetActor(aPrs3d, vw); - VISU_Actor* anActor = NULL; - vtkActorCollection *anActColl = vw->getRenderer()->GetActors(); - anActColl->InitTraversal(); - vtkActor *aVTKActor = anActColl->GetNextActor(); - for (; !anActor && aVTKActor; aVTKActor = anActColl->GetNextActor()) { - if (VISU_Actor* anVISUActor = dynamic_cast(aVTKActor)) { - if (aPrs3d == anVISUActor->GetPrs3d()) { - anActor = anVISUActor->GetParent(); - } - } - } - if (anActor) { - vw->RemoveActor(anActor); - anActor->Delete(); - } - } - } - } - } - - aPrs3d->RemoveFromStudy(); - aPrs3d->Destroy(); - - //jfa tmp:theModule->updateObjBrowser(); //update Object browser - } - void VISU_Gen_i::DeleteResult (Result_ptr theResult) { class TEvent: public SALOME_Event { Result_ptr myResult; public: TEvent(Result_ptr theResult): myResult(theResult) {} - virtual void Execute(){ + virtual void Execute() + { if (Result_i* aResult = dynamic_cast(GetServant(myResult).in())) { SALOMEDS::SObject_var aSObject = aResult->GetSObject(); - SALOMEDS::Study_var aStudyDocument = aSObject->GetStudy(); - SALOMEDS::ChildIterator_var aChildIter = aStudyDocument->NewChildIterator(aSObject); - for(aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()){ - SALOMEDS::SObject_var aChildSObject = aChildIter->Value(); - CORBA::Object_var aChildObj = VISU::SObjectToObject(aChildSObject); - if(CORBA::is_nil(aChildObj)) continue; - VISU::Prs3d_var aPrs3d = VISU::Prs3d::_narrow(aChildObj); - if(CORBA::is_nil(aPrs3d)) continue; - VISU::DeletePrs3d(aPrs3d); - } - - aResult->RemoveFromStudy(); - aResult->Destroy(); + VISU::RemoveFromStudy(aSObject, + false, // not only attribute + true); // destroy sub-objects //jfa tmp:if (QAD_Desktop* aDesktop = QAD_Application::getDesktop()) //jfa tmp: if (QAD_Study* aStudy = aDesktop->findStudy(aStudyDocument)) //jfa tmp: aStudy->updateObjBrowser(); //update Object browser } + + myResult->Destroy(); } }; @@ -846,7 +761,19 @@ namespace VISU{ public: TEvent(Prs3d_ptr thePrs3d): myPrs3d(thePrs3d) {} virtual void Execute() { - VISU::DeletePrs3d(myPrs3d); + myPrs3d->RemoveFromStudy(); + + //update Object browser + /*jfa tmp:if (QAD_Desktop* aDesktop = QAD_Application::getDesktop()) { + if (Prs3d_i* aPrs3d = dynamic_cast(GetServant(myPrs3d).in())) { + SALOMEDS::SObject_var aSObject = aPrs3d->GetSObject(); + SALOMEDS::Study_var aStudyDocument = aSObject->GetStudy(); + if (QAD_Study* aStudy = aDesktop->findStudy(aStudyDocument)) + aStudy->updateObjBrowser(); + } + }*/ + + myPrs3d->Destroy(); } }; @@ -1049,5 +976,4 @@ namespace VISU{ anIOR->SetValue(anIORValue); return aResultSO._retn(); } - }