From f83db3eda3699dfe5b2cfb96cf83cc0ed205640e Mon Sep 17 00:00:00 2001 From: cvs2git Date: Thu, 14 Sep 2006 18:16:47 +0000 Subject: [PATCH] This commit was manufactured by cvs2git to create tag 'essai1'. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Sprout from V3_2_0_AMA 2006-09-14 18:16:46 UTC salome 'add: construction géométrie Cabri' Delete: Makefile.in adm_local/unix/config_files/README adm_local/unix/config_files/check_msg2qm.m4 adm_local/unix/config_files/check_pal.m4 adm_local/unix/config_files/check_visu.m4 adm_local/unix/make_commence.in adm_local/unix/make_omniorb.in bin/VERSION build_configure configure.in.base doc/Makefile.in doc/patchEficasV1_10.diff idl/EFICAS_Gen.idl idl/Makefile.in resources/EFICASCatalog.xml resources/EFICAS_en.xml resources/SalomeApp.xml resources/eficas.png resources/eficashomard.png resources/eficaster.png resources/eficasternovice.png resources/moins.png resources/plus.png resources/select1.png src/CONFIG/Makefile.in src/CONFIG/eficasConfig.py src/EFICAS/EFICAS.py src/EFICAS/Makefile.in src/EFICASGUI/EFICASGUI.py src/EFICASGUI/EFICAS_icons.po src/EFICASGUI/EFICAS_msg_en.po src/EFICASGUI/Makefile.in src/EFICASGUI/SelectMainShapeDiag_ui.ui src/EFICASGUI/eficasSalome.py src/EFICASGUI/eficas_etude.py src/Makefile.in src/STUDY/EficasStudy.py src/STUDY/Makefile.in --- Makefile.in | 103 ---- adm_local/unix/config_files/README | 1 - adm_local/unix/config_files/check_msg2qm.m4 | 59 -- adm_local/unix/config_files/check_pal.m4 | 50 -- adm_local/unix/config_files/check_visu.m4 | 58 -- adm_local/unix/make_commence.in | 227 ------- adm_local/unix/make_omniorb.in | 53 -- bin/VERSION | 1 - build_configure | 224 ------- configure.in.base | 287 --------- doc/Makefile.in | 32 - doc/patchEficasV1_10.diff | 26 - idl/EFICAS_Gen.idl | 16 - idl/Makefile.in | 60 -- resources/EFICASCatalog.xml | 26 - resources/EFICAS_en.xml | 36 -- resources/SalomeApp.xml | 12 - resources/eficas.png | Bin 2056 -> 0 bytes resources/eficashomard.png | Bin 38411 -> 0 bytes resources/eficaster.png | Bin 11883 -> 0 bytes resources/eficasternovice.png | Bin 15328 -> 0 bytes resources/moins.png | Bin 108 -> 0 bytes resources/plus.png | Bin 131 -> 0 bytes resources/select1.png | Bin 975 -> 0 bytes src/CONFIG/Makefile.in | 16 - src/CONFIG/eficasConfig.py | 18 - src/EFICAS/EFICAS.py | 77 --- src/EFICAS/Makefile.in | 20 - src/EFICASGUI/EFICASGUI.py | 213 ------- src/EFICASGUI/EFICAS_icons.po | 11 - src/EFICASGUI/EFICAS_msg_en.po | 11 - src/EFICASGUI/Makefile.in | 50 -- src/EFICASGUI/SelectMainShapeDiag_ui.ui | 138 ----- src/EFICASGUI/eficasSalome.py | 649 -------------------- src/EFICASGUI/eficas_etude.py | 11 - src/Makefile.in | 20 - src/STUDY/EficasStudy.py | 539 ---------------- src/STUDY/Makefile.in | 20 - 38 files changed, 3064 deletions(-) delete mode 100644 Makefile.in delete mode 100644 adm_local/unix/config_files/README delete mode 100755 adm_local/unix/config_files/check_msg2qm.m4 delete mode 100644 adm_local/unix/config_files/check_pal.m4 delete mode 100644 adm_local/unix/config_files/check_visu.m4 delete mode 100644 adm_local/unix/make_commence.in delete mode 100644 adm_local/unix/make_omniorb.in delete mode 100755 bin/VERSION delete mode 100755 build_configure delete mode 100644 configure.in.base delete mode 100644 doc/Makefile.in delete mode 100644 doc/patchEficasV1_10.diff delete mode 100644 idl/EFICAS_Gen.idl delete mode 100644 idl/Makefile.in delete mode 100644 resources/EFICASCatalog.xml delete mode 100644 resources/EFICAS_en.xml delete mode 100644 resources/SalomeApp.xml delete mode 100644 resources/eficas.png delete mode 100644 resources/eficashomard.png delete mode 100644 resources/eficaster.png delete mode 100644 resources/eficasternovice.png delete mode 100644 resources/moins.png delete mode 100644 resources/plus.png delete mode 100644 resources/select1.png delete mode 100644 src/CONFIG/Makefile.in delete mode 100644 src/CONFIG/eficasConfig.py delete mode 100644 src/EFICAS/EFICAS.py delete mode 100644 src/EFICAS/Makefile.in delete mode 100644 src/EFICASGUI/EFICASGUI.py delete mode 100644 src/EFICASGUI/EFICAS_icons.po delete mode 100644 src/EFICASGUI/EFICAS_msg_en.po delete mode 100644 src/EFICASGUI/Makefile.in delete mode 100644 src/EFICASGUI/SelectMainShapeDiag_ui.ui delete mode 100644 src/EFICASGUI/eficasSalome.py delete mode 100644 src/EFICASGUI/eficas_etude.py delete mode 100644 src/Makefile.in delete mode 100644 src/STUDY/EficasStudy.py delete mode 100644 src/STUDY/Makefile.in diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index ce805964..00000000 --- a/Makefile.in +++ /dev/null @@ -1,103 +0,0 @@ -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 28/06/2001 -# - -# source path -top_srcdir=@top_srcdir@ -top_builddir=. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl - - -@COMMENCE@ - -SUBDIRS = idl src - -RESOURCES_FILES = \ -EFICASCatalog.xml \ -EFICAS_en.xml \ -eficashomard.png \ -eficas.png \ -eficaster.png \ -eficasternovice.png \ -moins.png \ -plus.png \ -select1.png \ -SalomeApp.xml - -BIN_SCRIPT= \ -VERSION - -# copy header files in common directory -ifeq ($(HAVE_SSTREAM),yes) - include_list=include/salome/SALOMEconfig.h -else - include_list=include/salome/SALOMEconfig.h include/salome/sstream -endif - -inc: idl $(include_list) - -include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref - -$(RM) $@ - $(LN_S) ../../$< $@ - -# test if SALOMEconfig.h has changed (contents) -salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h - @if ! [ -a $@ ]; then \ - cp -p $< $@; \ - fi; \ - if ! cmp $< $@; then \ - cp -p $< $@; \ - fi; \ - -include/salome/sstream: salome_adm/unix/sstream - -$(RM) $@ - $(LN_S) ../../$< $@ - -depend: depend_idl - -depend_idl: - (cd idl ; $(MAKE) $@) || exit 1 - -# doc is already build : if you want to had documents, go manually to doc and run 'make doc' -#doc: -# (cd doc && $(MAKE) $@) || exit 1 - -install-end: -# finish libtool install -# @$(LT) --mode=finish $(libdir) - -install-include: $(include_list) - $(INSTALL) -d $(includedir) - @for f in X $(include_list); do \ - if test $$f != X; then \ - ($(INSTALL_DATA) $$f $(includedir)/. || exit 1); \ - fi; \ - done - -# install script in $(bindir) : -install-bin: $(BIN_SCRIPT) - $(INSTALL) -d $(bindir) - if test $(BIN_SCRIPT)X != X; then \ - $(INSTALL_PROGRAM) $^ $(bindir); \ - fi - -uninstall: uninstall-idl - -uninstall-idl: - $(RM) $(idldir)/*.idl - -distclean: distclean-other - -distclean-other: - -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old - -$(RM) salome_adm/unix/make_* - -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h - -$(RM) config.cache config.log config.status - -@MODULE@ - -install: install-bin install-include install-end - diff --git a/adm_local/unix/config_files/README b/adm_local/unix/config_files/README deleted file mode 100644 index c9e7d6af..00000000 --- a/adm_local/unix/config_files/README +++ /dev/null @@ -1 +0,0 @@ -this file is needed by cvs to create the directory \ No newline at end of file diff --git a/adm_local/unix/config_files/check_msg2qm.m4 b/adm_local/unix/config_files/check_msg2qm.m4 deleted file mode 100755 index 30e63765..00000000 --- a/adm_local/unix/config_files/check_msg2qm.m4 +++ /dev/null @@ -1,59 +0,0 @@ -# Check availability of Qt's msg2qm tool binary distribution -# -# Author : Jerome Roy (CEA, 2003) -# - -AC_DEFUN([CHECK_MSG2QM],[ -AC_CHECKING(for msg2qm) - -msg2qm_ok=no - -AC_ARG_WITH(msg2qm, - [ --with-msg2qm=root_directory_path_of_MSG2QM_installation], - MSG2QM_DIR="$withval",MSG2QM_DIR="") - -if test "x$MSG2QM_DIR" == "x" ; then - # no --with-MSG2QM-dir option used - if test "x$MSG2QM_ROOT" != "x" ; then - # MSG2QM_ROOT environment variable defined - MSG2QM_DIR=$MSG2QM_ROOT - else - # search MSG2QM binaries in PATH variable - AC_PATH_PROG(TEMP, msg2qm) - if test "x$TEMP" != "x" ; then - MSG2QM_DIR=`dirname $TEMP` - fi - fi -fi - -# look for msg2qm in ${MSG2QM_DIR} directory -if test -f ${MSG2QM_DIR}/msg2qm ; then - msg2qm_ok=yes - MSG2QM="${MSG2QM_DIR}/msg2qm" - AC_MSG_RESULT(Using MSG2QM executable in ${MSG2QM_DIR}) -else - # if not found, look for msg2qm in ${MSG2QM_DIR}/bin directory - if test -f ${MSG2QM_DIR}/bin/msg2qm ; then - msg2qm_ok=yes - MSG2QM="${MSG2QM_DIR}/bin/msg2qm" - AC_MSG_RESULT(Using MSG2QM executable in ${MSG2QM_DIR}/bin) - fi -fi - -if test "$msg2qm_ok" == "no"; then - # At last, let's have a look in SALOME (until V2.2.X) - SALOME_MSG2QM=${KERNEL_ROOT_DIR}/bin/salome/msg2qm - if test -f $SALOME_MSG2QM ; then - msg2qm_ok=yes - MSG2QM=${SALOME_MSG2QM} - AC_MSG_RESULT(Using MSG2QM executable provided with SALOME KERNEL) - else - AC_MSG_WARN("Cannot find MSG2QM executable in SALOME") - fi -fi - -AC_SUBST(MSG2QM) -AC_MSG_RESULT(for MSG2QM: $msg2qm_ok) - -])dnl - diff --git a/adm_local/unix/config_files/check_pal.m4 b/adm_local/unix/config_files/check_pal.m4 deleted file mode 100644 index d4a2e8e6..00000000 --- a/adm_local/unix/config_files/check_pal.m4 +++ /dev/null @@ -1,50 +0,0 @@ -# Check availability of Salome's PAL binary distribution -# -# Author : Guillaume Boulant (CSSI - 03/08/2005) -# - -AC_DEFUN([CHECK_PAL],[ - -AC_CHECKING(for Pal) - -pal_ok=no - -AC_ARG_WITH(pal, - [ --with-pal=DIR root directory path of PAL build or installation], - PAL_DIR="$withval",PAL_DIR="") - -if test "x$PAL_DIR" = "x" ; then - -# no --with-pal-dir option used - - if test "x$PAL_ROOT_DIR" != "x" ; then - - # PAL_ROOT_DIR environment variable defined - PAL_DIR=$PAL_ROOT_DIR - - else - AC_MSG_WARN("PAL_ROOT_DIR is not defined") - fi -fi - -if test -f ${PAL_DIR}/bin/salome/runAppli ; then - pal_ok=yes - AC_MSG_RESULT(Using Pal module distribution in ${PAL_DIR}) - - if test "x$PAL_ROOT_DIR" = "x" ; then - PAL_ROOT_DIR=${PAL_DIR} - fi - if test "x$PAL_SITE_DIR" = "x" ; then - PAL_SITE_DIR=${PAL_ROOT_DIR} - fi - AC_SUBST(PAL_ROOT_DIR) - AC_SUBST(PAL_SITE_DIR) - -else - AC_MSG_WARN("Cannot find compiled Pal module distribution") -fi - -AC_MSG_RESULT(for Pal: $pal_ok) - -])dnl - diff --git a/adm_local/unix/config_files/check_visu.m4 b/adm_local/unix/config_files/check_visu.m4 deleted file mode 100644 index 9aa8803e..00000000 --- a/adm_local/unix/config_files/check_visu.m4 +++ /dev/null @@ -1,58 +0,0 @@ -# Check availability of Salome's VISU binary distribution -# -# Author : Jerome Roy (CEA, 2003) -# - -AC_DEFUN([CHECK_VISU],[ - -AC_CHECKING(for Visu) - -Visu_ok=no - -AC_ARG_WITH(visu, - [ --with-visu=DIR root directory path of VISU build or installation], - VISU_DIR="$withval",VISU_DIR="") - -if test "x$VISU_DIR" = "x" ; then - -# no --with-visu-dir option used - - if test "x$VISU_ROOT_DIR" != "x" ; then - - # VISU_ROOT_DIR environment variable defined - VISU_DIR=$VISU_ROOT_DIR - - else - - # search Visu binaries in PATH variable - AC_PATH_PROG(TEMP, runSalome) - if test "x$TEMP" != "x" ; then - VISU_BIN_DIR=`dirname $TEMP` - VISU_DIR=`dirname $VISU_BIN_DIR` - fi - - fi -# -fi - -if test -f ${VISU_DIR}/bin/salome/visu.py ; then - Visu_ok=yes - AC_MSG_RESULT(Using Visu module distribution in ${VISU_DIR}) - - if test "x$VISU_ROOT_DIR" = "x" ; then - VISU_ROOT_DIR=${VISU_DIR} - fi - if test "x$VISU_SITE_DIR" = "x" ; then - VISU_SITE_DIR=${VISU_ROOT_DIR} - fi - AC_SUBST(VISU_ROOT_DIR) - AC_SUBST(VISU_SITE_DIR) - -else - AC_MSG_WARN("Cannot find compiled Visu module distribution") -fi - -AC_MSG_RESULT(for Visu: $Visu_ok) - -])dnl - diff --git a/adm_local/unix/make_commence.in b/adm_local/unix/make_commence.in deleted file mode 100644 index 20cf62aa..00000000 --- a/adm_local/unix/make_commence.in +++ /dev/null @@ -1,227 +0,0 @@ -# common directories to put headerfiles -inc_builddir=$(top_builddir)/include/salome - -@SET_MAKE@ -SHELL=/bin/sh - -# header missing - -HAVE_SSTREAM=@HAVE_SSTREAM@ - - -LIBS=@LIBS@ -LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome -# add libstdc++ to link c++ library with libtool ! -LDFLAGS+= -lstdc++ - -# CPP - -CPP=@CPP@ -CXXCPP=@CXXCPP@ -CPPFLAGS=@CPPFLAGS@ -I$(inc_builddir) -I$(srcdir) -I. - -# C - -CC = @CC@ -CFLAGS = @CFLAGS@ -C_DEPEND_FLAG = @C_DEPEND_FLAG@ - -# C++ - -#CXX = @CXX@ -#CXXFLAGS = @CXXFLAGS@ -#CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@ - -# PYTHON - -PYTHON = @PYTHON@ -PYTHONHOME = @PYTHONHOME@ -PYTHON_INCLUDES = @PYTHON_INCLUDES@ -PYTHON_LIBS = @PYTHON_LIBS@ -PYTHON_VERSION = @PYTHON_VERSION@ -PYTHON_SITE = @PYTHON_SITE@ -PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@ - -# QT - -QT_ROOT = @QT_ROOT@ -QT_INCLUDES = @QT_INCLUDES@ -QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT -QT_LIBS = @QT_LIBS@ -QT_MT_LIBS = @QT_MT_LIBS@ - -MOC = @MOC@ -UIC = @UIC@ - -# msg2qm -MSG2QM = @MSG2QM@ - -# SIP -SIP = @SIP@ -SIP_INCLUDES = @SIP_INCLUDES@ -SIP_LIBS = @SIP_LIBS@ - -# PYQT -PYQT_SIPS = @PYQT_SIPS@ -PYQT_LIBS = @PYQT_LIBS@ - -# openGL -OGL_INCLUDES=@OGL_INCLUDES@ -OGL_LIBS=@OGL_LIBS@ - -# VTK -VTK_INCLUDES=@VTK_INCLUDES@ -VTK_LIBS=@VTK_LIBS@ - -# OpenCasCade - -OCC_INCLUDES=@CAS_CPPFLAGS@ -OCC_CXXFLAGS=@CAS_CXXFLAGS@ - -OCC_KERNEL_LIBS=@CAS_KERNEL@ -OCC_OCAF_LIBS=@CAS_OCAF@ -OCC_VIEWER_LIBS=@CAS_VIEWER@ -OCC_MODELER_LIBS=@CAS_MODELER@ -OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@ -OCC_LIBS=@CAS_LDFLAGS@ - -# Swig C++ Python - -SWIG = @SWIG@ -SWIG_FLAGS = @SWIG_FLAGS@ -I$(inc_builddir) -I$(srcdir) -I. - -# OMNIORB - -OMNIORB_ROOT = @OMNIORB_ROOT@ -OMNIORB_INCLUDES = @OMNIORB_INCLUDES@ -OMNIORB_LIBS = @OMNIORB_LIBS@ -OMNIORB_CXXFLAGS = @OMNIORB_CXXFLAGS@ - -OMNIORB_IDL = @OMNIORB_IDL@ -OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@ -OMNIORB_IDLPYFLAGS = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome - -OMNIORB_IDL_CLN_H = @OMNIORB_IDL_CLN_H@ -OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@ -OMNIORB_IDL_CLN_OBJ = @OMNIORB_IDL_CLN_OBJ@ - -OMNIORB_IDL_SRV_H = @OMNIORB_IDL_SRV_H@ -OMNIORB_IDL_SRV_CXX = @OMNIORB_IDL_SRV_CXX@ -OMNIORB_IDL_SRV_OBJ = @OMNIORB_IDL_SRV_OBJ@ - -# Default ORB - -CORBA_ROOT = @CORBA_ROOT@ -CORBA_INCLUDES = @CORBA_INCLUDES@ -CORBA_LIBS = @CORBA_LIBS@ -CORBA_CXXFLAGS = @CORBA_CXXFLAGS@ - -IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_srcdir)/idl -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl/salome -IDLPYFLAGS = @IDLPYFLAGS@ - -IDL = @IDL@ - -IDL_CLN_H = @IDL_CLN_H@ -IDL_CLN_CXX = @IDL_CLN_CXX@ -IDL_CLN_OBJ = @IDL_CLN_OBJ@ - -IDL_SRV_H = @IDL_SRV_H@ -IDL_SRV_CXX = @IDL_SRV_CXX@ -IDL_SRV_OBJ = @IDL_SRV_OBJ@ - -CPPFLAGS+= $(CORBA_INCLUDES) -CXXFLAGS+= $(CORBA_CXXFLAGS) - -# add corba libs when link salome application ! -#LDFLAGS+= $(CORBA_LIBS) -LIBS+=$(CORBA_LIBS) - -## Shared libraries -LT_STATIC_EXEC=@LT_STATIC_EXEC@ -DYNAMIC_DIRS=@DYNAMIC_DIRS@ -LT_LIB=libtool -LT=$(top_builddir)/libtool -LT_COMPILE=$(LT) --mode=compile $(CC) -LT_LINK_LIB=$(LT_LIB) --mode=link $(CC) -rpath $(libdir) -LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) -LT_RUN=$(LT) --mode=execute -LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) -LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) -LT_UNINSTALL=$(LT) --mode=uninstall $(RM) - -INSTALL=@INSTALL@ -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -INSTALL_DATA=@INSTALL_DATA@ - -# create a symbolic link (or a copie ?) -LN_S=@LN_S@ - -## Installation points -prefix=@prefix@ -exec_prefix=@exec_prefix@ -bindir=@bindir@/salome -libdir=@libdir@/salome -# warning : if user give this path in configure we could have salome/salome :-( -includedir=@includedir@/salome -datadir=@datadir@/salome -idldir=$(prefix)/idl/salome -sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules - -docdir=$(datadir)/doc - -# -# begin of package rules -# - -.PHONY: all lib bin inc resources tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean - -.SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm - -all: - $(MAKE) inc - $(MAKE) depend_idl - $(MAKE) depend - $(MAKE) lib - $(MAKE) bin - $(MAKE) resources - -# -# add target to build administrative files -# - -Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in - cd $(top_builddir) ; ./config.status - -$(top_builddir)/config.status: $(top_srcdir)/configure - cd $(top_builddir) ; ./config.status --recheck - -# VPATH contain $(srcdir), so make configure is good in top_srcdir and we must add target configure otherwise :-) -ifneq ($(top_srcdir),$(srcdir)) -configure: $(top_srcdir)/configure -endif - -$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4 - cd $(top_srcdir) ; autoconf - -$(top_srcdir)/configure.in: $(top_srcdir)/configure.in.base - cd $(top_srcdir) && ./build_configure - -ACLOCAL_SRC = \ -ac_cxx_bool.m4 check_corba.m4 \ -ac_cxx_depend_flag.m4 check_hdf5.m4 enable_pthreads.m4 \ -ac_cxx_mutable.m4 check_mico.m4 libtool.m4 \ -ac_cxx_namespaces.m4 check_omniorb.m4 pyembed.m4 \ -ac_cxx_partial_specialization.m4 python.m4 \ -ac_cxx_typename.m4 check_pthreads.m4 check_cas.m4 \ -ac_cc_warnings.m4 check_boost.m4 check_swig.m4 - - -ACLOCAL_GUI = \ -check_vtk.m4 check_opengl.m4 check_qt.m4 \ -check_GUI.m4 check_corba_in_GUI.m4 - -$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%) \ - $(ACLOCAL_GUI:%=@GUI_ROOT_DIR@/adm_local/unix/config_files/%) - cd $(top_srcdir) ; aclocal -I adm_local/unix/config_files \ - -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files \ - -I @GUI_ROOT_DIR@/adm_local/unix/config_files diff --git a/adm_local/unix/make_omniorb.in b/adm_local/unix/make_omniorb.in deleted file mode 100644 index 91cfe574..00000000 --- a/adm_local/unix/make_omniorb.in +++ /dev/null @@ -1,53 +0,0 @@ -#======================================================================= -# Begin specific part to omniorb -# (include from file adm/unix/make_omniorb generated by -# adm/unix/make_omniorb.in) -#======================================================================= -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 29/06/2001 -# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/ASTER_SRC/adm_local/unix/make_omniorb.in,v 1.1.1.1 2003/09/23 17:30:26 salome Exp $ -# - -# Client and server object are the same with omniorb -# There are one header file and one source file generate - -#IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ)) - -# dependancies between idl and it's generated files -%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${KERNEL_ROOT_DIR}/idl/salome/%.idl - $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< - -%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_srcdir}/idl/%.idl - $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $< - -# dependncies between idl files -depend_idl: .depidl - -# we use cpp to generate dependencies between idl files. -# we change cpp output to keep only idl file and transform it to get a suitable rule -.depidl: $(IDL_FILES) - @touch $@ - @for dep in $? dummy; do \ - if [ $$dep != "dummy" ]; then \ - echo Building dependencies for $$dep; \ - basedep=`basename $$dep .idl`; \ - header="$$basedep"$(IDL_CLN_H); \ - sed '\%^'"$$header"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ - $(CPP) $(C_DEPEND_FLAG) -I$(srcdir) $$dep 2>/dev/null | \ - sed `echo "s%$$basedep\\.idl%$$header:%g"` | \ - sed 's% $(srcdir)/% %g' | \ - sed 's% $(top_srcdir)/% %g' | \ - sed 's% $(top_builddir)/% %g' | \ - sed 's%^.*:\.o: *%%' | sed 's%^ *\\ *%%'| sed 's%^ *\(.*\):%\1:%' | \ - sed 's/\.idl/$(IDL_CLN_H)/' >>$@; \ - echo '' >>$@; \ - fi; \ - done ; - --include .depidl - -#======================================================================= -# End specific part to omniorb -#======================================================================= diff --git a/bin/VERSION b/bin/VERSION deleted file mode 100755 index 995a6692..00000000 --- a/bin/VERSION +++ /dev/null @@ -1 +0,0 @@ -THIS IS SALOME 2 RNTL - TESTPQT VERSION: 1.1a diff --git a/build_configure b/build_configure deleted file mode 100755 index 884dc60e..00000000 --- a/build_configure +++ /dev/null @@ -1,224 +0,0 @@ -#!/bin/bash - -# -# Tool for updating list of .in file for the SALOME project -# and regenerating configure script -# -# Author : Marc Tajchman - CEA -# Date : 10/10/2002 -# $Header $ -# - -ORIG_DIR=`pwd` -CONF_DIR=`echo $0 | sed -e "s,[^/]*$,,;s,/$,,;s,^$,.,"` - -######################################################################## -# Test if the KERNEL_ROOT_DIR is set correctly - -if test ! -d "${KERNEL_ROOT_DIR}"; then - echo "failed : KERNEL_ROOT_DIR variable is not correct !" - exit -fi - -if test ! -d "${GUI_ROOT_DIR}"; then - echo "failed : GUI_ROOT_DIR variable is not correct !" - exit -fi - -# Test if the KERNEL_SRC is set correctly - -#if test ! -d "${KERNEL_SRC}"; then -# echo "failed : KERNEL_SRC variable is not correct !" -# exit -#fi -######################################################################## -# find_in - utility function -# -# usage : -# find_in directory filename -# -# Finds files following the *.in pattern, recursively in the -# directory (first argument). -# Results are appended into the file (second argument) -# -# Difference from the standard unix find is that files are tested -# before directories -# - -find_in() -{ - local i - local f=$2 - -# if the first argument is not a directory, returns - - if [ ! -d "$1" ] ; then - return - fi - -# dont look in the CVS directories - - case $1 in - */CVS) return ;; - *) ;; - esac - -# for each regular file contained in the directory -# test if it's a .in file - - for i in "$1"/* - do - if [ -f "$i" ] ; then - case $i in - *.in) echo " "$i" \\" >> $f;; - *) ;; - esac - fi - done - -# for each subdirectory of the first argument, proceeds recursively - - for i in "$1"/* - do - if [ -d "$i" ] ; then - find_in "$i" "$f" - fi - done -} - - -####################################################################### -# Generate list of .in files (Makefile.in, config.h.in, etc) -# appending it in file configure.in - -cd ${CONF_DIR} -ABS_CONF_DIR=`pwd` - -# -# Common part of the configure.in file -# -chmod u+w configure.in.base -if ! \cp -f configure.in.base configure.in_tmp1 -then - echo - echo "error : can't create files in" ${CONF_DIR} - echo "aborting ..." - chmod u-w configure.in.base - exit -fi -chmod u-w configure.in.base - -if [ -e "${CONF_DIR}/salome_adm" ] ; then - \rm -f ${CONF_DIR}/salome_adm -fi - -# make a link allowing AC_OUTPUT to find the salome_adm/.../*.in files -echo "" >> configure.in_tmp1 -echo 'ln -fs ${KERNEL_ROOT_DIR}/salome_adm ${ROOT_SRCDIR}' >> configure.in_tmp1 - -echo "" >> configure.in_tmp1 -echo "AC_OUTPUT([ \\" >> configure.in_tmp1 - -# -# List of .in files in the adm/unix directory -# These files MUST be on top of AC_OUTPUT list so we -# put them "manually" -# - -echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1 -#echo " ./salome_adm/unix/make_omniorb \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_omniorb \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1 -#echo " ./salome_adm/unix/make_commence \\" >> configure.in_tmp1 -echo " ./adm_local/unix/make_commence \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1 -#echo " ./adm_local/unix/make_conclude \\" >> configure.in_tmp1 -echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1 - -\rm -f configure.in_tmp2 -touch configure.in_tmp2 -find_in . configure.in_tmp2 - -sed -e '/^ .\/salome_adm/d' \ - -e '/configure.in/d' \ - -e '/^ .\/adm_local/d' \ - -e 's/.in / /' \ - configure.in_tmp2 >> configure.in_tmp1 - -echo "])" >> configure.in_tmp1 - -# delete the link created for AC_OUTPUT -echo "" >> configure.in_tmp1 -#echo 'rm -f ${ROOT_SRCDIR}/salome_adm' >> configure.in_tmp1 -\mv configure.in_tmp1 configure.in_new -\rm -f configure.in_tmp2 - - -######################################################################## -# Create new (or replace old) configure.in file -# Print a message if the file is write protected -# - -echo -if test ! -f configure.in -then - echo -n "Creating new file 'configure.in' ... " - if \mv configure.in_new configure.in >& /dev/null - then - echo "done" - else - echo "error, check your file permissions" - fi -else - echo -n "Updating 'configure.in' file ... " - if ! \cp configure.in configure.in_old >& /dev/null - then - echo - echo - echo "Can't backup previous configure.in" - echo -n "Continue (you will not be able to revert) - (Y/N) ? " - read R - case "x$R" in - xn*) exit;; - xN*) exit;; - esac - echo - echo -n " " - fi - if \cp configure.in_new configure.in >& /dev/null - then - echo "done" - else - echo - echo "error, can't update previous configure.in" - fi -fi - -######################################################################## -# Use autoconf to rebuild the configure script -# - -if test -f configure -then - echo -n "Updating 'configure' script ... " -else - echo -n "Creating 'configure' script ... " -fi - -aclocal -I adm_local/unix/config_files \ - -I ${KERNEL_ROOT_DIR}/salome_adm/unix/config_files \ - -I ${GUI_ROOT_DIR}/adm_local/unix/config_files - -if autoconf -then - echo "done" -else - echo "failed (check file permissions and/or user quotas ...)" -fi - -cd ${ORIG_DIR} - -echo diff --git a/configure.in.base b/configure.in.base deleted file mode 100644 index b145014a..00000000 --- a/configure.in.base +++ /dev/null @@ -1,287 +0,0 @@ -# -# PLEASE DO NOT MODIFY configure.in FILE -# -# ALL CHANGES WILL BE DISCARDED BY THE NEXT -# build_configure COMMAND -# -# CHANGES MUST BE MADE IN configure.in.base FILE -# -# -# Author : Marc Tajchman (CEA) -# Date : 28/06/2001 -# Modified by : Patrick GOLDBRONN (CEA) -# Modified by : Marc Tajchman (CEA) -# -# Created from configure.in.base -# - -AC_INIT(src) -AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files) -AC_CANONICAL_HOST - -PACKAGE=salome -AC_SUBST(PACKAGE) - -VERSION=0.0.1 -AC_SUBST(VERSION) - -dnl -dnl Initialize source and build root directories -dnl - -ROOT_BUILDDIR=`pwd` -ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` -cd $ROOT_SRCDIR -ROOT_SRCDIR=`pwd` -cd $ROOT_BUILDDIR - -AC_SUBST(ROOT_SRCDIR) -AC_SUBST(ROOT_BUILDDIR) - -echo -echo Source root directory : $ROOT_SRCDIR -echo Build root directory : $ROOT_BUILDDIR -echo -echo - -if test -z "$AR"; then - AC_CHECK_PROGS(AR,ar xar,:,$PATH) -fi -AC_SUBST(AR) - -dnl Export the AR macro so that it will be placed in the libtool file -dnl correctly. -export AR - -echo -echo --------------------------------------------- -echo testing make -echo --------------------------------------------- -echo - -AC_PROG_MAKE_SET -AC_PROG_INSTALL -dnl -dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques ! - -AC_ENABLE_DEBUG(yes) -AC_DISABLE_PRODUCTION - -echo --------------------------------------------- -echo testing libtool -echo --------------------------------------------- - -dnl first, we set static to no! -dnl if we want it, use --enable-static -AC_ENABLE_STATIC(no) - -AC_LIBTOOL_DLOPEN -AC_PROG_LIBTOOL - -dnl Fix up the INSTALL macro if it s a relative path. We want the -dnl full-path to the binary instead. -case "$INSTALL" in - *install-sh*) - INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh - ;; -esac - -echo -echo --------------------------------------------- -echo testing python -echo --------------------------------------------- -echo - -CHECK_PYTHON - -echo -echo --------------------------------------------- -echo testing omniORB -echo --------------------------------------------- -echo - -CHECK_OMNIORB - -echo -echo --------------------------------------------- -echo default ORB : omniORB -echo --------------------------------------------- -echo - -DEFAULT_ORB=omniORB -CHECK_CORBA - -AC_SUBST_FILE(CORBA) -corba=make_$ORB -CORBA=adm_local/unix/$corba - - -echo -echo --------------------------------------------- -echo Testing pyqt -echo --------------------------------------------- -echo - -CHECK_PYQT - -echo -echo --------------------------------------------- -echo Testing Kernel -echo --------------------------------------------- -echo - -CHECK_KERNEL - -echo -echo --------------------------------------------- -echo Testing GUI -echo --------------------------------------------- -echo - -CHECK_SALOME_GUI - -echo -echo --------------------------------------------- -echo testing msg2qm -echo --------------------------------------------- -echo - -CHECK_MSG2QM - -echo -echo --------------------------------------------- -echo Testing Pal -echo --------------------------------------------- -echo - -CHECK_PAL - -echo -echo --------------------------------------------- -echo Testing Visu -echo --------------------------------------------- -echo - -CHECK_VISU -echo -echo --------------------------------------------- -echo Summary -echo --------------------------------------------- -echo - -echo Configure -variables="python_ok threads_ok OpenGL_ok qt_ok omniORB_ok Kernel_ok SalomeGUI_ok msg2qm_ok" - -for var in $variables -do - printf " %10s : " `echo \$var | sed -e "s,_ok,,"` - eval echo \$$var -done - -echo -echo "Default ORB : $DEFAULT_ORB" -echo - -echo -echo --------------------------------------------- -echo RunTime Dependencies -echo --------------------------------------------- -echo -variables="Visu_ok pal_ok" - -for var in $variables -do - printf " %10s : " `echo \$var | sed -e "s,_ok,,"` - eval echo \$$var -done - - - -dnl generals files which could be included in every makefile - -AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence -AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude -AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module - -dnl les dependences -AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend - -dnl We don t need to say when we re entering directories if we re using -dnl GNU make becuase make does it for us. -if test "X$GMAKE" = "Xyes"; then - AC_SUBST(SETX) SETX=":" -else - AC_SUBST(SETX) SETX="set -x" -fi - -# make other build directories -for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources share/salome/doc idl -do -# if test ! -d $rep ; then -# eval mkdir $rep -# fi - $INSTALL -d $rep -done - -echo -echo --------------------------------------------- -echo copying resource files, shell scripts, and -echo xml files -echo --------------------------------------------- -echo - - -dnl copy resources directories - -#for i in `find $ROOT_SRCDIR -name 'resources' -print` -#do -# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` -# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"` -# mkdir -p $local_res_dir -# cd $local_res_dir -# ln -fs $i -# echo $local_res -# cd $ROOT_BUILDDIR -#done - -dnl copy shells and utilities contained in the bin directory -dnl excluding .in files (treated in AC-OUTPUT below) and CVS -dnl directory - -cd bin -for i in $ROOT_SRCDIR/bin/* -do - local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"` - case "$local_bin" in - *.in | *~) ;; - ./bin/CVS) ;; - *) ln -fs $i; echo $local_bin ;; - esac -done -cd $ROOT_BUILDDIR - -AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript - -dnl copy xml files to the build tree (lib directory) -dnl pourquoi ???? - -#cd lib -#for i in `find $ROOT_SRCDIR -name "*.xml" -print` -#do -# ln -fs $i -# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"` -#done -#cd $ROOT_BUILDDIR - - -echo -echo --------------------------------------------- -echo generating Makefiles and configure files -echo --------------------------------------------- -echo - -AC_OUTPUT_COMMANDS([ \ - chmod +x ./bin/* \ -]) - -## do not delete this line diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index 069960a6..00000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,32 +0,0 @@ - -# -* Makefile *- -# -# Author : Patrick GOLDBRONN (CEA) -# Date : 30/11/2001 -# -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -SUBDIRS= - -doc: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done -clean: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -distclean: clean - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done - -install: - @@SETX@; for d in $(SUBDIRS); do \ - (cd $$d && $(MAKE) $@) || exit 1; \ - done diff --git a/doc/patchEficasV1_10.diff b/doc/patchEficasV1_10.diff deleted file mode 100644 index 935874cc..00000000 --- a/doc/patchEficasV1_10.diff +++ /dev/null @@ -1,26 +0,0 @@ -diff -Naur EficasV1_10AsterSTA8.orig/Editeur/panelsSalome.py EficasV1_10AsterSTA8/Editeur/panelsSalome.py ---- EficasV1_10AsterSTA8.orig/Editeur/panelsSalome.py 2006-06-20 16:41:50.000000000 +0200 -+++ EficasV1_10AsterSTA8/Editeur/panelsSalome.py 2006-07-18 17:44:45.000000000 +0200 -@@ -100,12 +100,20 @@ - try: - valeur,validite,commentaire=self.get_valeur() - #print 'add_valeur_plusieurs_base', name -- #print 'valeur = %s, validite = %s,commentaire = %s'%( valeur,validite,commentaire ) -+ #print 'valeur = %s, validite = %s,commentaire = %s'%( valeur,validite,commentaire ) - if not valeur: # sélection dans salome - #print 'CS_pbruno selection SALOME' - strSelection = '' - -- selection, msg = self.parent.appli.selectGroupFromSalome() -+ genea = self.node.item.get_genealogie() -+ kwType = None -+ for e in genea: -+ if "GROUP_NO" in e: -+ kwType = "GROUP_NO" -+ if "GROUP_MA" in e: -+ kwType = "GROUP_MA" -+ -+ selection, msg = self.parent.appli.selectGroupFromSalome( kwType ) - - #print 'CS_pbruno selection SALOME selection ->',selection - #print 'CS_pbruno selection SALOME msg ->',msg diff --git a/idl/EFICAS_Gen.idl b/idl/EFICAS_Gen.idl deleted file mode 100644 index e5122c9e..00000000 --- a/idl/EFICAS_Gen.idl +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __EFICAS_GEN__ -#define __EFICAS_GEN__ - -#include "SALOME_Component.idl" -#include "SALOMEDS.idl" -#include "SALOME_Exception.idl" - -module EFICAS_ORB -{ - interface EFICAS_Gen : Engines::Component, SALOMEDS::Driver - { - }; -}; - -#endif - diff --git a/idl/Makefile.in b/idl/Makefile.in deleted file mode 100644 index 2234cd1c..00000000 --- a/idl/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# -# generate dependencies for idl file : -# - -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:$(srcdir):${KERNEL_ROOT_DIR}/idl/salome - -@COMMENCE@ - -IDL_FILES = EFICAS_Gen.idl - -PY_CLIENT_IDL = $(IDL_FILES) - -# we copy all idl file in $(top_builddir)/idl -inc: $(IDL_FILES:%=$(top_builddir)/idl/%) - -$(IDL_FILES:%=$(top_builddir)/idl/%):$(top_builddir)/idl/%:% - #$(CP) $< $@ - cp -f $< $@ - -lib: pyidl - -PYTHON_BUILD_SITE=$(top_builddir)/lib/python$(PYTHON_VERSION)/site-packages/@PACKAGE@ - -pyidl: $(PYTHON_BUILD_SITE) $(IDL_FILES:%.idl=$(PYTHON_BUILD_SITE)/%_idl.py) - -$(PYTHON_BUILD_SITE): - $(INSTALL) -d $@ - -$(PYTHON_BUILD_SITE)/%_idl.py: %.idl - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_BUILD_SITE) $< - -# install python client (generated from idl file -install: install-pyidl install-idl - -# create directory $(idldir) and copy idl files into it -install-idl: $(IDL_FILES) - $(INSTALL) -d $(idldir) - cp -p $^ $(idldir) - -install-pyidl: $(IDL_FILES) - $(INSTALL) -d $(PYTHON_SITE_INSTALL) - @for file in $^ dummy; do \ - if [ $$file != "dummy" ]; then \ - $(OMNIORB_IDL) $(OMNIORB_IDLPYFLAGS) -C$(PYTHON_SITE_INSTALL) $$file ; \ - fi ; \ - done ; - - -cleandep: - -$(RM) .dep* - -distclean: - -$(RM) *.py - -$(RM) $(IDL_FILES:%=$(top_builddir)/idl/%) - -$(RM) Makefile - diff --git a/resources/EFICASCatalog.xml b/resources/EFICASCatalog.xml deleted file mode 100644 index 2568f668..00000000 --- a/resources/EFICASCatalog.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - EFICAS - EFICAS GUI - Data - P.RASCLE - 1.0 - EDF - RD - 1 - eficas.png - 'linux' ~ OS - - - diff --git a/resources/EFICAS_en.xml b/resources/EFICAS_en.xml deleted file mode 100644 index 1bd00011..00000000 --- a/resources/EFICAS_en.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml deleted file mode 100644 index 2f93421b..00000000 --- a/resources/SalomeApp.xml +++ /dev/null @@ -1,12 +0,0 @@ - -
- - - - -
-
- - -
-
diff --git a/resources/eficas.png b/resources/eficas.png deleted file mode 100644 index f0be67e1c512547dae48946fdc514c5d7ebf2bfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 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 diff --git a/resources/eficaster.png b/resources/eficaster.png deleted file mode 100644 index c62f2081a47d848711871de8d35498cc4ee190de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11883 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 diff --git a/resources/eficasternovice.png b/resources/eficasternovice.png deleted file mode 100644 index ba943d96ccd9cfe66cead97a46e68213240c6463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15328 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 diff --git a/resources/select1.png b/resources/select1.png deleted file mode 100644 index a1a4ee1d52bb1642c35e59cbd98a6d61e1cbbf3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL32{Ag(XtH+i|A$>yGTanrJv}Vn71?{kepP$n8jbDQ&9P6{DSwHJ5&6t;zVEf4 qiTkGBoX&*C49m@7VrQ-I`_JRw<#IIU%bh(S&w0A~xvX\n" -"Content-Type: text/plain; charset=iso-8859-1\n" - diff --git a/src/EFICASGUI/EFICAS_msg_en.po b/src/EFICASGUI/EFICAS_msg_en.po deleted file mode 100644 index b386757a..00000000 --- a/src/EFICASGUI/EFICAS_msg_en.po +++ /dev/null @@ -1,11 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. "Foo::Bar" -# would be translated to "Pub", not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - diff --git a/src/EFICASGUI/Makefile.in b/src/EFICASGUI/Makefile.in deleted file mode 100644 index 5ba540e3..00000000 --- a/src/EFICASGUI/Makefile.in +++ /dev/null @@ -1,50 +0,0 @@ -#============================================================================== -# File : Makefile.in -# Created : dim déc 9 18:35:11 CET 2001 -# Author : Paul RASCLE, EDF -# Project : SALOME -# Copyright : EDF 2001 -#============================================================================== - -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome - - -@COMMENCE@ - -# header files -EXPORT_HEADERS= - - -# Libraries targets - -LIB = -LIB_SRC = - -LIB_CLIENT_IDL = - -LIB_SERVER_IDL = - -# .po files to transform in .qm -PO_FILES = EFICAS_msg_en.po EFICAS_icons.po - -EXPORT_PYSCRIPTS = \ -cabri.py\ -SelectMainShapeDiag_ui.py\ -EFICASGUI.py \ -eficasSalome.py \ - - -# _CS_gbo_151104 Ajout pour compatibilité ascendante entre versions de Eficas -EXPORT_PYSCRIPTS+=eficas_etude.py - -# On utilise le pyuic trouvé par le configure plutôt que celui se trouvant dans l'environnement -PYUIC = pyuic -%.py:%.ui - $(PYUIC) $< -o $@ - - -@CONCLUDE@ diff --git a/src/EFICASGUI/SelectMainShapeDiag_ui.ui b/src/EFICASGUI/SelectMainShapeDiag_ui.ui deleted file mode 100644 index add435ae..00000000 --- a/src/EFICASGUI/SelectMainShapeDiag_ui.ui +++ /dev/null @@ -1,138 +0,0 @@ - -SelectMainShapeDiag - - - SelectMainShapeDiag - - - - 0 - 0 - 373 - 260 - - - - SALOME - Main Shape Selection - - - true - - - - unnamed - - - - textLabel2 - - - Select the main shape you want to work on - - - - - - New Item - - - - lbMainShapes - - - - - Layout1 - - - - unnamed - - - 0 - - - 6 - - - - buttonHelp - - - &Help - - - F1 - - - true - - - - - Horizontal Spacing2 - - - Horizontal - - - Expanding - - - - 20 - 20 - - - - - - buttonOk - - - &OK - - - - - - true - - - true - - - - - buttonCancel - - - &Cancel - - - - - - true - - - - - - - - - buttonOk - clicked() - SelectMainShapeDiag - accept() - - - buttonCancel - clicked() - SelectMainShapeDiag - reject() - - - - diff --git a/src/EFICASGUI/eficasSalome.py b/src/EFICASGUI/eficasSalome.py deleted file mode 100644 index c303be4a..00000000 --- a/src/EFICASGUI/eficasSalome.py +++ /dev/null @@ -1,649 +0,0 @@ -from Logger import ExtLogger - -import qt -import notifqt -# ----------------------------------------------------------------------------- -import sys, os, re - - - -""" -# Remplacement de la fonction exit standard par une fonction -# qui n'interrompt pas l'execution - -sys._exit=sys.exit - -def exit(ier): - print "appel de exit: ",ier - - -# Fin remplacement -""" - - -import eficasConfig - -sys.path[:0]=[os.path.join( eficasConfig.eficasPath,'Aster'), - os.path.join( eficasConfig.eficasPath,'Homard'), - os.path.join( eficasConfig.eficasPath,'Editeur'), - eficasConfig.eficasPath, - ] - - -import Tkinter - - -# mode de lancement Eficas -ASTER = "ASTER" -HOMARD = "HOMARD" - - -import Editeur -from Editeur import eficas -from Editeur import splash - -import salome -import meshGui -import studyManager - -#from qxembed import QXEmbed - -import SalomePyQt - -from SelectMainShapeDiag_ui import SelectMainShapeDiag - - - -# message utilisateur -msgWarning = "Attention" -msgMainShapeSelection = "On travaille sur la géométrie principale : " -msgSubShapeBadMainShape = "La sélection géométrique SALOME ne correspond pas à une sous-géométrie de la géométrie principale : " -msgMeshGroupBadMainShape = "Le groupe de maillage sélectionné dans SALOME ne référence pas la bonne géométrie principale : " -msgIncompleteSelection = "Tous les éléments de la sélection SALOME n'ont pu étre ajoutée" -msgUnAuthorizedSelecion = "Sélection SALOME non authorisé. Autorisé : sous-géométrie, groupe de maille" -msgErrorAddJdcInSalome = "Erreur dans l'export du fichier de commande dans l'arbre d'étude Salome" -msgErrorDisplayShape = "Erreur dans l'affichage de la forme géométrique sélectionnée" -msgErrorNeedSubShape = "Sélection d'un élément sous géométrique seulement" - - -msgErrorGroupMaSelection = "Sélection GROUP_MA ne peut pas prendre un point ou un noeud" -msgWarningGroupNoSelection = "Attention, GROUP_NO devrait prendre un point ou un noeud" - - - -# couleur pour visualisation des géometrie CS_CBO -COLORS = ( studyManager.RED, - studyManager.GREEN, - studyManager.BLUE, - studyManager.SANDY, - studyManager.ORANGE, - studyManager.PURPLE, - studyManager.DARK_RED, - studyManager.DARK_GREEN, - studyManager.DARK_BLUE, - studyManager.YELLOW, - studyManager.PINK, - studyManager.CYAN ) - -LEN_COLORS = len( COLORS ) - - - -class SelectMainShapeDiagImpl( SelectMainShapeDiag ): - def __init__( self, mainShapeEntries, parent = None,name = None,modal = 1,fl = 0 ): - SelectMainShapeDiag.__init__( self,parent,name,modal,fl ) - - self.mainShapes = {} # ( entry, value ) - for entry in mainShapeEntries: - name = studyManager.palStudy.getName( entry ) - self.mainShapes[entry] = name - - self.lbMainShapes.clear() - for entry,name in self.mainShapes.items(): - self.lbMainShapes.insertItem( name ) - self.lbMainShapes.setCurrentItem( 0 ) - - - def getUserSelection( self ): - mainShapeEntry = None - - item = self.lbMainShapes.selectedItem() - mainShapeName = str( item.text() ) - - for entry, name in self.mainShapes.items(): - if mainShapeName == name: - mainShapeEntry = entry - break - - return mainShapeEntry - - - -#class MyEficas( Tkinter.Toplevel, eficas.EFICAS, QXEmbed ): -class MyEficas( Tkinter.Toplevel, eficas.EFICAS ): - """ - Classe de lancement du logiciel EFICAS dans SALOME. - Cette classe spécialise le logiciel Eficas par l'ajout de: - a)la création de groupes de mailles dans le composant SMESH de SALOME - b)la visualisation d'éléments géométrique dans le coposant GEOM de SALOME par sélection dans EFICAS - """ - def __init__( self, parent, code = None, fichier = None, module = studyManager.SEficas ): - """ - Constructeur. - - @type parent: - @param parent: widget Qt parent - - - @type code: string - @param code: catalogue à lancer ( ASTER, HOMARD ). optionnel ( défaut = ASTER ). - - @type fichier: string - @param fichier: chemin absolu du fichier eficas à ouvrir à dès le lancement. optionnel - """ - #QXEmbed.__init__( self, parent, "", qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop ) - Tkinter.Toplevel.__init__( self ) - - if Editeur.__dict__.has_key( 'session' ): - print 'CS_pbruno has_key session' - from Editeur import session - eficasArg = [] - eficasArg += sys.argv - if fichier: - eficasArg += [ fichier ] - session.parse( eficasArg ) - - - #---------------------------- initialisation EFICAS ----------------- - splash.init_splash( self, code = code, titre = "Lancement d'EFICAS pour %s" %code ) - splash._splash.configure( text="Chargement d'EFICAS en cours.\n Veuillez patienter ..." ) - # différence eficas 1.7 et 1.8 - - - eficas.EFICAS.__init__( self, self, code = code ) - - - #---------------------------------------------------------------------- - - - """ - #------ embarcation dans une fenêtre qt pour mise au premier plan --- - #embedded = QXEmbed( parent, "", qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop ) - embedded = QXEmbed( parent, "" ) - #embedded.initialize() - embedded.show() - embedded.embedTk( self.winfo_id() ) - size = embedded.sizeHint() - print 'CS_pbruno size (%s, %s )'%( size.width(), size.height () ) - embedded.resize( size.width(), size.height () ) - embedded.setWFlags( qt.Qt.WDestructiveClose | qt.Qt.WStyle_Customize | qt.Qt.WStyle_StaysOnTop ) - #---------------------------------------------------------------------- - """ - - #--------------- spécialisation EFICAS dans SALOME ------------------- - self.parent = parent - self.salome = True #active les parties de code spécifique dans Salome( pour le logiciel Eficas ) - self.module = module #indique sous quel module dans l'arbre d'étude ajouter le JDC. - - - # donnée pour la création de groupe de maille - self.mainShapeNames = {} #dictionnaire pour gérer les multiples fichiers possibles ouverts par - self.mainShapeEntries = {} #eficas ( clé = identifiant du JDC ), une mainshape par fichier ouvert. - self.subShapes = {} #dictionnaire des sous-géométrie de la géométrie principale ( clé = entry, valeur = name ) - #---------------------------------------------------------------------- - - - self.icolor = 0 # compteur pour mémoriser la couleur courante - - - def quit(self): - global appli - self.destroy() - appli = None - - - def __studySync( self ): - """ - IMPORTANT( à appeler préalablement à chaque appel du gestionnaire d'étude ) : spécifique au lancement de Eficas dans Salome, - permet au gestionnaire d'étude ( studyManager.palStudy ) de pointer sur la bonne étude. - - Un retour à False indique qu'il n'y a aucune étude active, dans ce cas ne faire aucune opération avec le gestionnaire d'étude( - gros plantage sinon ) - """ - activeStudyId = salome.sg.getActiveStudyId() - #print 50*'=' - #print 'activeStudyId->',activeStudyId - #print 'salome.myStudyId->',salome.myStudyId - #print 50*'=' - - if activeStudyId == 0: # pas d'étude active - return False - - if activeStudyId != salome.myStudyId: - studyManager.palStudy.setCurrentStudyID( activeStudyId ) - - return True - - - def __selectMainShape( self, groupeMaNamesIn, groupeNoNamesIn ): - """ - Sélection intéractive de la main shape - """ - groupeMaNamesOut, groupeNoNamesOut = [], [] - selectedMainShape = None - mainShapes = {} - mainShapeEntries = [] - - # liste des main shape possibles - for groups in ( groupeMaNamesIn, groupeNoNamesIn ): - for subShapeName in groups: - entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, subShapeName ) - for entry in entries: - mainShapeEntry = studyManager.palStudy.getMainShapeEntry( entry ) - if mainShapeEntry != entry: - mainShapes[ subShapeName ] = mainShapeEntry - mainShapeEntries += [ mainShapeEntry ] - - if mainShapes: - diag = SelectMainShapeDiagImpl( mainShapeEntries, self.parent ) - - if diag.exec_loop() == qt.QDialog.Accepted: - selectedMainShape = diag.getUserSelection() - print 'main shape user selection ->',selectedMainShape - - # filtre sur la main shape sélectionnée - for name in groupeMaNamesIn: - try: - if mainShapes[ name ] == selectedMainShape: - groupeMaNamesOut += [ name ] - except: - pass - - for name in groupeNoNamesIn: - try: - if mainShapes[ name ] == selectedMainShape: - groupeNoNamesOut += [ name ] - except: - pass - - return groupeMaNamesOut, groupeNoNamesOut - - - - def __selectShape( self, jdcID, selectedEntry, kwType = None ): - """ - sélection sous-géométrie dans Salome: - -test1) si c'est un élément sous-géométrique . - -test2) si appartient à la géométrie principale. - - met à jours la liste self.subShapes si test ok - """ - name, msgError = '','' - - selectedMainShapeEntry = studyManager.palStudy.getMainShapeEntry( selectedEntry ) - - if selectedMainShapeEntry and selectedMainShapeEntry != selectedEntry: #ok test1) - - tGeo = studyManager.palStudy.getRealShapeType( selectedEntry ) - if kwType == "GROUP_NO" and tGeo != studyManager.VERTEX: - msgError = msgWarningGroupNoSelection - elif kwType == "GROUP_MA" and tGeo == studyManager.VERTEX: - name, msgError = '', msgErrorGroupMaSelection - return name, msgError - - if not self.mainShapeEntries.has_key( jdcID ): - self.mainShapeEntries[ jdcID ] = selectedMainShapeEntry - name = studyManager.palStudy.getName( selectedMainShapeEntry ) - msgError = msgMainShapeSelection + name - if selectedMainShapeEntry == self.mainShapeEntries[ jdcID ]: - name = studyManager.palStudy.getName( selectedEntry ) - self.subShapes[ selectedEntry ] = name - else: - if not self.mainShapeNames.has_key( jdcID ): - self.mainShapeNames[ jdcID ] = studyManager.palStudy.getName( self.mainShapeEntries[ jdcID ] ) - msgError = msgSubShapeBadMainShape + self.mainShapeNames[ jdcID ] - else: - name, msgError = '', msgErrorNeedSubShape - - return name, msgError - - - - def __selectMeshGroup( self, jdcID, selectedEntry, kwType = None ): - """ - sélection groupe de maille dans Salome: - -test 1) si c'est un groupe de maille - -test 2) si le maillage fait référence à la géométrie principale - """ - name, msgError = '','' - - selectedMeshEntry = studyManager.palStudy.getMesh( selectedEntry ) - - if selectedMeshEntry: # ok test 1) - tGroup = studyManager.palStudy.getGroupType( selectedEntry ) - if kwType == "GROUP_NO" and tGroup != studyManager.NodeGroups: - msgError = msgWarningGroupNoSelection - elif kwType == "GROUP_MA" and tGroup == studyManager.NodeGroups: - name, msgError = '', msgErrorGroupMaSelection - return name, msgError - - selectedMainShapeEntry = studyManager.palStudy.getShapeFromMesh( selectedMeshEntry ) - - if selectedMainShapeEntry: #test 2) - if not self.mainShapeEntries.has_key( jdcID ): - self.mainShapeEntries[ jdcID ] = selectedMainShapeEntry - name = studyManager.palStudy.getName( selectedMainShapeEntry ) - msgError = msgMainShapeSelection + name - if selectedMainShapeEntry == self.mainShapeEntries[ jdcID ]: - name = studyManager.palStudy.getName( selectedEntry ) #ok test 2) - else: - if not self.mainShapeNames.has_key( jdcID ): - self.mainShapeNames[ jdcID ] = studyManager.palStudy.getName( - self.mainShapeEntries[ jdcID ] ) - msgError = msgMeshGroupBadMainShape + self.mainShapeNames[ jdcID ] - else: - # on authorise quand même les groupes de maillage ne faisant - # pas référence à une géométrie principale (dixit CS_CBO ) - name = studyManager.palStudy.getName( selectedEntry ) - - return name, msgError - - - - - def __updateSubShapes( self, jdcID, groupeNames ): - """ - mise à jours de la liste self.subShapes à partir de la liste des noms de groupe fourni en entré - """ - for name in groupeNames: - entries = studyManager.palStudy.getEntriesFromName( studyManager.SGeom, name ) - for entry in entries: - if not self.subShapes.has_key( entry ): - ok, msgError = self.__selectShape( jdcID, entry ) # filtre - if ok: - self.subShapes[ entry ] = name - - def __getAllGroupeMa(self, item ): - """ - Récupère tous les GROUPE_MA dans le JDC courant - """ - groupMa = () - try: - itemName = item.get_nom() - #print 'CS_pbruno itemName',itemName - if 'GROUP_MA' in itemName: - itemValue = item.get_valeur() - if type( itemValue ) == str: - groupMa += ( itemValue , ) - elif type( itemValue ) == tuple: - groupMa += itemValue - else: - children = item._GetSubList() - for child in children: - groupMa += self.__getAllGroupeMa( child ) - except: - pass - return groupMa - - - def __getAllGroupeNo(self, item ): - """ - Récupère tous les GROUPE_NO dans le JDC courant - """ - groupNo = () - try: - itemName = item.get_nom() - if 'GROUP_NO' in itemName: - itemValue = item.get_valeur() - if type( itemValue ) == str: - groupNo += ( itemValue , ) - elif type( itemValue ) == tuple: - groupNo += itemValue - else: - children = item._GetSubList() - for child in children: - groupNo += self.__getAllGroupeNo( child ) - except: - pass - return groupNo - - - #----------------------- LISTE DES NOUVEAUX CAS D'UTILISATIONS ----------- - def selectGroupFromSalome( self, kwType ): - """ - Sélection d'élément(s) d'une géométrie ( sub-shape ) ou d'élément(s) de maillage ( groupe de maille) à partir de l'arbre salome - retourne ( la liste des noms des groupes, message d'erreur ) - - Note: Appelé par EFICAS lorsqu'on clique sur le bouton ajouter à la liste du panel AFF_CHAR_MECA - """ - names, msg = [], '' - try: - atLeastOneStudy = self.__studySync() - if not atLeastOneStudy: - return names, msg - # récupère toutes les sélections de l'utilsateur dans l'arbre Salome - entries = salome.sg.getAllSelected() - print 'CS_pbruno entries->',entries - nbEntries = len( entries ) - if nbEntries >= 1: - print 'CS_pbruno len( entries ) >= 1:' -# jdcID = self.bureau.nb.getcurselection() - jdcID = self.bureau.JDCDisplay_courant - for entry in entries: - if studyManager.palStudy.isMeshGroup( entry ): #sélection d'un groupe de maille - name, msg = self.__selectMeshGroup( jdcID, entry, kwType ) - elif studyManager.palStudy.isShape( entry ): #sélection d'une sous-géométrie - name, msg = self.__selectShape( jdcID, entry, kwType ) - else: - name, msg = '', msgUnAuthorizedSelecion - if name: - names.append( name ) - - if names and len( names ) < nbEntries: - msg = msgIncompleteSelection - salome.sg.EraseAll() - except: - logger.debug(50*'=') - print 'CS_pbruno selectGroupFromSalome names = ',names - return names, msg - - - def addJdcInSalome( self, jdcPath ): - """ - Ajoute le Jeu De Commande ASTER ou HOMARD dans l'arbre d'étude Salome dans la rubrique EFICAS - """ - ok, msgError = False, msgErrorAddJdcInSalome - try: - atLeastOneStudy = self.__studySync() - if not atLeastOneStudy: - return ok, msgError - - fileType = { 'ASTER': studyManager.FICHIER_EFICAS_ASTER, - 'HOMARD': studyManager.FICHIER_EFICAS_HOMARD } - - folderName = { 'ASTER': 'AsterFiles', - 'HOMARD': 'HomardFiles' } - - moduleEntry = studyManager.palStudy.addComponent(self.module) - itemName = re.split("/",jdcPath)[-1] - - fatherEntry = studyManager.palStudy.addItem( - moduleEntry, - itemName = folderName[self.bureau.code], - itemIcon = "ICON_COMM_FOLDER", - itemType = studyManager.ASTER_FILE_FOLDER, - bDoublonCheck = True ) - - commEntry = studyManager.palStudy.addItem( fatherEntry , - itemName = itemName, - itemType = fileType[ self.bureau.code ], - itemValue = jdcPath, - itemComment = str( jdcPath ), - itemIcon = "ICON_COMM_FILE", - bDoublonCheck = True ) - studyManager.palStudy.refresh() - print 'addJdcInSalome commEntry->', commEntry - if commEntry: - ok, msgError = True, '' - except: - logger.debug(50*'=') - return ok, msgError - - - def createOrUpdateMesh( self ): - """ - Ouverture d'une boite de dialogue : Creation de groupes de mailles dans un maillage existant ou un nouveau maillage. - Note: Appelé par EFICAS à la sauvegarde du JDC. - """ - try: - atLeastOneStudy = self.__studySync() - if not atLeastOneStudy: - return - -# jdcID = self.bureau.nb.getcurselection() - jdcID = self.bureau.JDCDisplay_courant - - groupeMaNames = self.__getAllGroupeMa( self.bureau.JDCDisplay_courant.tree.item ) - groupeNoNames = self.__getAllGroupeNo( self.bureau.JDCDisplay_courant.tree.item ) - - # on elimine les doublons de la liste - groupeMaNames = dict.fromkeys(groupeMaNames).keys() - groupeNoNames = dict.fromkeys(groupeNoNames).keys() - - print 'CS_pbruno createOrUpdateMesh groupeMaNames', groupeMaNames - print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames - - # mise à jours de la liste des sous-géométrie ( self.subShapes ) - if not self.mainShapeEntries.has_key( jdcID ): - # l'utilisateur n'a sélectionné aucune sous-géométrie et donc pas de géométrie principale - groupeMaNames, groupeNoNames = self.__selectMainShape( groupeMaNames, groupeNoNames ) - - if groupeMaNames or groupeNoNames: - print 'CS_pbruno createOrUpdateMesh groupeMaNames', groupeMaNames - print 'CS_pbruno createOrUpdateMesh groupeNoNames', groupeNoNames - self.__updateSubShapes( jdcID, groupeMaNames + groupeNoNames ) - - # recupération des identifiants( entries ) associés aux noms des groupes - groupeMaEntries = [] - groupeNoEntries = [] - - for entry, name in self.subShapes.items(): - if name in groupeMaNames: - groupeMaEntries.append( entry ) - if name in groupeNoNames: - groupeNoEntries.append( entry ) - - if groupeMaEntries or groupeNoEntries: - diag = meshGui.MeshUpdateDialogImpl( - self.mainShapeEntries[jdcID], - groupeMaEntries, - groupeNoEntries, - studyManager.palStudy, - self.parent ) - diag.show() - - self.subShapes.clear() - self.mainShapeNames.clear() - self.mainShapeEntries.clear() - except: - logger.debug(50*'=') - - - def displayShape( self, shapeName ): - """ - visualisation géométrie de nom shapeName dans salome - """ - ok, msgError = False, '' - try: - atLeastOneStudy = self.__studySync() - if not atLeastOneStudy: - return ok, msgError - - - #salome.sg.EraseAll() - print 'displayShapestrGeomShape shapeName -> ', shapeName - current_color = COLORS[ self.icolor % LEN_COLORS ] - ok = studyManager.palStudy.displayShapeByName( shapeName, current_color ) - self.icolor = self.icolor + 1 - - if not ok: - msgError = msgErrorDisplayShape - except: - logger.debug(50*'=') - return ok, msgError - - - def creeConfigTxt(self,fichier,dico): - """ - sauvegarde = asksaveasfilename(title="fichier config.txt", - defaultextension='.txt', - initialdir = fichier) - f=open(sauvegarde,'w+') - for unite in dico.keys(): - print unite - type=dico[unite][0] - fic=dico[unite][1:] - ligne="fort."+str(unite)+" "+type+" "+fic - f.write(ligne) - f.close() - self.rangeInStudy(sauvegarde) - print "===============================" - print "fin crreConfigTxt" - """ - pass #CS_pbruno à implémenter - - - def buildCabriGeom( self, name, **param ): - """ - visualisation dans GEOM d'une géométrie CABRI - """ - import cabri - qt.QApplication.setOverrideCursor( qt.QCursor.waitCursor ) - cabri.tetra( name, **param ) - qt.QApplication.restoreOverrideCursor() - - - - -#------------------------------------------------------------------------------------------------------- -# Point d'entré lancement EFICAS -# -def runEficas( code="ASTER", fichier=None, module = studyManager.SEficas ): - global appli - if not appli: #une seul instance possible! - appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier, module = module ) - - - -# pour compatibilité -def runHomard( code="HOMARD", fichier=None ): - global appli - if not appli: #une seul instance possible! - appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier ) - - - - -""" -def runAster(parent = SalomePyQt.SalomePyQt().getDesktop(), palStudyManager = studyManager.palStudy, code="ASTER", fichier=None ) : - global appli - if not appli: #une seul instance possible! - appli = MyEficas( parent, palStudyManager, code = code, fichier = fichier ) -""" - - - -# Init globale du module -root = Tkinter.Tk() -root.withdraw() - - -appli = None - - - -logger=ExtLogger( "eficasSalome.py" ) - - - - diff --git a/src/EFICASGUI/eficas_etude.py b/src/EFICASGUI/eficas_etude.py deleted file mode 100644 index 7698e40d..00000000 --- a/src/EFICASGUI/eficas_etude.py +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# CE FICHIER EST CREE UNIQUEMENT POUR ASSURER LA COMPATIBILITE -# ASCENDANTE DES VERSIONS DE EFICAS. NE PAS EDITER, MODIFIER eficasEtude. -# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -# En version 1.5 et 1.6 de Eficas, l'implémentation du couplage avec -# SALOME comprend l'import d'un fichier nommé eficas_etude. En version -# préparatoire de la version 1.7, cette implémentation comprend l'import -# d'un fichier eficasEtude. A terme, seul le fichier eficasEtude restera. -# _CS_gbo_151104 - -import eficasEtude diff --git a/src/Makefile.in b/src/Makefile.in deleted file mode 100644 index 660fbdf1..00000000 --- a/src/Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ -#============================================================================== -# File : Makefile.in -# Created : ven déc 7 13:32:20 CET 2001 -# Author : Paul RASCLE, EDF -# Project : SALOME -# Copyright : EDF 2001 -# $Header: /home/salome/PlateFormePAL/Bases_CVS_EDF/Modules_EDF/EFICAS_SRC/src/Makefile.in,v 1.5 2005/10/19 14:05:41 salome Exp $ -#============================================================================== - -# source path -top_srcdir=@top_srcdir@ -top_builddir=.. -srcdir=@srcdir@ -VPATH=.:@srcdir@ - -@COMMENCE@ - -SUBDIRS = EFICAS EFICASGUI CONFIG - -@MODULE@ diff --git a/src/STUDY/EficasStudy.py b/src/STUDY/EficasStudy.py deleted file mode 100644 index 4c94c26b..00000000 --- a/src/STUDY/EficasStudy.py +++ /dev/null @@ -1,539 +0,0 @@ -# -*- coding: iso-8859-1 -*- -import salomedsgui -import salome - -import SALOMEDS -import GEOM -import SMESH - -from Logger import Logger -logger=Logger( "EficasStudy" ) - - -#Nom des composants SALOME dans l'arbre d'étude -SMesh = "Mesh" -SGeom = "Geometry" -SVisu = "Post-Pro" -SAster = "Aster" - - -class SalomeStudy( salomedsgui.guiDS ): - """ - Classe de manipulation de l'arbre d'étude Salome. Cette classe permet à - l'utilisateur de manipuler les objets de 'arbre d'étude via leurs - identifiants( entry ). - - Attention : Par défaut les opérations réalisée par cette classe portent sur - une étude courante ( positionnée dans le constructeur ou par la méthode - setCurrentStudyID() ) - """ - def __init__( self, studyID = salome.myStudyId ): - salomedsgui.guiDS.__init__( self ) - self.setCurrentStudy( studyID) - - # spécifique méthode __getMeshType() : - self.groupOp = None - self.geomEngine = None - - # spécifique méthode createMesh() : - self.smeshEngine = None - - - - # -------------------------------------------------------------------------- - # fonctions de manipulation générale ( porte sur toute l'arbre d'étude ) - def __getCORBAObject( self, entry ): - """ - Retourne l'objet CORBA correspondant son identifiant ( entry ) dans - l'arbre d'étude. - - @type entry : string - @param entry : objet Corba - - @rtype : objet CORBA - @return : l'objet CORBA, None si erreur. - """ - object = None - try: - mySO = self._myStudy.FindObjectID( entry ) - if mySO: - object = mySO.GetObject() - - if not object: # l'objet n'a pas encore chargé - path = self._myStudy.GetObjectPath( mySO )# recherche du nom du composant - componentName = ( path.split('/')[1] ).strip() - - if componentName == SMesh: - strContainer, strComponentName = "FactoryServer", "SMESH" - elif componentName == SGeom: - strContainer, strComponentName = "FactoryServer", "GEOM" - elif componentName == SVisu: - strContainer, strComponentName = "FactoryServer", "VISU" - elif componentName == SAster: - strContainer, strComponentName = "FactoryServerPy", "ASTER" - else : - logger.debug('>>>>CS_Pbruno StudyTree.__getCORBAObject chargement du composant %s non implémenté ' %componentName) - raise 'Erreur' - - myComponent = salome.lcc.FindOrLoadComponent( strContainer, strComponentName ) - SCom = self._myStudy.FindComponent( strComponentName ) - self._myBuilder.LoadWith( SCom , myComponent ) - object = mySO.GetObject() - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.__getCORBAObject erreur recupération objet corba ( entry = %s ) ' %entry) - logger.debug( 'type = %s , value = %s '%( type, value ) ) - object = None - - return object - - - def __getEntry( self, corbaObject ): - """ - Retourne l'identifiant ( entry ) ds l'arbre d'étude de l'objet CORBA - passé en paramètre. - - @type corbaObject : objet Corba - @param corbaObject : objet Corba - - @rtype : string - @return : identifiant ( entry ), None si erreur. - """ - entry = None - currentStudy = self._myStudy - - if corbaObject: - ior = salome.orb.object_to_string( corbaObject ) - if ior: - sObject = currentStudy.FindObjectIOR( ior ) - entry = sObject.GetID() - return entry - - - - def setCurrentStudyID( self, studyID): - """ - Fixe l'étude courante sur laquel vont opérer toutes les fonctions - de la classe. - """ - self._father = None - self._component = None - self._myStudy = self._myStudyManager.GetStudyByID( studyID) - self._myBuilder = self._myStudy.NewBuilder( ) - - salome.myStudy = self._myStudy - salome.myStudyId = studyID - salome.myStudyName = self._myStudy._get_Name() - - def refresh( self ): - """ - Rafraichissement de l'arbre d'étude - """ - salome.sg.updateObjBrowser(0) - - def setName( self, entry, name ): - """ - Fixe le nom( la valeur de l'attribut 'AttributeName' ) d'un objet de l'arbre d'étude - désigné par son identifiant( entry ) - - @type entry: string - @param entry: identifiant de l'objet dans l'arbre d'étude - - @type name: string - @param name: nom à attribuer - - @rtype : boolean - @return : True si Ok, False sinon, None si erreur - """ - result = False - try: - SObject = self._myStudy.FindObjectID( entry ) - A1 = self._myBuilder.FindOrCreateAttribute( SObject, "AttributeName" ) - AName = A1._narrow(SALOMEDS.AttributeName) - AName.SetValue( name ) - result = True - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' %( entry, name ) ) - logger.debug( 'type = %s , value = %s '%( type, value ) ) - result = None - - return result - - def hasName( self, componentName, objectName ): - """ - Vérifie si dans l'arbre d'étude le commposant de nom componentName - possède un objet de nom objectName. - - @type componentName: string - @param componentName: nom du composant Salome - - @type objectName: string - @param objectName: nom de l'objet - - @rtype : boolean - @return : True si Ok, False sinon, None si erreur - """ - result = False - try: - nom = { - SMesh: "SMESH", - SGeom: "GEOM", - SVisu: "VISU", - SAster: "ASTER" - } - componentName = nom[ componentName ] - SObjects = self._myStudy.FindObjectByName( objectName, componentName ) - if len( SObjects ) > 0: - result = True - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' %( entry, name ) ) - logger.debug( 'type = %s , value = %s '%( type, value ) ) - result = None - - return result - - - - - - # -------------------------------------------------------------------------- - # fonctions de manipulation des objets géométriques dans l'arbre d'étude - # ( éléments contenu dans la sous-rubrique "Geometry' ) - def isMainShape( self, entry ): - """ - Teste si l'objet désigné par l'identifiant ( entry ) passé en argument - est bien un objet géométrique principal. - - @type entry: string - @param entry: identifiant de l'objet - - @rtype: boolean - @return: True si Ok, False sinon - """ - result = False - try: - anObject = self.__getCORBAObject( entry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - if shape.IsMainShape(): - result = True - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.isMainShape( entry = %s ) ' %entry ) - logger.debug( 'type = %s , value = %s '%( type, value ) ) - result = False - return result - - - def getMainShapeEntry( self, entry ): - """ - Retourne l'identifiant de l'objet géométrique principal du sous-objet géométrique désigné par - l'identifiant ( entry ) passé en paramètre. - - @type entry: string - @param entry: identifiant du sous-objet géométrique - - @rtype : string - @return : identifiant de l'objet géométrique principal, None si erreur. - """ - result = None - try : - if self.isMainShape( entry ): - result = entry - else: - anObject = self.__getCORBAObject( entry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - objMain = shape.GetMainShape() - result = self.__getEntry( objMain ) - except : - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - print '>>>>CS_Pbruno StudyTree.getMainShapeEntry( entry = %s ) ' %entry - print 'type = %s , value = %s '%( type, value ) - result = None - - return result - - def sameMainShape( self, shapeEntry1, shapeEntry2 ): - """ - Détermine si les objets géometriques fournis en argument sont les - sous-objets d'une même géométrie principale - - @type shapeEntry1: string - @param shapeEntry1: identifiant dans l'arbre d'étude d'un objet géométrique - - @type shapeEntry2: string - @param shapeEntry2: identifiant dans l'arbre d'étude d'un objet géométrique - - @rtype : boolean - @return : True si même objet principal, False sinon, None si erreur. - """ - result = None - try : - mainShape1 = self.getMainShapeEntry( shapeEntry1 ) - if mainShape1: - mainShape2 = self.getMainShapeEntry( shapeEntry2 ) - if mainShape2: - result = mainShape1 == mainShape2 - except : - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - print '>>>>CS_Pbruno StudyTree.sameMainShape( shapeEntry1 = %s , shapeEntry2 = %s )'%( shapeEntry1, shapeEntry2 ) - print 'type = %s , value = %s '%( type, value ) - result = None - - return result - - - # -------------------------------------------------------------------------- - # fonctions de manipulation des objets maillages dans l'arbre d'étude - # ( éléments contenu dans la sous-rubrique 'Mesh' ) - def __getMeshType( self, shapeEntry ): - """ - Determination du type de maille en fonction de la géométrie pour les conditions aux limites. - - @type shapeEntry : string - @param shapeEntry : identifiant de l'objet géométrique - - @rtype: SMESH::ElementType ( voir SMESH_Mesh.idl ) - @return: type de maillage, None si erreur. - """ - result = None - - try: - anObject = self.__getCORBAObject( shapeEntry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - - if shape: #Ok, c'est bien un objet géométrique - tgeo = str( shape.GetShapeType() ) - - meshTypeStr = { - "VERTEX" : SMESH.NODE, - "EDGE": SMESH.EDGE, - "FACE": SMESH.FACE, - "SOLID": SMESH.VOLUME, - "COMPOUND" : None - } - result = meshTypeStr[ tgeo] - if result == None: - if not self.geomEngine: - self.geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" ) - if not self.GroupOp: - self.GroupOp = self.geomEngine.GetIGroupOperations( salome.myStudyId ) - - tgeo = self.GroupOp.GetType( shape ) - meshTypeInt = { #Voir le dictionnnaire ShapeType dans geompy.py pour les correspondances type - numero. - 7: SMESH.NODE, - 6: SMESH.EDGE, - 4: SMESH.FACE, - 2: SMESH.VOLUME - } - if meshTypeInt.has_key( int( tgeo ) ): - result = meshTypeInt[ tgeo] - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.__getMeshType( shapeEntry = %s ) ' %shapeEntry ) - logger.debug( 'type = %s , value = %s '%( type, value )) - result = None - - return result - - def getAllMeshReferencingMainShape( self, mainShapeEntry ): - """ - Retourne une liste de tous les maillages construits à partir de l'objet - principal géométrique passé en argument - - @type mainShapeEntry : string - @param mainShapeEntry : identifiant( entry ) de l'objet principal géométrique - - @rtype: list - @return: liste des identifiants( entry ) des maillages, liste vide si aucun , None si erreur. - """ - result = [] - - try: - if self.isMainShape( mainShapeEntry ): - mainShapeSO = salome.IDToSObject( mainShapeEntry ) - SObjectList = self._myStudy.FindDependances( mainShapeSO ) - print '#### mainShapeSO=%s , SObjectList = %s'%( mainShapeSO, SObjectList ) - if SObjectList: #Ok, il y a des objet référençant la mainShape - for SObject in SObjectList: # Recherche du type de chacun des objets - SFatherComponent = SObject.GetFatherComponent() - print '#### SFatherComponent = %s'%SFatherComponent - if SFatherComponent.GetName() == SMesh: #Ok, l'objet est un objet du composant 'Mesh' - SFather = SObject.GetFather() - print '#### SFather= %s'%SFather - ##CorbaObject = SFather.GetObject() - FatherEntry = SFather.GetID() - CorbaObject = self.__getCORBAObject( FatherEntry ) - print '#### CorbaObject = %s'%CorbaObject - MeshObject = CorbaObject ._narrow( SMESH.SMESH_Mesh ) - print '#### MeshObject = %s'%MeshObject - if MeshObject : #Ok, l'objet est un objet 'maillage' - MeshObjectEntry = self.__getEntry( MeshObject ) - print '#### MeshObjectEntry = %s'%MeshObjectEntry - if MeshObjectEntry: - result.append( MeshObjectEntry ) # On l'ajoute ds la liste résultat! - else: # c'est pas une mainShape ! - result = None - except : - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.getAllMeshReferencingMainShape( mainShapeEntry = %s ) ' %mainShapeEntry ) - logger.debug( 'type = %s , value = %s '%( type, value )) - result = None - - return result - - - - def updateMesh( self, meshEntry, groupeMaEntries, groupeNoEntries ): - """ - Met à jours d'un objet maillage à partir d'une liste de sous-objet géométrique. - L'opération consiste à créer des groupes dans le maillage correspondant - aux sous-objets géométrique de la liste. - - CS_pbruno Attention: ajoute des groupes sans vérifier si auparavant ils ont déjà été crées - - @type meshEntry : string - @param meshEntry : identifiant du maillage - - @type groupeMaEntries : liste de string - @param groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques - sur lesquel on veut construire des groupes de face. - - @type groupeNoEntries : liste de string - @param groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques - sur lesquel on veut construire des groupes de noeuds. - - @rtype: bool - @return: True si update OK, False en cas d'erreur - """ - result = False - try: - #print 'CS_pbruno updateMesh( self, meshEntry=%s, groupeMaEntries=%s )'%( meshEntry, groupeMaEntries ) - corbaObject = self.__getCORBAObject( meshEntry ) - mesh = corbaObject._narrow( SMESH.SMESH_Mesh ) - - if mesh: # Ok, c'est bien un maillage - shapeName = "" - meshType = None - - #création groupes de noeud - for shapeEntry in groupeNoEntries: - anObject = self.__getCORBAObject( shapeEntry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - if shape: #Ok, c'est bien un objet géométrique - shapeName = self.getNameAttribute( shapeEntry ) - mesh.CreateGroupFromGEOM( SMESH.NODE, shapeName, shape ) - else: - pass # CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération - #return False # 2)ou on continue et essaye les suivants ( choix actuel - - #création groupes de face - for shapeEntry in groupeMaEntries: - meshType = self.__getMeshType( shapeEntry ) - if meshType: - anObject = self.__getCORBAObject( shapeEntry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - if shape: #Ok, c'est bien un objet géométrique - shapeName = self.getNameAttribute( shapeEntry ) - mesh.CreateGroupFromGEOM( meshType, shapeName, shape ) - else: - pass #CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération - #return False # 2)ou on continue et essaye les suivants ( choix actuel ) - else: - pass #CS_pbruno au choix: 1)une seule erreur arrète l'intégralité de l'opération - #return False # 2)ou on continue et essaye les suivants ( choix actuel ) - - result = True - - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.updateMesh( meshEntry= %s, groupeMaEntries = %s )' %( meshEntry, groupeMaEntries)) - logger.debug( 'type = %s , value = %s '%( type, value )) - result = None - return result - - - - - - - def createMesh( self, newMeshName, mainShapeEntry, groupeMaEntries, groupeNoEntries ): - """ - Création d'un objet maillage à partir d'un objet géométrique principal - Les groupes dans le maillage sont crée à partir des sous-objets géométriques - contenu dans la liste fourni en paramètre d'entré. - - @type newMeshName : string - @param newMeshName : nom du nouveau maillage - - @type mainShapeEntry : string - @param mainShapeEntry : identifiant de l'objet géométrique principal - - @type groupeMaEntries : liste de string - @param groupeMaEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques - sur lesquel on veut construire des groupes de face. - - @type groupeNoEntries : liste de string - @param groupeNoEntries : liste contenant les identifiants ( entry ) des sous-objets géométriques - sur lesquel on veut construire des groupes de noeuds. - - @rtype: string - @return: identifiant( entry ) dans l'arbre d'étude du nouveau maillage, None en cas d'erreur. - """ - result = False - try: - #print 'CS_pbruno createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'%( newMeshName, mainShapeEntry, groupeMaEntries ) - newMesh = None - anObject = self.__getCORBAObject( mainShapeEntry ) - shape = anObject._narrow( GEOM.GEOM_Object ) - if shape: - # Création du nouveau maillage - if not self.smeshEngine: - self.smeshEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "SMESH" ) - self.smeshEngine.SetCurrentStudy( salome.myStudy ) - newMesh = self.smeshEngine.CreateMesh( shape ) - newMeshEntry = self.__getEntry( newMesh ) - if newMeshEntry: - ok = self.setName( newMeshEntry, newMeshName ) - if ok: - result = self.updateMesh( newMeshEntry, groupeMaEntries, groupeNoEntries ) - except: - import sys - type = sys.exc_info()[0] - value = sys.exc_info()[1] - logger.debug( '>>>>CS_Pbruno StudyTree.createMesh( self, newMeshName=%s, mainShapeEntry=%s, groupeMaEntries=%s )'%( newMeshName, mainShapeEntry, groupeMaEntries)) - logger.debug( 'type = %s , value = %s '%( type, value )) - result = None - return result - - - - - - - - - -# -------------------------------------------------------------------------- -# INIT -study = SalomeStudy() - diff --git a/src/STUDY/Makefile.in b/src/STUDY/Makefile.in deleted file mode 100644 index 4cfb0445..00000000 --- a/src/STUDY/Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ -# source path -top_srcdir=@top_srcdir@ -top_builddir=../.. -srcdir=@srcdir@ -VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_builddir)/idl:${KERNEL_ROOT_DIR}/idl/salome - -@COMMENCE@ - -EXPORT_PYSCRIPTS = \ -EficasStudy.py - -# Libraries targets - -LIB_SERVER_IDL = -LIB_CLIENT_IDL = - -# Executables targets - -@CONCLUDE@ - -- 2.39.2