]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
sauvegarde 20 fevrier apres chgt des viewmangager en editor manager (qt et commun...
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Tue, 20 Feb 2024 07:35:48 +0000 (08:35 +0100)
committerPASCALE NOYRET <pascale.noyret@edf.fr>
Tue, 20 Feb 2024 07:35:48 +0000 (08:35 +0100)
20 files changed:
Accas/catalog/reader_cata.py
Accas/extensions/param2.py
Accas/processing/P_CR.py
Accas/processing/P_ENTITE.py
Accas/processing/P_Exception.py
Accas/processing/P_VALIDATOR.py
Accas/processing/P_types.py
Accas/processing/P_utils.py
Accas/processing/nommage.py
Accas/processing/strfunc.py
Editeur/editor.py
Editeur/editor_manager.py
Editeur/eficas_appli.py
Editeur/eficas_go.py
InterfaceGUI/QT5/qt_editor.py
InterfaceGUI/QT5/qt_editor_manager.py
InterfaceGUI/QT5/qt_eficas.py
InterfaceGUI/Web/accasConnecteur.py [new file with mode: 0755]
InterfaceGUI/Web/web_eficas.py [new file with mode: 0755]
InterfaceGUI/cinqC/qt_eficas.py

index 2c5c06957f865b38114a75f4f6635568446fde84..4910e52fee6babdca57b721ca28dfeda00d2b9cd 100644 (file)
@@ -38,6 +38,11 @@ from Accas.extensions.eficas_exception import EficasException
 # -----------------------------
 class ReaderCataCommun(object):
 # -----------------------------
+# le catacommun a ete mis en place
+# lors des tentatives pour decrire le catalogue en XML
+# Garde pour pouvoir demander un cata en web
+# mais il va falloir revoir quelle fonction est ou (exple askChoixCata est mal place)
+# en tenant compte de cette nouvelle division
 
     def askChoixCatalogue(self, cataListeChoix):
     #____________________________________________
index 2e4f443cabd057cb97a386a411fd573df51443f3..bf8bfec44317788dfe37e6a163c65adaf7c22171 100644 (file)
@@ -138,9 +138,8 @@ class Formula(object):
 
 
 def _div(a, b):
-    import six
     import types
-    if isinstance(a, six.integer_types) and isinstance(b, six.integer_types):
+    if isinstance(a, str) and isinstance(b, int):
         if a % b:
             return a / b
         else:
index bc4fd661075e3fa0fe4ed3439e5087655a8b9fbc..fc1e0b1496c544c4540c7868f9e4d5e3496d7dbd 100644 (file)
@@ -134,10 +134,10 @@ class CR(object):
         s = s + "".join(self.crexception_belle)
         for subcr in self.subcr:
             if self.verbeux == "oui":
-                s = s + six.text_type(subcr) + "\n"
+                s = s + str.text_type(subcr) + "\n"
             else:
                 if not subcr.estvide():
-                    s = s + six.text_type(subcr)
+                    s = s + str(subcr)
         if s != "":
             s = self.debut + "\n" + self.indent(s) + self.fin + "\n"
         else:
index 9d99f345ddbde838434ab2c94976e2430cf4cd44..95989ad7bf251692ac27c87d749c2f4b61d0d8d5 100644 (file)
@@ -24,9 +24,7 @@
 from Accas.processing import P_CR
 from Accas.processing import P_OPS
 
-import six
-
-stringTypes = (str, six.text_type)
+stringTypes = ((str,))
 
 
 class ENTITE(object):
index 7f80a92e61f47942803af033615d5d9a7a935d3d..d7023d30b424c301ad0a3bbac2d30ae493cd4c18 100644 (file)
 # Modules EFICAS
 
 from .strfunc import getEncoding, toUnicode
-import six
-
 
 class AsException(Exception):
     def __unicode__(self):
         args = []
         for x in self.args:
             ustr = toUnicode(x)
-            if type(ustr) is not six.text_type:
-                ustr = six.text_type(repr(x))
+            if type(ustr) is not (str,):
+                ustr = str(repr(x))
             args.append(ustr)
         return " ".join(args)
 
     def __str__(self):
-        return six.text_type(self).encode(getEncoding())
+        return self.encode(getEncoding())
 
 
 class InterruptParsingError(Exception):
index 6480c97eed97846905e62f6ff2dee80bd19d5770..c47186661b4695b834a6268a9c8afdaee4cfc881 100644 (file)
@@ -1387,7 +1387,7 @@ class PairVal(ListVal):
         return valeur
 
     def verifItem(self, valeur):
-        if type(valeur) not in six.integer_types:
+        if type(valeur) not in (int,):
             return 0
         return valeur % 2 == 0
 
@@ -1532,15 +1532,6 @@ class FunctionVal(Valid):
         return valeur
 
 
-# MC ca ne devrait plus servir !
-# PN : commenter le 22.11.19
-# CoercableFuncs = {int:     int,
-#                  int:    int,
-#                  float:   float,
-#                  complex: complex,
-#                  str: six.text_type}
-
-
 class TypeVal(ListVal):
 
     """
index cd12af6799288e49cff36d197c7bc92c31c14f34..5f71d341428096c504c56f340391a24caad5ac34 100644 (file)
@@ -49,10 +49,7 @@ def isNumber(obj):
 
 
 def isStr(obj):
-    import six
-
-    return isinstance(obj, (str, six.text_type))
-
+    return isinstance(obj, str)
 
 def isList(obj):
     return type(obj) is list
index eac86bef1b3a6c0dcc09e4a63ce71798b5e0db91..33296f652a6a0ee1d534cc6605d6f8730c24de39 100644 (file)
@@ -50,12 +50,7 @@ def calleeWhere(niveau=4):
     if frame == None:
         return 0, "inconnu", 0, {}
     try:
-        # Python 2.7 compile function does not accept unicode filename, so we encode it
-        # with the current locale encoding in order to have a correct traceback.
-        # Here, we convert it back to unicode.
-        import six
-
-        filename = six.text_type(frame.f_code.co_filename, getEncoding())
+        filename = str(frame.f_code.co_filename, getEncoding())
         return frame.fLineNo, filename, frame.f_code.co_firstlineno, frame.f_locals
     except:
         return 0, "inconnu", 0, {}
index 6523843339537a117502dce7dc71c01e66405d7c..0566e33d7f1b6dce4aa29a4fafe740f89394bf89 100644 (file)
@@ -73,9 +73,7 @@ def _getNomConceptResultat(ope, level=2):
     if sys.version_info >= (3, 0):
         filename = co.co_filename
     else:
-        import six
-
-        filename = six.text_type(co.co_filename, getEncoding())
+        filename = co.co_filename.encode(getEncoding())
     name = co.co_name
     # pattern pour identifier le debut de la commande
     pattern_oper = re.compile(regex1 % ope)
index 52cd2154d8cd7da3d8d3aa94c83c0916c18d6bbf..b89ca55a56fcfb91574f70106f974b433a54d380 100644 (file)
@@ -23,7 +23,6 @@ de chaines de caractères
 
 
 import locale
-import six
 
 _encoding = None
 
@@ -41,7 +40,7 @@ def getEncoding():
 
 def toUnicode(string):
     """Try to convert string into a unicode string."""
-    if type(string) is six.text_type:
+    if type(string) in (str,) :
         return string
     elif type(string) is dict:
         new = {}
@@ -57,8 +56,7 @@ def toUnicode(string):
     assert type(string) is str, "unsupported object: %s" % string
     for encoding in ("utf-8", "iso-8859-15", "cp1252"):
         try:
-            s = six.text_type(string, encoding)
+            s = string.encode(encoding)
             return s
         except UnicodeDecodeError:
-            pass
-    return six.text_type(string, "utf-8", "replace")
+            return string
index 0d15b3398871220ce2903632f339cdcdba753099..c307fc39a7ea64b59c5a1625c6a0232b3c791559 100755 (executable)
@@ -371,45 +371,38 @@ class Editor:
             dico = self.myWriter.generDico(self.jdc)
             return dico
 
-    # -----------------------#
-    def viewJdcSource(self):
-    # -----------------------#
-        if self.fichier == None:
-            return
+    # --------------------------#
+    def getJdcFichierSource(self):
+    # --------------------------#
+        if self.fichier == None: return "fichier source non defini"
         if os.path.isfile(self.fichier):
             f = open(self.fichier, "r")
             texteSource = f.read()
             f.close()
-            self._viewText(texteSource, "JDC_SOURCE")
+            return texteSource
         else:
+            return "le fichier source n existe pas"
             self._viewText("file doesn't exist", "JDC_SOURCE")
 
-    # -----------------------#
-    def viewJdcPy(self):
-    # -----------------------#
-        strSource = str(self.getTextJDC(self.formatFichierOut))
-        self._viewText(strSource, "JDC_RESULTAT")
+    # -----------------------------#
+    def getJdcFichierResultat(self):
+    # -----------------------------#
+        strResult = str(self.getTextJDC(self.formatFichierOut))
+        return strResult
 
     # -----------------------#
-    def viewJdcRapport(self):
+    def getJdcRapport(self):
     # -----------------------#
         # on ajoute les regles
         strRapport = str(self.jdc.report())
-        self._viewText(strRapport, "JDC_RAPPORT")
-
-    # -----------------------#
-    def viewJdcRegles(self):
-    # -----------------------#
-        # on ajoute les regles
-        texte_global, test_global = self.jdc.verifRegles()
-        self._viewText(texte_global, "JDC_REGLES")
+        return strRapport
 
     # -----------------------#
-    def getJdcRapport(self):
+    def getJdcRegles(self):
     # -----------------------#
         # on ajoute les regles
-        strRapport = str(self.jdc.report())
-        return strRapport
+        texteGlobal, testOK = self.jdc.verifRegles()
+        return texteGglobal
 
     # ---------------------#
     def getFileName(self):
index ad4d4ab7e976add609ca0f74283575a1fe0be26d..544af1e4900bee018cd9c7d2e3b050df9579e5f8 100644 (file)
@@ -19,6 +19,7 @@
 #
 
 import os
+from uuid import uuid1
 
 # --------------------------
 class EditorManager(object):
@@ -28,7 +29,6 @@ class EditorManager(object):
     permettent de gerer plusieurs ouvertures de fichiers simultannees en IHM
     utilisee sans etre derivee pour le dumpXSD ou les transformations 
     """
-    counter = 0
     # remplace par l index du viewManager 
 
     # --------------------------------
@@ -63,10 +63,26 @@ class EditorManager(object):
             self.appliEficas.afficheMessage('Eficas sans Ihm', 'impossible d allouer un editor')
             return None
         self.editors.append(editor)
-        self.dictEditors[EditorManager.counter] = editor
-        EditorManager.counter += 1
+        idEditor = uuid1().hex
+        self.dictEditors[idEditor] = editor
+        editor.idEditor = idEditor
         return editor
 
+    # ------------------------
+    def getEditorById(self,id):
+    # ------------------------
+        if id in self.dictEditors:
+            editor = self.dictEditors[indexEditor]
+            return editor
+        return None
+
+    # --------------------------------
+    def setCurrentEditorById(self,id):
+    # --------------------------------
+        print ('a Programmer')
+        return True
+      
+
     # -------------------------
     def samePath(self, f1, f2):
     # --------------------------
index 41bd147a5d44f67160d47cc79fc8e99698da02c1..0ac2529413618e3e84c87fc51c8ede4f93cbe913 100755 (executable)
@@ -29,8 +29,9 @@ class EficasAppli:
     Class implementing the main user interface.
     """
 
-    def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath=None):
-    #--------------------------------------------------------------------------------------------------------------------------------
+    #---------------------------------------------------------------------------------------------------------------------------------------------
+    def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath=None, appWeb=None):
+    #---------------------------------------------------------------------------------------------------------------------------------------------
         """
         Constructor d appli eficas. classe mere de appli-qtEficas et de appli-web eficas et utilisee sans IHM pour les
         transformations des catas en XSD, des comm en XML et de validation des donnees
@@ -47,6 +48,7 @@ class EficasAppli:
         self.ssCode = ssCode
         self.multi = multi
         self.salome = salome
+        self.appWeb = appWeb
 
         version = getEficasVersion()
         self.versionEficas = "Eficas Salome " + version
@@ -89,12 +91,15 @@ class EficasAppli:
         self.genereXSD = False
         from Editeur.editor_manager import EditorManager
         self.editorManager = EditorManager(self)
+        # Attention n appelle pas openFiles car les classes derivees
+        # changent l editorManager
 
-    def ajoutUQ(self):
-    #-----------------
-        self.withUQ = True
-        self.formatFichierIn = "pythonUQ"  # par defaut
+    #--------------------
+    def getVersion(self):
+    #--------------------
+        return getEficasVersion()
 
+    #-----------------------------------
     def definitCode(self, code, ssCode):
     #-----------------------------------
         # ssCode sert pour Map
@@ -116,12 +121,12 @@ class EficasAppli:
         if hasattr(self, "maConfiguration") and self.maConfiguration.translatorFile:
             from Accas.extensions import localisation
             localisation.localise( None, self.langue,
-                translatorFile=self.maConfiguration.translatorFile,
-            )
+                translatorFile=self.maConfiguration.translatorFile,)
 
         # Comment faire si Multi ?
         self.withXSD   = session.d_env.withXSD
 
