From 5ab649a626cf9350804814ef4eb67f9b3a3d402a Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Sat, 23 Jan 2021 05:25:54 +0100 Subject: [PATCH] SHAPER : On the road for SHAPER management -> ModuleCatalog needed by SHAPER -> propose it into salome --- src/KERNEL_PY/__init__.py | 12 ++++--- src/KERNEL_PY/salome_kernel.py | 9 ++++-- src/KERNEL_PY/salome_study.py | 2 +- src/ModuleCatalog/CMakeLists.txt | 24 ++++++++++++++ src/ModuleCatalog/KernelModuleCatalog.cxx | 29 +++++++++++++++++ src/ModuleCatalog/KernelModuleCatalog.hxx | 22 +++++++++++++ src/ModuleCatalog/KernelModuleCatalog.i | 39 +++++++++++++++++++++++ src/SALOMEDS/KernelDS.cxx | 2 +- src/SALOMEDS/KernelDS.hxx | 2 +- src/SALOMEDS/KernelDS.i | 2 +- 10 files changed, 133 insertions(+), 10 deletions(-) create mode 100644 src/ModuleCatalog/KernelModuleCatalog.cxx create mode 100644 src/ModuleCatalog/KernelModuleCatalog.hxx create mode 100644 src/ModuleCatalog/KernelModuleCatalog.i diff --git a/src/KERNEL_PY/__init__.py b/src/KERNEL_PY/__init__.py index 4bf3b3966..567277629 100644 --- a/src/KERNEL_PY/__init__.py +++ b/src/KERNEL_PY/__init__.py @@ -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 diff --git a/src/KERNEL_PY/salome_kernel.py b/src/KERNEL_PY/salome_kernel.py index 5edc7b3e0..b07ed3fed 100644 --- a/src/KERNEL_PY/salome_kernel.py +++ b/src/KERNEL_PY/salome_kernel.py @@ -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 diff --git a/src/KERNEL_PY/salome_study.py b/src/KERNEL_PY/salome_study.py index 613f80282..bf6a52986 100644 --- a/src/KERNEL_PY/salome_study.py +++ b/src/KERNEL_PY/salome_study.py @@ -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...") diff --git a/src/ModuleCatalog/CMakeLists.txt b/src/ModuleCatalog/CMakeLists.txt index fd7583952..4183628bf 100644 --- a/src/ModuleCatalog/CMakeLists.txt +++ b/src/ModuleCatalog/CMakeLists.txt @@ -17,10 +17,13 @@ # 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 index 000000000..aa638baec --- /dev/null +++ b/src/ModuleCatalog/KernelModuleCatalog.cxx @@ -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 index 000000000..5b7833168 --- /dev/null +++ b/src/ModuleCatalog/KernelModuleCatalog.hxx @@ -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 + +std::string GetModuleCatalogInstance(); diff --git a/src/ModuleCatalog/KernelModuleCatalog.i b/src/ModuleCatalog/KernelModuleCatalog.i new file mode 100644 index 000000000..b469622ac --- /dev/null +++ b/src/ModuleCatalog/KernelModuleCatalog.i @@ -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()) +%} diff --git a/src/SALOMEDS/KernelDS.cxx b/src/SALOMEDS/KernelDS.cxx index 42e19aa70..82fe2aefb 100644 --- a/src/SALOMEDS/KernelDS.cxx +++ b/src/SALOMEDS/KernelDS.cxx @@ -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 diff --git a/src/SALOMEDS/KernelDS.hxx b/src/SALOMEDS/KernelDS.hxx index 3d42fd8f8..f56aceb43 100644 --- a/src/SALOMEDS/KernelDS.hxx +++ b/src/SALOMEDS/KernelDS.hxx @@ -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 diff --git a/src/SALOMEDS/KernelDS.i b/src/SALOMEDS/KernelDS.i index 1298d9a9b..278870731 100644 --- a/src/SALOMEDS/KernelDS.i +++ b/src/SALOMEDS/KernelDS.i @@ -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 -- 2.39.2