]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
SHAPER : On the road for SHAPER management -> ModuleCatalog needed by SHAPER -> propo...
authorAnthony Geay <anthony.geay@edf.fr>
Sat, 23 Jan 2021 04:25:54 +0000 (05:25 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Sat, 23 Jan 2021 04:25:54 +0000 (05:25 +0100)
src/KERNEL_PY/__init__.py
src/KERNEL_PY/salome_kernel.py
src/KERNEL_PY/salome_study.py
src/ModuleCatalog/CMakeLists.txt
src/ModuleCatalog/KernelModuleCatalog.cxx [new file with mode: 0644]
src/ModuleCatalog/KernelModuleCatalog.hxx [new file with mode: 0644]
src/ModuleCatalog/KernelModuleCatalog.i [new file with mode: 0644]
src/SALOMEDS/KernelDS.cxx
src/SALOMEDS/KernelDS.hxx
src/SALOMEDS/KernelDS.i

index 4bf3b39666ee0fb5b345c47687d12b86fa8cafac..5672776299e4589c2cad721304c190ba081876c4 100644 (file)
@@ -161,7 +161,7 @@ if not flags:
 #    sys.setdlopenflags(flags)
 #    pass
 
-orb, lcc, naming_service, cm, sg, esm, dsm = None,None,None,None,None,None,None
+orb, lcc, naming_service, cm, sg, esm, dsm, modulcat = None,None,None,None,None,None,None,None
 myStudy, myStudyName = None,None
 
 salome_initial=True
@@ -217,12 +217,15 @@ class StandAloneLifecyle:
         raise RuntimeError("Undealed situation cont = {} module = {}".format(contName,moduleName))
 
 def salome_init_without_session():
-    global lcc,myStudy,orb
+    global lcc,myStudy,orb,modulcat
     lcc = StandAloneLifecyle()
     import KernelDS
     myStudy = KernelDS.myStudy()
     import CORBA
     orb=CORBA.ORB_init([''])
+    import KernelModuleCatalog
+    import SALOME_ModuleCatalog
+    modulcat = KernelModuleCatalog.myModuleCatalog()
     # activate poaManager to accept co-localized CORBA calls.
     poa = orb.resolve_initial_references("RootPOA")
     poaManager = poa._get_the_POAManager()
@@ -238,12 +241,13 @@ def salome_init_with_session(path=None, embedded=False):
     cm              reference to the container manager
     esm             reference to external server manager
     dsm             reference to shared dataserver manager
+    modulcat        reference to modulecatalog instance
     sg              access to SALOME GUI (when linked with IAPP GUI)
     myStudy         active study itself (CORBA reference)
     myStudyName     active study name
     """
     global salome_initial
-    global orb, lcc, naming_service, cm, esm, dsm
+    global orb, lcc, naming_service, cm, esm, dsm, modulcat
     global sg
     global myStudy, myStudyName
 
@@ -251,7 +255,7 @@ def salome_init_with_session(path=None, embedded=False):
         if salome_initial:
             salome_initial=False
             sg = salome_iapp_init(embedded)
-            orb, lcc, naming_service, cm, esm, dsm = salome_kernel_init()
+            orb, lcc, naming_service, cm, esm, dsm, modulcat = salome_kernel_init()
             myStudy, myStudyName = salome_study_init(path)
             pass
         pass
index 5edc7b3e0a6fc12b1b57e1bb40e6fc9d9ac4fc17..b07ed3fed427277a55740857f50a12574f93b829 100644 (file)
@@ -32,6 +32,7 @@ from SALOME_NamingServicePy import *
 from SALOME_utilities import *
 import Engines
 import SALOME
+import SALOME_ModuleCatalog
 
 orb = None
 lcc = None
@@ -39,9 +40,10 @@ naming_service = None
 cm = None
 esm = None
 dsm = None
+modulcat = None
 
 def salome_kernel_init():
-    global orb, lcc, naming_service, cm, esm, dsm
+    global orb, lcc, naming_service, cm, esm, dsm, modulcat
     
     if not orb:
         # initialise the ORB
@@ -62,5 +64,8 @@ def salome_kernel_init():
         #
         obj = naming_service.Resolve('/DataServerManager')
         dsm = obj._narrow(SALOME.DataServerManager)
+        #
+        obj = naming_service.Resolve('Kernel/ModulCatalog')
+        modulcat = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
         
-    return orb, lcc, naming_service, cm, esm, dsm
+    return orb, lcc, naming_service, cm, esm, dsm, modulcat
index 613f802825de647e0c4735db5496da33021ba8f3..bf6a529869e45f042ee5cf32088b0197416fb30b 100644 (file)
@@ -292,7 +292,7 @@ def salome_study_init(theStudyPath=None):
 
     if verbose(): print("theStudyPath:", theStudyPath)
     if not myStudy:
-        orb, lcc, naming_service, cm, _, _ = salome_kernel.salome_kernel_init()
+        orb, lcc, naming_service, cm, _, _, _ = salome_kernel.salome_kernel_init()
 
         # get Study reference
         if verbose(): print("looking for study...")
index fd758395255b87a23e9a3601902dd3e4d1e8f7c0..4183628bfd3a9cb9c8c70ff4557ff17fb404cf26 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
+include(${SWIG_USE_FILE})
+
 INCLUDE_DIRECTORIES(
   ${PTHREAD_INCLUDE_DIR}
   ${OMNIORB_INCLUDE_DIR}
   ${LIBXML2_INCLUDE_DIR}
+  ${PYTHON_INCLUDE_DIRS}
   ${PROJECT_BINARY_DIR}/salome_adm
   ${CMAKE_CURRENT_SOURCE_DIR}/../Basics
   ${CMAKE_CURRENT_SOURCE_DIR}/../SALOMELocalTrace
@@ -28,6 +31,7 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../Utils
   ${CMAKE_CURRENT_SOURCE_DIR}/../KernelHelpers
   ${CMAKE_CURRENT_SOURCE_DIR}/../LifeCycleCORBA
+  ${CMAKE_CURRENT_SOURCE_DIR}
   ${PROJECT_BINARY_DIR}/idl
 )
 
@@ -61,6 +65,26 @@ TARGET_LINK_LIBRARIES(SALOME_ModuleCatalog_Server SalomeCatalog ${COMMON_LIBS} $
 ADD_EXECUTABLE(SALOME_ModuleCatalog_Client SALOME_ModuleCatalog_Client.cxx)
 TARGET_LINK_LIBRARIES(SALOME_ModuleCatalog_Client SalomeCatalog ${COMMON_LIBS} ${OMNIORB_LIBRARIES})
 
+#
+
+SET(KernelModuleCatalog_HEADERS KernelModuleCatalog.hxx KernelModuleCatalog.i)
+SET(KernelModuleCatalog_SOURCES KernelModuleCatalog.cxx ${KernelModuleCatalog_HEADERS})
+SET_SOURCE_FILES_PROPERTIES(KernelModuleCatalog.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(KernelModuleCatalog.i PROPERTIES SWIG_FLAGS "-py3")
+SET_SOURCE_FILES_PROPERTIES(KernelModuleCatalog_wrap.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H")
+SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/KernelModuleCatalog.py )
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
+  SWIG_ADD_MODULE(KernelModuleCatalog python ${KernelModuleCatalog_SOURCES})
+ELSE()
+  SWIG_ADD_LIBRARY(KernelModuleCatalog LANGUAGE python SOURCES ${KernelModuleCatalog_SOURCES})
+ENDIF()
+SWIG_LINK_LIBRARIES(KernelModuleCatalog ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} SalomeCatalog SalomeKernelHelpers)
+install(TARGETS _KernelModuleCatalog DESTINATION ${SALOME_INSTALL_LIBS})
+install(FILES ${KernelModuleCatalog_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}"  ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_KernelModuleCatalog_REAL_NAME}")
+
+#
+
 INSTALL(TARGETS SALOME_ModuleCatalog_Server SALOME_ModuleCatalog_Client 
         EXPORT ${PROJECT_NAME}TargetGroup
         DESTINATION ${SALOME_INSTALL_BINS})
diff --git a/src/ModuleCatalog/KernelModuleCatalog.cxx b/src/ModuleCatalog/KernelModuleCatalog.cxx
new file mode 100644 (file)
index 0000000..aa638ba
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright (C) 2021  CEA/DEN, EDF R&D
+//
+// 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, or (at your option) any later version.
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOME_ModuleCatalog_impl.hxx"
+#include "SALOME_KernelServices.hxx"
+
+std::string GetModuleCatalogInstance()
+{
+    SALOME_ModuleCatalog::ModuleCatalog_var study = KERNEL::getModuleComponentServantSA();
+    CORBA::ORB_ptr orb = KERNEL::getORB();
+    CORBA::String_var ior = orb->object_to_string(study);
+    return std::string(ior.in());
+}
diff --git a/src/ModuleCatalog/KernelModuleCatalog.hxx b/src/ModuleCatalog/KernelModuleCatalog.hxx
new file mode 100644 (file)
index 0000000..5b78331
--- /dev/null
@@ -0,0 +1,22 @@
+// Copyright (C) 2021  CEA/DEN, EDF R&D
+//
+// 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, or (at your option) any later version.
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include <string>
+
+std::string GetModuleCatalogInstance();
diff --git a/src/ModuleCatalog/KernelModuleCatalog.i b/src/ModuleCatalog/KernelModuleCatalog.i
new file mode 100644 (file)
index 0000000..b469622
--- /dev/null
@@ -0,0 +1,39 @@
+// Copyright (C) 2021  CEA/DEN, EDF R&D
+//
+// 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, or (at your option) any later version.
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+%module KernelModuleCatalog
+
+%include "std_string.i"
+
+%{
+#include "KernelModuleCatalog.hxx"
+%}
+
+%inline
+{
+    std::string GetModuleCatalogInstance();
+}
+
+%pythoncode %{
+def myModuleCatalog():
+  import SALOMEDS
+  import CORBA
+  orb=CORBA.ORB_init([''])
+  return orb.string_to_object(GetModuleCatalogInstance())
+%}
index 42e19aa70db3ff091b4b777664a2771e2146ed40..82fe2aefb474588a575293592248e890ed640f7c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3d42fd8f84e24e82db0d9af8e2b2aad6c696b0e2..f56aceb431e97a0a83064dc3fb6203878ca9893e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1298d9a9be3b576b15330f0fb9a24aea1cd88d05..278870731f16afa56227b195a7d9092e345a73a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public