]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
Portage Python 3 + formattage du code python3 origin/python3
authorGilles DAVID <gilles-g.david@edf.fr>
Thu, 15 Jun 2017 15:30:31 +0000 (17:30 +0200)
committerGilles DAVID <gilles-g.david@edf.fr>
Thu, 15 Jun 2017 15:30:31 +0000 (17:30 +0200)
13 files changed:
configure.in.base
doc/conf.py
doc/eficas_personnalisation.rst
doc/eficas_presentation.rst
doc/eficas_principles.rst
doc/eficas_rules.rst
doc/python_rules.rst
src/CONFIG/eficasConfig.py
src/EFICAS/EFICAS.py
src/EFICASGUI/EFICASGUI.py
src/EFICASGUI/colors.py
src/EFICASGUI/eficasSalome.py
src/STUDY/EficasStudy.py

index d6adbe0734214174bf20c8791e2f8d365c1d7a31..29c58910df5ce3857a1ab2518c3292c0e2c30af4 100644 (file)
@@ -22,8 +22,8 @@ AC_CANONICAL_HOST
 PACKAGE=salome
 AC_SUBST(PACKAGE)
 
-VERSION=3.2.3
-XVERSION=0x030203
+VERSION=8.3.0
+XVERSION=0x080300
 AC_SUBST(VERSION)
 AC_SUBST(XVERSION)
 
index ba927676291db7374310b1f90260ed1f16420c15..df0e38ad5a09aaadf940bcf6602c22a068b6c503 100644 (file)
@@ -36,15 +36,15 @@ master_doc = 'index'
 
 # General substitutions.
 project = 'EFICAS'
-copyright = '2011, Pascale Noyret'
+copyright = '2017, Pascale Noyret'
 
 # The default replacements for |version| and |release|, also used in various
 # other places throughout the built documents.
 #
 # The short X.Y version.
-version = '6.6'
+version = '8.3'
 # The full version, including alpha/beta/rc tags.
-release = '6.6.0'
+release = '8.3.0'
 
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:
index 1c2c207de33dc777c5010baa3a280163e47287aa..a5d25f941c84c8c9515dd0c4b998e3627c1b4c93 100644 (file)
@@ -1,5 +1,5 @@
 your own custom EFICAS
-=======================
+======================
 
 User can choose to custom Eficas. They can decide which catalogs they used
 and which pdf reading tool they prefer. 
index a5e95c016ec43f3eefa73d1b5ebef24a890c4186..184e3b91c4b3daaa6946e6002518fe680cf91a7f 100644 (file)
@@ -1,5 +1,5 @@
 What's EFICAS
-==============
+=============
 
 Name's origin
 -------------
@@ -10,7 +10,7 @@ It avoids misuse of commands which are not allowed in a given context.
 It insures integrity of the file.  
 
 General Behaviour
-------------------
+-----------------
 * Catalogs
 
 EFICAS can be used by multiple codes and handles with multiple versions of each code. It is customized with files named "Catalogue" : It contains all commands for a code.  Each command has a name and parametres which are defined by developpers.
index b7871b044a87d377a0d33129138356b127e8c7d3..2831470802487586d3684252a945aad1c46ced02 100644 (file)
@@ -6,7 +6,7 @@ As in many GUI, a menu widget can be either a pull-down menu or a standalone con
 Eficas allows you to write (and reread) an unvalid file. At any time, user can save its works. 
 
 Choose a Code
----------------------
+-------------
 
 So try to build a new JDC.
 
@@ -22,7 +22,7 @@ Choose a version of the Code
    :align: center
 
 Enter commands
--------------------------
+--------------
 
 Eficas main widget provided two distinct views: The left size always contains the JDC explorer as a tree view. The right widget contains all informations used by the user to constructs the JDC. It shows which commands are available and which :ref:`rules-label`  have to be followed. Commands are append after this selected in the JDC tree.
 
@@ -42,7 +42,7 @@ The user  also can choose the way the commands are sorted, either by alphabetica
    :align: center
 
 Choosing command's keywords
----------------------------------
+---------------------------
 
 For each command, EFICAS shows which keywords  are available.
 
@@ -63,7 +63,7 @@ or
    :align: center
 
 types of item in the JDC (Jeu De Commande)
--------------------------------------------
+------------------------------------------
 
 In JDC, you can have :
 
@@ -103,7 +103,7 @@ described in the catalog.
 
 
 Attributes of a keyword
----------------------------
+-----------------------
 
 a parameter ("mot-clef simple") should have :
 
@@ -156,7 +156,7 @@ Input data panel depends on both these attributes. It forces the user to enter a
 
 
 Color chart
--------------
+-----------
 
 a very simple colors chart helps the user to know if a item is valid or not :
 
@@ -176,8 +176,8 @@ a very simple colors chart helps the user to know if a item is valid or not :
    - black is for observed rules
 
 
-Context Menus 
---------------
+Context Menus
+-------------
 In the JDC tree, Context menus  (invoked by right-clicking) allow user to :
 
 - create comments in the tree
@@ -189,8 +189,8 @@ In the JDC tree, Context menus  (invoked by right-clicking) allow user to :
    :align: center
 
 
-Parameters 
-------------
+Parameters
+----------
 
 The Users can define parameters. As parameters, Eficas accepts :
 
@@ -213,7 +213,7 @@ To select the value in the modal dialog widget, highligh the corresponding line
 
 
 Import data from file
------------------------
+---------------------
 
 The user also can import data from a ASCII text file by pushing button "Importer". He chooses to import part of  or the complete file.  
 
@@ -222,7 +222,7 @@ The user also can import data from a ASCII text file by pushing button "Importer
 
 
 Reports
----------------------
+-------
 You have acces to 
 
 - Rapport de Validation (Jdc Menu) : It resumes JDC errors
@@ -234,7 +234,7 @@ You have acces to
 
 
 Multiples files
----------------------
+---------------
 
 EFICAS allows you to open
 simultaneously files with differents catalogs  : for example a file with Openturns Study catalog and a file for Openturns wrapper. The user also can easely swap from one file to another by clicking on its tab.
index 489a0d464109d94ef45089208def0d15ca8f003b..5d78d3896319d371cedc2c9909436521e48264a2 100644 (file)
@@ -1,8 +1,8 @@
 .. _rules-label:
 
-===============================
-Eficas rules 
-===============================
+============
+Eficas rules
+============
 
 All the rules can be combinated, creating more complicated rules.
 
@@ -44,7 +44,7 @@ UN_PARMI
 
 
 EXCLUS
---------
+------
 
     EXCLUS means that, if one of the keyword is created, the other won't be allowed. 
  
@@ -98,7 +98,7 @@ PRESENT_PRESENT
 
 
 PRESENT_ABSENT
----------------
+--------------
 
     the rule means that if the FIRST keyword is selected, the others aren't allowed.
 
index 78d3342ec52c9c018bd8c161c38a85d2942e0749..3a986f6f981ad8e6a213b33fef60f188f7eb2756 100644 (file)
@@ -1,8 +1,8 @@
 .. _python-label:
 
-===============================
+=======================
 rules for python syntax
-===============================
+=======================
 
 Variable names and identifier are similar to those in many other languages :
 ----------------------------------------------------------------------------
@@ -24,8 +24,8 @@ Some identifiers are reserved words :
        - REGLE, VALIDATOR, 
        - ETAPE, ENTITE
 
-Python's way for  assigning values to variables: 
--------------------------------------------------
+Python's way for  assigning values to variables:
+------------------------------------------------
 
 * Keep in mind that .comm are python files. The simplest form of assignement is : variable = value
 * The hash character (#) starts a comment
index e17160bef8859e1485025257617c1bf4c60cb187..b4fcac2de5063bf598bd9a0c6abfb7d62eade0c7 100644 (file)
@@ -4,12 +4,3 @@ import os
 eficasPath = ''
 if "EFICAS_ROOT" in os.environ:
     eficasPath = os.environ["EFICAS_ROOT"]
-
-
-    
-    
-    
-    
-    
-    
-
index 035906e61a92b6767631a55c8f0720ca6838a802..a03e0f5b1f0b365cc9b92240e8cee77fba8219f8 100644 (file)
@@ -1,14 +1,9 @@
 # -*- coding: utf-8 -*-
 
-print "EFICAS.__init__: 1"
 import EFICAS_ORB__POA
 import SALOMEDS__POA
 import SALOME_ComponentPy
 
-print "EFICAS.__init__: 2"
-
-
-
 
 class SALOME_DriverPy_i(SALOMEDS__POA.Driver):
     """
@@ -16,8 +11,8 @@ class SALOME_DriverPy_i(SALOMEDS__POA.Driver):
     Should be inherited by any Python module's engine
     to provide persistence mechanism.
     """
-    def __init__ (self, componentDataType):
-        print "SALOME_DriverPy.__init__: ",componentDataType
+    def __init__(self, componentDataType):
+        print("SALOME_DriverPy.__init__: ", componentDataType)
         self._ComponentDataType = componentDataType
 
     def IORToLocalPersistentID(self, theSObject, IORString, isMultiFile, isASCII):
@@ -54,10 +49,9 @@ class SALOME_DriverPy_i(SALOMEDS__POA.Driver):
         return 0
 
 
-
 class EFICAS(EFICAS_ORB__POA.EFICAS_Gen,
-              SALOME_ComponentPy.SALOME_ComponentPy_i,
-              SALOME_DriverPy_i ):
+             SALOME_ComponentPy.SALOME_ComponentPy_i,
+             SALOME_DriverPy_i):
     """
         Pour etre un composant SALOME cette classe Python
         doit avoir le nom du composant et heriter de la
@@ -65,15 +59,13 @@ class EFICAS(EFICAS_ORB__POA.EFICAS_Gen,
         par omniidl et de la classe SALOME_ComponentPy_i
         qui porte les services generaux d'un composant SALOME
     """
-    def __init__ (self, orb, poa, contID, containerName, instanceName, 
-                  interfaceName):
-        print "EFICAS.__init__: ",containerName,' ',instanceName
+    def __init__(self, orb, poa, contID, containerName, instanceName,
+                 interfaceName):
+        print("EFICAS.__init__: ", containerName, ' ', instanceName)
         SALOME_ComponentPy.SALOME_ComponentPy_i.__init__(self, orb, poa,
-                    contID, containerName,instanceName, interfaceName, 0 )
-        SALOME_DriverPy_i.__init__( self, 'OTHER' )                    
+                                                         contID, containerName,
+                                                         instanceName, interfaceName, 0)
+        SALOME_DriverPy_i.__init__(self, 'OTHER')
         # On stocke dans l'attribut _naming_service, une reference sur
         # le Naming Service CORBA