+    #-------------------------
     def getSource(self, file):
     #-------------------------
         # appele par Editeur/session.py
@@ -132,56 +137,67 @@ class EficasAppli:
         texte = p.convert("execnoparseur")
         return texte
 
-    def initEditor(self, fichier=None, jdc=None, units=None, include=0):
     #------------------------------------------------------------------
+    def newEditor(self, fichier=None, jdc=None, units=None, include=0):
+    #------------------------------------------------------------------
+        #PN reflechir a ce que cela veut dire d avoir plusieurs editeurs
         if (hasattr(self, "editor")) and self.editor != None:
             print("un seul editeur par application eficas_appli ")
             sys.exit()
         self.editor = self.editorManager.getNewEditor()
+        return self.editorId
 
-    def fileNew(self):
-    #-----------------
-        self.editor = self.initEditor()
-
+    #-------------------
     def getEditor(self):
     #-------------------
-        if (hasattr(self, "editor")) and self.editor != None:
-            return self.editor
-        self.initEditor()
+        if (hasattr(self, "editor")) and self.editor != None: return self.editor
+        self.newEditor()
         return self.editor
 
-    def fileOpen(self, fichier):
+    #--------------------------
+    def getEditorById(self,id):
+    #--------------------------
+        return self.editorManager.getEditorById(self,id)
+
+    #----------------------------------
+    def setCurrentEditorById(self,id):
+    #----------------------------------
+        return self.editorManager.setCurrentEditorById(self,id)
+
+    #---------------------------
+    def openFile(self, fichier):
     #---------------------------
-        fichierIn = os.path.abspath(fichier)
         try:
-            monEditor = self.editorManager.handleOpen(fichierIn)
+            monEditor = self.editorManager.openFile(fichier)
         except EficasException as exc:
-            print("poum")
+            afficheMessage(self, 'erreur ouverture fichier', str(exc),critical=True)
             monEditor = None
         return monEditor
 
+    #------------------
     def fileSave(self):
     #-------------------
-        if self.editor == None:
-            return False
-        ok, newName = editor.saveFileAs()
-        print("ok, newName ", ok, newName)
+        return self.editorManager.saveFile()
 
+    #------------------------------
     def fileSaveAs(self, fileName):
-    #-----------------_------------
+    #------------------------------
+        return self.editorManager.saveFile()
         if self.editor == None:
             return False
         ok = editor.saveFileAs()
         print("ok ", ok)
 
+    #-----------------------------------------
     def dumpXsd(self, avecEltAbstrait=False):
     #-----------------------------------------
         currentCata = CONTEXT.getCurrentCata()
         texteXSD = currentCata.dumpXsd(avecEltAbstrait)
         return texteXSD
 
+    #---------------------------------------------------
     def afficheMessage(self, titre, texte,critical=True):
-    #-----------------------------------------------------
+    #----------------------------------------------------
         print ('__________________________')
         print (tr(titre))
         print ('')
@@ -189,6 +205,122 @@ class EficasAppli:
         print ('__________________________')
 
 
+    #-------------------
+    def saveUQFile(self):
+    #-------------------
+        self.editorManager.saveUQFile()
+
+    #----------------------
+    def exeUQScript(self):
+    #----------------------
+        self.editorManager.exeUQScript()
+
+    #----------------------
+    def savePersalys(self):
+    #----------------------
+        self.editorManager.savePersalys()
+
+    #----------------------
+    def ajoutCommentaire(self):
+    #----------------------
+        self.editorManager.ajoutCommentaire()
+
+    #----------------------
+    def openFiles(self):
+    #----------------------
+        # Ouverture des fichiers de commandes donnes sur la ligne de commande
+        cwd = os.getcwd()
+        self.dir = cwd
+        for study in session.d_env.studies:
+            os.chdir(cwd)
+            d = session.getUnit(study, self)
+            self.editorManager.openFile(fichier=study["comm"], units=d)
+
+
+    #----------------------
+    def saveFullFile(self):
+    #----------------------
+    # Pour Telemac
+        return self.editorManager.saveCompleteCurrentEditor()
+
+    #-----------------
+    def fileNew(self):
+    #-------------------
+        try:
+            self.editorManager.newEditor()
+        except EficasException as exc:
+            msg = str(exc)
+            if msg != "":
+                QMessageBox.warning(self, tr("Erreur"), msg)
+
+
+    #------------------------------
+    def fileSaveInLigneFormat(self):
+    #------------------------------
+        return self.editorManager.fileSaveInLigneFormat()
+
+    #------------------
+    def fileSave(self):
+    #------------------
+        return self.editorManager.handleSave()
+
+    #--------------------
+    def fileSaveAs(self):
+    #--------------------
+        return self.editorManager.handleSaveAs()
+
+    #-------------------
+    def fileClose(self):
+    #-------------------
+        return self.editorManager.fileClose()
+
+    #-------------------
+    def closeAllFiles(self):
+    #-------------------
+        self.editorManager.closeAllFiles()
+
+    #------------
+    def run(self):
+    #-------------
+        self.editorManager.run()
+
+    #----------------
+    def saveRun(self):
+    #----------------
+        self.editorManager.saveRun()
+
+    #--------------------------
+    def getJdcFichierSource(self):
+    #--------------------------
+        return self.editorManager.getJdcFichierSource()
+
+    #-----------------------
+    def getJdcRapport(self):
+    #-----------------------
+        return self.editorManager.getJdcRapport()
+
+    #-----------------------
+    def getJjdcRegles(self):
+    #-----------------------
+        return self.editorManager.JdcRegles()
+
+    #------------------------------
+    def getJdcFichierResultat(self):
+    #------------------------------
+        self.editorManager.getJdcFichierResultat()
+
+    #------------------------------------
+    def handleAjoutEtape(self, nomEtape):
+    #------------------------------------
+        self.editorManager.handleAjoutEtape(nomEtape)
+
+    #----------------
+    def ajoutUQ(self):
+    #----------------
+        self.withUQ = True
+        self.formatFichierIn = "pythonUQ"  # par defaut
+
+
 if __name__ == "__main__":
     # Modules Eficas
     pass
