Salome HOME
SALOME PAL V1_4_1
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Swig.cxx
index b571990925dd31f0786a6313fd869d76dc8b1f20..1ab1cea6b7da1a3d5e0fdfbd5d3c26ee0d2fdcad 100644 (file)
@@ -1,14 +1,32 @@
-using namespace std;
-//  File      : SMESH_Swig.cxx
-//  Created   : Mon Jun 17 13:41:43 2002
-//  Author    : Nicolas REJNERI
-
-//  Project   : SALOME
-//  Module    : SMESH
-//  Copyright : Open CASCADE 2002
+//  SMESH SMESHGUI : GUI for SMESH component
+//
+//  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   : SMESH_Swig.cxx
+//  Author : Nicolas REJNERI
+//  Module : SMESH
 //  $Header$
 
-
+using namespace std;
 #include "SMESHGUI_Swig.hxx"
 
 #include "Utils_ORB_INIT.hxx"
@@ -55,6 +73,9 @@ void SMESH_Swig::Init(int studyID)
   Engines::Component_var comp = QAD_Application::getDesktop()->getEngine("FactoryServer", "SMESH");
   SMESH::SMESH_Gen_var CompMesh = SMESH::SMESH_Gen::_narrow(comp);
 
+  Engines::Component_var comp1 = QAD_Application::getDesktop()->getEngine("FactoryServer", "GEOM");
+  GEOM::GEOM_Gen_var CompGeom = GEOM::GEOM_Gen::_narrow(comp1);
+
   QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager();
   if ( resMgr ) {
     QString msg;
@@ -65,6 +86,9 @@ void SMESH_Swig::Init(int studyID)
   CORBA::Object_var obj = QAD_Application::getDesktop()->getNameService()->Resolve("/myStudyManager");
   SALOMEDS::StudyManager_var myStudyMgr = SALOMEDS::StudyManager::_narrow(obj);
   myStudy = myStudyMgr->GetStudyByID(studyID);
+
+  CompMesh->SetCurrentStudy( myStudy.in() ); 
+
   myStudyBuilder = myStudy->NewBuilder();
   SALOMEDS::GenericAttribute_var anAttr;
   SALOMEDS::AttributeName_var    aName;
@@ -73,6 +97,8 @@ void SMESH_Swig::Init(int studyID)
   SALOMEDS::SComponent_var father = myStudy->FindComponent("MESH");
   
   if (father->_is_nil()) {
+    bool aLocked = myStudy->GetProperties()->IsLocked();
+    if (aLocked) myStudy->GetProperties()->SetLocked(false);
     father = myStudyBuilder->NewComponent("MESH");
     anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributeName");
     aName = SALOMEDS::AttributeName::_narrow(anAttr);
@@ -81,8 +107,9 @@ void SMESH_Swig::Init(int studyID)
     anAttr = myStudyBuilder->FindOrCreateAttribute(father, "AttributePixMap");
     aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr);
     aPixmap->SetPixMap( "ICON_OBJBROWSER_SMESH" );
+    myStudyBuilder->DefineComponentInstance(father, CompMesh );
+    if (aLocked) myStudy->GetProperties()->SetLocked(true);
   }
-  myStudyBuilder->DefineComponentInstance(father, CompMesh );
   mySComponentMesh = SALOMEDS::SComponent::_narrow( father );
 
   // Tags definition 
@@ -109,6 +136,12 @@ SMESH_Swig::~SMESH_Swig()
 const char* SMESH_Swig::AddNewMesh(const char* IOR)
 {
   MESSAGE("AddNewMesh");
+
+  // VSR: added temporarily - to be removed - objects are published automatically by engine
+  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
+  if ( !SO->_is_nil() )
+    return SO->GetID();
+
   //Find or Create Hypothesis root
   SALOMEDS::GenericAttribute_var    anAttr;
   SALOMEDS::AttributeName_var       aName;
@@ -158,6 +191,12 @@ const char* SMESH_Swig::AddNewMesh(const char* IOR)
 const char* SMESH_Swig::AddNewHypothesis(const char* IOR)
 {
   MESSAGE("AddNewHypothesis");
+
+  // VSR: added temporarily - to be removed - objects are published automatically by engine
+  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
+  if ( !SO->_is_nil() )
+    return SO->GetID();
+
   //Find or Create Hypothesis root
   SALOMEDS::SObject_var             HypothesisRoot;
   SALOMEDS::GenericAttribute_var    anAttr;
@@ -202,6 +241,12 @@ const char* SMESH_Swig::AddNewHypothesis(const char* IOR)
 const char* SMESH_Swig::AddNewAlgorithms(const char* IOR)
 {
   MESSAGE("AddNewAlgorithms");
+
+  // VSR: added temporarily - to be removed - objects are published automatically by engine
+  SALOMEDS::SObject_var SO = myStudy->FindObjectIOR( IOR );
+  if ( !SO->_is_nil() )
+    return SO->GetID();
+
   //Find or Create Algorithms root
   SALOMEDS::SObject_var             AlgorithmsRoot;
   SALOMEDS::GenericAttribute_var    anAttr;