-        self._naming_service=SALOME_ComponentPy.SALOME_NamingServicePy_i(self._orb)
-
-
-        
+        self._naming_service = SALOME_ComponentPy.SALOME_NamingServicePy_i(self._orb)
index 9c99d82726426a2d97e10cdd39150771516f0e23..6e58b49d85aad00bd654f76706f32a927057e0ac 100644 (file)
@@ -2,21 +2,17 @@
 
 import os
 
-"""
-    Interface PyQt
-"""
 from PyQt5.QtWidgets import QMessageBox
-
-import salome
+from salome.kernel.studyedit import getStudyEditor
 import SalomePyQt
+import salome
 
-from salome.kernel.studyedit import getStudyEditor
 
-sgPyQt=SalomePyQt.SalomePyQt()
+sgPyQt = SalomePyQt.SalomePyQt()
 
 # -----------------------------------------------------------------------------
 
-print "EFicasGUI :: :::::::::::::::::::::::::::::::::::::::::::::::::::::"
+print("EFicasGUI :: :::::::::::::::::::::::::::::::::::::::::::::::::::::")
 
 # Test Eficas directory
 eficasRoot = os.getenv("EFICAS_ROOT")
@@ -39,15 +35,15 @@ elif not os.path.isdir(eficasRoot):
 class GUIcontext:
     # menus/toolbars/actions IDs
     EFICAS_MENU_ID = 90
-    TELEMAC_ID       = 941
-    ADAO_ID          = 942
-    MAP_ID           = 943
-    CF_ID            = 944
-    MT_ID            = 945
-    SPECA_ID         = 946
-    SEP_ID           = 947
-    CARMEL3D_ID      = 948
-    MULTICATALOG_ID  = 949
+    TELEMAC_ID = 941
+    ADAO_ID = 942
+    MAP_ID = 943
+    CF_ID = 944
+    MT_ID = 945
+    SPECA_ID = 946
+    SEP_ID = 947
+    CARMEL3D_ID = 948
+    MULTICATALOG_ID = 949
 
     # constructor
     def __init__(self):
@@ -57,7 +53,7 @@ class GUIcontext:
         # create toolbar
         self.tid = sgPyQt.createTool("Eficas")
 
-        a = sgPyQt.createAction(GUIcontext.MULTICATALOG_ID, "Eficas MultiCatalogue","Lancer Eficas" , "Lancer Eficas",  "eficas.png")
+        a = sgPyQt.createAction(GUIcontext.MULTICATALOG_ID, "Eficas MultiCatalogue", "Lancer Eficas", "Lancer Eficas", "eficas.png")
         sgPyQt.createMenu(a, self.mid)
         sgPyQt.createTool(a, self.tid)
 
@@ -107,20 +103,21 @@ class GUIcontext:
 ################################################
 
 # study-to-context map
-__study2context__   = {}
+__study2context__ = {}
 # current context
 __current_context__ = None
 
-###
+
+# ##
 # set and return current GUI context
 # study ID is passed as parameter
-###
-def _setContext( studyID ):
+# ##
+def _setContext(studyID):
     global eficasRoot
     if eficasRoot is None:
         return
     global __study2context__, __current_context__
-    if not __study2context__.has_key(studyID):
+    if studyID not in __study2context__:
         __study2context__[studyID] = GUIcontext()
         pass
     __current_context__ = __study2context__[studyID]
@@ -129,162 +126,137 @@ def _setContext( studyID ):
 
 # -----------------------------------------------------------------------------
 
-def OnGUIEvent(commandID) :
-   if dict_command.has_key(commandID):
-      print "OnGUIEvent ::::::::::  commande associée  : ",commandID      
-      dict_command[commandID]()
-   else:
-      print "Pas de commande associée a : ",commandID
+def OnGUIEvent(commandID):
+    if commandID in dict_command:
+        print("OnGUIEvent ::::::::::  commande associée  : ", commandID)
+        dict_command[commandID]()
+    else:
+        print("Pas de commande associée a : ", commandID)
+
 
 # -----------------------------------------------------------------------------
 
 def setSettings():
-   """
-   Cette méthode permet les initialisations.
-   """
-   _setContext(sgPyQt.getStudyId())
+    """
+    Cette méthode permet les initialisations.
+    """
+    _setContext(sgPyQt.getStudyId())
+
 
 def activate():
-   """
-   Cette méthode permet l'activation du module, s'il a été chargé mais pas encore
-   activé dans une étude précédente.
-   
-   Portage V3.
-   """
-   setSettings()
+    """
+    Cette méthode permet l'activation du module, s'il a été chargé mais pas encore
+    activé dans une étude précédente.
+
+    Portage V3.
+    """
+    setSettings()
 
 
 # -----------------------------------------------------------------------------
 
 def activeStudyChanged(ID):
-   _setContext(ID)
-
+    _setContext(ID)
 
-#def definePopup(theContext, theObject, theParent):    
-#   print "EFICASGUI --- definePopup"
-#   print "EFICASGUI --- definePopup"
-#   theContext= ""
-#   theObject = "100"
-#   theParent = "ObjectBrowser"
-#   a=salome.sg.getAllSelected()
-    
-#   selectedEntry = a[0]
-#   mySO = monEditor.study.FindObjectID(selectedEntry);
-#   aType = monEditor.getFileType(mySO)
-#   print aType
-#   return (theContext, theObject, theParent)
 
+# -----------------------------------------------------------------------------
 
-#def customPopup(popup, theContext, theObject, theParent):
-#   a=salome.sg.getAllSelected()
+def runEficas():
+    print("-------------------------EFICASGUI::runEficas-------------------------")
+    import eficasSalome
+    eficasSalome.runEficas(multi=True)
 
-#   selectedEntry = a[0]
-#   mySO = monEditor.study.FindObjectID(selectedEntry);
-#   aType = monEditor.getFileType(mySO)
 
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   print "EFICASGUI --- customPopup"
-#   popup.removeItem(99003)
+def runEficaspourTelemac():
+    import eficasSalome
+    eficasSalome.runEficas("TELEMAC")
 
 
+def runEficaspourAdao():
+    print("runEficas Pour Ada")
+    import eficasSalome
+    eficasSalome.runEficas("ADAO")
 
-# -----------------------------------------------------------------------------
 
-def runEficas():
-   print "-------------------------EFICASGUI::runEficas-------------------------"
-   import eficasSalome
-   eficasSalome.runEficas(multi=True)
-   
-def runEficaspourTelemac():
-   import eficasSalome
-   eficasSalome.runEficas( "TELEMAC" )
-   
-   
-def runEficaspourAdao():
-   print "runEficas Pour Ada"
-   import eficasSalome
-   eficasSalome.runEficas( "ADAO" ) 
-   
 def runEficaspourMT():
-   print "runEficas Pour MT"
-   import eficasSalome
-   eficasSalome.runEficas( "MT" ) 
-   
+    print("runEficas Pour MT")
+    import eficasSalome
+    eficasSalome.runEficas("MT")
+
+
 def runEficaspourSPECA():
-   print "runEficas Pour SPECA"
-   import eficasSalome
-   eficasSalome.runEficas( "SPECA" )
-   
+    print("runEficas Pour SPECA")
+    import eficasSalome
+    eficasSalome.runEficas("SPECA")
+
+
 def runEficaspourSEP():
-   print "runEficas Pour SEP"
-   import eficasSalome
-   eficasSalome.runEficas( "SEP" )
-   
+    print("runEficas Pour SEP")
+    import eficasSalome
+    eficasSalome.runEficas("SEP")
+
+
 def runEficaspourMap():
-   print "runEficas Pour Map "
-   import eficasSalome
-   eficasSalome.runEficas( "MAP" )
-   
-   
+    print("runEficas Pour Map ")
+    import eficasSalome
+    eficasSalome.runEficas("MAP")
+
+
 def runEficaspourCarmel3D():
-   print "runEficas Pour Carmel3D "
-   import eficasSalome
-   eficasSalome.runEficas( "CARMEL3D" )
-   
+    print("runEficas Pour Carmel3D ")
+    import eficasSalome
+    eficasSalome.runEficas("CARMEL3D")
+
+
 def runEficaspourCF():
-   print "runEficas Pour CF "
-   import eficasSalome
-   eficasSalome.runEficas( "CF" )
+    print("runEficas Pour CF ")
+    import eficasSalome
+    eficasSalome.runEficas("CF")
+
 
 def runEficasFichier(version=None):
-   """
-   Lancement d'eficas pour ASTER
-   si un fichier est sélectionné, il est ouvert dans eficas
-   """
-   fileName = None
-   code     = None
-   a=salome.sg.getAllSelected()
-   if len(a) == 1:
-      selectedEntry = a[0]
-      
-      editor = getStudyEditor()
-      mySO = editor.study.FindObjectID(selectedEntry);
-      aType = editor.getFileType(mySO)
-      aValue = editor.getFileName(mySO)
-      if aType !=  None :
-        fileName = aValue
-        code     = aType[15:]
-   else:        
-      QMessageBox.critical(None, "Selection Invalide",
-             "Selectionner un seul fichier SVP") 
-      return;
-   import eficasSalome        
-   if code:
-        if version :
-            eficasSalome.runEficas( code, fileName, version=version)
-        else :
-            eficasSalome.runEficas( code, fileName)
-        
+    """
+    Lancement d'eficas pour ASTER
+    si un fichier est sélectionné, il est ouvert dans eficas
+    """
+    fileName = None
+    code = None
+    a = salome.sg.getAllSelected()
+    if len(a) == 1:
+        selectedEntry = a[0]
+
+        editor = getStudyEditor()
+        mySO = editor.study.FindObjectID(selectedEntry)
+        aType = editor.getFileType(mySO)
+        aValue = editor.getFileName(mySO)
+        if aType is not None:
+            fileName = aValue
+            code = aType[15:]
+    else:
+        QMessageBox.critical(None, "Selection Invalide",
+                             "Selectionner un seul fichier SVP")
+        return
+
+    import eficasSalome
+    if code:
+        if version:
+            eficasSalome.runEficas(code, fileName, version=version)
+        else:
+            eficasSalome.runEficas(code, fileName)
+
 
 # Partie applicative
 