index 2e1419058d3ef7677cabef54086b8794d01c9362..e7009e33cf9e567b9bf0cc57d196ae81453f0c1a 100755 (executable)
@@ -62,7 +62,7 @@ def lanceQtEficas(code=None, versionCode = None, multi=False, langue="en",  GUIP
     sys.exit(res)
 
 
-def getEficas( code=None, multi=False, langue="en", forceXML=False,  fichierCata=None,GUIPath=None):
+def getEficas( code=None, multi=False, langue="en", forceXML=False, fichierCata=None,GUIPath=None, appWeb = None):
 # ------------------------------------------------------------------------------------------------------------------
     """
     instancie l'appli EFICAS sans Ihm
@@ -86,7 +86,7 @@ def getEficas( code=None, multi=False, langue="en", forceXML=False,  fichierCata
         print ('lancement de Eficas avec GUIPath = {}'.format(GUIPath))
         from Editeur.eficas_appli import EficasAppli
 
-    Eficas = EficasAppli(code=code, multi=multi, langue=langue, ssCode=ssCode, versionCode=versionCode,  fichierCata=fichierCata, GUIPath=GUIPath)
+    Eficas = EficasAppli(code=code, multi=multi, langue=langue, ssCode=ssCode, versionCode=versionCode,  fichierCata=fichierCata, GUIPath=GUIPath, appWeb=None)
     return Eficas
 
 
index 9b959122cb5700fc48b40b99566dd8177e0cd85c..d39d0d16c8fe16636a0b1432917dbccde7db16ca 100755 (executable)
@@ -80,8 +80,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
 
         if self.maConfiguration.closeArbre: self.fermeArbre()
         if self.maConfiguration.closeOptionnel: self.fermeOptionnel()
-        if self.maConfiguration.boutonDsMenuBar:
-            self.appliEficas.remplitIconesCommandes()
+        if self.maConfiguration.boutonDsMenuBar: self.appliEficas.remplitIconesCommandes()
 
         self.formatFichierOut = self.appliEficas.formatFichierOut
         self.formatFichierIn = self.appliEficas.formatFichierIn
@@ -289,14 +288,14 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
             self.node_selected[0].deleteMultiple(self.node_selected)
 
     # ------------------------#
-    def handleRechercher(self):
+    def rechercherConceptOuMotClef(self):
     # ------------------------#
         from InterfaceGUI.QT5.monRecherche import DRecherche
         monRechercheDialg = DRecherche(parent=self, fl=0)
         monRechercheDialg.show()
 
     # -----------------------------------#
-    def handleRechercherDsCatalogue(self):
+    def rechercherMotClefDsCatalogue(self):
     # -----------------------------------#
         from InterfaceGUI.QT5.monRechercheCatalogue import DRechercheCatalogue
 
@@ -304,7 +303,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
         monRechercheDialg.show()
 
     # ---------------------#
-    def handleDeplier(self):
+    def deplier(self):
     # ---------------------#
         if self.tree == None:
             return
@@ -708,15 +707,15 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
 
 
     # -----------------------------------------#
-    def handleAjoutGroup(self, listeGroup):
+    def ajoutGroupe(self, listeGroup):
     # -----------------------------------------#
         try:
             # if 1:
-            from InterfaceGUI.QT5.ajoutGroupe import handleAjoutGroupFiltre
+            from InterfaceGUI.QT5.ajoutGroupe import ajoutGroupeFiltre
 
             # print listeGroup
-            handleAjoutGroupFiltre(self, listeGroup)
-            # print "apres handleAjoutGroupFiltre"
+            ajoutGroupeFiltre(self, listeGroup)
+            # print "apres ajoutGroupeFiltre"
         except:
             # else :
             pass
@@ -1202,12 +1201,35 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
             pass
         return indexNoeud
 
+    # ----------------------------#
+    def viewJdcFichierSource(self):
+    # ----------------------------#
+        strSource = self.getJdcFichierSource() 
+        self._viewText(strSource, "JDC Source")
+
+    # ----------------------------#
+    def viewJdcFichierResultat(self):
+    # ----------------------------#
+        strResultat = self.getJdcFichierResultat() 
+        self._viewText(strResultat, "JDC Resultat")
 
+    # -----------------------#
+    def viewJdcRegles(self):
+    # -----------------------#
+        strRegle = self.getJdcRegles() 
+        self._viewText(strRegle, "Regles du JDC")
+
+    # ----------------------------#
+    def viewJdcRapport(self):
+    # ----------------------------#
+        strRapport = self.getJdcRapport() 
+        self._viewText(strRappoer, "Rapport Validation du JDC")
+  
     # ------------------#
     def _newJDCCND(self):
     # ------------------#
         """ obsolete """
-    # allait chercher les groupes moed. gardé pour l exemple
+    # allait chercher les groupes med. gardé pour l exemple
         extensions = tr("Fichiers Med (*.med);;" "Tous les Fichiers (*)")
         QMessageBox.information(
             self, tr("Fichier Med"), tr("Veuillez selectionner un fichier Med")
index 0a095cd6f7bb96aa7cf196305a098b0cfbf8a9d5..011d68ea40780471f2d95f729f789e4ae22d1808 100644 (file)
@@ -50,11 +50,20 @@ class QtEditorManager(EditorManager):
     def indexChanged(self):
     #----------------------
         index = self.myQtab.currentIndex()
-        EditorManager.indexChanged(self,index)
-
-    #----------------------------------------------
-    def handleOpen(self, fichier=None, units=None):
-    #----------------------------------------------
+        if index in self.dictEditors:
+            editor = self.dictEditors[index]
+            if editor.jdc != None:
+                CONTEXT.unsetCurrentJdC()
+                CONTEXT.setCurrentJdC(editor.jdc)
+            self.appliEficas.maConfiguration = editor.maConfiguration
+            self.appliEficas.code = editor.maConfiguration.code
+            self.appliEficas.setWindowTitle(editor.titre)
+            self.appliEficas.construitMenu()
+         
+
+    #-------------------------------------------------------
+    def openFile(self, fichier=None, units=None, patron =0):
+    #-------------------------------------------------------
         result = None
         if self.appliEficas.code == None:
             self.appliEficas.definitCode(None, None)
@@ -73,8 +82,7 @@ class QtEditorManager(EditorManager):
                 self.appliEficas.maConfiguration.saveDir,
                 extensions,)
             fichier = fichier[0]
-
-        if len(fichier) == 0: return None
+            if len(fichier) == 0: return None
 
         fichier = os.path.abspath(fichier)
         ulfile = os.path.abspath(fichier)
@@ -89,16 +97,16 @@ class QtEditorManager(EditorManager):
     #--------------------------------
     def closeTab(self, indexAFermer):
     #--------------------------------
-        self.handleClose(indexAFermer=indexAFermer)
+        self.fileClose(index=indexAFermer)
 
-    #--------------------------------------------------------
-    def handleClose(self, index = None, texte=tr("&Quitter")):
-    #--------------------------------------------------------
-        self.appliEficas.sauveRecents()
+    #-------------------------------
+    def fileClose(self, index=None):
+    #--------------------------------
+        self.appliEficas.saveListRecentlyOpen()
         if not index : index = self.myQtab.currentIndex()
         if index < 0: return
 
-        res = self.checkDirty(self.dictEditors[index], texte)
+        res = self.checkDirty(self.dictEditors[index], tr("&Quitter"))
         if res == 2: return 2  # l utilisateur a annule
         idx = index
         while idx < len(self.dictEditors) - 1:
@@ -129,42 +137,42 @@ class QtEditorManager(EditorManager):
         editor.saveRun()
 
     #---------------------------------------------
-    def handleCloseAll(self, texte=tr("Quitter")):
+    def closeAllFiles(self, texte=tr("Quitter")):
     #---------------------------------------------
         res = 0
-        self.appliEficas.sauveRecents()
+        self.appliEficas.saveListRecentlyOpen()
         while len(self.dictEditors) > 0:
             self.myQtab.setCurrentIndex(0)
-            res = self.handleClose(0, texte)
+            res = self.fileClose(0)
             if res == 2: return res  # l utilsateur a annule
         return res
 
     #--------------------------
-    def handleRechercher(self):
+    def rechercherConceptOuMotClef(self):
     #--------------------------
-        # print "passage dans handleRechercher"
+        # print "passage dans rechercherConceptOuMotClef"
         index = self.myQtab.currentIndex()
         if index < 0: return
         editor = self.dictEditors[index]
-        editor.handleRechercher()
+        editor.rechercherConceptOuMotClef()
 
     #-------------------------------------
-    def handleRechercherDsCatalogue(self):
+    def rechercherMotClefDsCatalogue(self):
     #-------------------------------------
-        # print "passage dans handleRechercher"
+        # print "passage dans rechercherConceptOuMotClef"
         index = self.myQtab.currentIndex()
         if index < 0:
             return
         editor = self.dictEditors[index]
-        editor.handleRechercherDsCatalogue()
+        editor.rechercherMotClefDsCatalogue()
 
     #-----------------------
-    def handleDeplier(self):
+    def deplier(self):
     #-----------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
         editor = self.dictEditors[index]
-        editor.handleDeplier()
+        editor.deplier()
 
     #------------------------
     def handleEditCopy(self):
@@ -225,12 +233,12 @@ class QtEditorManager(EditorManager):
         self.newEditor(include=1)
 
     #------------------------------------
-    def handleViewJdcFichierSource(self):
+    def viewJdcFichierSource(self):
     #------------------------------------
         index = self.myQtab.currentIndex()
         if index < 0:
             return
-        self.dictEditors[index].viewJdcSource()
+        self.dictEditors[index].viewJdcFichierSource()
 
     #--------------------
     def ouvreArbre(self):
@@ -254,9 +262,9 @@ class QtEditorManager(EditorManager):
         editor = self.dictEditors[index]
         editor.ajoutCommentaire()
 
-    #-----------------------------
-    def handleViewJdcRegles(self):
-    #-----------------------------
+    #----------------------
+    def viewJdcRegles(self):
+    #-----------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
         self.dictEditors[index].viewJdcRegles()
@@ -274,15 +282,15 @@ class QtEditorManager(EditorManager):
             return
         self.dictEditors[index].gestionParam()
 
-    #------------------------------
-    def handleViewJdcRapport(self):
-    #------------------------------
+    #------------------------
+    def viewJdcRapport(self):
+    #-------------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
         self.dictEditors[index].viewJdcRapport()
 
     #-------------------------
-    def handleViewJdcPy(self):
+    def viewJdcPy(self):
     #-------------------------
         index = self.myQtab.currentIndex()
         if index < 0:
@@ -309,7 +317,7 @@ class QtEditorManager(EditorManager):
         return ok
 
     #------------------------
-    def handleSortieUQ(self):
+    def saveUQFile(self):
     #------------------------
         index = self.myQtab.currentIndex()
         if index < 0:
@@ -319,7 +327,7 @@ class QtEditorManager(EditorManager):
         return ok
 
     #---------------------------------
-    def handleSauvePourPersalys(self):
+    def savePersalys(self):
     #---------------------------------
         index = self.myQtab.currentIndex()
         if index < 0:
@@ -329,7 +337,7 @@ class QtEditorManager(EditorManager):
         return ok
 
     #---------------------
-    def handleExeUQ(self):
+    def exeUQScript(self):
     #---------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
@@ -338,7 +346,7 @@ class QtEditorManager(EditorManager):
         return ok
 
     #-------------------------
-    def handleSaveLigne(self):
+    def fileSaveInLigneFormat(self):
     #-------------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
@@ -476,13 +484,13 @@ class QtEditorManager(EditorManager):
                 return ok
         return res
 
-    #---------------------------------------
-    def handleAjoutGroup(self, listeGroup):
-    #---------------------------------------
+    #---------------------------------
+    def ajoutGroupe(self, listeGroup):
+    #---------------------------------
         index = self.myQtab.currentIndex()
         if index < 0: return
         editor = self.dictEditors[index]
-        editor.handleAjoutGroup(listeGroup)
+        editor.ajoutGroupe(listeGroup)
 
     #------------------------------------------------------------------------
     def handleFonctionUtilisateur(self, laFonctionUtilisateur, lesArguments):
index a2a3f45f9fa035f0b59be144349fd4afb2f1c91a..2b530b910af387f068ff295c8d75e3ce37ed16b9 100755 (executable)
@@ -38,10 +38,12 @@ from Accas.extensions import param2
 class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     """
     Class implementing the main QT user interface.
+    contains mainly overloading with qt widgets
+    manages the main window and connect qt
     """
 
     #----------------------------------------------------------------------------------------------------------------------------------------------
-    def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5"):
+    def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5", appWeb = None):
     #----------------------------------------------------------------------------------------------------------------------------------------------
         """
         Constructor
@@ -49,15 +51,12 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         QMainWindow.__init__(self)
         Ui_Eficas.__init__(self)
         self.setupUi(self)
-
-        EficasAppli.__init__( self, code, versionCode, salome, multi, langue,  ssCode, fichierCata, GUIPath)
-        print (self.myQtab)
+        EficasAppli.__init__( self, code, versionCode, salome, multi, langue,  ssCode, fichierCata, GUIPath, appWeb)
         
         self.editorManager = QtEditorManager(self)
 
         self.GUIPath = GUIPath
         self.suiteTelemac = self.maConfiguration.suiteTelemac
-
         self.multi = multi
         if self.multi : 
             self.definitCode(code, None)
@@ -70,9 +69,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
 
         from Accas.extensions import localisation
         localisation.localise(None, self.langue, translatorFile=self.maConfiguration.translatorFile,)
-
         self.repIcon = os.path.join( os.path.dirname(os.path.abspath(__file__)),"..", "..", "Editeur", "icons")
-        app = QApplication
 
         if not self.salome:
             self.resize(self.maConfiguration.taille, self.height())
@@ -125,15 +122,18 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
 
         if self.code != None: self.construitMenu()
         self.setWindowTitle(self.versionEficas)
-
-        try:
-            # if 1 :
-            # print ('attention try devient if 1')
-            self.ouvreFichiers()
+        try :
+        #if 1 :
+         #print ('attention try devient if 1')
+            self.openFiles()
         except EficasException as exc:
-            # except:
-            print("je suis dans le except du ouvreFichier")
-            if self.salome == 0 : exit(1)
+            print ("je suis dans le except", exc)
+            if self.salome == 0 : exit()
+
+    #-------------------------
+    def openFileFromMenu(self):
+    #-------------------------
+        self.editorManager.openFile()
 
     #--------------------
     def closeEntete(self):
@@ -160,7 +160,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     def construitMenu(self):
     #-----------------------
         self.initPatrons()
-        self.initRecents()
+        self.readListRecentlyOpen()
         self.initAides()
         for intituleMenu in (
             "menuTraduction",
@@ -222,15 +222,15 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
             tr("Sauvegarde des fichiers pour l'étude incertaine")
         )
         self.menuUQ.addAction(self.actionSaveUQ)
-        self.actionSaveUQ.triggered.connect(self.handleSortieUQ)
+        self.actionSaveUQ.triggered.connect(self.saveUQFile)
         self.actionExeUQ = QAction(self)
         self.actionExeUQ.setText(tr("Sauvegarde et Lancement de l'étude"))
         self.menuUQ.addAction(self.actionExeUQ)
-        self.actionExeUQ.triggered.connect(self.handleExeUQ)
+        self.actionExeUQ.triggered.connect(self.exeUQScript)
         self.actionSauvePersalys = QAction(self)
         self.actionSauvePersalys.setText(tr("Sauvegarde du script Persalys"))
         self.menuUQ.addAction(self.actionSauvePersalys)
-        self.actionSauvePersalys.triggered.connect(self.handleSauvePourPersalys)
+        self.actionSauvePersalys.triggered.connect(self.savePersalys)
         # self.actionEnregistrer.setDisabled(True)
         # self.actionEnregistrer_sous.setDisabled(True)
 
@@ -307,12 +307,9 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     #-------------------------------------
     def connectRechercherDsCatalogue(self):
     #------------------------------------
-        if hasattr(self, "rechercherDejaLa"):
-            return
+        if hasattr(self, "rechercherDejaLa"): return
         self.rechercherDejaLa = True
-        self.actionRechercherDsCatalogue.triggered.connect(
-            self.handleRechercherDsCatalogue
-        )
+        self.actionRechercherDsCatalogue.triggered.connect( self.rechercherDejaLaechercherMotClefDsCatalogue)
 
     #-----------------------------
     def ajoutSortieComplete(self):
@@ -324,35 +321,43 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         self.menuFichier.insertAction(
             self.actionEnregistrer_sous, self.actionSortieComplete
         )
-        self.actionSortieComplete.triggered.connect(self.handleSortieComplete)
-
+        self.actionSortieComplete.triggered.connect(self.saveFullFile)
 
+    #--------------
     def ADAO(self):
+    #--------------
         self.enleverActionsStructures()
         self.enlevernewInclude()
 
-
+    #-----------------
     def TELEMAC(self):
+    #-----------------
         self.enleverActionsStructures()
         self.enlevernewInclude()
         self.connectRechercherDsCatalogue()
         self.ajoutSortieComplete()
 
+    #-------------------------
     def lookSuiteTelemac(self):
+    #-------------------------
         self.enleverActionsStructures()
         self.enlevernewInclude()
         self.enleverParametres()
         self.enleverSupprimer()
         self.enleverRechercherDsCatalogue()
 
+    #------------------------
     def ChercheGrpMesh(self):
+    #------------------------
         Msg, listeGroup = self.ChercheGrpMeshInSalome()
         if Msg == None:
-            self.editorManager.handleAjoutGroup(listeGroup)
+            self.editorManager.ajoutGroupe(listeGroup)
         else:
             print("il faut gerer les erreurs")
 
+    #------------------------
     def ChercheGrpMaille(self):
+    #------------------------
         # Normalement la variable self.salome permet de savoir si on est ou non dans Salome
         try:
             Msg, listeGroup = self.ChercheGrpMailleInSalome()  # recherche dans Salome
@@ -360,12 +365,13 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         except:
             raise ValueError("Salome non ouvert")
         if Msg == None:
-            self.editorManager.handleAjoutGroup(listeGroup)
+            self.editorManager.ajoutGroupe(listeGroup)
         else:
             print("il faut gerer les erreurs")
 
-
+    #---------------------
     def ajoutIcones(self):
+    #----------------------
         # Pour pallier les soucis de repertoire d icone
         # print self.repIcon
         icon = QIcon(self.repIcon + "/new_file.png")
@@ -380,15 +386,17 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         self.actionExecution.setIcon(icon7)
 
 
+    #--------------------------
     def connecterSignaux(self):
-        self.recentMenu.aboutToShow.connect(self.handleShowRecentMenu)
+    #--------------------------
+        self.recentMenu.aboutToShow.connect(self.showRecentMenu)
         self.action_Nouveau.triggered.connect(self.fileNew)
         self.actionNouvel_Include.triggered.connect(self.newInclude)
-        self.actionOuvrir.triggered.connect(self.fileOpen)
+        self.actionOuvrir.triggered.connect(self.openFileFromMenu)
         self.actionEnregistrer.triggered.connect(self.fileSave)
         self.actionEnregistrer_sous.triggered.connect(self.fileSaveAs)
         self.actionFermer.triggered.connect(self.fileClose)
-        self.actionFermer_tout.triggered.connect(self.fileCloseAll)
+        self.actionFermer_tout.triggered.connect(self.closeAllFiles)
         self.actionQuitter.triggered.connect(self.fileExit)
 
         self.actionEficas.triggered.connect(self.aidePPal)
@@ -396,17 +404,17 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         self.actionParametres.triggered.connect(self.gestionParam)
         self.actionCommentaire.triggered.connect(self.ajoutCommentaire)
 
-        self.actionCouper.triggered.connect(self.editCut)
-        self.actionCopier.triggered.connect(self.editCopy)
-        self.actionColler.triggered.connect(self.editPaste)
+        self.actionCouper.triggered.connect(self.handleEditCut)
+        self.actionCopier.triggered.connect(self.handleEditCopy)
+        self.actionColler.triggered.connect(self.handleEditPaste)
         self.actionSupprimer.triggered.connect(self.supprimer)
         self.actionRechercher.triggered.connect(self.rechercher)
-        self.actionDeplier_replier.triggered.connect(self.handleDeplier)
+        self.actionDeplier_replier.triggered.connect(self.deplier)
 
-        self.actionRapport_de_Validation.triggered.connect(self.jdcRapport)
-        self.actionRegles_du_JdC.triggered.connect(self.jdcRegles)
-        self.actionFichier_Source.triggered.connect(self.jdcFichierSource)
-        self.actionFichier_Resultat.triggered.connect(self.visuJdcPy)
+        self.actionRapport_de_Validation.triggered.connect(self.viewJdcRapport)
+        self.actionRegles_du_JdC.triggered.connect(self.viewJdcRegles)
+        self.actionFichier_Source.triggered.connect(self.viewJdcFichierSource)
+        self.actionFichier_Resultat.triggered.connect(self.viewJdcFichierResultat)
         self.actionAfficher_l_Arbre.triggered.connect(self.ouvreArbre)
         self.actionCacher_l_Arbre.triggered.connect(self.fermeArbre)
 
@@ -427,7 +435,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         self.actionTraduitV9V10.triggered.connect(self.traductionV9V10)
         self.actionTraduitV10V11.triggered.connect(self.traductionV10V11)
         self.actionTraduitV11V12.triggered.connect(self.traductionV11V12)
-        self.actionSaveLigne.triggered.connect(self.saveLigne)
+        self.actionSaveLigne.triggered.connect(self.fileSaveInLigneFormat)
 
         # Pour Carmel
         self.actionChercheGrpMaille = QAction(self)
@@ -439,40 +447,19 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         self.actionCode.setText(tr("Specificites Maille"))
         self.actionCode.triggered.connect(self.aideCode)
 
-    def handleDeplier(self):
-        self.editorManager.handleDeplier()
-
-    def handleSortieUQ(self):
-        self.editorManager.handleSortieUQ()
-
-    def handleExeUQ(self):
-        self.editorManager.handleExeUQ()
-
-    def handleSauvePourPersalys(self):
-        self.editorManager.handleSauvePourPersalys()
+    #----------------
+    def deplier(self):
+    #-----------------
+        self.editorManager.deplier()
 
+    #-------------------------
     def ajoutCommentaire(self):
+    #-------------------------
         self.editorManager.ajoutCommentaire()
 
-    def ouvreFichiers(self):
-        # Ouverture des fichiers de commandes donnes sur la ligne de commande
-        cwd = os.getcwd()
-        self.dir = cwd
-        for study in session.d_env.studies:
-            os.chdir(cwd)
-            d = session.getUnit(study, self)
-            self.editorManager.handleOpen(fichier=study["comm"], units=d)
-
-    def getSource(self, file):
-        # appele par Editeur/session.py
-        import Accas.IO.reader
-
-        p = convert.plugins["python"]()
-        p.readfile(file)
-        texte = p.convert("execnoparseur")
-        return texte
-
+    #---------------------
     def initPatrons(self):
+    #---------------------
         # Mise a jour du menu des fichiers recemment ouverts
         from Editeur import listePatrons
 
@@ -496,13 +483,13 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
             for fichier in self.listePatrons.liste[nomSsMenu]:
                 id = ssmenu.addAction(fichier)
                 self.ficPatrons[id] = fichier
-                self.id.triggered.connect(self.handleOpenPatrons)
+                self.id.triggered.connect(self.openPatrons)
                 #   self.Patrons.setItemParameter(id,idx)
                 idx = idx + 1
 
-    #----------------------
-    def initRecents(self):
-    #----------------------
+    #------------------------------
+    def readListRecentlyOpen(self):
+    #------------------------------
         self.recemmentUtilises = []
         rep = self.maConfiguration.repUser
         monFichier = rep + "/listefichiers_" + self.code
@@ -518,18 +505,18 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         except:
             pass
 
-    #------------------------------
+    #----------------------------
     def addToRecentList(self, fn):
-    #------------------------------
+    #-----------------------------
         while fn in self.recemmentUtilises:
             self.recemmentUtilises.remove(fn)
         self.recemmentUtilises.insert(0, fn)
         if len(self.recemmentUtilises) > 9:
             self.recemmentUtilises = self.recemmentUtilises[:9]
 
-    #----------------------
-    def sauveRecents(self):
-    #----------------------
+    #-----------------------------
+    def saveListRecentlyOpen(self):
+    #-----------------------------
         if len(self.recemmentUtilises) == 0: return
         rep = self.maConfiguration.repUser
         if not (os.path.isdir(rep)) :
@@ -627,39 +614,36 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     #------------------------
     def optionEditeur(self):
     #------------------------
+    # a revoir entierement
+    # en particulier pour le nom de la configuration
+    # obsolete
         try:
             name = "monOptions_" + self.code
         except:
-            QMessageBox.critical(
-                self, tr("Parametrage"), tr("Veuillez d abord choisir un code")
-            )
+            QMessageBox.critical( self, tr("Parametrage"), tr("Veuillez d abord choisir un code"))
             return
         try:
-            # if 1:
+        # if 1:
             optionCode = __import__(name)
         except:
-            # else :
-            QMessageBox.critical(
-                self,
-                tr("Parametrage"),
-                tr("Pas de possibilite de personnalisation de la configuration "),
-            )
+        # else :
+            QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration "),)
             return
         monOption = optionCode.Options(
             parent=self, modal=0, configuration=self.maConfiguration
         )
         monOption.show()
 
+    #------------------
     def optionPdf(self):
+    #---------------------
         from InterfaceGUI.QT5.monOptionsPdf import OptionPdf
-
         monOption = OptionPdf(parent=self, modal=0, configuration=self.maConfiguration)
         monOption.show()
 
-    def handleSortieComplete(self):
-        return self.editorManager.saveCompleteCurrentEditor()
-
-    def handleShowRecentMenu(self):
+    #------------------------
+    def showRecentMenu(self):
+    #------------------------
         """
         Private method to set up recent files menu.
         """
@@ -668,36 +652,40 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
         for rp in self.recemmentUtilises:
             id = self.recentMenu.addAction(rp)
             self.ficRecents[id] = rp
-            id.triggered.connect(self.handleOpenRecent)
+            id.triggered.connect(self.openRecentFile)
         self.recentMenu.addSeparator()
-        self.recentMenu.addAction(tr("&Effacer"), self.handleClearRecent)
+        self.recentMenu.addAction(tr("&Effacer"), self.clearListRecent)
 
-    def handleOpenPatrons(self):
+    #---------------------
+    def openPatrons(self):
+    #---------------------
+        repPatrons = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","..","Codes","Patrons","self.code")
         idx = self.sender()
-        fichier = (
-            self.repIni
-            + "/../Editeur/Patrons/"
-            + self.code
-            + "/"
-            + self.ficPatrons[idx]
-        )
-        self.editorManager.handleOpen(fichier=fichier, patron=1)
+        fichier = self.repPatrons+"/"+ self.ficPatrons[idx]
+        self.editorManager.openFile(fichier=fichier, patron=1)
 
-    def handleOpenRecent(self):
+    #------------------------
+    def openRecentFile(self):
+    #------------------------
         idx = self.sender()
         fichier = self.ficRecents[idx]
-        self.editorManager.handleOpen(fichier=fichier, patron=0)
+        self.editorManager.openFile(fichier=fichier, patron=0)
 
-    def handleClearRecent(self):
+    #-------------------------
+    def clearListRecent(self):
+    #------------------------
         self.recemmentUtilises = []
-        self.sauveRecents()
+        self.saveListRecentlyOpen()
 
-    def handleRechercherDsCatalogue(self):
-        if not self.editorManager:
-            return
-        self.editorManager.handleRechercherDsCatalogue()
+    #--------------------------------------
+    def rechercherMotClefDsCatalogue(self):
+    #--------------------------------------
+        if not self.editorManager: return
+        self.editorManager.rechercherMotClefDsCatalogue()
 
+    #----------------
     def fileNew(self):
+    #----------------
         try:
             self.editorManager.newEditor()
         except EficasException as exc:
@@ -706,101 +694,103 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
                 QMessageBox.warning(self, tr("Erreur"), msg)
 
 
-    def fileOpen(self):
-        try:
-            self.editorManager.handleOpen()
-        except EficasException as exc:
-            msg = str(exc)
-            if msg != "":
-                QMessageBox.warning(self, tr("Erreur"), msg)
-
-    def saveLigne(self):
-        return self.editorManager.handleSaveLigne()
-
-    def fileSave(self):
-        return self.editorManager.handleSave()
-
-    def fileSaveAs(self):
-        return self.editorManager.handleSaveAs()
-
-    def fileClose(self):
-        self.editorManager.handleClose(texte="&Fermer")
-
-    def fileCloseAll(self):
-        self.editorManager.handleCloseAll(texte="&Fermer")
-
+    #-----------------
     def fileExit(self):
+    #-----------------
         # On peut sortir sur Abort
-        res = self.editorManager.handleCloseAll()
-        if res != 2:
-            self.close()
+        # equivalent du closeEvent sur la fenetre
+        res = self.editorManager.closeAllFiles()
+        if res != 2: self.close()
         return res
 
-    def editCopy(self):
+    #------------------------
+    def handleEditCopy(self):
+    #------------------------
         self.editorManager.handleEditCopy()
 
-    def editCut(self):
+    #------------------------
+    def handleEditCut(self):
+    #------------------------
         self.editorManager.handleEditCut()
 
-    def editPaste(self):
+    #------------------------
+    def handleEditPaste(self):
+    #------------------------
         self.editorManager.handleEditPaste()
 
+    #-------------------
     def rechercher(self):
-        self.editorManager.handleRechercher()
-
-    def run(self):
-        self.editorManager.run()
-
-    def saveRun(self):
-        self.editorManager.saveRun()
+    #---------------------
+        self.editorManager.rechercherConceptOuMotClef()
 
+    #----------------
     def supprimer(self):
+    #----------------
         self.editorManager.handleSupprimer()
 
-    def jdcFichierSource(self):
-        self.editorManager.handleViewJdcFichierSource()
+    #-----------------------------
+    def viewJdcFichierSource(self):
+    #-----------------------------
+        self.editorManager.viewJdcFichierSource()
 
-    def jdcRapport(self):
-        self.editorManager.handleViewJdcRapport()
+    #------------------------
+    def viewJdcRapport(self):
+    #------------------------
+        self.editorManager.viewJdcRapport()
 
-    def jdcRegles(self):
+    #------------------------
+    def viewJdcRegles(self):
+    #------------------------
         self.editorManager.handleViewJdcRegles()
 
+    #------------------------------
+    def viewJdcFichierResultat(self):
+    #-------------------------------
+        self.editorManager.viewJdcFichierResultat()
+
+    #------------------------
     def gestionParam(self):
+    #------------------------
         self.editorManager.handleGestionParam()
 
-    def visuJdcPy(self):
-        self.editorManager.handleViewJdcPy()
-
+    #--------------------
     def ouvreArbre(self):
+    #--------------------
         self.editorManager.ouvreArbre()
 
+    #--------------------
     def fermeArbre(self):
+    #--------------------
         self.editorManager.fermeArbre()
 
+    #--------------------
     def newInclude(self):
+    #--------------------
         self.editorManager.newIncludeEditor()
 
+    #---------------------------
     def closeEvent(self, event):
+    #---------------------------
         res = self.fileExit()
-        if res == 2:
-            event.ignore()
+        if res == 2: event.ignore()
 
+    #-------------------------------
     def remplitIconesCommandes(self):
-        if self.maConfiguration.boutonDsMenuBar == False:
-            return
-        if not hasattr(self, "readercata"):
-            return
-        from InterfaceGUI.QT5.monLayoutBouton import MonLayoutBouton
+    #-------------------------------
+    # permet de remplacer les commandes par des icones
+    # plus usite depuis machine tournante
+    # a retester
+        if self.maConfiguration.boutonDsMenuBar == False: return
+        if not hasattr(self, "readercata"): return
 
-        if hasattr(self, "monLayoutBoutonRempli"):
-            return
+        from InterfaceGUI.QT5.monLayoutBouton import MonLayoutBouton
+        if hasattr(self, "monLayoutBoutonRempli"): return
         self.monLayoutBoutonRempli = MonLayoutBouton(self)
 
-    def handleAjoutEtape(self, nomEtape):
-        self.editorManager.handleAjoutEtape(nomEtape)
 
+    #-----------------------------------
     def metMenuAJourUtilisateurs(self):
+    #----------------------------------
         self.lesFonctionsUtilisateurs = {}
         if self.code not in self.mesScripts:
             return
@@ -822,7 +812,9 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
                 )
             self.menuOptions.triggered.connect(self.handleFonctionUtilisateur)
 