-dict_command={
-                GUIcontext.TELEMAC_ID      : runEficaspourTelemac,
-                GUIcontext.ADAO_ID         : runEficaspourAdao,
-                GUIcontext.MT_ID           : runEficaspourMT,
-                GUIcontext.SPECA_ID        : runEficaspourSPECA,
-                GUIcontext.SEP_ID          : runEficaspourSEP,
-                GUIcontext.CF_ID           : runEficaspourCF,
-                GUIcontext.MAP_ID          : runEficaspourMap,
-                GUIcontext.CARMEL3D_ID     : runEficaspourCarmel3D,
-                GUIcontext.MULTICATALOG_ID : runEficas,
-
-                9041:runEficasFichier,
+dict_command = {
+                GUIcontext.TELEMAC_ID: runEficaspourTelemac,
+                GUIcontext.ADAO_ID: runEficaspourAdao,
+                GUIcontext.MT_ID: runEficaspourMT,
+                GUIcontext.SPECA_ID: runEficaspourSPECA,
+                GUIcontext.SEP_ID: runEficaspourSEP,
+                GUIcontext.CF_ID: runEficaspourCF,
+                GUIcontext.MAP_ID: runEficaspourMap,
+                GUIcontext.CARMEL3D_ID: runEficaspourCarmel3D,
+                GUIcontext.MULTICATALOG_ID: runEficas,
+
+                9041: runEficasFichier,
              }
index 7a2eccddd88599df37c5833702e9d3ea0c3256f9..cfa4c460bc0b58a101c16b713553a53ba9153934 100644 (file)
@@ -1,18 +1,15 @@
 # Liste de couleurs pour visualisation
-RED        = 255,0,0
-GREEN      = 0,255,0
-BLUE       = 0,0,255
-SANDY      = 255,0,128
-ORANGE     = 255,128,0
-PURPLE     = 128,0,255
-DARK_RED   = 128,0,0
-DARK_GREEN = 0,128,0
-DARK_BLUE  = 0,0,128
-YELLOW     = 255,255,0
-PINK       = 255,0,255
-CYAN       = 0,255,255
-
-ListeColors= (RED, GREEN, BLUE, SANDY,ORANGE , PURPLE, DARK_RED,DARK_GREEN,DARK_BLUE,YELLOW,PINK,CYAN  )
-
-
-
+RED = 255, 0, 0
+GREEN = 0, 255, 0
+BLUE = 0, 0, 255
+SANDY = 255, 0, 128
+ORANGE = 255, 128, 0
+PURPLE = 128, 0, 255
+DARK_RED = 128, 0, 0
+DARK_GREEN = 0, 128, 0
+DARK_BLUE = 0, 0, 128
+YELLOW = 255, 255, 0
+PINK = 255, 0, 255
+CYAN = 0, 255, 255
+
+ListeColors = (RED, GREEN, BLUE, SANDY, ORANGE, PURPLE, DARK_RED, DARK_GREEN, DARK_BLUE, YELLOW, PINK, CYAN)
index 6e03fbd212adef62facdbb200f0a27ca8fee0788..14f4d22bc1238ce8130e8acda0d4f2c41e6c91ea 100644 (file)
 # -*- coding: utf-8 -*-
-#_____________________________________
 
-import sys, os, re,types
+import os
+import re
+import sys
 import traceback
-from PyQt5.QtWidgets import QMessageBox
+
 from PyQt5.QtWidgets import QApplication
+from PyQt5.QtWidgets import QMessageBox
 
 
 from salome.kernel.logger import Logger
-logger = Logger( "EFICAS_SRC.EFICASGUI.eficasSalome.py" )
+logger = Logger("EFICAS_SRC.EFICASGUI.eficasSalome.py")
 
-import eficasConfig 
+import eficasConfig
 # eficasConfig definit le EFICAS_ROOT
 # lignes de path ajoutees pour acceder aux packages python du
 # logiciel Eficas. Le package Aster est ajoute explicitement pour
 # acceder au module prefs.py. A
 # ajout de InterfaceQT4 pour permettre l acces a la fenetre Option
-sys.path[:0]=[eficasConfig.eficasPath,
-              os.path.join( eficasConfig.eficasPath,'Editeur'),
-              os.path.join( eficasConfig.eficasPath,'UiQT5'),
-              os.path.join( eficasConfig.eficasPath,'InterfaceQT4'),
-              #os.path.join( eficasConfig.eficasPath,'Extensions'),
-              eficasConfig.eficasPath,
-             ]
-
-
-import Editeur    
+sys.path[:0] = [eficasConfig.eficasPath,
+                os.path.join(eficasConfig.eficasPath, 'Editeur'),
+                os.path.join(eficasConfig.eficasPath, 'UiQT5'),
+                os.path.join(eficasConfig.eficasPath, 'InterfaceQT4'),
+                # os.path.join( eficasConfig.eficasPath,'Extensions'),
+                eficasConfig.eficasPath,
+                ]
+
+import Editeur
 from InterfaceQT4 import qtEficas
 
 import salome
 import SalomePyQt
 sgPyQt = SalomePyQt.SalomePyQt()
-langue=str(sgPyQt.stringSetting("language","language"))
-
+langue = str(sgPyQt.stringSetting("language", "language"))
 
 from salome.kernel.studyedit import getStudyEditor
 
-
-# couleur pour visualisation des geometries 
+# couleur pour visualisation des geometries
 import colors
 COLORS = colors.ListeColors
-LEN_COLORS = len( COLORS )
+LEN_COLORS = len(COLORS)
 
 from Extensions import localisation
-localisation.localise(None,langue)
+localisation.localise(None, langue)
 
 
-class MyEficas( qtEficas.Appli ):
+class MyEficas(qtEficas.Appli):
     """
     Classe de lancement du logiciel EFICAS dans SALOME
-    Cette classe specialise le logiciel Eficas par l'ajout de:        
+    Cette classe specialise le logiciel Eficas par l'ajout de:
     a)la creation de groupes de mailles dans le composant SMESH de SALOME
     b)la visualisation d'elements geometrique dans le coposant GEOM de SALOME par selection dans EFICAS
     """
-    def __init__( self, parent, code = None, fichier = None, module = "EFICAS",
-                  version = None, componentName = "Eficas",multi=False,lang=None):
+    def __init__(self, parent, code=None, fichier=None, module="EFICAS",
+                 version=None, componentName="Eficas", multi=False, lang=None):
         """
         Constructeur.
-        @type   parent: 
+        @type   parent:
         @param  parent: widget Qt parent
         @type   code: string
-        @param  code: catalogue a lancer 
+        @param  code: catalogue a lancer
         @type   fichier: string
         @param  fichier: chemin absolu du fichier eficas a ouvrir a das le lancement. optionnel
         """
 
-        #dictPathCode={'ADAO':'Adao','MT':'MT','CARMEL3D':'Carmel3D', 'CF':'CF',
-        #              'SPECA':'SPECA','MAP':'MAP','SEP':'SEP', 'TELEMAC':'Telemac',
-        #              'pytel' : 'pytel', 'telemac2d' : 'telemac2dSalome','coupling1d2d':'coupling1d2d',
-        #               'mascaret':'mascaret','boundary_conditions':'boundary_conditions'}
+        dictPathCode = {'ADAO': 'Adao', 'MT': 'MT', 'CARMEL3D': 'Carmel3D', 'CF': 'CF',
+                        'SPECA': 'SPECA', 'MAP': 'MAP', 'SEP': 'SEP', 'TELEMAC': 'Telemac'}
 
-        dictPathCode={'ADAO':'Adao','MT':'MT','CARMEL3D':'Carmel3D', 'CF':'CF',
-                      'SPECA':'SPECA','MAP':'MAP','SEP':'SEP', 'TELEMAC':'Telemac'}
+        if code in dictPathCode:
+            pathCode = dictPathCode[code]
+            sys.path[:0] = [os.path.join(eficasConfig.eficasPath, pathCode)]
 
-        if code in dictPathCode.keys():
-            pathCode=dictPathCode[code]
-            sys.path[:0]=[os.path.join(eficasConfig.eficasPath,pathCode)]
-
-        if Editeur.__dict__.has_key( 'session' ):
+        if 'session' in Editeur.__dict__:
             from Editeur import session
             eficasArg = []
-            eficasArg += sys.argv            
+            eficasArg += sys.argv
             if fichier:
-                eficasArg += [ fichier ]
+                eficasArg += [fichier]
             if version:
-                eficasArg += [ "-c", version ]
-            #else :
-            #    print "noversion"
-            session.parse( eficasArg )
-                        
-        self.editor = getStudyEditor()    # Editeur de l'arbre d'etude
-
-        if lang!=None : langue=lang
-        else : langue=str(sgPyQt.stringSetting("language","language"))
-
-        qtEficas.Appli.__init__( self,code=code,salome=1,parent=parent,multi=multi,langue=langue)
-        
-        #--------------- specialisation EFICAS dans SALOME  -------------------                
-        self.parent = parent        
-        self.salome = True      #active les parties de code specifique dans Salome( pour le logiciel Eficas )
-        self.module = module    #indique sous quel module dans l'arbre d'etude ajouter le JDC.
+                eficasArg += ["-c", version]
+            # else:
+            #    print("noversion")
+            session.parse(eficasArg)
+
+        self.editor = getStudyEditor()  # Editeur de l'arbre d'etude
+
+        langue = lang or str(sgPyQt.stringSetting("language", "language"))
+
+        qtEficas.Appli.__init__(self, code=code, salome=1, parent=parent, multi=multi, langue=langue)
+
+        # --------------- specialisation EFICAS dans SALOME  -------------------
+        self.parent = parent
+        self.salome = True  # active les parties de code specifique dans Salome( pour le logiciel Eficas )
+        self.module = module  # indique sous quel module dans l'arbre d'etude ajouter le JDC.
         self.componentName = componentName
-        
+
         # donnee pour la creation de groupe de maille
-        self.mainShapeNames   = {} #dictionnaire pour gerer les multiples fichiers possibles ouverts par 
-                                   #eficas ( cle = identifiant du JDC ), une mainshape par fichier ouvert.    
-                                   #dictionnaire des sous-geometrie de la geometrie principale ( cle = entry, valeur = name ) 
-        #----------------------------------------------------------------------    
-        
+        # dictionnaire pour gerer les multiples fichiers possibles ouverts par
+        # eficas ( cle = identifiant du JDC ), une mainshape par fichier ouvert.
+        # dictionnaire des sous-geometrie de la geometrie principale ( cle = entry, valeur = name )
+        self.mainShapeNames = {}
+        # ----------------------------------------------------------------------
+
         self.icolor = 0  # compteur pour memoriser la couleur courante
         self.show()
-        
-        
-    def closeEvent(self,event):
-        res=self.fileExit()
-        if res==2 : 
-          event.ignore()
-          return
-        if hasattr(self,'readercata') :
-           del self.readercata
-        import math
-        try:
-          import Numeric
-        except:
-          import numpy
-          Numeric = numpy
+
+    def closeEvent(self, event):
+        res = self.fileExit()
+        if res == 2:
+            event.ignore()
+            return
+        if hasattr(self, 'readercata'):
+            del self.readercata
 
         from Extensions.param2 import originalMath
-        #Numeric.cos=originalMath.numeric_ncos
-        #Numeric.sin=originalMath.numeric_nsin
-        #Numeric.array=originalMath.numeric_narray
-        #math.sin=originalMath.sin
-        #math.cos=originalMath.cos
-        #math.sqrt=originalMath.sqrt
-        #math.ceil=originalMath.ceil
-        #math.pi=originalMath.pi
         originalMath.toOriginal()
 
         global appli
         appli = None
         event.accept()
-     
+
 # ___________________________ Methodes de l ex Pal __________________________________
 
-    #----------------------------------------------------------------
-    def getCORBAObjectInComponent( self,  entry, composant ):
-    #----------------------------------------------------------------
-       object = None
-       mySO = self.editor.study.FindObjectID(entry)
-       if mySO:
-          object = mySO.GetObject()
-          if not object:
-             myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", composant)
-             SCom        = self.editor.study.FindComponent( composant )
-             print myComponent , SCom
-             self.editor.builder.LoadWith( SCom , myComponent  )
-             object      = mySO.GetObject()
-       if not object :
-             logger.debug("selectedEntry: An error occurs")
-       return object
-
-
-    #----------------------------------------------
-    def giveMeshGroups( self,entry,label1,typeMesh):
-    #----------------------------------------------
-       msg=None
-       names=[]
-       import SMESH
-       try:
-         monMaillage =self.getCORBAObjectInComponent(entry,"SMESH") 
-         if monMaillage != None :                                    # selection d'un groupe de SMESH
-            if  monMaillage._narrow(SMESH.SMESH_Mesh):
-                mailSO = self.editor.study.FindObjectID(entry)
-                if mailSO == None : return names, msg
-
-
-                subIt = self.editor.study.NewChildIterator(mailSO)
-                while subIt.More():
-                      subSO = subIt.Value()
-                      subIt.Next()
-
-                      if (subSO.GetName()[0:9]!=label1) : continue
-                      subSSMeshit=self.editor.study.NewChildIterator(subSO)
-                      while subSSMeshit.More():
-                           subSSMeshSO = subSSMeshit.Value()
-                           subSSMeshit.Next()
-                           if  subSSMeshSO.GetObject()._narrow(typeMesh):
-                               names.append(subSSMeshSO.GetName())
-            else :
-                msg=entry + self.tr(" n est pas un maillage")
-       except :
-         logger.debug(' giveMeshGroups pb avec ( entry = %s ) ' %entry )          
-         msg=' giveMeshGroup pb avec ( entry = %s ) '+ entry          
-       return names, msg
-
-    #-------------------------------------
-    def isMeshGroup( self,entry):
-    #-------------------------------------
-       result=False
-       import SMESH
-       try:
-         monObjet =self.getCORBAObjectInComponent(entry,"SMESH") 
-         if monObjet != None :                                    # selection d'un groupe de SMESH
-            if  monObjet._narrow(SMESH.SMESH_GroupBase):
-                result = True 
-       except :
-         logger.debug(' isMeshGroup pb avec ( entry = %s ) ' %entry )          
-       return result
-
-    #-------------------------------------
-    def isMesh( self,entry):
-    #-------------------------------------
-       result=False
-       import SMESH
-       try:
-         monObjet =self.getCORBAObjectInComponent(entry,"SMESH") 
-         if monObjet != None :                                    # selection d'un groupe de SMESH
-            if  monObjet._narrow(SMESH.SMESH_Mesh):
-                result = True 
-       except :
-         logger.debug(' isMesh pb avec ( entry = %s ) ' %entry )          
-       return result
-
-    #-------------------------------------
-    def getMesh( self,entry):
-    #-------------------------------------
-       meshObject=None
-       import SMESH
-       try:
-       #if 1 :
-         monObjet =self.getCORBAObjectInComponent(entry,"SMESH") 
-         if monObjet != None :                                    # selection d'un groupe de SMESH
-            meshObject=monObjet._narrow(SMESH.SMESH_Mesh)
-       except :
-         logger.debug('  pb avec ( entry = %s ) ' %entry )          
-       return meshObject
-
-    #-------------------------------------
-
-    #-------------------------------------
-    def isShape( self,entry):
-    #-------------------------------------
-       result=False
-       import GEOM
-       try:
-         monObjet =self.getCORBAObjectInComponent(entry,"GEOM") 
-         if monObjet != None :                                    # selection d'un objet GEOM
-            if  monObjet._narrow(GEOM.GEOM_Object ):
-                result = True 
-       except :
-         logger.debug(' isShape pb avec ( entry = %s ) ' %entry )          
-       return result
-
-    #-----------------------------------------------------------------
-    def getMainShapeEntry(self,entry):
-    #-----------------------------------------------------------------
-        result=None
+    def getCORBAObjectInComponent(self, entry, composant):
+        sobject = None
+        mySO = self.editor.study.FindObjectID(entry)
+        if mySO:
+            sobject = mySO.GetObject()
+            if not object:
+                myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", composant)
+                SCom = self.editor.study.FindComponent(composant)
+                print(myComponent, SCom)
+                self.editor.builder.LoadWith(SCom, myComponent)
+                sobject = mySO.GetObject()
+        if not sobject:
+            logger.debug("selectedEntry: An error occurs")
+        return sobject
+
+    def giveMeshGroups(self, entry, label1, typeMesh):
+        msg = None
+        names = []
+        import SMESH
+        try:
+            monMaillage = self.getCORBAObjectInComponent(entry, "SMESH")
+            if monMaillage is not None:  # selection d'un groupe de SMESH
+                if monMaillage._narrow(SMESH.SMESH_Mesh):
+                    mailSO = self.editor.study.FindObjectID(entry)
+                    if mailSO is None:
+                        return names, msg
+
+                    subIt = self.editor.study.NewChildIterator(mailSO)
+                    while subIt.More():
+                        subSO = subIt.Value()
+                        subIt.Next()
+
+                        if (subSO.GetName()[0:9] != label1):
+                            continue
+                        subSSMeshit = self.editor.study.NewChildIterator(subSO)
+                        while subSSMeshit.More():
+                            subSSMeshSO = subSSMeshit.Value()
+                            subSSMeshit.Next()
+                            if subSSMeshSO.GetObject()._narrow(typeMesh):
+                                names.append(subSSMeshSO.GetName())
+                else:
+                    msg = entry + self.tr(" n est pas un maillage")
+        except:
+            logger.debug(' giveMeshGroups pb avec ( entry = %s ) ' % entry)
+            msg = ' giveMeshGroup pb avec ( entry = %s ) ' + entry
+        return names, msg
+
+    def isMeshGroup(self, entry):
+        result = False
+        import SMESH
+        try:
+            monObjet = self.getCORBAObjectInComponent(entry, "SMESH")
+            if monObjet is not None:  # selection d'un groupe de SMESH
+                if monObjet._narrow(SMESH.SMESH_GroupBase):
+                    result = True
+        except:
+            logger.debug(' isMeshGroup pb avec ( entry = %s ) ' % entry)
+        return result
+
+    def isMesh(self, entry):
+        result = False
+        import SMESH
+        try:
+            monObjet = self.getCORBAObjectInComponent(entry, "SMESH")
+            if monObjet is not None:  # selection d'un groupe de SMESH
+                if monObjet._narrow(SMESH.SMESH_Mesh):
+                    result = True
+        except:
+            logger.debug(' isMesh pb avec ( entry = %s ) ' % entry)
+        return result
+
+    def getMesh(self, entry):
+        meshObject = None
+        import SMESH
         try:
-           mainShapeEntry = entry.split(':')[:4]
-           if len(mainShapeEntry) == 4:
-                strMainShapeEntry = '%s:%s:%s:%s'%tuple(mainShapeEntry)
+            monObjet = self.getCORBAObjectInComponent(entry, "SMESH")
+            if monObjet is not None:  # selection d'un groupe de SMESH
+                meshObject = monObjet._narrow(SMESH.SMESH_Mesh)
+        except:
+            logger.debug('  pb avec ( entry = %s ) ' % entry)
+        return meshObject
+
+    def isShape(self, entry):
+        result = False
+        import GEOM
+        try:
+            monObjet = self.getCORBAObjectInComponent(entry, "GEOM")
+            if monObjet is not None:  # selection d'un objet GEOM
+                if monObjet._narrow(GEOM.GEOM_Object):
+                    result = True
+        except:
+            logger.debug(' isShape pb avec ( entry = %s ) ' % entry)
+        return result
+
+    def getMainShapeEntry(self, entry):
+        result = None
+        try:
+            mainShapeEntry = entry.split(':')[:4]
+            if len(mainShapeEntry) == 4:
+                strMainShapeEntry = '%s:%s:%s:%s' % tuple(mainShapeEntry)
                 if self.isMainShape(strMainShapeEntry):
                     result = strMainShapeEntry
         except:
-            logger.debug( 'Erreur pour SalomeStudy.getMainShapeEntry( entry = %s ) ' %entry )
+            logger.debug('Erreur pour SalomeStudy.getMainShapeEntry( entry = %s ) ' % entry)
             result = None
         return result
 
-    #-----------------------------------------------------------------
-    def isMainShape(self,entry):
-    #-----------------------------------------------------------------
+    def isMainShape(self, entry):
         result = False
         try:
-            monObjet =self.getCORBAObjectInComponent(entry,"GEOM") 
+            monObjet = self.getCORBAObjectInComponent(entry, "GEOM")
             import GEOM
-            shape    = monObjet._narrow( GEOM.GEOM_Object )
+            shape = monObjet._narrow(GEOM.GEOM_Object)
             if shape.IsMainShape():
                 result = True
         except:
-            logger.debug( 'Errreur pour SalomeStudy.isMainShape( entry = %s ) ' %entry )
+            logger.debug('Errreur pour SalomeStudy.isMainShape( entry = %s ) ' % entry)
             result = False
         return result
 
-    
-    #-----------------------------------------------------------------
-    def ChercheType( self, shape ):
-    #-----------------------------------------------------------------
-        tgeo =  shape.GetShapeType() 
-        geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
-        #print dir(self.editor.study)
+    def ChercheType(self, shape):
+        tgeo = shape.GetShapeType()
+        geomEngine = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
         groupIMeasureOp = geomEngine.GetIMeasureOperations(self.editor.study._get_StudyId())
-        if tgeo != "COMPOUND" : return tgeo
+        if tgeo != "COMPOUND":
+            return tgeo
 
-        strInfo =  groupIMeasureOp.WhatIs( shape )
+        strInfo = groupIMeasureOp.WhatIs(shape)
         dictInfo = {}
         l = strInfo.split('\n')
 
         for couple in l:
-             nom, valeur = couple.split(':')
-             dictInfo[ nom.strip() ] = valeur.strip()
+            nom, valeur = couple.split(':')
+            dictInfo[nom.strip()] = valeur.strip()
 
-        ordre = [ "COMPSOLID", "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX" ]
+        ordre = ["COMPSOLID", "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX"]
         for t in ordre:
-            if dictInfo[ t ] != '0':
-               tgeo = t
-               return tgeo
+            if dictInfo[t] != '0':
+                tgeo = t
+                return tgeo
         return None
 
-
-    #-----------------------------------------------------------------
-    def selectShape( self, editor, entry, kwType = None ):
-    #-----------------------------------------------------------------
+    def selectShape(self, editor, entry, kwType=None):
         """
         selection sous-geometrie dans Salome:
         -test1) si c'est un element sous-geometrique .
         -test2) si appartient a la geometrie principale.
         """
-        name, msgError = '',''
+        name, msgError = '', ''
         mySO = self.editor.study.FindObjectID(entry)
-        if mySO == None :
-           return name, msgError
-        object = mySO.GetObject()
-        if object == None :
-           return name, msgError
+        if mySO is None:
+            return name, msgError
+        sobject = mySO.GetObject()
+        if sobject is None:
+            return name, msgError
 
         import GEOM
-        shape  = object._narrow( GEOM.GEOM_Object )
-        if not shape :
-           return name, msgError
-
-        tGeo=self.ChercheType(shape)
-        if not tGeo :
-           return name, msgError
-        #if kwType == "GROUP_NO" and str(tGeo) != "VERTEX":
-        #    name,msgError = '',"la selection n est pas un Vertex"
-        #    return name, msgError
+        shape = sobject._narrow(GEOM.GEOM_Object)
+        if not shape:
+            return name, msgError
+
+        tGeo = self.ChercheType(shape)
+        if not tGeo:
+            return name, msgError
         if kwType == "GROUP_MA" and str(tGeo) == "VERTEX":
             name, msgError = '', "la selection n est pas un groupe de maille"
             return name, msgError
 
-        mainShapeEntry = self.getMainShapeEntry( entry )
-        if self.mainShapeNames.has_key( editor ):
-          #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
-          if self.mainShapeNames[editor] == mainShapeEntry:
-             name=mySO.GetName()
-          else :
-             msgError="Le groupe reference la geometrie " + mainShapeEntry + " et non " + self.mainShapeNames[editor]
-        else :
-          self.mainShapeNames[editor] = mainShapeEntry
-          name=mySO.GetName()
-       
+        mainShapeEntry = self.getMainShapeEntry(entry)
+        if editor in self.mainShapeNames:
+            if self.mainShapeNames[editor] == mainShapeEntry:
+                name = mySO.GetName()
+            else:
+                msgError = "Le groupe reference la geometrie " + mainShapeEntry + " et non " + self.mainShapeNames[editor]
+        else:
+            self.mainShapeNames[editor] = mainShapeEntry
+            name = mySO.GetName()
+
         return name, msgError
-        
 
-    #-----------------------------------------------------------------
-    def selectMeshGroup( self, editor, selectedEntry, kwType = None ):
-    #-----------------------------------------------------------------
+    def selectMeshGroup(self, editor, selectedEntry, kwType=None):
         """
         selection groupe de maille dans Salome:
         -test 1) si c'est un groupe de maille
         -test 2) si le maillage fait reference a la geometrie principale
         """
-        name, msgError = '',''
+        name, msgError = '', ''
 
-        mySO=self.editor.study.FindObjectID(selectedEntry )
+        mySO = self.editor.study.FindObjectID(selectedEntry)
         from salome.smesh.smeshstudytools import SMeshStudyTools
-        monSMeshStudyTools=SMeshStudyTools(self.editor)
+        monSMeshStudyTools = SMeshStudyTools(self.editor)
         meshSO = monSMeshStudyTools.getMeshFromGroup(mySO)
-        if meshSO == None : return name, msgError    
+        if meshSO is None:
+            return name, msgError
 
-       # on verifie que l entree selectionnee a le bon type (NODE ou EDGE...)
+        # on verifie que l entree selectionnee a le bon type (NODE ou EDGE...)
         tGroup = ""
-        groupObject = self.getCORBAObjectInComponent(selectedEntry,"SMESH")
-        if not groupObject :
-           logger.debug("selectedMeshEntry: An error occurs")
+        groupObject = self.getCORBAObjectInComponent(selectedEntry, "SMESH")
+        if not groupObject:
+            logger.debug("selectedMeshEntry: An error occurs")
 
         import SMESH
-        aGroup = groupObject._narrow( SMESH.SMESH_GroupBase )
-        if aGroup: tGroup = aGroup.GetType()
+        aGroup = groupObject._narrow(SMESH.SMESH_GroupBase)
+        if aGroup:
+            tGroup = aGroup.GetType()
 
         if kwType == "GROUP_NO" and tGroup != SMESH.NODE:
-             msgError = self.tr("GROUP_NO attend un groupe de noeud")
-             return name, msgError
+            msgError = self.tr("GROUP_NO attend un groupe de noeud")
+            return name, msgError
         elif kwType == "GROUP_MA" and tGroup == SMESH.NODE:
-             msgError = self.tr("GROUP_MA attend un point goupe de maille")
-             return name, msgError
+            msgError = self.tr("GROUP_MA attend un point goupe de maille")
+            return name, msgError
 
         # on cherche la shape associee
-        #PN PN mesh_Object est un SOject
+        # PN PN mesh_Object est un SOject
         meshObject = meshSO.GetObject()
-        mesh     = meshObject._narrow( SMESH.SMESH_Mesh  )
-        if mesh:         #c'est bien un objet maillage
-             shape = mesh.GetShapeToMesh()
-             if shape:
-                ior = salome.orb.object_to_string( shape )
+        mesh = meshObject._narrow(SMESH.SMESH_Mesh)
+        if mesh:  c'est bien un objet maillage
+            shape = mesh.GetShapeToMesh()
+            if shape:
+                ior = salome.orb.object_to_string(shape)
                 if ior:
-                   sObject   = self.editor.study.FindObjectIOR(  ior )
-                   mainShapeID = sObject.GetID()
-             else :
-                mainShapeID=0
-        else :
-             return name, self.tr("Type d objet non permis")
+                    sObject = self.editor.study.FindObjectIOR(ior)
+                    mainShapeID = sObject.GetID()
+            else:
+                mainShapeID = 0
+        else:
+            return name, self.tr("Type d objet non permis")
 
         # on cherche si la shape associee est la bonne
-        #print "------------- mainShapeID" , mainShapeID
-        if self.mainShapeNames.has_key( editor ):
-          #print "------------- self.mainShapeNames[editor]" , self.mainShapeNames[editor]
-          if self.mainShapeNames[editor] == mainShapeID:
-             name=mySO.GetName()
-          else :
-             msgError=self.tr("Le groupe reference la geometrie ") + mainShapeID + self.tr(" et non ") + self.mainShapeNames[editor]
-        else :
-          self.mainShapeNames[editor] = mainShapeID
-          name=mySO.GetName()
-
-        #print "------------------------------ name :", name
-        #print "------------------------------ name :", name
-        #print "------------------------------ name :", name
-        return name,msgError
+        if editor in self.mainShapeNames:
+            if self.mainShapeNames[editor] == mainShapeID:
+                name = mySO.GetName()
+            else:
+                msgError = self.tr("Le groupe reference la geometrie ") + mainShapeID + self.tr(" et non ") + self.mainShapeNames[editor]
+        else:
+            self.mainShapeNames[editor] = mainShapeID
+            name = mySO.GetName()
 
+        return name, msgError
 
     def displayMeshGroups(self, meshGroupName):
         """
@@ -427,322 +369,290 @@ class MyEficas( qtEficas.Appli ):
         """
         ok, msgError = False, ''
         try:
-        #if 1 :
             sg = salome.ImportComponentGUI('SMESH')
-            meshGroupEntries = []
-            selMeshEntry = None
-            selMeshGroupEntry = None
-            
+            meshGroupEntries = []
+            selMeshEntry = None
+            selMeshGroupEntry = None
+
             # liste des groupes de maille de nom meshGroupName
             listSO = self.editor.study.FindObjectByName(meshGroupName, "SMESH")
-            #print listSO
-            #print "liste des groupes de maille de nom %s: "%(meshGroupName), listSO
-            
-            if len(listSO)>1:
-               return 0,self.tr('Plusieurs objets  portent ce nom')
-            if len(listSO) ==0 :
-               return 0,self.tr('Aucun objet ne porte ce nom')
-            SObjet=listSO[0]
-            groupEntry = SObjet.GetID()                
+
+            if len(listSO) > 1:
+                return 0, self.tr('Plusieurs objets  portent ce nom')
+            if len(listSO) == 0:
+                return 0, self.tr('Aucun objet ne porte ce nom')
+            SObjet = listSO[0]
+            groupEntry = SObjet.GetID()
             myComponent = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
-            SCom        = self.editor.study.FindComponent("SMESH")
-            myBuilder   = self.editor.study.NewBuilder()
-            myBuilder.LoadWith( SCom , myComponent  )                             
+            SCom = self.editor.study.FindComponent("SMESH")
+            myBuilder = self.editor.study.NewBuilder()
+            myBuilder.LoadWith(SCom, myComponent)
             sg.CreateAndDisplayActor(groupEntry)
-            #color = COLORS[ self.icolor % LEN_COLORS ]                
-            #self.icolor = self.icolor + 1
-            #sg.SetColor(groupEntry, color[0], color[1], color[2])
+            # color = COLORS[ self.icolor % LEN_COLORS ]
+            # self.icolor = self.icolor + 1
+            # sg.SetColor(groupEntry, color[0], color[1], color[2])
             salome.sg.Display(groupEntry)
-            salome.sg.FitAll()                
-            ok = True                
+            salome.sg.FitAll()
+            ok = True
 
         except:
-        #else :
-            msgError = self.tr("Impossible d afficher ")+shapeName
-            logger.debug(50*'=')
+            msgError = self.tr("Impossible d afficher ") + meshGroupName
+            logger.debug(50 * '=')
         return ok, msgError
 
 # ___________________________ Methodes appelees par EFICAS  __________________________________
-    #----------------------------------------------------------------
-    def selectGroupFromSalome( self, kwType = None, editor=None):
-    #----------------------------------------------------------------
+    def selectGroupFromSalome(self, kwType=None, editor=None):
         """
         Selection d'element(s) d'une geometrie ( sub-shape ) ou d'element(s) de maillage ( groupe de maille)  partir de l'arbre salome
         retourne ( la liste des noms des groupes, message d'erreur )
-      
-        Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel GROUPMA        
+
+        Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel GROUPMA
         """
         names, msg = [], ''
-        try:            
+        try:
             atLeastOneStudy = self.editor.study
             if not atLeastOneStudy:
                 return names, msg
 
-           # recupere toutes les selections de l'utilsateur dans l'arbre Salome
+            # recupere toutes les selections de l'utilsateur dans l'arbre Salome
             entries = salome.sg.getAllSelected()
-            nbEntries = len( entries )
+            nbEntries = len(entries)
             if nbEntries >= 1:
                 for entry in entries:
-                    if self.isMeshGroup(entry):               # selection d 'un sous maillage
-                       name, msg = self.selectMeshGroup( editor, entry, kwType )
-                    elif self.isShape(entry):               # selection d'une sous-geometrie
-                       name, msg = self.selectShape( editor, entry, kwType )
+                    if self.isMeshGroup(entry):  # selection d 'un sous maillage
+                        name, msg = self.selectMeshGroup(editor, entry, kwType)
+                    elif self.isShape(entry):  # selection d'une sous-geometrie
+                        name, msg = self.selectShape(editor, entry, kwType)
                     else:
-                       name, msg = None,self.tr("Selection SALOME non autorisee.")
+                        name, msg = None, self.tr("Selection SALOME non autorisee.")
                     if name:
-                       names.append( name )                    
-                        
-        except:            
+                        names.append(name)
+
+        except:
             logger.debug("selectGroupFromSalome: An error occurs")
-        #print "=================== selectGroupFromSalome ", names, msg
-        #print "=================== selectGroupFromSalome ", names, msg
-        #print "=================== selectGroupFromSalome ", names, msg
-        return names, msg                
-
-    #----------------------------------------------------------------
-    def selectMeshFile( self,  editor=None):
-    #----------------------------------------------------------------
+        return names, msg
+
+    def selectMeshFile(self, editor=None):
         """
         """
-        try :            
+        try:
             atLeastOneStudy = self.editor.study
-            if not atLeastOneStudy: return "", 'Pas d etude'
+            if not atLeastOneStudy:
+                return "", 'Pas d etude'
 
-           # recupere toutes les selections de l'utilsateur dans l'arbre Salome
+            # recupere toutes les selections de l'utilsateur dans l'arbre Salome
             entries = salome.sg.getAllSelected()
-            nbEntries = len( entries )
-            if nbEntries != 1 : return "", 'select a Mesh'
+            nbEntries = len(entries)
+            if nbEntries != 1:
+                return "", 'select a Mesh'
             entry = entries[0]
-            if not self.isMesh(entry): return "", 'select a Mesh'
-            mySO=self.editor.study.FindObjectID(entry)
-            print mySO
+            if not self.isMesh(entry):
+                return "", 'select a Mesh'
+            mySO = self.editor.study.FindObjectID(entry)
+            print(mySO)
             ok, anAttr = mySO.FindAttribute("AttributeName")
-            if not ok :  return "" ,'Pb de nommage'
-            meshFile="/tmp/"+str(anAttr.Value())+'.med'
-            myMesh=self.getMesh(entry) 
-            if myMesh==None : return "" ,'Pb dans la selection '
-            myMesh.ExportMED( meshFile, 0)
-            return meshFile ,""
-        except :
-           return "", "Pb dans la selection "
-
-    #----------------------------------------------------------------
-    def importMedFile( self,fileName,  editor=None):
-    #----------------------------------------------------------------
-        try :            
+            if not ok:
+                return "", 'Pb de nommage'
+            meshFile = "/tmp/" + str(anAttr.Value()) + '.med'
+            myMesh = self.getMesh(entry)
+            if myMesh is None:
+                return "", 'Pb dans la selection '
+            myMesh.ExportMED(meshFile, 0)
+            return meshFile, ""
+        except:
+            return "", "Pb dans la selection "
+
+    def importMedFile(self, fileName, editor=None):
+        try:
             theStudy = self.editor.study
-            if not theStudy: return (0, 'Pas d etude')
+            if not theStudy:
+                return (0, 'Pas d etude')
             from salome.smesh import smeshBuilder
             smesh = smeshBuilder.New(theStudy)
-            aMesh,aResult = smesh.CreateMeshesFromMED(fileName)
+            smesh.CreateMeshesFromMED(fileName)
             salome.sg.updateObjBrowser(1)
-            return 1,"" 
-        except :
-            return (O,"Pb a l import")
-                     
-    #----------------------------------------------------------------
-    def selectEntryFromSalome( self, kwType = None, editor=None):
-    #----------------------------------------------------------------
+            return 1, ""
+        except:
+            return (0, "Pb a l import")
+
+    def selectEntryFromSalome(self, kwType=None, editor=None):
         """
         Selection d'element a partir de l'arbre salome
         Ne verifie que l unicite de la selection
         retourne ( la liste avec le  nom du groupe, message d'erreur )
-      
+
         retourne une liste pour etre coherent avec selectGroupFromSalome
-        Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel SalomeEntry        
+        Note: Appele par EFICAS lorsqu'on clique sur le bouton ajouter la liste du panel SalomeEntry
         """
-        try:            
+        try:
             if self.editor.study._non_existent():
-               raise Exception(self.tr(u"L'etude Salome n'existe plus"))
+                raise Exception(self.tr("L'etude Salome n'existe plus"))
             entries = salome.sg.getAllSelected()
-            nbEntries = len( entries )
+            nbEntries = len(entries)
             if nbEntries < 1:
-               raise Exception(self.tr(u"Veuillez selectionner une entree de l'arbre d'etude de Salome"))
-            elif nbEntries > 1 :
-               raise Exception(self.tr(u"Une seule entree doit être selectionnee dans l'arbre d'etude de Salome"))
+                raise Exception(self.tr("Veuillez selectionner une entree de l'arbre d'etude de Salome"))
+            elif nbEntries > 1:
+                raise Exception(self.tr("Une seule entree doit être selectionnee dans l'arbre d'etude de Salome"))
 
             value = kwType.get_selected_value(entries[0], self.editor)
-            msg = self.tr(u"L'entree de l'arbre d'etude de Salome a ete selectionnee")
+            msg = self.tr("L'entree de l'arbre d'etude de Salome a ete selectionnee")
             return [value], msg
-        except Exception, e:
-            QMessageBox.information(self, self.tr(u"Selection depuis Salome"), unicode(e))
-            return [], unicode(e)
-
-        
-    #---------------------------------------------
-    def addJdcInSalome(  self, jdcPath ):
-    #---------------------------------------------
+        except Exception as e:
+            QMessageBox.information(self, self.tr("Selection depuis Salome"), str(e))
+            return [], str(e)
+
+    def addJdcInSalome(self, jdcPath):
         """
         Ajoute le Jeu De Commande dans l'arbre d'etude Salome dans la rubrique EFICAS
         Revu pour QT4
         """
-        msgError    = "Erreur dans l'export du fichier de commande dans l'arbre d'etude Salome"
-        if jdcPath == "" or jdcPath == None : return
+        msgError = "Erreur dans l'export du fichier de commande dans l'arbre d'etude Salome"
+        if jdcPath == "" or jdcPath is None:
+            return
         ok = False
-        try:            
+        try:
             atLeastOneStudy = self.editor.study
             if not atLeastOneStudy:
                 return ok, msgError
-                        
-            fileType = { 'TELEMAC'    : "FICHIER_EFICAS_TELEMAC",
-                         'ADAO'       : "FICHIER_EFICAS_ADAO",
-                         'SEP'        : "FICHIER_EFICAS_SEP",
-                         'SPECA'      : "FICHIER_EFICAS_SPECA",
-                         'MT'         : "FICHIER_EFICAS_MT",
-                         'CF'         : "FICHIER_EFICAS_CF",
-                         'MAP'        : "FICHIER_EFICAS_MAP",
-                         'CARMEL3D'   : "FICHIER_EFICAS_CARMEL3D",
-                        }
-                        
-                        
-            folderName = { 'TELEMAC'  : "TelemacFiles",
-                         'ADAO'       : "AdaoFiles",
-                         'SEP'        : "SepFiles",
-                         'SPECA'      : "SpecaFiles",
-                         'MT'         : "MTFiles",
-                         'CF'         : "CFFiles",
-                         'CARMEL3D'   : 'CARMEL3DFiles' ,
-                         'MAP'        : 'MapFiles' ,
-                        }
 
-                        
-            folderType = { 'TELEMAC'    : "TELEMAC_FILE_FOLDER",
-                         'ADAO'       : "ADAO_FILE_FOLDER",
-                         'SEP'        : "SEP_FILE_FOLDER",
-                         'SPECA'      : "SPECA_FILE_FOLDER",
-                         'MT'         : "MT_FILE_FOLDER",
-                         'CF'         : "CF_FILE_FOLDER",
-                         'SEP'        : "SEP_FILE_FOLDER",
-                         'MAP'        : "MAP_FILE_FOLDER",
-                         'CARMEL3D'   : "CARMEL3D_FILE_FOLDER",
+            fileType = {'TELEMAC'   : "FICHIER_EFICAS_TELEMAC",
+                        'ADAO'      : "FICHIER_EFICAS_ADAO",
+                        'SEP'       : "FICHIER_EFICAS_SEP",
+                        'SPECA'     : "FICHIER_EFICAS_SPECA",
+                        'MT'        : "FICHIER_EFICAS_MT",
+                        'CF'        : "FICHIER_EFICAS_CF",
+                        'MAP'       : "FICHIER_EFICAS_MAP",
+                        'CARMEL3D'  : "FICHIER_EFICAS_CARMEL3D",
                         }
 
-                        
+
+            folderName = {'TELEMAC' : "TelemacFiles",
+                          'ADAO'    : "AdaoFiles",
+                          'SEP'     : "SepFiles",
+                          'SPECA'   : "SpecaFiles",
+                          'MT'      : "MTFiles",
+                          'CF'      : "CFFiles",
+                          'CARMEL3D': 'CARMEL3DFiles' ,
+                          'MAP'     : 'MapFiles' ,
+                          }
+
+
+            folderType = {'TELEMAC'  : "TELEMAC_FILE_FOLDER",
+                          'ADAO'     : "ADAO_FILE_FOLDER",
+                          'SEP'      : "SEP_FILE_FOLDER",
+                          'SPECA'    : "SPECA_FILE_FOLDER",
+                          'MT'       : "MT_FILE_FOLDER",
+                          'CF'       : "CF_FILE_FOLDER",
+                          'SEP'      : "SEP_FILE_FOLDER",
+                          'MAP'      : "MAP_FILE_FOLDER",
+                          'CARMEL3D' : "CARMEL3D_FILE_FOLDER",
+                          }
+
             moduleEntry = self.editor.findOrCreateComponent(self.module, self.componentName)
-            itemName    = re.split("/",jdcPath)[-1]
-            
-            if folderName.has_key(self.code) :
-               monFolderName=folderName[ self.code ]
-            else :
-               monFolderName=str(self.code)+"Files"
-
-            if folderType.has_key(self.code) :
-               monFolderType=fileType[ self.code ]
-            else :
-               monFolderType=str(self.code)+"_FILE_FOLDER"
-
-            if fileType.has_key(self.code) :
-               monFileType=fileType[ self.code ]
-            else :
-               monFileType="FICHIER_EFICAS_"+str(self.code)
+            itemName = re.split("/", jdcPath)[-1]
+
+            if self.code in folderName:
+                monFolderName = folderName[self.code]
+            else:
+                monFolderName = str(self.code) + "Files"
+
+            if self.code in folderType:
+                monFolderType = fileType[self.code]
+            else:
+                monFolderType = str(self.code) + "_FILE_FOLDER"
+
+            if self.code in fileType:
+                monFileType = fileType[self.code]
+            else:
+                monFileType = "FICHIER_EFICAS_" + str(self.code)
 
             fatherEntry = self.editor.findOrCreateItem(
                                     moduleEntry,
-                                    name = monFolderName,
-                                    #icon = "ICON_COMM_FOLDER",
-                                    fileType = monFolderType)
-                                                                        
-            commEntry = self.editor.findOrCreateItem( fatherEntry ,
-                                           name = itemName,
-                                           fileType = monFileType,
-                                           fileName = jdcPath,
-                                           #icon    = "ICON_COMM_FILE",
-                                           comment = str( jdcPath ))
+                                    name=monFolderName,
+                                    # icon = "ICON_COMM_FOLDER",
+                                    fileType=monFolderType)
+
+            commEntry = self.editor.findOrCreateItem(fatherEntry,
+                                                     name=itemName,
+                                                     fileType=monFileType,
+                                                     fileName=jdcPath,
+                                                     # icon    = "ICON_COMM_FILE",
+                                                     comment=str(jdcPath))
 
             salome.sg.updateObjBrowser(1)
 
-            #print 'addJdcInSalome commEntry->', commEntry            
             if commEntry:
-                ok, msgError = True, ''        
-        except Exception, exc:
+                ok, msgError = True, ''
+        except Exception as exc:
             msgError = "Can't add Eficas file to Salome study tree"
-            logger.debug(msgError, exc_info = True)
+            logger.debug(msgError, exc_info=True)
             QMessageBox.warning(self, self.tr("Warning"),
                                 self.tr("%s. Raison:\n%s\n\n Voir la log pour plus de details " % (msgError, exc)))
-        return ok, msgError        
-        
-           
-    #---------------------------------------
-    def displayShape(  self, shapeName ):
-    #---------------------------------------
+        return ok, msgError
+
+    def displayShape(self, shapeName):
         """
         visualisation de nom shapeName dans salome
         """
         ok, msgError = False, ''
         try:
-        #if 1 :
             import SalomePyQt
             sgPyQt = SalomePyQt.SalomePyQt()
-            myActiveView=sgPyQt.getActiveView() 
-            if myActiveView < 0 :
-               return ok, 'pas de vue courante'
-                                     
-            currentViewType=sgPyQt.getViewType(myActiveView)
-            if str(currentViewType) != "OCCViewer" : # maillage
+            myActiveView = sgPyQt.getActiveView()
+            if myActiveView < 0:
+                return ok, 'pas de vue courante'
+
+            currentViewType = sgPyQt.getViewType(myActiveView)
+            if str(currentViewType) != "OCCViewer" # maillage
                 ok, msgError = self.displayMeshGroups(shapeName)
-            else: #geometrie
-                current_color = COLORS[ self.icolor % LEN_COLORS ]                
+            else:  # geometrie
+                current_color = COLORS[self.icolor % LEN_COLORS]
                 from salome.geom.geomtools import GeomStudyTools
-                myGeomTools=GeomStudyTools(self.editor)
-                ok = myGeomTools.displayShapeByName( shapeName, current_color )
+                myGeomTools = GeomStudyTools(self.editor)
+                ok = myGeomTools.displayShapeByName(shapeName, current_color)
                 salome.sg.FitAll()
-                self.icolor = self.icolor + 1             
+                self.icolor = self.icolor + 1
                 if not ok:
-                    msgError =self.tr("Impossible d afficher ")+shapeName
-        except:            
-        #else :
-            logger.debug(50*'=')
-        return ok, msgError    
-                
-    #---------------------------------------
+                    msgError = self.tr("Impossible d afficher ") + shapeName
+        except:
+            logger.debug(50 * '=')
+        return ok, msgError
+
     def ChercheGrpMeshInSalome(self):
-    #---------------------------------------
-        print "je passe par la"
+        print("je passe par la")
         import SMESH
         names, msg = [], ''
-        try :
-        #if 1 :
-           entries = salome.sg.getAllSelected()
-           nbEntries = len( entries )
-           names, msg = None, self.tr("Selection SALOME non autorisee.")
-           if nbEntries == 1:
+        try:
+            entries = salome.sg.getAllSelected()
+            nbEntries = len(entries)
+            names, msg = None, self.tr("Selection SALOME non autorisee.")
+            if nbEntries == 1:
                 for entry in entries:
-                    names,msg=self.giveMeshGroups(entry,"SubMeshes",SMESH.SMESH_subMesh)
-        except :
-        #else :
-           print "bim bam boum"
-        return(msg,names)
+                    names, msg = self.giveMeshGroups(entry, "SubMeshes", SMESH.SMESH_subMesh)
+        except:
+            print("bim bam boum")
+        return(msg, names)
 
-    #---------------------------------------
     def ChercheGrpMailleInSalome(self):
-    #---------------------------------------
         import SMESH
         names, msg = [], ''
-        try :
-        #if 1:
-           entries = salome.sg.getAllSelected()
-           nbEntries = len( entries )
-           names, msg = None, self.tr("Selection SALOME non autorisee.")
-           if nbEntries == 1:
+        try:
+            entries = salome.sg.getAllSelected()
+            nbEntries = len(entries)
+            names, msg = None, self.tr("Selection SALOME non autorisee.")
+            if nbEntries == 1:
                 for entry in entries:
-                    print entry
-                    names,msg=self.giveMeshGroups(entry,"Groups of",SMESH.SMESH_GroupBase)
-                    print names
-        except :
-        #else:
-           print "bim bam boum"
-        return(msg,names)
-
-
-        
-        
-        
-#-------------------------------------------------------------------------------------------------------
+                    print(entry)
+                    names, msg = self.giveMeshGroups(entry, "Groups of", SMESH.SMESH_GroupBase)
+                    print(names)
+        except:
+            print("bim bam boum")
+        return(msg, names)
+
+# -------------------------------------------------------------------------------------------------------
 #    Pilotage de la Visu des elements de structures
 #
-
-
-    def envoievisu(self,liste_commandes):
+    def envoievisu(self, liste_commandes):
         try:
             from salome.geom.structelem import StructuralElementManager, InvalidParameterError
         except ImportError:
@@ -754,12 +664,12 @@ class MyEficas( qtEficas.Appli ):
             atLeastOneStudy = self.editor.study
             if not atLeastOneStudy:
                 return
-            logger.debug(10*'#'+":envoievisu: creating a StructuralElementManager instance")
+            logger.debug(10 * '#' + ":envoievisu: creating a StructuralElementManager instance")
             structElemManager = StructuralElementManager()
             elem = structElemManager.createElement(liste_commandes)
             elem.display()
             salome.sg.updateObjBrowser(True)
-        except InvalidParameterError, err:
+        except InvalidParameterError as err:
             trStr = self.tr("Invalid parameter for group %(group)s: %(expr)s must be "
                             "greater than %(minval)g (actual value is %(value)g)")
             msg = str(trStr) % {"group": err.groupName, "expr": err.expression,
@@ -767,50 +677,48 @@ class MyEficas( qtEficas.Appli ):
             QMessageBox.warning(self, self.tr("Error"), msg)
         except:
             traceback.print_exc()
-            logger.debug(10*'#'+":pb dans envoievisu")
+            logger.debug(10 * '#' + ":pb dans envoievisu")
 
 
 class SalomeEntry:
-  """
-  This class replaces the class Accas.SalomeEntry (defined in EFICAS tool)
-  when Eficas is launched in Salome context. It handles the objects that can
-  be selected from Salome object browser.
-  By default, the selected value is the entry of the selected item in the
-  object browser. This class can be subclassed to provide more advanced
-  functions.
-  """
-  
-  help_message = u"Une entree de l'arbre d'etude de Salome est attendue"
-  
-  def __init__(self, entryStr):
-    self._entry = entryStr
-  
-  @staticmethod
-  def __convert__(entryStr):
-    return SalomeEntry(entryStr)
-  
-  @staticmethod
-  def get_selected_value(selected_entry, study_editor):
-    return selected_entry
-
-        
-#-------------------------------------------------------------------------------------------------------        
+    """
+    This class replaces the class Accas.SalomeEntry (defined in EFICAS tool)
+    when Eficas is launched in Salome context. It handles the objects that can
+    be selected from Salome object browser.
+    By default, the selected value is the entry of the selected item in the
+    object browser. This class can be subclassed to provide more advanced
+    functions.
+    """
+
+    help_message = "Une entree de l'arbre d'etude de Salome est attendue"
+
+    def __init__(self, entryStr):
+        self._entry = entryStr
+
+    @staticmethod
+    def __convert__(entryStr):
+        return SalomeEntry(entryStr)
+
+    @staticmethod
+    def get_selected_value(selected_entry, study_editor):
+        return selected_entry
+
+
+# -------------------------------------------------------------------------------------------------------
 #           Point d'entree lancement EFICAS
 #
-def runEficas( code=None, fichier=None, module = "EFICAS", version=None, componentName = "Eficas",multi=False):
-    logger.debug(10*'#'+":runEficas: START")
-    #global appli    
-    logger.debug(10*'#'+":runEficas: code="+str(code))
-    logger.debug(10*'#'+":runEficas: fichier="+str(fichier))
-    logger.debug(10*'#'+":runEficas: module="+str(module))
-    logger.debug(10*'#'+":runEficas: version="+str(version))
-
-    #if not appli: #une seul instance possible!        
-    appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
-                       module = module, version = version, componentName = componentName,multi=multi )
-    #if not appli: #une seul instance possible!        
+def runEficas(code=None, fichier=None, module="EFICAS", version=None, componentName="Eficas", multi=False):
+    logger.debug(10 * '#' + ":runEficas: START")
+    # global appli
+    logger.debug(10 * '#' + ":runEficas: code=" + str(code))
+    logger.debug(10 * '#' + ":runEficas: fichier=" + str(fichier))
+    logger.debug(10 * '#' + ":runEficas: module=" + str(module))
+    logger.debug(10 * '#' + ":runEficas: version=" + str(version))
+
+    # if not appli: #une seul instance possible!
+    appli = MyEficas(SalomePyQt.SalomePyQt().getDesktop(), code=code, fichier=fichier,
+                     module=module, version=version, componentName=componentName, multi=multi)
+    # if not appli: #une seul instance possible!
     #    appli = MyEficas( SalomePyQt.SalomePyQt().getDesktop(), code = code, fichier = fichier,
     #                      module = module, componentName = componentName, version=version )
-    logger.debug(10*'#'+":runEficas: END")
-
-        
+    logger.debug(10 * '#' + ":runEficas: END")
index 5570f7989bf4d426df814cf7dc3493c1880c7e81..db3455661987ce2f7c1b2424b9a3502ca1f79648 100644 (file)
@@ -1,73 +1,67 @@
-# -*- coding: iso-8859-1 -*-
+# -*- coding: utf8 -*-
 import salomedsgui
 import salome
 
 import SALOMEDS
-try :
+try:
     import SMESH
-except :
-    pass
-try :
-    import SMESH
-except :
+except ImportError:
     pass
 
 from salome.kernel.logger import Logger
-logger=Logger( "EficasStudy" )
+logger = Logger("EficasStudy")
 
 
-#Nom des composants SALOME dans l'arbre d'étude
-SMesh  = "Mesh"
-SGeom  = "Geometry"
-SVisu  = "Post-Pro"
+# Nom des composants SALOME dans l'arbre d'étude
+SMesh = "Mesh"
+SGeom = "Geometry"
+SVisu = "Post-Pro"
 SAster = "Aster"
 
 
-class SalomeStudy(   salomedsgui.guiDS ):
+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 
+    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 
+
+    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
+    """
+    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 
-        
-        
-                
+
+        # 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 ):         
+    #   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.
-        
+        Retourne l'objet CORBA correspondant son identifiant ( entry ) dans
+        l'arbre d'étude.
+
         @type   entry : string
-        @param  entry : objet Corba 
-        
+        @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()
+        sobject = None
+        try:
+            mySO = self._myStudy.FindObjectID(entry)
+            if mySO:
+                sobject = mySO.GetObject()
+
+                if not sobject:  # 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"
@@ -77,469 +71,447 @@ class SalomeStudy(   salomedsgui.guiDS ):
                         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()
+                    else:
+                        logger.debug('>>>>CS_Pbruno StudyTree.__getCORBAObject chargement du composant  %s non implémenté ' % componentName)
+                        raise Exception('Erreur')
+
+                    myComponent = salome.lcc.FindOrLoadComponent(strContainer, strComponentName)
+                    SCom = self._myStudy.FindComponent(strComponentName)
+                    self._myBuilder.LoadWith(SCom, myComponent)
+                    sobject = 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 ):
+            ex_type = sys.exc_info()[0]
+            ex_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 ' % (ex_type, ex_value))
+            sobject = None
+
+        return sobject
+
+    def __getEntry(self, corbaObject):
         """
-        Retourne l'identifiant ( entry ) ds l'arbre d'étude de l'objet CORBA 
-        passé en paramètre.
-                
+        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 
-        
+        @param  corbaObject   : objet Corba
+
         @rtype  :  string
         @return :  identifiant ( entry ),    None si erreur.
         """
-        entry        = None
+        entry = None
         currentStudy = self._myStudy
-                
+
         if corbaObject:
-            ior = salome.orb.object_to_string( corbaObject )
+            ior = salome.orb.object_to_string(corbaObject)
             if ior:
-                sObject = currentStudy.FindObjectIOR(  ior )                
-                entry   = sObject.GetID()
+                sObject = currentStudy.FindObjectIOR(ior)
+                entry = sObject.GetID()
         return entry
-        
-        
 
-    def setCurrentStudyID( self, studyID):
+    def setCurrentStudyID(self, studyID):
+        """
+        Fixe l'étude courante sur laquel vont opérer toutes les fonctions
+        de la classe.
         """
-        Fixe l'étude courante sur laquel vont opérer toutes les fonctions 
-        de la classe.        
-        """        
-        self._father    = None
+        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 ):        
+        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
+        Rafraichissement de l'arbre d'étude
         """
         salome.sg.updateObjBrowser(0)
-                
-    def setName( self, entry, name ):
+
+    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 )
-                
+        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
-        
+        @param  entry: identifiant de l'objet dans l'arbre d'étude
+
         @type   name: string
-        @param  name: nom à attribuer
-        
+        @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            
+            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 ) )
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.setName ( entry = %s, name = %s )' % (entry, name))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
+
         return result
 
-    def hasName( self, componentName, objectName ):
+    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.
-                
+        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 
-        
+        @param  objectName: nom de l'objet
+
         @rtype  :  boolean
         @return :  True si Ok, False sinon,  None si erreur
         """
         result = False
         try:
-            nom = {            
+            nom = {
                 SMesh:  "SMESH",
                 SGeom:  "GEOM",
                 SVisu:  "VISU",
-                SAster: "ASTER"            
+                SAster: "ASTER"
             }
-            componentName = nom[ componentName ]            
-            SObjects = self._myStudy.FindObjectByName( objectName, componentName )
-            if len( SObjects ) > 0:
-                result = True            
+            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 ) )
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.hasName ( componentName = %s, objectName = %s )' % (componentName, objectName))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
-        return result
-
-
-        
 
+        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 ):
+    #   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.
-                
+        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 
-        
+        @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 )            
+        try:
+            anObject = self.__getCORBAObject(entry)
+            shape = anObject._narrow(GEOM.GEOM_Object)
             if shape.IsMainShape():
-                result = True                        
+                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            
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.isMainShape( entry = %s ) ' % entry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
+            result = False
         return result
-        
-    
-    def getMainShapeEntry(  self,  entry ):
+
+    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.
-        
+        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.
+        @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 ):
+        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 )
+                anObject = self.__getCORBAObject(entry)
+                shape = anObject._narrow(GEOM.GEOM_Object)
+                objMain = shape.GetMainShape()
+                result = self.__getEntry(objMain)
+        except:
+            import sys
+            # ex_type = sys.exc_info()[0]
+            # ex_value = sys.exc_info()[1]
+            # print('>>>>CS_Pbruno StudyTree.getMainShapeEntry( entry = %s ) ' %entry)
+            # print('type        = %s ,             value       = %s '%( ex_type, ex_value ))
             result = None