+    #-------------------------------------------
     def handleFonctionUtilisateur(self, action):
+    #-------------------------------------------
         (laFonctionUtilisateur, lesArguments) = self.lesFonctionsUtilisateurs[action]
         self.editorManager.handleFonctionUtilisateur(laFonctionUtilisateur, lesArguments)
 
@@ -845,7 +837,6 @@ if __name__ == "__main__":
     Eficas = Appli()
     Eficas.show()
 
-    # mw.ouvreFichiers()
     # mw.show()
 
     res = app.exec_()
diff --git a/InterfaceGUI/Web/accasConnecteur.py b/InterfaceGUI/Web/accasConnecteur.py
new file mode 100755 (executable)
index 0000000..dbfb1dc
--- /dev/null
@@ -0,0 +1,411 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2021   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+"""
+   Ce module sert a lancer EFICAS configure pour le Web 
+"""
+# Modules Python
+import os, sys
+import os, sys
+sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
+
+
+# Modules Eficas
+
+from collections import OrderedDict
+import pprint
+
+
+if sys.version_info[0] < 3:
+    print("Must be using Python 3")
+    sys.exit()
+
+class AccasConnecteur :
+    def __init__(self,code, fichierCata=None, langue=None, fichierComm=None,appWeb=None) :
+    #-------------------------------------------------------------------------------------
+
+        self.appWeb=appWeb
+
+        if code == None : multi = True
+        else : multi = False
+        from Editeur.eficas_go import getEficasSsIhm
+        self.monEficas=getEficasSsIhm(code=code, salome=0, multi=multi, langue=langue,fichierCata=fichierCata, GUIPath='Web')
+
+        if self.monEficas == None : 
+           self.toWebApp('afficheInfos', 'erreur à la construction de l appli Eficas', 'rouge')
+           return
+        # faire l equivalent du editorManager
+        if fichierCata == None and fichierComm : 
+           self.toWebApp('afficheInfos', 'pour ouvrir un JDC, il faut connaitre le catalogue', 'rouge')
+           return 
+        self.litFichierComm(fichierComm)
+
+    def toWebApp(self,fction,*args, **kwargs):
+    #-----------------------------------------
+        #if fction =='propageValide' :
+        debug=0
+        if debug  : print ('PNPNPN : self.appWeb.toWebApp', fction, *args, **kwargs)
+        if self.appWeb == None  : 
+           #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom)
+           return
+        self.appWeb.fromConnecteur(fction, *args, **kwargs)
+        
+    def litFichierComm(self,fichierComm=None):
+    #-----------------------------------------
+        from InterfaceGUI.Web.editor import JDCWebEditor
+        self.monEditeur=JDCWebEditor(self.monEficas,fichierComm,connecteur=self)
+
+    def getListeCommandes(self):
+    #---------------------------
+        if self.monEditeur == None : return
+        return (self.monEditeur.jdc.getListeCmd())
+
+    def getListeMotsClesFilsPossibles(self,nomCommande):
+    #-----------------------------------------
+        # ici il faut programmer getListeMotsClesFilsPossibles dans P_ENTITE
+        # Pour l instant on renvoie entites
+        # doit aussi pouvoir etre appele sur FACT et BLOC
+        maCommande= getattr(self.monEditeur.jdc.cata,nomCommande)
+        laListe=maCommande.entites
+        return laListe
+
+        
+    def getDicoForFancy(self,obj,debug=0) :
+    #---------------------------------
+        dico=self.monEditeur.getDicoForFancy(obj)
+        if debug :
+           import pprint
+           pprint.pprint (dico)
+        return dico
+
+        
+    def changeValeur(self,id,valeur) :
+    #---------------------------------
+         """
+         id : identifiant unique
+         valeur : valeur saisie dans le formulaire
+         doit-on mettre l ancienne valeur en retour qui serait utile si validité = Non 
+         """ 
+         monNode=self.monEditeur.getNodeById(id)
+         #print (' change Valeur', monNode)
+         #(idUnique, commentaire, validite)=monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur)
+         #print ('retour ChangeValeur',idUnique, commentaire, validite )
+         return monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur)
+
+    def updateSDName(self,id,sdnom) :
+    #---------------------------------
+         monNode=self.monEditeur.getNodeById(id)
+         return monNode.fauxNoeudGraphique.updateSDName(sdnom)
+
+    def suppNode(self,id):
+    #-------------------
+        
+        monNode=self.monEditeur.getNodeById(id)
+        print ('monNode', monNode)
+        retour=monNode.fauxNoeudGraphique.delete()
+        return retour
+
+    def appendChild(self,id,name,pos=None):
+    #-------------------------------------
+        """
+        Methode pour ajouter un objet fils name a l objet associe au noeud id.
+        On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
+        ou en position pos_ieme de la liste. 
+        retour = nouvelIdUnique ou None 
+        """
+        monNode=self.monEditeur.getNodeById(id)
+        if monNode.fauxNoeudGraphique == None :
+           print ('PNPN pas de noeud Graphique associe a l id')
+           return
+        if debug : print (monNode.fauxNoeudGraphique)
+        retour = monNode.fauxNoeudGraphique.appendChild(name,pos)
+        return retour
+
+    def saveFile(self,fileName):
+    #----------------------------
+        """
+        sauve le .comm dans fileName (si fileName = None, 
+        alors la sauvegarde est faite dans le fichier courant)
+        retour = True/False et le nom du fichier sauvegarde
+        """
+        return self.monEditeur.saveFile(fileName)
+
+
+if __name__ == "__main__":
+    import prefs
+    name='prefs_'+prefs.code
+    __import__(name)
+    code=prefs.code
+    monEficasConnecteur=accasConnecteur(code, langue='ang')
+
+    testAjoutSuppProc=0
+    if testAjoutSuppProc : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc',0)
+        print ('ajout de MonProc en postion 0', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2',1)
+        print ('ajout de MonProc2 en postion 1', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        print ('ajout de MonProc2 en postion last', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','first')
+        print ('ajout de MonProc2 en postion first', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2',)
+        print ('ajout de MonProc2 sans poistion ne fonctionne pas', r)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        etape2=d['children'][0]['key']
+        print ('je detruis' ,etape2)
+        r=monEficasConnecteur.suppNode(etape2)
+        print (r)
+        monProc2=d['children'][0]['key']
+        r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProc.comm')
+
+    testAjoutSuppFact2=0
+    if testAjoutSuppFact2 : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][2]['key']
+        r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm')
+    
+    testAjoutSuppFact=0
+    if testAjoutSuppFact : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][0]['key']
+        print ('id monProc2 : ', monProc2)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print ('ajout de Fact2 dans monProc2 reussi', r)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print ('ajout de  Fact2 dans monProc2 inadequat', r)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        fact11=d['children'][0]['children'][2]['key']
+        fact12=d['children'][0]['children'][3]['key']
+        fact13=d['children'][0]['children'][4]['key']
+        fact14=d['children'][0]['children'][5]['key']
+        pprint.pprint(d)
+        #print (d)
+        #monFact2=d['children'][0]['children'][3]['key']
+        #print (monFact2)
+        #r=monEficasConnecteur.suppNode(monFact2)
+        #print (r)
+        #fact11=d['children'][0]['children'][2]['key']
+        #monNode=monEficasConnecteur.monEditeur.getNodeById(fact11)
+        #print ('monNode', monNode)
+        r=monEficasConnecteur.suppNode(fact11)
+        r=monEficasConnecteur.suppNode(fact12)
+        r=monEficasConnecteur.suppNode(fact13)
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        r=monEficasConnecteur.suppNode(fact14)
+        print (r)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #print (d)
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #print (r)
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #fact12=d['children'][0]['children'][3]['key']
+        #print(d['children'][0]['children'][3]['title'])
+        #r=monEficasConnecteur.appendChild(fact12,'paramInFact1')
+        #fact1=d['children'][0]['children'][2]
+        #print (fact1)
+        #fact11=d['children'][0]['children'][2]['key']
+        #print (fact11)
+        #print ('******************************************************')
+        #r=monEficasConnecteur.suppNode(fact11)
+        #r=monEficasConnecteur.appendChild(fact11,'paramInFact1')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #paramInFact12=d['children'][0]['children'][2]['children'][0]['key']
+        #r=monEficasConnecteur.suppNode(paramInFact12)
+        #print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact.comm')
+        exit()
+
+    testChangeValeur=0
+    if testChangeValeur :
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        print ('idRacine', idRacine)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+    
+        monProc=d['children'][0]['key']
+        print ('monProc', monProc)
+        param1=d['children'][0]['children'][0]['key']
+        print ('param1', param1)
+        r=monEficasConnecteur.changeValeur(param1,'65')
+        param12=d['children'][0]['children'][1]['key']
+        print ('param12', param12)
+        r=monEficasConnecteur.changeValeur(param12,'9')
+        r=monEficasConnecteur.appendChild(monProc,'param11')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param11=d['children'][0]['children'][1]['key']
+        print ('param11', param11)
+        r=monEficasConnecteur.changeValeur(param11,'11') 
+    
+        print ('______________ creation du bloc _____________________')
+        r=monEficasConnecteur.changeValeur(param1,'2')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+        param1_inBloc=d['children'][0]['children'][3]['key']
+        # on supprime le bloc
+        r=monEficasConnecteur.changeValeur(param1_inBloc,'1')
+        # on le rajoute (pb du bloc dans le bloc) 
+        r=monEficasConnecteur.changeValeur(param1_inBloc,'2')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param1_inBlocDeBloc=d['children'][0]['children'][4]['key']
+        r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2')
+        print ('______________ creation du bloc _____________________')
+        param2_inBloc=d['children'][0]['children'][6]['key']
+        r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/changeValeur.comm')
+        exit()
+    
+        # creation du bloc
+        #r=monEficasConnecteur.changeValeur(i,'2')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm')
+        #pprint.pprint(d)
+    
+        # suppression du bloc
+        #r=monEficasConnecteur.changeValeur(i,'1')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm')
+        #pprint.pprint(d)
+    
+        # ajout du Fact2
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        e=d['children'][2]['key']
+        r=monEficasConnecteur.appendChild(e,'Fact2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][4]['key']
+        print (mf)
+        r=monEficasConnecteur.appendChild(mf,'paramFacultatif')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatif.comm')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][4]['children'][1]['key']
+        r=monEficasConnecteur.suppNode(mf)
+        print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatifEtSuppresse.comm')
+        # essai enlever un mot clef qu on ne peut pas enlever
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][1]['key']
+        r=monEficasConnecteur.suppNode(mf) 
+        print (r)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutPuisSuppresFact2.comm')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+    #print ('_________', r)
+    
+    testPropageValide = 0
+    if testPropageValide : 
+        monEficasConnecteur.litFichierComm('propageValide.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        #r=monEficasConnecteur.appendChild(idRacine,'MonProc',0)
+        #print ('ajout de MonProc en position 0', r)
+        #r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param1PLast = d['children'][1]['children'][0]['key']
+        r=monEficasConnecteur.changeValeur(param1PLast,'1')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/propageValide.comm')
+        print ('ajout de MonProc2 en postion last', r)
+
+    testUpdateInfo = 0
+    if testUpdateInfo : 
+        print ('________________________ testUpdateInfo ___________________________')
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        print ('idRacine', idRacine)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        badMonProc2 = d['children'][0]['children'][0]['key']
+        r=monEficasConnecteur.appendChild(badMonProc2,'Fact1')
+        monProc2 = d['children'][0]['key']
+        #print ('idProc2', monProc2)
+        #print (d)
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        print (['children'][0])
+
+    testAjoutSimpListe=0
+    if testAjoutSimpListe : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][2]['key']
+
+    testNommeProc=1
+    if testNommeProc : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonOper','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monOper=d['children'][2]['key']
+        bOk, message = monEficasConnecteur.updateSDName(monOper,'toto')
+        print ('in testNommeProc, bOk, message', bOk, message)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monParam=d['children'][2]['children'][0]['key']
+        r=monEficasConnecteur.changeValeur(monParam,'65')
+        bOk, message = monEficasConnecteur.updateSDName(monOper,'toto')
+        print ('in testNommeProc, bOk, message', bOk, message)
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Procs.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Bloc.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Bloc.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Fact.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #monDicoAAfficher = (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #monEficasConnecteur.traiteDico(monDicoAAfficher)
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+
+    #print ('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Fact.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Fact.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
diff --git a/InterfaceGUI/Web/web_eficas.py b/InterfaceGUI/Web/web_eficas.py
new file mode 100755 (executable)
index 0000000..a68d60a
--- /dev/null
@@ -0,0 +1,433 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2024   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+import os, sys
+
+from Editeur.eficas_appli import EficasAppli
+from InterfaceGUI.Web.web_editor_manager import WebEditorManager
+
+class WebEficasAppli(EficasAppli):
+    """
+    Class implementing the main QT user interface.
+    """
+
+    #----------------------------------------------------------------------------------------------------------------------------------------------
+    def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5"):
+    #----------------------------------------------------------------------------------------------------------------------------------------------
+        """
+        Constructor
+        """
+        EficasAppli.__init__( self, code, versionCode, salome, multi, langue,  ssCode, fichierCata, GUIPath)
+        self.WebEditorManager = WebEditorManager(self)
+        self.GUIPath = GUIPath
+
+        if code == None : multi = True
+        else : multi = False
+        from Editeur.eficas_go import getEficasSsIhm
+
+        if fichierCata == None and fichierComm : 
+           self.toWebApp('afficheInfos', 'pour ouvrir un JDC, il faut connaitre le catalogue', 'rouge')
+           return 
+        self.litFichierComm(fichierComm)
+
+
+    #def fileOpen(self):
+    #    try:
+    #        self.editorManager.openFile()
+    #    except EficasException as exc:
+    #        msg = str(exc)
+    #        if msg != "":
+    #            QMessageBox.warning(self, tr("Erreur"), msg)
+
+    #def fileSave(self):
+    #    return self.editorManager.handleSave()
+
+    #def fileSaveAs(self):
+    #    return self.editorManager.handleSaveAs()
+
+    #def fileClose(self):
+    #    self.editorManager.handleClose(texte="&Fermer")
+
+    #def fileCloseAll(self):
+    #    self.editorManager.closeAllFiles(texte="&Fermer")
+
+    #def fileExit(self):
+        # On peut sortir sur Abort
+    #    res = self.editorManager.closeAllFiles()
+    #    if res != 2:
+    #        self.close()
+    #    return res
+
+
+
+
+
+    def toWebApp(self,fction,*args, **kwargs):
+    #-----------------------------------------
+        #if fction =='propageValide' :
+        debug=0
+        if debug  : print ('PNPNPN : self.appWeb.toWebApp', fction, *args, **kwargs)
+        if self.appWeb == None  : 
+           #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom)
+           return
+        self.appWeb.fromConnecteur(fction, *args, **kwargs)
+        
+    def litFichierComm(self,fichierComm=None):
+    #-----------------------------------------
+        from InterfaceGUI.Web.editor import JDCWebEditor
+        self.monEditeur=JDCWebEditor(self.monEficas,fichierComm,connecteur=self)
+
+    def getListeCommandes(self):
+    #---------------------------
+        if self.monEditeur == None : return
+        return (self.monEditeur.jdc.getListeCmd())
+
+    def getListeMotsClesFilsPossibles(self,nomCommande):
+    #-----------------------------------------
+        # ici il faut programmer getListeMotsClesFilsPossibles dans P_ENTITE
+        # Pour l instant on renvoie entites
+        # doit aussi pouvoir etre appele sur FACT et BLOC
+        maCommande= getattr(self.monEditeur.jdc.cata,nomCommande)
+        laListe=maCommande.entites
+        return laListe
+
+        
+    def getDicoForFancy(self,obj,debug=0) :
+    #---------------------------------
+        dico=self.monEditeur.getDicoForFancy(obj)
+        if debug :
+           import pprint
+           pprint.pprint (dico)
+        return dico
+
+        
+    def changeValeur(self,id,valeur) :
+    #---------------------------------
+         """
+         id : identifiant unique
+         valeur : valeur saisie dans le formulaire
+         doit-on mettre l ancienne valeur en retour qui serait utile si validité = Non 
+         """ 
+         monNode=self.monEditeur.getNodeById(id)
+         #print (' change Valeur', monNode)
+         #(idUnique, commentaire, validite)=monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur)
+         #print ('retour ChangeValeur',idUnique, commentaire, validite )
+         return monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur)
+
+    def updateSDName(self,id,sdnom) :
+    #---------------------------------
+         monNode=self.monEditeur.getNodeById(id)
+         return monNode.fauxNoeudGraphique.updateSDName(sdnom)
+
+    def suppNode(self,id):
+    #-------------------
+        
+        monNode=self.monEditeur.getNodeById(id)
+        print ('monNode', monNode)
+        retour=monNode.fauxNoeudGraphique.delete()
+        return retour
+
+    def appendChild(self,id,name,pos=None):
+    #-------------------------------------
+        """
+        Methode pour ajouter un objet fils name a l objet associe au noeud id.
+        On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
+        ou en position pos_ieme de la liste. 
+        retour = nouvelIdUnique ou None 
+        """
+        monNode=self.monEditeur.getNodeById(id)
+        if monNode.fauxNoeudGraphique == None :
+           print ('PNPN pas de noeud Graphique associe a l id')
+           return
+        if debug : print (monNode.fauxNoeudGraphique)
+        retour = monNode.fauxNoeudGraphique.appendChild(name,pos)
+        return retour
+
+    def saveFile(self,fileName):
+    #----------------------------
+        """
+        sauve le .comm dans fileName (si fileName = None, 
+        alors la sauvegarde est faite dans le fichier courant)
+        retour = True/False et le nom du fichier sauvegarde
+        """
+        return self.monEditeur.saveFile(fileName)
+
+
+if __name__ == "__main__":
+    import prefs
+    name='prefs_'+prefs.code
+    __import__(name)
+    code=prefs.code
+    monEficasConnecteur=WebEficasAppli(code, langue='ang', GUIPath)
+
+    testAjoutSuppProc=0
+    if testAjoutSuppProc : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc',0)
+        print ('ajout de MonProc en postion 0', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2',1)
+        print ('ajout de MonProc2 en postion 1', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        print ('ajout de MonProc2 en postion last', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','first')
+        print ('ajout de MonProc2 en postion first', r)
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2',)
+        print ('ajout de MonProc2 sans poistion ne fonctionne pas', r)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        etape2=d['children'][0]['key']
+        print ('je detruis' ,etape2)
+        r=monEficasConnecteur.suppNode(etape2)
+        print (r)
+        monProc2=d['children'][0]['key']
+        r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProc.comm')
+
+    testAjoutSuppFact2=0
+    if testAjoutSuppFact2 : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][2]['key']
+        r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm')
+    
+    testAjoutSuppFact=0
+    if testAjoutSuppFact : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][0]['key']
+        print ('id monProc2 : ', monProc2)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print ('ajout de Fact2 dans monProc2 reussi', r)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #print ('ajout de  Fact2 dans monProc2 inadequat', r)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        fact11=d['children'][0]['children'][2]['key']
+        fact12=d['children'][0]['children'][3]['key']
+        fact13=d['children'][0]['children'][4]['key']
+        fact14=d['children'][0]['children'][5]['key']
+        pprint.pprint(d)
+        #print (d)
+        #monFact2=d['children'][0]['children'][3]['key']
+        #print (monFact2)
+        #r=monEficasConnecteur.suppNode(monFact2)
+        #print (r)
+        #fact11=d['children'][0]['children'][2]['key']
+        #monNode=monEficasConnecteur.monEditeur.getNodeById(fact11)
+        #print ('monNode', monNode)
+        r=monEficasConnecteur.suppNode(fact11)
+        r=monEficasConnecteur.suppNode(fact12)
+        r=monEficasConnecteur.suppNode(fact13)
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        print ('________________________________________________')
+        r=monEficasConnecteur.suppNode(fact14)
+        print (r)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact2')
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #print (d)
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+        #r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        #print (r)
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #fact12=d['children'][0]['children'][3]['key']
+        #print(d['children'][0]['children'][3]['title'])
+        #r=monEficasConnecteur.appendChild(fact12,'paramInFact1')
+        #fact1=d['children'][0]['children'][2]
+        #print (fact1)
+        #fact11=d['children'][0]['children'][2]['key']
+        #print (fact11)
+        #print ('******************************************************')
+        #r=monEficasConnecteur.suppNode(fact11)
+        #r=monEficasConnecteur.appendChild(fact11,'paramInFact1')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #paramInFact12=d['children'][0]['children'][2]['children'][0]['key']
+        #r=monEficasConnecteur.suppNode(paramInFact12)
+        #print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact.comm')
+        exit()
+
+    testChangeValeur=0
+    if testChangeValeur :
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        print ('idRacine', idRacine)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+    
+        monProc=d['children'][0]['key']
+        print ('monProc', monProc)
+        param1=d['children'][0]['children'][0]['key']
+        print ('param1', param1)
+        r=monEficasConnecteur.changeValeur(param1,'65')
+        param12=d['children'][0]['children'][1]['key']
+        print ('param12', param12)
+        r=monEficasConnecteur.changeValeur(param12,'9')
+        r=monEficasConnecteur.appendChild(monProc,'param11')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param11=d['children'][0]['children'][1]['key']
+        print ('param11', param11)
+        r=monEficasConnecteur.changeValeur(param11,'11') 
+    
+        print ('______________ creation du bloc _____________________')
+        r=monEficasConnecteur.changeValeur(param1,'2')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+        param1_inBloc=d['children'][0]['children'][3]['key']
+        # on supprime le bloc
+        r=monEficasConnecteur.changeValeur(param1_inBloc,'1')
+        # on le rajoute (pb du bloc dans le bloc) 
+        r=monEficasConnecteur.changeValeur(param1_inBloc,'2')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param1_inBlocDeBloc=d['children'][0]['children'][4]['key']
+        r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2')
+        print ('______________ creation du bloc _____________________')
+        param2_inBloc=d['children'][0]['children'][6]['key']
+        r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/changeValeur.comm')
+        exit()
+    
+        # creation du bloc
+        #r=monEficasConnecteur.changeValeur(i,'2')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm')
+        #pprint.pprint(d)
+    
+        # suppression du bloc
+        #r=monEficasConnecteur.changeValeur(i,'1')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm')
+        #pprint.pprint(d)
+    
+        # ajout du Fact2
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        e=d['children'][2]['key']
+        r=monEficasConnecteur.appendChild(e,'Fact2')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][4]['key']
+        print (mf)
+        r=monEficasConnecteur.appendChild(mf,'paramFacultatif')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatif.comm')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][4]['children'][1]['key']
+        r=monEficasConnecteur.suppNode(mf)
+        print (r)
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatifEtSuppresse.comm')
+        # essai enlever un mot clef qu on ne peut pas enlever
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        mf=d['children'][2]['children'][1]['key']
+        r=monEficasConnecteur.suppNode(mf) 
+        print (r)
+        #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutPuisSuppresFact2.comm')
+        #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        #pprint.pprint(d)
+    #print ('_________', r)
+    
+    testPropageValide = 0
+    if testPropageValide : 
+        monEficasConnecteur.litFichierComm('propageValide.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        #r=monEficasConnecteur.appendChild(idRacine,'MonProc',0)
+        #print ('ajout de MonProc en position 0', r)
+        #r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        param1PLast = d['children'][1]['children'][0]['key']
+        r=monEficasConnecteur.changeValeur(param1PLast,'1')
+        (ok,newFile)=monEficasConnecteur.saveFile('/tmp/propageValide.comm')
+        print ('ajout de MonProc2 en postion last', r)
+
+    testUpdateInfo = 0
+    if testUpdateInfo : 
+        print ('________________________ testUpdateInfo ___________________________')
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        print ('idRacine', idRacine)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        badMonProc2 = d['children'][0]['children'][0]['key']
+        r=monEficasConnecteur.appendChild(badMonProc2,'Fact1')
+        monProc2 = d['children'][0]['key']
+        #print ('idProc2', monProc2)
+        #print (d)
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        r=monEficasConnecteur.appendChild(monProc2,'Fact1')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        print (['children'][0])
+
+    testAjoutSimpListe=0
+    if testAjoutSimpListe : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monProc2=d['children'][2]['key']
+
+    testNommeProc=1
+    if testNommeProc : 
+        monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+        idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique
+        r=monEficasConnecteur.appendChild(idRacine,'MonOper','last')
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monOper=d['children'][2]['key']
+        bOk, message = monEficasConnecteur.updateSDName(monOper,'toto')
+        print ('in testNommeProc, bOk, message', bOk, message)
+        d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)
+        monParam=d['children'][2]['children'][0]['key']
+        r=monEficasConnecteur.changeValeur(monParam,'65')
+        bOk, message = monEficasConnecteur.updateSDName(monOper,'toto')
+        print ('in testNommeProc, bOk, message', bOk, message)
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Procs.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm')
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Bloc.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Bloc.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
+    #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Fact.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #monDicoAAfficher = (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine))
+    #monEficasConnecteur.traiteDico(monDicoAAfficher)
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+
+    #print ('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Fact.comm')
+    #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Fact.comm')
+    #print (monEficasConnecteur.generDicoPourWeb())
+    #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine))
+    #print ('\n')
+
index bfe5a0e35f47ab760a1da40fe7b6cd44b557618f..945b61d0948ac69b3d43f7946cc47b681499a971 100644 (file)
@@ -31,7 +31,7 @@ class QtEficasAppli(Ui_Eficas5C, QtEficasAppli):
     Class implementing the 5C user interface.
     """
 
-    def __init__(self,code='5C', salome=0, multi = 0, versionCode=None,  langue='en', GUIPath="InterfaceGUI.cinqC"):
+    def __init__(self,code='5C', salome=0, multi = 0, versionCode=None,  langue='en', GUIPath="InterfaceGUI.cinqC",appWeb=None):
         super().__init__(code=code, salome=salome, multi=multi, langue=langue, versionCode=versionCode, GUIPath=GUIPath)
         self.withXSD = True
         self.GUIPath = GUIPath
@@ -43,10 +43,10 @@ class QtEficasAppli(Ui_Eficas5C, QtEficasAppli):
         self.actionCode = QAction(self)
         self.actionCode.setText(tr("Aide 5C"))
         self.actionCode.triggered.connect(self.aideCode)
-        self.actionOuvrir.triggered.connect(self.fileOpen
+        self.actionOuvrir.triggered.connect(self.openFile
 
 
-    def fileOpen(self) :
+    def openFile(self) :
         print ('aChanger')
         print ( self.editorManager)