-           
+
         return result
-        
-    def sameMainShape(  self,  shapeEntry1, shapeEntry2 ):
+
+    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
-                
+        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
-        
+        @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
-        
+        @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.
+        @return :  True si même objet principal, False sinon, None si erreur.
         """
         result = None
-        try :
-            mainShape1 = self.getMainShapeEntry( shapeEntry1 )
+        try:
+            mainShape1 = self.getMainShapeEntry(shapeEntry1)
             if mainShape1:
-                mainShape2 = self.getMainShapeEntry( shapeEntry2 )
+                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 )
+        except:
+            import sys
+            # ex_type = sys.exc_info()[0]
+            # ex_value = sys.exc_info()[1]
+            # print('>>>>CS_Pbruno StudyTree.sameMainShape(  shapeEntry1 = %s , shapeEntry2 = %s )'%( shapeEntry1, shapeEntry2 ))
+            # print('type        = %s ,             value       = %s '%( ex_type, ex_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 ):
+    #   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.
-        
+        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
-        
+        @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() )
-                
+
+        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
+                    "VERTEX": SMESH.NODE,
+                    "EDGE": SMESH.EDGE,
+                    "FACE": SMESH.FACE,
+                    "SOLID": SMESH.VOLUME,
+                    "COMPOUND":  None
                 }
-                result = meshTypeStr[ tgeo]
-                if result == None:                    
+                result = meshTypeStr[tgeo]
+                if result is None:
                     if not self.geomEngine:
-                        self.geomEngine = salome.lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
+                        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, 
+                        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]                    
+                    if int(tgeo) in meshTypeInt:
+                        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 ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.__getMeshType( shapeEntry  = %s ) ' % shapeEntry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
+
         return result
-        
-    def getAllMeshReferencingMainShape( self, mainShapeEntry ):
+
+    def getAllMeshReferencingMainShape(self, mainShapeEntry):
         """
-        Retourne une liste de tous les maillages construits à partir de l'objet
-        principal géométrique passé en argument
-        
+        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
-        
+        @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
+            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'
+                        # 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()
+                            # 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 
+                            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 :
+                                    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 ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.getAllMeshReferencingMainShape( mainShapeEntry  = %s ) ' % mainShapeEntry)
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
-            
-        return result 
-        
 
-        
-    def updateMesh( self,  meshEntry, groupeMaEntries, groupeNoEntries ):
+        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
-        
+        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
+        @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
+        @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
+            # 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
+                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 )
+                    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
+                        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
+                # 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 )
+                    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 )
+                            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 )
+                        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 ))
+            ex_type = sys.exc_info()[0]
+            ex_value = sys.exc_info()[1]
+            logger.debug('>>>>CS_Pbruno StudyTree.updateMesh( meshEntry= %s,   groupeMaEntries = %s )' % (meshEntry, groupeMaEntries))
+            logger.debug('type        = %s ,             value       = %s ' % (ex_type, ex_value))
             result = None
         return result
-        
-        
-        
-    
-        
-        
-    def createMesh( self, newMeshName, mainShapeEntry, groupeMaEntries, groupeNoEntries ):
+
+    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é.
+        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        
-        
+        @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
+        @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
+        @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.
-        """        
+        @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 )
+            # 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
+            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 )                    
+                    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 )
+                        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 ))
+            ex_type = sys.exc_info()[0]
+            ex_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 ' % (ex_type, ex_value))
             result = None
         return result
 
 
-
-    
-           
-
-    
-    
-    
 # --------------------------------------------------------------------------
 #   INIT
 study = SalomeStudy()
-