]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
merge avec Web V0
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Thu, 22 Feb 2024 12:31:55 +0000 (13:31 +0100)
committerPASCALE NOYRET <pascale.noyret@edf.fr>
Thu, 22 Feb 2024 12:31:55 +0000 (13:31 +0100)
67 files changed:
Accas/accessor/A_ETAPE.py
Accas/accessor/A_JDC.py
Accas/accessor/A_MCLIST.py
Accas/accessor/A_MCSIMP.py
Accas/accessor/A_OBJECT.py
Editeur/editor.py
Editeur/editor_manager.py
Editeur/eficas_appli.py
Editeur/eficas_go.py
Editeur/loggingEnvironnement.py [new file with mode: 0644]
InterfaceGUI/QT5/browser.py
InterfaceGUI/QT5/compobloc.py
InterfaceGUI/QT5/compocomm.py
InterfaceGUI/QT5/compocommandecomm.py
InterfaceGUI/QT5/compofact.py
InterfaceGUI/QT5/compojdc.py
InterfaceGUI/QT5/compomacro.py
InterfaceGUI/QT5/compomclist.py
InterfaceGUI/QT5/compooper.py
InterfaceGUI/QT5/compoparam.py
InterfaceGUI/QT5/compoproc.py
InterfaceGUI/QT5/composimp.py
InterfaceGUI/QT5/gereIcones.py
InterfaceGUI/QT5/gereListe.py
InterfaceGUI/QT5/groupe.py
InterfaceGUI/QT5/monFonctionPanel.py
InterfaceGUI/QT5/monWidgetCreeParam.py
InterfaceGUI/QT5/monWidgetCreeUserAssd.py
InterfaceGUI/QT5/monWidgetFormule.py
InterfaceGUI/QT5/monWidgetMatrice.py
InterfaceGUI/QT5/monWidgetPlusieursBase.py
InterfaceGUI/QT5/monWidgetPlusieursCreeUserAssd.py
InterfaceGUI/QT5/monWidgetPlusieursInto.py
InterfaceGUI/QT5/monWidgetPlusieursIntoOrdonne.py
InterfaceGUI/QT5/monWidgetPlusieursPlie.py
InterfaceGUI/QT5/monWidgetPlusieursTuple.py
InterfaceGUI/QT5/monWidgetSDCOInto.py
InterfaceGUI/QT5/monWidgetSimpComplexe.py
InterfaceGUI/QT5/monWidgetSimpTuple.py
InterfaceGUI/QT5/qt_editor.py
InterfaceGUI/QT5/qt_editor_manager.py
InterfaceGUI/QT5/qt_eficas.py
InterfaceGUI/Web/accasConnecteur.py [deleted file]
InterfaceGUI/Web/compobloc.py
InterfaceGUI/Web/compofact.py
InterfaceGUI/Web/compojdc.py
InterfaceGUI/Web/compomclist.py
InterfaceGUI/Web/compooper.py
InterfaceGUI/Web/compoparam.py
InterfaceGUI/Web/compoproc.py
InterfaceGUI/Web/composimp.py
InterfaceGUI/Web/web_editor.py
InterfaceGUI/Web/web_editor_manager.py [new file with mode: 0644]
InterfaceGUI/Web/web_eficas.py
InterfaceGUI/cinqC/compoSelection.py
InterfaceGUI/cinqC/compofact.py
InterfaceGUI/cinqC/compojdc.py
InterfaceGUI/cinqC/compomclist.py
InterfaceGUI/cinqC/compooper.py
InterfaceGUI/cinqC/compoproc.py
InterfaceGUI/cinqC/composimp.py
InterfaceGUI/cinqC/qt_editor.py
InterfaceGUI/cinqC/qt_eficas.py
InterfaceGUI/common/Objecttreeitem.py [deleted file]
InterfaceGUI/common/objecttreeitem.py [new file with mode: 0644]
InterfaceGUI/common/traiteSaisie.py
Web/mdm.py

index 285f958504958245f17b2188ab3a3a08703a659d..b9180e2c66ed09e630ea88ccbb11532b1f73a510 100644 (file)
@@ -226,6 +226,9 @@ class ETAPE(A_MCCOMPO.MCCOMPO):
                 # Normalement on ne devrait pas passer ici
                 return 0, "Normalement on ne devrait pas passer ici"
 
+    def getIndexDsParent(self):
+        return self.parent.getIndex(self)
+
     def getSdprods(self, nom_sd):
         """
         Fonction : retourne le concept produit par l etape de nom nom_sd
index f828882177f282ad85c550f54ac9f764d9107091..1954908c0bbc935240eadebb6f49f37c3598cb0c 100644 (file)
@@ -60,6 +60,9 @@ class JDC(A_OBJECT.OBJECT):
         self.recorded_units = {}
         self.old_recorded_units = {}
 
+    def isOblig(self):
+        return 1
+
     def getIndex(self, objet):
         """
         Retourne la position d'objet dans la liste self
@@ -556,6 +559,7 @@ class JDC(A_OBJECT.OBJECT):
 
         # Apres suppression de l'etape il faut controler que les etapes
         # suivantes ne produisent pas des concepts DETRUITS dans op_init de etape
+        etapeSup = etape
         if index_etape > 0:
             index_etape = index_etape - 1
             etape = self.etapes[index_etape]
@@ -564,7 +568,7 @@ class JDC(A_OBJECT.OBJECT):
         self.controlContextApres(etape)
 
         self.resetContext()
-        CONNECTOR.Emit(self, "supp", etape)
+        CONNECTOR.Emit(self, "supp", etapeSup)
         self.finModif()
         return 1
 
@@ -1136,7 +1140,24 @@ class JDC(A_OBJECT.OBJECT):
             itemMCPath = mc.getChild("MCPath")
             itemMCPath.setValeur(mc.variableDeterministe.getMCPath())
 
-    # ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes  de processing et Accas.validation : a reintegrer
+    def getDicoForFancy(self):
+        monDico = {}
+        monDico["title"] = self.code
+        monDico["key"] = self.idUnique
+        monDico["classeAccas"] = "JDC"
+        monDico["validite"] = self.getValid()
+        if not (monDico["validite"]):
+            monDico["validite"] = 0
+        # self.editor.fichier ?
+        listNodes = []
+        for e in self.etapes:
+            listNodes.append(e.getDicoForFancy())
+        monDico["children"] = listNodes
+        return monDico
+
+  
+
+    # ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes de Noyau et Validation : a reintegrer
 
     def getFile(self, unite=None, fic_origine=""):
         """
index 3b4265091a1f35cb2a670600578738c43e20eb51..707305ef0665f40188305ce2ef7baae106cc71a5 100644 (file)
@@ -69,7 +69,6 @@ class MCList:
         for i in self.data:
             listeDict.append(i.getDicoObjetsCompletsPourTree())
         return listeDict
-
     def getDicoForFancy(self):
         listeDict = []
         nbFactDejaLa = len(self.data)
@@ -83,6 +82,7 @@ class MCList:
                 dico["repetable"] = 0
             listeDict.append(dico)
         return listeDict
+
     def isOblig(self):
         """
         Une MCList n'est jamais obligatoire (meme si le MCFACT qu'elle represente l'est
index 5938d324a4da86a59a9cecaac99ddf0c8f7181e9..5c116b6cef75bd83b061d647be6220baa369b09a 100644 (file)
@@ -64,6 +64,29 @@ class MCSIMP(A_OBJECT.OBJECT):
             self.definition.siValide(self)
         return validite
 
+
+    def getDicoForFancy(self):
+        # print ('MCSIMP getDicoForFancy ', self)
+        monDico = {}
+        monDico["title"] = self.nom
+        monDico["key"] = self.idUnique
+        if self.valeur != None:
+            monDico["wValue"] = str(self.valeur)
+        else:
+            monDico["wValue"] = ""
+        monDico["classeAccas"] = self.nature
+        monDico["validite"] = self.getValid()
+        if monDico["validite"] == None:
+            monDico["validite"] = self.isValid()
+        monDico["max"] = self.definition.max
+        monDico["min"] = self.definition.min
+        monDico["into"] = self.definition.into
+        monDico["statut"] = self.definition.statut
+        # a priori jamais vrai sauf si on a change un nom de userassd
+        if monDico["validite"] == 0 and monDico["statut"] == "f":
+            monDico["validite"] == 2
+
+        return monDico
     def getNomConcept(self):
         p = self
         while p.parent:
index 9c78e4cecee663468b32ef7a084f53c03d0948ad..8093ccccb0b69dbe6449ba714d81647c955bc8fb 100644 (file)
@@ -273,7 +273,7 @@ class OBJECT:
                 for leNode in lesNodes:
                     listeNodes.append(leNode)
         monDico["children"] = listeNodes
-        print (self.nature)
+        #print (self.nature)
         if self.nature != "MCSIMP" and self.nature != "MCLIST" and self.nature != "JDC":
             monDico["infoOptionnels"] = self.calculOptionnelInclutBlocs()
         return monDico
index c307fc39a7ea64b59c5a1625c6a0232b3c791559..ec87b14c1b99b8e2c99e56acc265cc1a87cd5eb0 100755 (executable)
@@ -26,6 +26,7 @@ import traceback
 
 import Accas.IO.reader as reader
 import Accas.IO.writer as writer
+from Accas.extensions.eficas_exception import EficasException
 
 Dictextensions = {"MAP": ".map", "TELEMAC": ".cas"}
 debug = False
@@ -38,7 +39,7 @@ class Editor:
     Editeur de jdc
     """
 
-    def __init__(self, appliEficas, fichier=None, jdc=None, units=None, include=0):
+    def __init__(self, appliEficas, fichier=None, jdc=None, include=0):
     # ----------------------------------------------------------------------------#
         if debug: print("dans le init de Editor")
         self.appliEficas = appliEficas
@@ -128,27 +129,25 @@ class Editor:
                 try:
                 #if 1 :
                     self.jdc = self.readFile(self.fichier)
-                except:
+                except Exception as e :
                 #else :
                     print("mauvaise lecture du fichier")
+                    raise EficasException("str(e)")
                 if self.appliEficas.salome:
                     try:
                         self.appliEficas.addJdcInSalome(self.fichier)
-                    except:
+                    except Exception as e:
                         print("mauvais enregistrement dans Salome")
+                        raise EficasException("str(e)")
             else:
                 self.jdc = jdc
 
-            if self.jdc is not None and units is not None:
-                self.jdc.recorded_units = units
-                self.jdc.old_recorded_units = units
-
         else:
             if not self.jdc:  #  nouveau jdc
                 if not include:
-                    self.jdc = self._newJDC(units=units)
+                    self.jdc = self._newJDC()
                 else:
-                    self.jdc = self._newJDCInclude(units=units)
+                    self.jdc = self._newJDCInclude()
                 self.nouveau = 1
 
         if self.jdc:
@@ -211,11 +210,11 @@ class Editor:
                 monJDCReader.text = texteNew
                 text = monJDCReader.convert("exec", self.appliEficas)
                 if not monJDCReader.cr.estvide():
-                    self.afficheInfos("Erreur a la conversion", "red")
+                    self.afficheMessage("Erreur a la conversion", "red")
             else:
                 text = monJDCReader.text
         else:
-            self.afficheInfos("Type de fichier non reconnu", "red")
+            self.afficheMessage("Type de fichier non reconnu", "red")
             self.informe(
                 "Type de fichier non reconnu",
                 "EFICAS ne sait pas ouvrir le type de fichier "
@@ -240,9 +239,9 @@ class Editor:
         self.monJDCReader = monJDCReader
         return jdc
 
-    # ---------------------------------------#
-    def _newJDC(self, texte = "", units=None):
-    # ---------------------------------------#
+    # ----------------------------#
+    def _newJDC(self, texte = ""):
+    # ----------------------------#
         """
         Initialise un nouveau JDC avec le texte passe en parametre
         """
@@ -261,15 +260,12 @@ class Editor:
         )
 
         jdc.lang = self.appliEficas.langue
-        if units is not None:
-            jdc.recorded_units = units
-            jdc.old_recorded_units = units
         jdc.editor = self
         return jdc
 
-    # --------------------------------#
-    def _newJDCInclude(self, units=None):
-    # --------------------------------#
+    # ----------------------#
+    def _newJDCInclude(self):
+    # ----------------------#
         """
         Initialise un nouveau JDC include vierge
         Inutilise depuis Aster mais interessant
@@ -303,9 +299,6 @@ class Editor:
         )
         J.editor = self
         J.analyse()
-        if units is not None:
-            J.recorded_units = units
-            J.old_recorded_units = units
         return J
 
     # -----------------------#
@@ -319,11 +312,11 @@ class Editor:
             p.readfile(file)
             text = p.convert("execnoparseur")
             if not p.cr.estvide():
-                self.afficheInfos("Erreur a la conversion", "red")
+                self.afficheMessage("Erreur a la conversion", "red")
             return text
         else:
             # Il n'existe pas c'est une erreur
-            self.afficheInfos("Type de fichier non reconnu", "red")
+            self.afficheMessage("Type de fichier non reconnu", "red")
             self.informe(
                 "Type de fichier non reconnu",
                 "EFICAS ne sait pas ouvrir le type de fichier "
@@ -402,7 +395,7 @@ class Editor:
     # -----------------------#
         # on ajoute les regles
         texteGlobal, testOK = self.jdc.verifRegles()
-        return texteGglobal
+        return texteGlobal
 
     # ---------------------#
     def getFileName(self):
@@ -450,7 +443,7 @@ class Editor:
                 "Le fichier" + str(fn) + "n a pas pu etre sauvegarde :",
                 str(why),
             )
-            self.afficheInfos(
+            self.afficheMessage(
                 "Le fichier" + str(fn) + "n a pas pu etre sauvegarde ", "red"
             )
             return 0
@@ -547,7 +540,7 @@ class Editor:
             dico = self.myWriter.Dico
             return dico
         else:
-            self.afficheInfos(
+            self.afficheMessage(
                 tr("Format %s non reconnu", "Dictionnaire Imbrique"), "red"
             )
             return ""
@@ -694,7 +687,7 @@ class Editor:
             print("!!!!!!!!!!!!!!!!!!!!!!!!!!!")
 
     # --------------------------------------#
-    def afficheInfos(self, txt, couleur=None):
+    def afficheMessage(self, txt, couleur=None):
     # --------------------------------------#
         # methode differenre avec et sans ihm
         print(txt)
index 544af1e4900bee018cd9c7d2e3b050df9579e5f8..21b75ccb711b54671d86863a427ed63443728e85 100644 (file)
@@ -41,9 +41,9 @@ class EditorManager(object):
         self.doubles = {}
 
 
-    # ----------------------------------------------------------------
-    def getEditor(self, fichier=None, jdc=None, units=None, include=0):
-    # ----------------------------------------------------------------
+    # -----------------------------------------------------
+    def getEditor(self, fichier=None, jdc=None, include=0):
+    # -----------------------------------------------------
         """
           Retourne un nouvel editeur ou None si doublon 
         """
@@ -58,7 +58,7 @@ class EditorManager(object):
                self.appliEficas.afficheMessage('Eficas sans Ihm', 'Fichier deja ouvert')
                return None
         from Editeur.editor import Editor
-        editor = Editor(self.appliEficas, fichier, jdc, units, include)
+        editor = Editor(self.appliEficas, fichier, jdc, include)
         if not editor.jdc :
             self.appliEficas.afficheMessage('Eficas sans Ihm', 'impossible d allouer un editor')
             return None
@@ -68,14 +68,6 @@ class EditorManager(object):
         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):
     # --------------------------------
index 0ac2529413618e3e84c87fc51c8ede4f93cbe913..27476bc443515f70360d82316c71ff31bf291308 100755 (executable)
 #
 import os, sys
 
+
 from Accas.extensions.eficas_exception import EficasException
 from Editeur import session
 from Editeur.getVersion import getEficasVersion
+from Accas.extensions.eficas_translation import tr
 
 
 class EficasAppli:
@@ -71,7 +73,7 @@ class EficasAppli:
             try:
                 from Accas import eficasSalome
                 Accas.SalomeEntry = eficasSalome.SalomeEntry
-            except e:
+            except  Exception as e:
                 print ("impossible d importer les salome entry")
                 print (str(e))
 
@@ -137,23 +139,17 @@ class EficasAppli:
         texte = p.convert("execnoparseur")
         return texte
 
-    #------------------------------------------------------------------
-    def newEditor(self, fichier=None, jdc=None, units=None, include=0):
-    #------------------------------------------------------------------
+    #------------------------------------------------------
+    def getEditor(self, fichier=None, jdc=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 getEditor(self):
-    #-------------------
-        if (hasattr(self, "editor")) and self.editor != None: return self.editor
-        self.newEditor()
+        self.editor = self.editorManager.getEditor(fichier, jdc, include)
         return self.editor
 
+
     #--------------------------
     def getEditorById(self,id):
     #--------------------------
@@ -170,7 +166,7 @@ class EficasAppli:
         try:
             monEditor = self.editorManager.openFile(fichier)
         except EficasException as exc:
-            afficheMessage(self, 'erreur ouverture fichier', str(exc),critical=True)
+            self.afficheMessage( 'erreur ouverture fichier', str(exc),critical=True)
             monEditor = None
         return monEditor
 
@@ -234,10 +230,10 @@ class EficasAppli:
         for study in session.d_env.studies:
             os.chdir(cwd)
             d = session.getUnit(study, self)
-            self.editorManager.openFile(fichier=study["comm"], units=d)
+            self.editorManager.openFile(fichier=study["comm"])
 
 
-    #----------------------
+    #---------------------
     def saveFullFile(self):
     #----------------------
     # Pour Telemac
@@ -247,7 +243,7 @@ class EficasAppli:
     def fileNew(self):
     #-------------------
         try:
-            self.editorManager.newEditor()
+            self.editorManager.getEditor()
         except EficasException as exc:
             msg = str(exc)
             if msg != "":
index e7009e33cf9e567b9bf0cc57d196ae81453f0c1a..4385b4ce33ea30433d6fc6dda0daa78079457941 100755 (executable)
@@ -62,8 +62,8 @@ 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, appWeb = None):
-# ------------------------------------------------------------------------------------------------------------------
+def getEficas( code=None, ssCode = None, versionCode = None , multi=False, langue="en", GUIPath=None, appWeb = None, fichierCata = None):
+# ---------------------------------------------------------------------------------------------------------------------------------------
     """
     instancie l'appli EFICAS sans Ihm
     """
@@ -72,7 +72,6 @@ def getEficas( code=None, multi=False, langue="en", forceXML=False, fichierCata=
     options = session.parse(sys.argv)
     if options.code != None:
         code = options.code
-    if forceXML: options.withXSD = True
 
     if GUIPath in ('QT5',  'cinqC') :
         pathAbso=os.path.abspath(os.path.join(os.path.dirname(__file__),'..','InterfaceGUI',GUIPath))
@@ -86,7 +85,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, appWeb=None)
+    Eficas = EficasAppli(code=code, multi=multi, langue=langue, ssCode=ssCode, versionCode=versionCode,  fichierCata=fichierCata, GUIPath=GUIPath, appWeb=appWeb)
     return Eficas
 
 
diff --git a/Editeur/loggingEnvironnement.py b/Editeur/loggingEnvironnement.py
new file mode 100644 (file)
index 0000000..84dc285
--- /dev/null
@@ -0,0 +1,84 @@
+from builtins import object
+import logging
+import os
+
+msgGetDico='d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)'
+msgId='leMotClef={}'
+
+class loggingEnvironnement(object):
+    _instance = None
+
+    def __new__(cls, *args, **kwargs):
+        if not cls._instance:
+            cls._instance = super(loggingEnvironnement, cls).__new__(cls, *args, **kwargs)
+        return cls._instance
+
+    def __init__(self):
+        self.fichier=None
+
+    def setFile(self,fichier, code='Essai'):
+        loggerForTrace = logging.getLogger('loggingForTrace')
+        if self.fichier != None      : print ('La log est deja ecrite dans  : ', self.fichier); return
+        if (os.path.isfile(fichier)) : 
+            print ('le fichier {} existe deja'.format(fichier))
+            loggerForTrace.info('#_________________ redemarrage de la log _________________')
+        fileHandler = logging.FileHandler(fichier)
+        formatter   = logging.Formatter('%(message)s')
+        fileHandler.setFormatter(formatter)
+        loggerForTrace.addHandler(fileHandler)
+        loggerForTrace.setLevel(logging.INFO)
+        loggerForTrace.info('from connectEficas import accasConnecteur')
+        loggerForTrace.info('monEficasConnecteur=accasConnecteur("{}")'.format(code))
+
+
+def fonctionLoguee(laFonction, debug=True):
+#-------------------------------------------
+    from inspect  import  getfullargspec
+    from functools import wraps
+    listeArgs=getfullargspec(laFonction)
+    @wraps(laFonction)
+    def laFonctionLoguee(*args, **kwargs):
+        if debug : print('Appel {} avec args={} et kwargs={}'.format( laFonction.__name__, args, kwargs))
+        loggerForTrace = logging.getLogger('loggingForTrace')
+        if 'id' in listeArgs.args : 
+           indexId=listeArgs.args.index('id')
+           id = args[indexId]
+           if debug : print ('id est le parametre ', str(indexId), ' de la fonction :', laFonction.__name__)
+           monConnecteur=args[0]
+           loggerForTrace.info(msgGetDico)
+           finMsgId = monConnecteur.reconstruitChaineDIndex(id)
+           if debug : print ('finMsgId', finMsgId)
+           loggerForTrace.info(msgId.format(finMsgId))
+        else :
+           if debug : print ('id n est pas un parametre de la fonction :', laFonction.__name__,)
+           indexId=-1
+
+        i=1
+        chaineDArgs='('
+        for monArg in args[1:] :
+            #if debug : print ('chaineDArgs', chaineDArgs)
+            #if debug : print ('monArg', monArg)
+            if indexId == i:
+               chaineDArgs+='leMotClef,'
+               i=i+1
+               continue
+            if isinstance(monArg, str) : chaineDArgs+='"'+str(monArg)+'",'
+            else  : chaineDArgs+=str(monArg)+','
+            i=i+1
+        for (k,v) in kwargs :
+            if isinstance(v, str) : chaineDArgs+=str(k)+'="'+str(v)+'",'
+            else : chaineDArgs+=str(k)+'='+str(v)+','
+        chaineDArgs=chaineDArgs[:-1]+')'
+        if debug : print ('chaineDArgs', chaineDArgs)
+        msg='print (monEficasConnecteur.{}{})'.format(laFonction.__name__, chaineDArgs)
+        if debug : print ('msg', msg)
+        loggerForTrace.info(msg)
+        return laFonction(*args, **kwargs)
+    return laFonctionLoguee
+
+
+if __name__=='__main__':
+     monSingleton=loggingEnvironnement()
+     monSingleton.setFile('/tmp/toto.txt')
+     loggerForTrace = logging.getLogger('loggingForTrace')
+     loggerForTrace.info('Our First Log Message')
index 49464c492af36bf5c63b75cdf52867a81b43a3bd..b9e3ed6a64f857e38d234fb45e1b25efdae8b4fa 100644 (file)
@@ -722,9 +722,9 @@ class JDCNode(QTreeWidgetItem, GereRegles):
 
         ret, commentaire = self.vraiParent.item.suppItem(self.item)
         if ret == 0:
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         else:
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         self.treeParent.buildChildren()
         if self.treeParent.childrenComplete:
             toselect = self.treeParent.childrenComplete[index]
index e2004e98f00d6701ef62d20e7b760dea377d9774..f58ebcfc4485211bdd0a47cb2016504b808faa54 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 
 from InterfaceGUI.QT5 import compofact
 from InterfaceGUI.QT5 import browser
index 11247bf2d92d6075f36696072f97af89c66a7774..5101011bb4149eda03bacb39ae2f14a7a3c26aab 100644 (file)
@@ -17,7 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
@@ -52,7 +52,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
         self.setText(1, tr(debComm))
 
 
-class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
+class COMMTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode = Node
 
     def init(self):
@@ -103,7 +103,7 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
     def getObjetCommentarise(self):
         """
         La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem
-        surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem
+        surcharge la methode getObjetCommentarise de la classe objecttreeitem.ObjectTreeItem
         elle a pour but d'empecher l'utilisateur final de commentariser un commentaire.
         """
         raise EficasException("Impossible de commentariser un commentaire")
index 401e995fe99a02ab4233ddc014ffbd661909e48d..a899911dcf8a16bf2db8d7a2d878db2ebfeab755 100644 (file)
 
 import traceback
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.extensions.eficas_exception import EficasException
 from InterfaceGUI.QT5 import compocomm
 
 
-class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
+class COMMANDE_COMMTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode = compocomm.Node
 
     def init(self):
index c5029f3c33fd7bfa0be89b96a4cb043048202cdb..78fc9ba91cda87b582e439c6b3a9218d5f424bc3 100644 (file)
@@ -22,7 +22,7 @@ from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 import traceback
 
 
@@ -38,7 +38,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
         else:
             self.niveau = 1
         if hasattr(self, "plie") and self.plie == True:
-            from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie
+            from InterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie
 
             widget = MonWidgetFactPlie(
                 self,
@@ -52,7 +52,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
         elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche:
             self.firstAffiche = False
             self.setPlie()
-            from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie
+            from InterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie
 
             widget = MonWidgetFactPlie(
                 self,
@@ -64,7 +64,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
                 maCommande,
             )
         else:
-            from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFact import MonWidgetFact
+            from InterfaceGUI.QT5.monWidgetFact import MonWidgetFact
 
             widget = MonWidgetFact(
                 self,
@@ -82,7 +82,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
-class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
+class FACTTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode = Node
 
     def isExpandable(self):
index eb12145481d96f1de529e886425aa09283324675..918e28aa871a1a0c195f33b5aada5d663b22ebe5 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
@@ -37,7 +37,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuRacine):
         return param
 
 
-class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
+class JDCTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode = Node
 
     def isExpandable(self):
index 90c1983379e646fbcf923704c4067407b3409e50..465eb0010f1b94fafb8703625ff35d14e5f60476 100644 (file)
@@ -25,7 +25,7 @@ import types
 import traceback
 
 # Modules Eficas
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.extensions.eficas_translation import tr
 from InterfaceGUI.QT5 import compooper
 from InterfaceGUI.QT5 import browser
index ec1ec5393685fa3fb357d7cd8e4c735d808b40ce..08c702799753e3587fd96e015302f4489f14cd68 100644 (file)
@@ -27,7 +27,7 @@ from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.processing.P_OBJECT import ErrorObj
 
 
@@ -109,7 +109,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodeMinimal):
         return child
 
 
-class MCListTreeItem(Objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem):
+class MCListTreeItem(objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem):
     """La classe MCListTreeItem joue le role d'un adaptateur pour les objets
     du processing Accas instances de la classe MCLIST.
     Elle adapte ces objets pour leur permettre d'etre integres en tant que
@@ -147,7 +147,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem):
 
     def isExpandable(self):
         if len(self._object) > 1:
-            return Objecttreeitem.SequenceTreeItem.isExpandable(self)
+            return objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
             return compofact.FACTTreeItem.isExpandable(self)
 
index 11b1a50f2592123fd4987faa97f0970f3e146536..9d45e6ee817372118f6d907775d0087c29584c94 100644 (file)
@@ -23,7 +23,7 @@ import tempfile
 from Accas.extensions.eficas_translation import tr
 from Accas.extensions.eficas_exception import EficasException
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 
@@ -43,7 +43,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
         self.editor.initModif()
         test, mess = self.item.nommeSd(nom)
         if test == 0:
-            self.editor.afficheInfos(mess, "red")
+            self.editor.afficheMessage(mess, "red")
             old = self.item.getText()
             self.monWidgetNom.setText(old)
         else:
@@ -69,7 +69,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
 #        troisD.envoievisu()
 
 
-class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
+class EtapeTreeItem(objecttreeitem.ObjectTreeItem):
     """La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing
     Accas. Elle leur permet d'etre affichés comme des noeuds
     d'un arbre graphique.
index 9f36e14308ed9e38f292f8feca28d8f00e409707..dc7d13395e7d0ef688d84fdeb41603ab39ebbc19 100644 (file)
@@ -27,7 +27,7 @@ import types
 from Accas.extensions.eficas_translation import tr
 
 # import modules EFICAS
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
 
@@ -47,7 +47,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel):
         return None
 
 
-class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
+class PARAMTreeItem(objecttreeitem.ObjectTreeItem):
     """
     Classe servant a definir l'item porte par le noeud de l'arbre d'EFICAS
     qui represente le PARAMETRE
index 9321731ab817095ba8533e9c326361113803dccf..0242b7b30b3e8d7260a5f4e766cccf89928f89a8 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import compooper
 from InterfaceGUI.QT5 import browser
 from InterfaceGUI.QT5 import typeNode
index 56959be8c0da3f4a272da121cb8f40402c29603f..86e006e61eb99789c6a6e8247a3149168bb49de7 100644 (file)
@@ -25,7 +25,7 @@ import traceback
 from InterfaceGUI.QT5 import typeNode
 
 # Modules Eficas
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 from Accas import SalomeEntry
 from Accas import ASSD
@@ -257,7 +257,7 @@ class Node(NodeCommun, browser.JDCNode, typeNode.PopUpMenuNodeMinimal):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
-class SIMPTreeItemCommun(Objecttreeitem.AtomicObjectTreeItem):
+class SIMPTreeItemCommun(objecttreeitem.AtomicObjectTreeItem):
 
     def init(self):
         self.expandable = 0
index 77d7e14241a12cc228904fa72c2af3461bc1fcb4..86e3528e0f3cdb84f9c1394de90dd6f44e997489 100644 (file)
@@ -448,7 +448,7 @@ class ContientIcones(object):
             )
 
         if commentaire != "":
-            self.editor.afficheInfos(tr(str(commentaire)))
+            self.editor.afficheMessage(tr(str(commentaire)))
         if selection == []:
             return
 
@@ -476,7 +476,7 @@ class ContientIcones(object):
         if valeur:
             ok, msgError = self.appliEficas.displayShape(valeur)
             if not ok:
-                self.editor.afficheInfos(msgError, Qt.red)
+                self.editor.afficheMessage(msgError, Qt.red)
 
     def BParametresPressed(self):
         liste = self.node.item.getListeParamPossible()
index 0f35a67b41112b9d794fae34525bfa7160376121..2bdf4d4cee42f64bb7c9e58428cb4f24bfc3ed3c 100644 (file)
@@ -261,7 +261,7 @@ class GereListe(object):
             if len(self.listeValeursCourantes) < self.monSimpDef.max:
                 self.chercheLigneVide()
             else:
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     "nb max de valeurs : " + str(self.monSimpDef.max) + " atteint",
                     Qt.red,
                 )
index c04f30e63d05df0cb3e6f764fcca542d66c600c9..0f2f877f9da306d2c5b1f492c0f06337f7685979 100644 (file)
@@ -170,12 +170,12 @@ class Groupe(QWidget, FacultatifOuOptionnel):
             return
         if len(listeNode) == 1:
             listeNode[0].delete()
-            self.editor.afficheInfos("")
+            self.editor.afficheMessage("")
             return
         for noeud in listeNode:
             noeud.treeParent.item.suppItem(noeud.item)
         noeud.treeParent.buildChildren()
-        self.editor.afficheInfos("")
+        self.editor.afficheMessage("")
 
     def ajoutMC(self, texteListeNom):
         listeNom = texteListeNom.split("+")[1:]
@@ -192,7 +192,7 @@ class Groupe(QWidget, FacultatifOuOptionnel):
             if firstNode == None:
                 firstNode = nouveau
             if nouveau == None or nouveau == 0:
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     tr("insertion impossible a cet endroit pour " + nom), Qt.red
                 )
         try:
index 6b7709f99e260e180029d342b933c1d7d6442ac1..d6afc84050c4d80d6c36ecdea6ab58b88afe4431 100644 (file)
@@ -65,7 +65,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
             message = tr(
                 "La cardinalite n'est pas correcte, la derniere valeur est ignoree"
             )
-            self.editor.afficheInfos(message, Qt.red)
+            self.editor.afficheMessage(message, Qt.red)
         i = 0
         while i < len(liste):
             try:
@@ -121,7 +121,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
             commentaire += str(self.nbValeursASaisir)
             commentaire += tr(" valeurs")
             self.LEValeur.setText(str(liste))
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
             return
 
         if self.node.item.waitTuple() == 1:
@@ -153,7 +153,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
             )
         self.Commentaire.setText(tr(comm2))
         if not validite:
-            self.editor.afficheInfos(comm, Qt.red)
+            self.editor.afficheMessage(comm, Qt.red)
         else:
             self.LEValeur.setText("")
             l1 = self.listeValeursCourantes[:indexListe]
@@ -186,7 +186,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         if len(liste) % self.nbValeurs != 0:
             texte = "Nombre de valeur incorrecte"
             # self.Commentaire.setText(texte)
-            self.editor.afficheInfos(texte, Qt.red)
+            self.editor.afficheMessage(texte, Qt.red)
             return
         listeDecoupee = self.decoupeListeValeurs(liste)
         for vals in listeDecoupee:
index ae79ace09c8498df4dbd77c44ebfd8a0485ffde3..3aa96c07edfde4a2b98ef54143f0364e07db0f59 100644 (file)
@@ -35,7 +35,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog):
 
     def __init__(self, editor, name=None, fl=0):
         self.editor = editor
-        self.editor.afficheInfos("")
+        self.editor.afficheMessage("")
         QDialog.__init__(self, editor)
         self.setupUi(self)
         self.connecterSignaux()
@@ -98,7 +98,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog):
         exec("from InterfaceGUI.QT5.ath import *", contexte)
         jdc = self.editor.jdc
         if jdc == None:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr(
                     "La Creation de parametre n est possible que dans un jeu de donnees"
                 ),
@@ -121,7 +121,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog):
                 monTexte = "monParam='" + valString + "'"
                 self.val = "'" + valString + "'"
             except:
-                self.editor.afficheInfos(tr("Valeur incorrecte"), Qt.red)
+                self.editor.afficheMessage(tr("Valeur incorrecte"), Qt.red)
         if self.lineEditNom.text() != "" and self.dejaExistant == False:
             self.creeParametre()
 
@@ -131,11 +131,11 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog):
         if not pattern_name.match(nom):
             self.lineEditNom.setText("")
             commentaire = nom + tr(" n est pas un identifiant correct\n ")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         for p in self.editor.jdc.params:
             if p.nom == nom:
                 commentaire = nom + tr(" existe deja\n ")
-                self.editor.afficheInfos(commentaire, Qt.red)
+                self.editor.afficheMessage(commentaire, Qt.red)
                 return
 
         if self.lineEditVal.text() != "":
index 43cb37133feaed60b9bf266bb46b5852c4df9032..5f6d89eae77602de763d6abf855f79ab32ce113b 100644 (file)
@@ -63,7 +63,7 @@ class MonWidgetCreeUserAssd(MonWidgetSimpTxt):
                 self.editor.afficheCommentaire(commentaire)
                 self.oldValeurTexte = self.lineEditVal.text()
             else:
-                self.editor.afficheInfos(commentaire, Qt.red)
+                self.editor.afficheMessage(commentaire, Qt.red)
                 self.lineEditVal.setText("")
                 self.oldValeurTexte = ""
         self.parentQt.propageChange(self.objSimp.definition.type[0], self)
index 51f0eb2da4fb998d92463c30723634c5adecd0a6..956da68541a41b32b22de7b4904584c0135530fb 100644 (file)
@@ -125,10 +125,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
         test, erreur = self.node.item.verifNom(nomFormule)
         if test:
             commentaire = nomFormule + tr(" est un nom valide pour une FORMULE")
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         else:
             commentaire = nomFormule + tr(" n'est pas un nom valide pour une FORMULE")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
             return
         if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text()) != "":
             self.BOkPressedFormule()
@@ -141,10 +141,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
         test, erreur = self.node.item.verifArguments(arguments)
         if test:
             commentaire = tr("Argument(s) valide(s) pour une FORMULE")
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         else:
             commentaire = tr("Argument(s) invalide(s) pour une FORMULE")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         if (
             str(self.LECorpsFormule.text()) != ""
             and str(self.LENomFormule.text()) != ""
@@ -164,10 +164,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
 
         if test:
             commentaire = tr("Corps de FORMULE valide")
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         else:
             commentaire = tr("Corps de FORMULE invalide")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text()) != "":
             self.BOkPressedFormule()
 
@@ -178,13 +178,13 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
         nomFormule = str(self.LENomFormule.text())
         test, erreur = self.node.item.verifNom(nomFormule)
         if not test:
-            self.editor.afficheInfos(erreur, Qt.red)
+            self.editor.afficheMessage(erreur, Qt.red)
             return
 
         arguments = str(self.LENomsArgs.text())
         test, erreur = self.node.item.verifArguments(arguments)
         if not test:
-            self.editor.afficheInfos(erreur, Qt.red)
+            self.editor.afficheMessage(erreur, Qt.red)
             return
 
         expression = str(self.LECorpsFormule.text())
@@ -192,7 +192,7 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
             (nomFormule, "REEL", arguments, expression)
         )
         if not test:
-            self.editor.afficheInfos(erreur, Qt.red)
+            self.editor.afficheMessage(erreur, Qt.red)
             return
 
         test = self.node.item.object.updateFormulePython(
@@ -205,8 +205,8 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel):
             self.node.onValid()
             self.node.update_valid()
             commentaire = "Formule saisie"
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         else:
             commentaire = "Formule incorrecte : " + erreur
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         self.editor.initModif()
index a6ea9e71ed0b9fb7c8c99c39545408c455ad00b1..054c0dd500e92d23ae245da0a5476361f87f241c 100644 (file)
@@ -65,7 +65,7 @@ class MonWidgetMatrice(Ui_desWidgetMatrice, Feuille):
             return
         boolOk, commentaire = self.monType.verifItem(texte, self.node.item.object)
         if not boolOk:
-            self.editor.afficheInfos(tr(commentaire), Qt.red)
+            self.editor.afficheMessage(tr(commentaire), Qt.red)
             monItem.setText("")
             return
         if self.monType.coloree:
@@ -199,12 +199,12 @@ class MonWidgetMatriceOT(MonWidgetMatrice):
         except:
             ok = False
         if ok == False:
-            self.editor.afficheInfos(tr("Entrer un float SVP"), Qt.red)
+            self.editor.afficheMessage(tr("Entrer un float SVP"), Qt.red)
             monItem.setText("")
             return
         if self.monType.valSup != None:
             if val > self.monType.valSup:
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     tr("Entrer un float inferieur a ") + repr(self.monType.valSup),
                     Qt.red,
                 )
@@ -212,13 +212,13 @@ class MonWidgetMatriceOT(MonWidgetMatrice):
                 return
         if self.monType.valMin != None:
             if val < self.monType.valMin:
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     tr("Entrer un float superieur a ") + repr(self.monType.valMin),
                     Qt.red,
                 )
                 monItem.setText("")
                 return
-        self.editor.afficheInfos("")
+        self.editor.afficheMessage("")
         if self.monType.structure != None:
             MonWidgetMatrice.__dict__[self.monType.structure](*(self,))
         self.acceptVal()
index d826ae4ea0521c2e562786f65aa987c2d0a33094..cf9199cc9cfa9c5db80b9e3a65ce83594c5b9459 100644 (file)
@@ -231,7 +231,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli
 
         if len(listeComplete) > max:
             texte = tr("Nombre maximum de valeurs ") + str(max) + tr(" atteint")
-            self.editor.afficheInfos(texte, Qt.red)
+            self.editor.afficheMessage(texte, Qt.red)
             return
 
         validite, comm, comm2, listeRetour = self.politique.ajoutNTuple(listeComplete)
@@ -306,13 +306,13 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli
             if valeur != None and valeur != "":
                 commentaire = self.ajout1Valeur(valeur)
                 if commentaire != None:
-                    self.editor.afficheInfos(commentaire, Qt.red)
+                    self.editor.afficheMessage(commentaire, Qt.red)
                     courant.setText("")
                     donneFocus = courant
                     self.reaffiche()
                     return
                 else:
-                    self.editor.afficheInfos("")
+                    self.editor.afficheMessage("")
             elif donneFocus == None:
                 donneFocus = courant
 
@@ -329,7 +329,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli
             return
         min, max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) < self.monSimpDef.min:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr("nb min de valeurs : ") + str(self.monSimpDef.min)
             )
         if len(self.listeValeursCourantes) < min and oblige == True:
@@ -338,7 +338,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli
             return
         retour = self.node.item.setValeur(self.listeValeursCourantes)
         if len(self.listeValeursCourantes) == self.monSimpDef.max:
-            self.editor.afficheInfos(tr("nb max de valeurs atteint"))
+            self.editor.afficheMessage(tr("nb max de valeurs atteint"))
         self.setValide()
         self.reaffiche()
         self.inhibeChangeValeur = False
index f3db649ce68d7fd2705024ceba9e12de94ff5c8d..cdd42f10f4bc3392ac5ded408a4e6bbd1785256e 100644 (file)
@@ -68,7 +68,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase):
                     oldValeurUserAssd, valeur
                 )
                 if commentaire != "" and not validite:
-                    self.editor.afficheInfos(commentaire, Qt.red)
+                    self.editor.afficheMessage(commentaire, Qt.red)
                     self.lineEditEnCours.setText(oldValeurUserAssd.nom)
                 nomDernierLineEdit = "lineEditVal" + str(self.numLineEditEnCours + 1)
                 dernier = getattr(self, nomDernierLineEdit)
@@ -77,7 +77,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase):
 
             validite, objASSD, commentaire = self.objSimp.creeUserASSD(valeur)
             if commentaire != "" and not validite:
-                self.editor.afficheInfos(commentaire, Qt.red)
+                self.editor.afficheMessage(commentaire, Qt.red)
                 self.lineEditEnCours.setText("")
                 if objASSD:
                     objASSD.supprime(self.objSimp)
@@ -116,7 +116,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase):
             dernier = getattr(self, nomDernierLineEdit)
             dernier.setFocus()
         else:
-            self.editor.afficheInfos("ajout impossible", Qt.red)
+            self.editor.afficheMessage("ajout impossible", Qt.red)
             if objASSD:
                 objASSD.supprime(self.objSimp)
             self.lineEditEnCours.setText("")
index b7af991d32cb5062867baa9c50239c7530ba78c2..73b7d7c16100d017efab2a3af542756ec3679868 100644 (file)
@@ -91,7 +91,7 @@ class MonWidgetPlusieursInto(Ui_WidgetPlusieursInto, Feuille, GerePlie, GereList
             min, max = self.node.item.getMinMax()
             if max < len(self.listeAAfficher):
                 commentaire = tr("impossible de tout selectionner : max =") + str(max)
-                self.editor.afficheInfos(commentaire, Qt.red)
+                self.editor.afficheMessage(commentaire, Qt.red)
                 self.inhibe = False
                 return
             for i in range(len(self.listeAAfficher)):
@@ -235,17 +235,17 @@ class MonWidgetPlusieursInto(Ui_WidgetPlusieursInto, Feuille, GerePlie, GereList
             if valeur != None and valeur != "":
                 commentaire = self.ajout1Valeur(valeur)
                 if commentaire != None:
-                    self.editor.afficheInfos(commentaire, Qt.red)
+                    self.editor.afficheMessage(commentaire, Qt.red)
                     self.listeValeursCourantesAvant = self.listeValeursCourantes
                     self.setValeurs()
 
         min, max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) < min:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr("Nombre minimal de valeurs : ") + str(min), Qt.red
             )
         elif len(self.listeValeursCourantes) > max:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr("Nombre maximal de valeurs : ") + str(max), Qt.red
             )
 
index 916e662f2cca1ac66ec774629ce52d2a544be144..9094029550b63158df3809b842a3608c22cdcb71 100644 (file)
@@ -254,12 +254,12 @@ class MonWidgetPlusieursIntoOrdonne(
         self.listeValeursCourantes = self.node.item.getListeValeurs()
         min, max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) + 1 > max:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr("Nombre maximal de valeurs : ") + str(max), Qt.red
             )
             return
         else:
-            self.editor.afficheInfos("")
+            self.editor.afficheMessage("")
 
         affiche = False
         for i in range(1, self.indexDernierLabel + 1):
@@ -301,11 +301,11 @@ class MonWidgetPlusieursIntoOrdonne(
         self.listeValeursCourantes = self.node.item.getListeValeurs()
         min, max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) < min:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 tr("Nombre minimal de valeurs : ") + str(min), Qt.red
             )
         else:
-            self.editor.afficheInfos("")
+            self.editor.afficheMessage("")
 
         if len(listeRetour) == 0:
             self.node.item.setValeur(None)
@@ -313,7 +313,7 @@ class MonWidgetPlusieursIntoOrdonne(
             self.node.item.setValeur(listeRetour)
         else:
             commentaire = comm + " " + comm2
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         self.setValide()
         self.reaffiche()
 
index 59dbe45691b3eeaf76350401d90ed2e27b90d887..79077377e902d6e6a6d065cd9d3d73de43e148ea 100644 (file)
@@ -84,13 +84,13 @@ class MonWidgetPlusieursPlie(Ui_WidgetPlusieursPlie, Feuille):
         listeValeur = []
         for v in listeValeursBrutes:
             if v == None or pattern_blanc.match(v):
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     str(listeValeur) + "   Valeurs saisies incorrectes", Qt.red
                 )
                 return
             liste, validite = SaisieValeur.TraiteLEValeur(self, str(v))
             if not validite:
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     str(listeValeur) + "   Valeurs saisies incorrectes", Qt.red
                 )
                 return
@@ -103,7 +103,7 @@ class MonWidgetPlusieursPlie(Ui_WidgetPlusieursPlie, Feuille):
             self.node.item.isValid()
             self.setValeurs()
         else:
-            self.editor.afficheInfos(str(listeValeur) + "   " + comm, Qt.red)
+            self.editor.afficheMessage(str(listeValeur) + "   " + comm, Qt.red)
             self.lineEditVal.setText("")
 
 
index b2989231ca4e6b516bed3a65c4876b50b81965c0..dadd168317c7b3964f663b13262168b19d8e36f2 100644 (file)
@@ -378,7 +378,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe):
             if not validite:
                 if comm2 != "":
                     comm += " " + comm2
-                self.editor.afficheInfos(
+                self.editor.afficheMessage(
                     comm + " " + str(self.objSimp.definition.validators.typeDesTuples),
                     Qt.red,
                 )
@@ -393,7 +393,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe):
             return
         min, max = self.node.item.getMinMax()
         if self.indexDernierLabel == max:
-            self.editor.afficheInfos(tr("Nb maximum de valeurs atteint"))
+            self.editor.afficheMessage(tr("Nb maximum de valeurs atteint"))
         if self.indexDernierLabel < max and libre == False:
             self.ajoutLineEdit()
             self.listeAffichageWidget[-2].setFocus(True)
@@ -431,7 +431,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe):
 
         if len(liste) % self.nbValeurs != 0:
             texte = "Nombre incorrect de valeurs"
-            self.editor.afficheInfos(tr(texte), Qt.red)
+            self.editor.afficheMessage(tr(texte), Qt.red)
             return
 
         i = 0
@@ -450,12 +450,12 @@ class MonWidgetPlusieursTuple(Feuille, GereListe):
 
         if len(listeComplete) > max:
             texte = tr("Nombre maximum de valeurs ") + str(max) + tr(" atteint")
-            self.editor.afficheInfos(texte, Qt.red)
+            self.editor.afficheMessage(texte, Qt.red)
             return
 
         validite, comm, comm2, listeRetour = self.politique.ajoutNTuple(listeComplete)
         if not validite:
-            self.editor.afficheInfos(comm + comm2, Qt.red)
+            self.editor.afficheMessage(comm + comm2, Qt.red)
             return
 
         # on calcule le dernier lineedit rempli avant de changer la valeur
index ae3d339e37642744ee694b91263c5037d2f78305..399bdeffcb6583d1c0281965e66315b0927c8138 100644 (file)
@@ -81,5 +81,5 @@ class MonWidgetSDCOInto(Ui_WidgetSDCOInto, Feuille, SaisieSDCO):
         else:
             commentaire = self.node.item.getCr()
             self.reset_old_valeur(anc_val, mess=mess)
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         self.Commentaire.setText(tr(commentaire))
index a846fd70c07dd4bd01ff5c40d226bd6a4bf29b37..9bbdf19964620cda41e08ca57da34a347b1436e4 100644 (file)
@@ -55,7 +55,7 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
         if type(valeur) not in (list, tuple):
             self.LEComp.setText(str(valeur))
             commentaire = tr("complexe form deprecated, od value : ", valeur)
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         else:
             typ_cplx, x1, x2 = valeur
             self.LEReel.setText(str(x1))
@@ -76,15 +76,15 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
     #        v=eval(valeur,d)
     #    except :
     #        commentaire=tr("expression invalide")
-    #        self.editor.afficheInfos(commentaire,Qt.red)
+    #        self.editor.afficheMessage(commentaire,Qt.red)
     #        return
     #    try :
     #        i=v.imag
-    #        self.editor.afficheInfos(commentaire)
+    #        self.editor.afficheMessage(commentaire)
     #        self.valeurPressed()
     #    except :
     #        commentaire=tr("l expression n est pas de la forme a+bj")
-    #        self.editor.afficheInfos(commentaire,Qt.red)
+    #        self.editor.afficheMessage(commentaire,Qt.red)
 
     def LEReelRPressed(self):
         # self.LEComp.clear()
@@ -92,10 +92,10 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
         valeur = str(self.LEReel.text())
         try:
             a = locale.atof(valeur)
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         except:
             commentaire = tr("expression invalide")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         if self.LEImag.text() != "":
             self.valeurPressed()
         else:
@@ -106,10 +106,10 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
         valeur = str(self.LEImag.text())
         try:
             a = locale.atof(valeur)
-            self.editor.afficheInfos(commentaire)
+            self.editor.afficheMessage(commentaire)
         except:
             commentaire = tr("expression invalide")
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
         if self.LEReel.text() != "":
             self.valeurPressed()
         else:
@@ -127,13 +127,13 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
     #        v=eval(valeur,d)
     #    except :
     #        commentaire=tr("expression invalide")
-    #        self.editor.afficheInfos(commentaire,Qt.red)
+    #        self.editor.afficheMessage(commentaire,Qt.red)
     #        return None
     #     try :
     #        i=v.imag
     #    except :
     #        commentaire=tr("expression n est pas de la forme a+bj")
-    #        self.editor.afficheInfos(commentaire,Qt.red)
+    #        self.editor.afficheMessage(commentaire,Qt.red)
     #        return None
     #    return v
 
@@ -159,7 +159,7 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille):
         elif self.RBRI.isChecked() == 1:
             l.append("RI")
         else:
-            self.editor.afficheInfos(commentaire, Qt.red)
+            self.editor.afficheMessage(commentaire, Qt.red)
             self.RBMP.setFocus(True)
             return None
         try:
index 6dfd35143c5353eb861ed364100a2b1f4d15ac53..d764fb125578385339aac018b616354f53a521c7 100644 (file)
@@ -47,7 +47,7 @@ class MonWidgetSimpTuple(Feuille):
 
     def valeursPressed(self):
         aLeFocus = self.focusWidget()
-        self.editor.afficheInfos("")
+        self.editor.afficheMessage("")
         texteValeur = ""
         for i in range(self.nbValeurs):
             nomLineEdit = "lineEditVal" + str(i + 1)
@@ -79,7 +79,7 @@ class MonWidgetSimpTuple(Feuille):
                 texteValeur += ","
         validite, commentaire = self.politique.recordValeur(texteValeur)
         if not validite:
-            self.editor.afficheInfos(
+            self.editor.afficheMessage(
                 commentaire
                 + " "
                 + str(self.objSimp.definition.validators.typeDesTuples),
index d39d0d16c8fe16636a0b1432917dbccde7db16ca..371da4f49a0f7e264c7afda924ab7bc6fd0f20ae 100755 (executable)
@@ -32,7 +32,7 @@ import traceback
 from Accas.extensions.eficas_translation import tr
 from Editeur import session
 from InterfaceGUI.common import comploader
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.QT5 import browser
 
 from UiQT5.desBaseWidget import Ui_baseWidget
@@ -52,7 +52,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
     Editeur de jdc
     """
 
-    def __init__( self, appliEficas, fichier=None, jdc=None, QWParent=None, units=None, include=0):
+    def __init__( self, appliEficas, fichier=None, jdc=None, QWParent=None, include=0):
     # -----------------------------------------------------------------------------------------------
 
         QWidget.__init__(self, None)
@@ -69,10 +69,10 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
             self.sb = None
         self.QWParent = QWParent
 
-        Editor.__init__(self, appliEficas, fichier, jdc, units, include)
+        Editor.__init__(self, appliEficas, fichier, jdc, include)
         if self.jdc:
             comploader.chargerComposants(self.appliEficas.GUIPath)
-            self.jdc_item = Objecttreeitem.makeObjecttreeitem(self, "nom", self.jdc)
+            self.jdc_item = objecttreeitem.makeObjecttreeitem(self, "nom", self.jdc)
 
         # Particularites IHM : met la fenetre a jour
         self.initSplitterSizes()
@@ -147,7 +147,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
     def informe(self, titre, txt, critique=True):
     # ------------------------------------------#
         if critique:
-            self.afficheInfos(tr(txt), Qt.red)
+            self.afficheMessage(tr(txt), Qt.red)
             QMessageBox.critical(self, tr(titre), tr(txt))
         else:
             QMessageBox.warning(self, tr(titre), tr(txt))
@@ -236,7 +236,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
         self.close()
 
     # ----------------------------------------------#
-    def afficheInfos(self, message, couleur=Qt.black):
+    def afficheMessage(self, message, couleur=Qt.black):
     # ----------------------------------------------#
         if couleur == "red": couleur = Qt.red
         if self.sb:
@@ -402,7 +402,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
                         tr("Eficas n a pas reussi a copier l objet"),
                     )
                     self.message = ""
-                    self.afficheInfos("Copie refusee", Qt.red)
+                    self.afficheMessage("Copie refusee", Qt.red)
                 if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
                     try:
                         nom = noeudACopier.item.sd.nom
@@ -418,7 +418,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
                     self, tr("Copie refusee"), tr("Copie refusee pour ce type d objet")
                 )
                 self.message = ""
-                self.afficheInfos("Copie refusee", Qt.red)
+                self.afficheMessage("Copie refusee", Qt.red)
                 return
 
         # il faut declarer le JDCDisplay_courant modifie
@@ -1223,7 +1223,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget):
     def viewJdcRapport(self):
     # ----------------------------#
         strRapport = self.getJdcRapport() 
-        self._viewText(strRappoer, "Rapport Validation du JDC")
+        self._viewText(strRapport, "Rapport Validation du JDC")
   
     # ------------------#
     def _newJDCCND(self):
index 011d68ea40780471f2d95f729f789e4ae22d1808..44125b73bbef63fd2aa0d77c25c1f704b81308d6 100644 (file)
@@ -61,9 +61,9 @@ class QtEditorManager(EditorManager):
             self.appliEficas.construitMenu()
          
 
-    #-------------------------------------------------------
-    def openFile(self, fichier=None, units=None, patron =0):
-    #-------------------------------------------------------
+    #--------------------------------------------
+    def openFile(self, fichier=None,  patron =0):
+    #--------------------------------------------
         result = None
         if self.appliEficas.code == None:
             self.appliEficas.definitCode(None, None)
@@ -88,7 +88,7 @@ class QtEditorManager(EditorManager):
         ulfile = os.path.abspath(fichier)
         self.appliEficas.maConfiguration.saveDir = os.path.split(ulfile)[0]
         self.appliEficas.addToRecentList(fichier)
-        maPage = self.getEditor(fichier, units=units)
+        maPage = self.getEditor(fichier)
         if maPage: result = maPage
         if maPage: self.myQtab.setTabText(
            self.myQtab.indexOf(maPage), os.path.basename(fichier))
@@ -218,19 +218,11 @@ class QtEditorManager(EditorManager):
         editor = self.dictEditors[index]
         editor.handleAjoutEtape(nomEtape)
 
-    #------------------------------
-    def newEditor(self, include=0):
-    #------------------------------
-        if self.appliEficas.multi == True:
-            self.appliEficas.definitCode(None, None)
-            if self.appliEficas.code == None:
-                return
-        maPage = self.getEditor(include=include)
 
     #--------------------------
     def newIncludeEditor(self):
     #--------------------------
-        self.newEditor(include=1)
+        self.getEditor(include=1)
 
     #------------------------------------
     def viewJdcFichierSource(self):
@@ -289,13 +281,13 @@ class QtEditorManager(EditorManager):
         if index < 0: return
         self.dictEditors[index].viewJdcRapport()
 
-    #-------------------------
-    def viewJdcPy(self):
-    #-------------------------
+    #--------------------------------
+    def viewJdcFichierResultat(self):
+    #--------------------------------
         index = self.myQtab.currentIndex()
         if index < 0:
             return
-        self.dictEditors[index].viewJdcPy()
+        self.dictEditors[index].viewJdcFichierResultat()
 
     #--------------------
     def handleSave(self):
@@ -384,9 +376,14 @@ class QtEditorManager(EditorManager):
         editor = self.getEditor(fichier=fn, jdc=jdc, include=1)
         self.appliEficas.addToRecentList(editor.getFileName())
 
+
     #------------------------------------------------------------------
-    def getEditor(self, fichier=None, jdc=None, units=None, include=0):
+    def getEditor(self, fichier=None, jdc=None, include=0):
     #------------------------------------------------------------------
+        if self.appliEficas.multi == True:
+            self.appliEficas.definitCode(None, None)
+            if self.appliEficas.code == None:
+                return
         newWin = 0
         double = None
         for indexEditor in self.dictEditors:
@@ -403,7 +400,7 @@ class QtEditorManager(EditorManager):
                 double = editor
         else:
             from qt_editor import QtEditor
-            editor = QtEditor(self.appliEficas, fichier, jdc, self.myQtab, units, include)
+            editor = QtEditor(self.appliEficas, fichier, jdc, self.myQtab, include)
             if double != None: self.doubles[editor] = double
             if editor.jdc:  # le fichier est bien un jdc
                 self.editors.append(editor)
index 2b530b910af387f068ff295c8d75e3ce37ed16b9..24d1da9ba5bca6605084875391726e249ecd723e 100755 (executable)
@@ -687,7 +687,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     def fileNew(self):
     #----------------
         try:
-            self.editorManager.newEditor()
+            self.editorManager.getEditor()
         except EficasException as exc:
             msg = str(exc)
             if msg != "":
@@ -741,7 +741,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow):
     #------------------------
     def viewJdcRegles(self):
     #------------------------
-        self.editorManager.handleViewJdcRegles()
+        self.editorManager.viewJdcRegles()
 
     #------------------------------
     def viewJdcFichierResultat(self):
diff --git a/InterfaceGUI/Web/accasConnecteur.py b/InterfaceGUI/Web/accasConnecteur.py
deleted file mode 100755 (executable)
index dbfb1dc..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-#!/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')
-
index 3b99752cb24bd95453f64c16a336f4892ea834e8..e5c87c50431495a7ff9a0450d077b1cf06210a21 100644 (file)
@@ -19,7 +19,7 @@
 #
 
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 
 from InterfaceGUI.Web import compofact
 from InterfaceGUI.Web import browser
index a44d9c596a91a0a8bb2f2027c74ba47a47ebd974..2a6b648c6788d22dfb46d2cd2b5b59e7e340f493 100644 (file)
@@ -20,7 +20,7 @@
 
 from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.extensions.eficas_translation import tr
 
 
@@ -53,7 +53,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 
 
 
-class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
+class FACTTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode=Node
 
     def isExpandable(self):
index 806a72521e6c8dfe23c6d2713e4eadab9d98e316..52821f2c0a8bcab9558b28f1102e968d2da90f30 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
 from Accas.extensions.eficas_translation import tr
@@ -30,7 +30,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine):
         return param
 
 
-class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
+class JDCTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode=Node
 
     def isExpandable(self):
index bf515a009d4092508427e0cdfac27adc9a8b1970..0403ff31bfc4d15bd323a80a310359f032b18281 100644 (file)
@@ -23,7 +23,7 @@ from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
 from Accas.extensions.eficas_translation import tr
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.processing.P_OBJECT import ErrorObj
 
 
@@ -139,7 +139,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
            
 
 
-class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
+class MCListTreeItem(objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
     """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets
         du processing Accas instances de la classe MCLIST.
         Elle adapte ces objets pour leur permettre d'etre integres en tant que
@@ -165,7 +165,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 
     def isExpandable(self):
         if len(self._object) > 1:
-            return Objecttreeitem.SequenceTreeItem.isExpandable(self)
+            return objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
             return compofact.FACTTreeItem.isExpandable(self)
 
index d5ea4251e7f4220a9be69713e3222f412c43dfb6..7ce84364b8f464ee716c9fc098e6250d5ec922e8 100644 (file)
@@ -20,7 +20,7 @@
 
 from Accas.extensions.eficas_translation import tr
 from Accas.extensions.eficas_exception import EficasException
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
 
@@ -40,7 +40,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
     #    typeNode.PopUpMenuNode.createPopUpMenu(self)
 
 
-class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
+class EtapeTreeItem(objecttreeitem.ObjectTreeItem):
     """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing
         Accas. Elle leur permet d'etre affichés comme des noeuds
         d'un arbre graphique.
index 849b4269edf69f77c7b6b0d9e2efa8781c136774..47892f7aa921cc51dd6bc3906852f8608a6560c3 100644 (file)
@@ -25,7 +25,7 @@
 
 
 # import modules EFICAS
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
 from Accas.extensions.eficas_translation import tr
@@ -36,7 +36,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 
 
 
-class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
+class PARAMTreeItem(objecttreeitem.ObjectTreeItem):
     """
     Classe servant a definir l'item porte par le noeud de l'arbre d'EFICAS
     qui represente le PARAMETRE
index 5b8b28cf098126d86b367b5cf5ddc20b874c4895..f793cc46168957a8e35269d93893dfe17a6bbbd7 100644 (file)
@@ -17,7 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.Web import compooper
 from InterfaceGUI.Web import browser
 from InterfaceGUI.Web import typeNode
index df284fdec6aa3ea71805cac5a06b68c0dc694e04..ead37971d79523b3d8d6c2c351aa32be22c4ec30 100644 (file)
@@ -21,7 +21,7 @@
 import traceback
 
 # Modules Eficas
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.processing.P_CR import justifyText
 from Accas        import SalomeEntry
 from Accas        import ASSD
@@ -48,7 +48,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         
 
 
-class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
+class SIMPTreeItem(objecttreeitem.AtomicObjectTreeItem):
     itemNode=Node
 
     def init(self) :
index ab602fb820436d26f94699fb3a686c711bd2a0f7..34b69b6c1b784bcad7f17c0c17291c879d58a705 100755 (executable)
@@ -26,74 +26,84 @@ import traceback
 
 # Modules Eficas
 from Accas.extensions.eficas_translation import tr
+from Accas.extensions.eficas_exception import EficasException
 
-from Editeur         import session
 from InterfaceGUI.common import comploader
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.Web import browser
 
 debug = False
 
-from InterfaceGUI.editorSsIhm    import JDCEditorSsIhm
+from Editeur.editor import Editor
 
 
-class JDCWebEditor(JDCEditorSsIhm):
-# ------------------------------- #
+# -------------------- #
+class WebEditor(Editor):
+# -------------------- #
     """
        Editeur de jdc
     """
 
-    def __init__ (self,appliEficas,fichier = None, jdc= None, connecteur = None ):
-    #------------------------------------------------------------------------
+    #--------------------------------------------------------------------------
+    def __init__ (self,appliEficas,fichier = None, jdc= None, session = None ):
+    #--------------------------------------------------------------------------
         
-        self.connecteur=connecteur
-        JDCEditorSsIhm.__init__(self,appliEficas,fichier)
+        self.connecteur=appliEficas
+        Editor.__init__(self,appliEficas,fichier)
         self.dicoIdNode={}
         comploader.chargerComposants('Web')
         self.tree=None
         if self.jdc:
-            self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
+            self.jdc_item=objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
             if self.jdc_item :
                self.tree = browser.JDCTree( self.jdc_item,  self )
 
 
+    #-----------------------------
     def getNodeById(self,nodeId ):
     #-----------------------------
         if nodeId in self.dicoIdNode : return self.dicoIdNode[nodeId]
         else : return None
 
+    #---------------------------------------
     def reconstruitChaineDIndex(self,nodeId):
     #---------------------------------------
+        """ utilise pour logguer les fonctions """
         if nodeId in self.dicoIdNode : 
            node=self.dicoIdNode[nodeId]
-           return JDCEditorSsIhm.reconstruitChaineDIndex(self,node)
+           if node.object  == self.jdc : 
+               return 'monEficasConnecteur.monEditeur.tree.racine.item.idUnique'
+           chaine="['key']"
+           templateChaine='["children"][{}]'
+           aTraiter=node.object
+           while hasattr(aTraiter,'parent') and aTraiter.parent:
+               chaine=templateChaine.format(aTraiter.getIndexDsParent())+chaine
+               aTraiter=aTraiter.parent
+           chaine='d'+chaine
+           return (chaine)
         else : return None
 
 
-    def getDicoObjetsCompletsPourTree(self,obj) :
-    #-----------------------------------
-        #print ('editor getDicoObjetsCompletsPourTree pour ' ,self, obj)
-        if self.tree == None : return {}
-        return obj.getDicoObjetsCompletsPourTree()
-
-    def getDicoObjetsPourWeb(self,obj) :
-    #-----------------------------------
-        if self.tree == None : return {}
-        return obj.getDicoObjetsPourWeb()
-
+    #-----------------------------
     def getDicoForFancy(self,obj) :
-    #-----------------------------------
+    #-----------------------------
         if self.tree == None : return {}
         return obj.getDicoForFancy()
 
-    def afficheInfos(self,txt,couleur=None):
+    #-------------------------------------
+    def afficheMessage(self,txt,couleur=None):
     #---------------------------------------
-        self.connecteur.toWebApp('afficheInfos', txt, couleur) 
-        JDCEditorSsIhm.afficheInfos(self,txt,couleur)
+        self.connecteur.toWebApp('afficheMessage', txt, couleur) 
+        Editor.afficheMessage(self,'message to webapp',txt,couleur)
 
+    #-------------------------------------
     def afficheAlerte(self,titre,message):
     #-------------------------------------
         self.connecteur.toWebApp('afficheAlerte', titre ,  message) 
-        JDCEditorSsIhm.afficheAlerte(self,titre,message)
+        Editor.afficheMessage(self,titre,message)
 
+    #---------------------------
+    def getListeCommandes(self):
+    #---------------------------
+        return (self.jdc.getListeCmd())
 
diff --git a/InterfaceGUI/Web/web_editor_manager.py b/InterfaceGUI/Web/web_editor_manager.py
new file mode 100644 (file)
index 0000000..ab70df2
--- /dev/null
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+# 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
+from Accas.extensions.eficas_translation import tr
+from Editeur.editor_manager import EditorManager
+
+#-----------------------------------#
+class WebEditorManager(EditorManager):
+#-----------------------------------#
+    """
+    classe qui gere quel est l editor web actif
+    """
+
+    #--------------------------------
+    def __init__(self, appliEficas):
+    #--------------------------------
+        super().__init__(appliEficas)
+        self.dictSessions={}
+
+
+    #---------------------------------------
+    def afficheInfos(self,txt,couleur=None):
+    #---------------------------------------
+        """
+          Est-ce que le web_manager a des infos a afficher ?
+          sans session ?
+        """
+        self.appliEficas.toWebApp('afficheInfos', txt, couleur) 
+
+
+    # ------------------------------------------------------
+    def getEditor(self, fichier=None, jdc=None, session = 1 ):
+    # ------------------------------------------------------
+        """
+          Retourne un nouvel editeur ou le meme si doublon
+          gere la liste des connexions pour propager les infos
+          a affiner : le nom du fichier n est pas determinant
+          il faut aussi la machine dont il provient
+        """
+        for indexEditor in self.dictEditors:
+            editor = self.dictEditors[indexEditor]
+            if self.samePath(fichier, editor.getFileName()):
+                double = editor
+             
+        else:
+            from web_editor import WebEditor
+            editor = WebEditor(self.appliEficas, fichier)
+            if editor.jdc:  # le fichier est bien un jdc
+                self.editors.append(editor)
+            else:
+                editor=None
+        return editor
+
+
index a68d60afdfebe398da3209e55473f39c589cf22f..b63e97f8958c9c5cd84637e74bbc88c473222d46 100755 (executable)
@@ -22,412 +22,72 @@ import os, sys
 
 from Editeur.eficas_appli import EficasAppli
 from InterfaceGUI.Web.web_editor_manager import WebEditorManager
+from Accas.extensions.eficas_exception import EficasException
 
+activeLogging=0
+if activeLogging :
+   from Editeur.loggingEnvironnement import loggingEnvironnement, fonctionLoguee
+else :
+   fonctionLoguee = lambda func: func
+
+#--------------------------------#
 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"):
-    #----------------------------------------------------------------------------------------------------------------------------------------------
+    #---------------------------------------------------------------------------------------------------------------------------------------------------------
+    def __init__(self, code=None, versionCode=None, salome=0, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5", appWeb=None):
+    #---------------------------------------------------------------------------------------------------------------------------------------------------------
         """
         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')
+        EficasAppli.__init__( self, code, versionCode, salome, multi, langue,  ssCode, fichierCata, GUIPath, appWeb)
+        self.editorManager = WebEditorManager(self)
+        if self.appWeb == None : 
+           super().afficheMessage ('lancement Eficas WEB' , 'le parametre appWeb est obligatoire')
            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):
+    #-----------------------------------------
+    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
+        if debug  : print ('PNPNPN : WebEficasAppli.toWebApp',  fction, *args, **kwargs)
+        if self.appWeb == None  : return
+        #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom)
         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 createEditor(self):
+    #-----------------------
+        monEditor = self.editorManager.getEditor(self)
+        return monEditor
 
-    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)
+    @fonctionLoguee
+    #---------------------------
+    def openFile(self, fichier):
+    #---------------------------
+        try:
+            monEditor = self.editorManager.getEditor(fichier)
+        except EficasException as exc:
+            self.afficheMessage('erreur ouverture fichier', str(exc),critical=True)
+            monEditor = None
+        return monEditor
+
+    @fonctionLoguee
+    #-----------------------------------------------------
+    def afficheMessage (self, titre, texte,critical=True):
+    #-----------------------------------------------------
+#TODO : le afficheMessage doit tenir compte de qui
+        if critical : 
+           self.toWebApp('afficheMessage', titre+texte, 'rouge')
+        else :
+           self.toWebApp('afficheMessage', titre+texte)
 
 
 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')
-
+    print ('todo')
index 916b8b6863a6fb2a1b5a5cb33cd6a7320842a926..76c35b08d37a018e8aae618c88923737a5811ef2 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 from __future__ import absolute_import
-from Editeur  import Objecttreeitem
+from Editeur  import objecttreeitem
 from InterfaceGUI.cinqC import browser
 from InterfaceGUI.cinqC import compoproc
 
index 109f40716b33df956f5cb983a72c3e42263346f7..8b7a7978bb2c953e1673112d4c416236f364c9bd 100644 (file)
@@ -23,7 +23,7 @@ from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
 
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 import traceback
 
 
@@ -56,7 +56,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
-class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
+class FACTTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode=Node
 
     def isExpandable(self):
index 21cf9bcc50fd4cecbf557039190d666e1b41b5b1..e27b3c8476683ea5a84a31d91318d9c66d59961d 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.cinqC import browser
 from Accas.extensions.eficas_translation import tr
 
@@ -32,7 +32,7 @@ class Node(browser.JDCNode):
 
 
 
-class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
+class JDCTreeItem(objecttreeitem.ObjectTreeItem):
     itemNode=Node
 
     def isExpandable(self):
index 49a02e58844f34c2b26843b54e33f8373fd48d97..7499c11313db06df5e612ebb9397b8d6e4c9d1e1 100644 (file)
@@ -26,7 +26,7 @@ from InterfaceGUI.cinqC import browser
 from InterfaceGUI.QT5 import typeNode
 from Accas.extensions.eficas_translation import tr
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from Accas.processing.P_OBJECT import ErrorObj
 
 
@@ -73,7 +73,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
 
 
 
-class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
+class MCListTreeItem(objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
     """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets
         du processing Accas instances de la classe MCLIST.
         Elle adapte ces objets pour leur permettre d'etre integres en tant que
@@ -110,7 +110,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 
     def isExpandable(self):
         if len(self._object) > 1:
-            return Objecttreeitem.SequenceTreeItem.isExpandable(self)
+            return objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
             return compofact.FACTTreeItem.isExpandable(self)
 
index d11373efc1d46d9eb8759e2518c6ca0b7ff01e86..e5a824f787ff697764a02bff7e394747d630440c 100644 (file)
@@ -20,7 +20,7 @@
 import os
 import tempfile
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.cinqC import browser
 
 class Node(browser.JDCNode ):
@@ -41,7 +41,7 @@ class Node(browser.JDCNode ):
         return MonWidgetCommande(self,self.editor,self.item.object)
 
 
-class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
+class EtapeTreeItem(objecttreeitem.ObjectTreeItem):
     """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing
         Accas. Elle leur permet d'etre affichés comme des noeuds
         d'un arbre graphique.
index 37e83d7104bc2ca38f0147dbd6001a3fbb28774c..86fd8cfc678271718cdee2c737ca8a7081af6b34 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 from __future__ import absolute_import
-from InterfaceGui.common  import Objecttreeitem
+from InterfaceGui.common  import objecttreeitem
 from InterfaceGUI.cinqC import browser
 from InterfaceGUI.cinqC import compooper
 
index d3561fd7c09813cb6d01eafeb75dabc3cce5944c..1fe7da53bf7c63ee5424d0952e02fdf880712bff 100644 (file)
@@ -18,7 +18,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-from InterfaceGUI.common import Objecttreeitem
+from InterfaceGUI.common import objecttreeitem
 from InterfaceGUI.cinqC import browser
 from InterfaceGUI.QT5.compojdc import JDCTreeItem
 
index c88f51598ad3b24243f581bbb9e4f39bab0262fe..98fc88e57bd0be00c826b304ad2fdbd5d064c7b8 100644 (file)
@@ -28,7 +28,7 @@ from PyQt5.QtWidgets           import QWidget
 from Editeur.editor            import Editor
 from UiQT5.editor5C            import Ui_editor5C
 from InterfaceGui.common       import comploader
-from InterfaceGui.common       import Objecttreeitem
+from InterfaceGui.common       import objecttreeitem
 from InterfaceGUI.cinqC        import browser
 from InterfaceGUI.cinqC.connectDB import connectDB
 import Accas.IO.writer as generator
@@ -41,7 +41,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget):
        Editeur de jdc 5C
     """
 
-    def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+    def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, include=0):
     #------------------------------------------------------------------------------------------------
 
         debug = 0
@@ -97,7 +97,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget):
         self.jdcSelection=self._newJDC(texte=texte)
         self.jdcSelection.analyse()
         if debug : print (self.jdcSelection.etapes)
-        self.jdcSelectionItem = Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcSelection )
+        self.jdcSelectionItem = objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcSelection )
         if self.jdcSelectionItem :
            self.treeJdcSelection = browser.JDCTree( self.jdcSelectionItem, self )
            if debug : print (self.treeJdcSelection)
@@ -167,7 +167,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget):
         if debug : print ('texte newJDC' , texte)
         self.jdcLabels=self._newJDC(texte=texte)
         self.jdcLabels.analyse()
-        jdcLabelsItem = Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcLabels )
+        jdcLabelsItem = objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcLabels )
         if jdcLabelsItem :
            treeJdcLabels = browser.JDCTree( jdcLabelsItem, self )
            widgetLabels = treeJdcLabels.racine.children[0].fenetre
index 945b61d0948ac69b3d43f7946cc47b681499a971..f1cd30ac7a8c00a412d14c7baea291a9fb2057d3 100644 (file)
@@ -35,7 +35,7 @@ class QtEficasAppli(Ui_Eficas5C, QtEficasAppli):
         super().__init__(code=code, salome=salome, multi=multi, langue=langue, versionCode=versionCode, GUIPath=GUIPath)
         self.withXSD = True
         self.GUIPath = GUIPath
-        self.editorManager.newEditor()
+        self.editorManager.getEditor()
         
 
     def connecterSignaux(self) :
diff --git a/InterfaceGUI/common/Objecttreeitem.py b/InterfaceGUI/common/Objecttreeitem.py
deleted file mode 100644 (file)
index 81338a1..0000000
+++ /dev/null
@@ -1,551 +0,0 @@
-# -*- coding: utf-8 -*-
-# 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
-#
-"""
-"""
-from builtins import str
-from builtins import object
-import types, os, sys
-from copy import copy, deepcopy
-from uuid import uuid1
-
-# import du chargeur de composants
-from InterfaceGUI.common.comploader import makeObjecttreeitem
-from Accas.accessor import CONNECTOR
-from Accas.extensions.eficas_translation import tr
-from Accas.extensions.eficas_exception import EficasException
-
-from reprlib import Repr
-
-myrepr = Repr()
-myrepr.maxstring = 100
-myrepr.maxother = 100
-
-
-class TreeItem(object):
-
-    """Abstract class representing tree items.
-
-    Methods should typically be overridden, otherwise a default action
-    is used.
-
-    """
-
-    # itemNode est une factory qui doit retourner un objet de la classe Node
-    # ou derive de cette classe.
-    # Le widget arbre utilisera cet objet comme noeud associe au tree item.
-    # Par defaut, utilise la classe Node de base
-    # La signature de la factory est la suivante :
-    # itemNode(treeOrNode,item,command,rmenu)
-    # ou treeOrNode est le noeud parent, item est l'item associe
-    # command est une fonction python appelee sur selection graphique
-    # du noeud et rmenu est une fonction python appelee sur click droit sur le noeud
-    itemNode = None
-
-    def __init__(self):
-        """Constructor.  Do whatever you need to do."""
-
-    def getText(self):
-        """Return text string to display."""
-
-    def getLabelText(self):
-        """Return label text string to display in front of text (if any)."""
-
-    expandable = None
-
-    def _isExpandable(self):
-        if self.expandable is None:
-            self.expandable = self.isExpandable()
-        return self.expandable
-
-    def isExpandable(self):
-        """Return whether there are subitems."""
-        return 1
-
-    def _getSubList(self):
-        """Do not override!  Called by TreeNode."""
-        if not self.isExpandable():
-            return []
-        sublist = self.getSubList()
-        if not sublist:
-            self.expandable = 0
-        return sublist
-
-    def IsEditable(self):
-        """Return whether the item's text may be edited."""
-        pass
-
-    def SetText(self, text):
-        """Change the item's text (if it is editable)."""
-        pass
-
-    def getIconName(self):
-        """Return name of icon to be displayed normally."""
-        pass
-
-    def getSelectedIconName(self):
-        """Return name of icon to be displayed when selected."""
-        pass
-
-    def getSubList(self):
-        """Return list of items forming sublist."""
-        pass
-
-    def onDoubleClick(self):
-        """Called on a double-click on the item."""
-        pass
-
-
-class Delegate(object):
-    def __init__(self, delegate=None):
-        self.object = delegate
-        self.__cache = {}
-
-    def setDelegate(self, delegate):
-        self.resetcache()
-        self.object = delegate
-
-    def getDelegate(self):
-        return self.object
-
-    def __getattr__(self, name):
-        attr = getattr(self.object, name)  # May raise AttributeError
-        setattr(self, name, attr)
-        self.__cache[name] = attr
-        return attr
-
-    def resetcache(self):
-        for key in list(self.__cache.keys()):
-            try:
-                delattr(self, key)
-            except AttributeError:
-                pass
-        self.__cache.clear()
-
-    def cachereport(self):
-        keys = list(self.__cache.keys())
-        keys.sort()
-        # print keys
-
-
-class ObjectTreeItem(TreeItem, Delegate):
-    def __init__(self, appliEficas, labeltext, object, setFunction=None):
-        self.labeltext = labeltext
-        self.appliEficas = appliEficas
-        # L'objet delegue est stocke dans l'attribut object
-        # L'objet associe a l'item est stocke dans l'attribut _object
-        # Il peut etre obtenu par appel a la methode getObject
-        # Attention : le delegue peut etre different de l'objet associe (MCLIST)
-        # Dans le cas d'une MCListe de longueur 1, l'objet associe est la MCListe
-        # et l'objet delegue est le MCFACT (object = _object.data[0])
-        Delegate.__init__(self, object)
-        # On cache l'objet initial (pour destruction eventuelle
-        # ulterieure)
-        self._object = object
-        self.setFunction = setFunction
-        self.expandable = 1
-        self.sublist = []
-        self.init()
-
-
-        # La partie suivante  ne sert que pour le Web
-        # on met le meme id au noeud et a l objet
-        # utile pour les MCList
-        if hasattr(object, "idUnique"):
-            self.idUnique = object.idUnique
-        else:
-            self.idUnique = uuid1().hex
-
-        if self._object.nature == "MCList" and len(self._object.data) == 1:
-            # pour les suppressions on met le meme id a l objet et a la liste
-            self._object.data[0].idUnique = self.idUnique
-            self._object.idUnique = self._object.data[0].idUnique
-            if hasattr(self.appliEficas, "dicoIdNode"):
-                self.appliEficas.dicoIdNode[self._object.data[0].idUnique] = self
-            self.idUnique = 0
-            return
-
-        self._object.idUnique = self.idUnique
-        if hasattr(self.appliEficas, "dicoIdNode") and self.idUnique:
-            self.appliEficas.dicoIdNode[self.idUnique] = self
-
-    def init(self):
-        return
-
-    def getObject(self):
-        return self._object
-
-    def connect(self, channel, callable, args):
-        """Connecte la fonction callable (avec arguments args) a l'item self sur le
-        canal channel
-        """
-        # print self,channel,callable,args
-        CONNECTOR.Connect(self._object, channel, callable, args)
-        CONNECTOR.Connect(self.object, channel, callable, args)
-
-    def copy(self):
-        """
-        Cree un item copie de self
-        """
-        object = self._object.copy()
-        appliEficas = copy(self.appliEficas)
-        labeltext = copy(self.labeltext)
-        fonction = deepcopy(self.setFunction)
-        item = makeObjecttreeitem(appliEficas, labeltext, object, fonction)
-        return item
-
-    def isActif(self):
-        if hasattr(self.object, "actif"):
-            return self.object.actif
-        else:
-            return 1
-
-    def update(self, item):
-        """
-        Met a jour l'item courant a partir d'un autre item passe en argument
-        Ne fait rien par defaut
-        """
-        pass
-
-    def getLabelText(self):
-        """Retourne 3 valeurs :
-        - le texte a afficher dans le noeud representant l'item
-        - la fonte dans laquelle afficher ce texte
-        - la couleur du texte
-        """
-        # None --> fonte et couleur par defaut
-        return tr(self.labeltext), None, None
-
-    def getNature(self):
-        """
-        Retourne la nature de l'item et de l'objet
-        """
-        return self.object.nature
-
-    def getRegles(self):
-        """retourne les regles de l'objet pointe par self"""
-        return self.object.getRegles()
-
-    def getListeMcPresents(self):
-        """Retourne la liste des mots-cles fils de l'objet pointe par self"""
-        return self.object.listeMcPresents()
-
-    def getVal(self):
-        """Retourne le nom de la valeur de l'objet pointe par self dans le cas
-        ou celle-ci est un objet (ASSD)"""
-        return self.object.getVal()
-
-    def get_definition(self):
-        """
-        Retourne l'objet definition de l'objet pointe par self
-        """
-        return self.object.definition
-
-    def getListeMcOrdonnee(self, liste, dico):
-        """retourne la liste ordonnee (suivant le catalogue) brute des mots-cles
-        d'une entite composee dont le chemin complet est donne sous forme
-        d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
-        il faut encore rearranger cette liste (certains mots-cles deja
-        presents ne doivent plus etre proposes, regles ...)"""
-        return self.object.getListeMcOrdonnee(liste, dico)
-
-    def getListeMcOrdonneeBrute(self, liste, dico):
-        """
-        retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
-        d'une entite composee dont le chemin complet est donne sous forme
-        d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
-        """
-        return self.object.getListeMcOrdonneeBrute(liste, dico)
-
-    def getGenealogie(self):
-        """
-        Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE)
-        de l'objet pointe par self
-        """
-        return self.object.getGenealogie()
-
-    def getIndexChild(self, nom_fils):
-        """
-        Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
-        Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
-        le nouveau mot-cle
-        """
-        return self.object.getIndexChild(nom_fils)
-
-    def getIndexChild_old(self, nom_fils):
-        """
-        Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
-        Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
-        le nouveau mot-cle
-        """
-        liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(
-            self.getGenealogie(), self.getJdc().dicoCataOrdonne
-        )
-        liste_noms_mc_presents = self.object.listeMcPresents()
-        l = []
-        for nom in liste_noms_mc_ordonnee:
-            if nom in liste_noms_mc_presents or nom == nom_fils:
-                l.append(nom)
-        # l contient les anciens mots-cles + le nouveau dans l'ordre
-        return l.index(nom_fils)
-
-    def appendChild(self, name, pos=None):
-        """
-        Permet d'ajouter un item fils a self
-        """
-        if pos == "first":
-            index = 0
-        elif pos == "last":
-            index = len(self.listeMcPresents())
-        elif type(pos) == int:
-            # la position est fixee
-            index = pos
-        # elif type(pos) == types.InstanceType:
-        elif type(pos) == object:
-            # pos est un item. Il faut inserer name apres pos
-            index = self.getIndex(pos) + 1
-        # elif type(name) == types.InstanceType:
-        elif type(name) == object:
-            index = self.getIndexChild(name.nom)
-        else:
-            index = self.getIndexChild(name)
-        return self.addobject(name, index)
-
-    def appendBrother(self, name, pos="after"):
-        """
-        Permet d'ajouter un frere a self
-        par defaut on l'ajoute apres self
-        """
-        index = self._object.parent.getIndex(self.getObject())
-        if pos == "before":
-            index = index
-        elif pos == "after":
-            index = index + 1
-        else:
-            print((tr("%d n'est pas un index valide pour appendBrother", pos)))
-            return
-        return self.parent.addobject(name, index)
-
-    def getCopieObjet(self):
-        """Retourne une copie de l'objet pointe par self"""
-        return self.object.copy()
-
-    def getPosition(self):
-        """Retourne la valeur de l'attribut position de l'objet pointe par self"""
-        definition = self.get_definition()
-        try:
-            return getattr(definition, "position")
-        except AttributeError:
-            return "local"
-
-    def getNom(self):
-        """Retourne le nom de l'objet pointe par self"""
-        return self.object.nom
-
-    def getJdc(self):
-        """Retourne le jdc auquel appartient l'objet pointe par self"""
-        return self.object.jdc
-
-    def getValeur(self):
-        """Retourne la valeur de l'objet pointe par self"""
-        return self.object.valeur
-
-    def getCr(self):
-        """Retourne le compte-rendu CR de self"""
-        return self.object.report()
-
-    def getObjetCommentarise(self):
-        """
-        Cette methode retourne un objet commentarise
-        representatif de self.object
-        --> a surcharger par les differents items
-        """
-        raise EficasException(
-            "MESSAGE AU DEVELOPPEUR : il faut \
-                                 surcharger la methode getObjetCommentarise() \
-                                 pour la classe %s",
-            self.__class__.__name__,
-        )
-
-    def isValid(self):
-        """Retourne 1 si l'objet pointe par self est valide, 0 sinon"""
-        return self.object.isValid()
-
-    def isCopiable(self):
-        """
-        Retourne 1 si l'objet est copiable, 0 sinon
-        Par defaut retourne 0
-        """
-        return 0
-
-    def getMcPresents(self):
-        """Retourne le dictionnaire des mots-cles presents de l'objet pointe par self"""
-        return self.object.dictMcPresents()
-
-    def verifConditionRegles(self, l_mc_presents):
-        return self.object.verifConditionRegles(l_mc_presents)
-
-    def getFr(self):
-        """Retourne le fr de l'objet pointe par self"""
-        try:
-            return self.object.getFr()
-        except:
-            return ""
-
-    def getDocu(self):
-        """Retourne la cle de doc de l'objet pointe par self"""
-        return self.object.getDocu()
-
-    def setValeur(self, new_valeur):
-        """Remplace la valeur de l'objet pointe par self par new_valeur"""
-        return self.object.setValeur(new_valeur)
-
-    def getText(self):
-        return myrepr.repr(self.object)
-
-    def getIconName(self):
-        if not self.isExpandable():
-            return "python"
-
-    def IsEditable(self):
-        return self.setFunction is not None
-
-    def SetText(self, text):
-        try:
-            value = eval(text)
-            self.setFunction(value)
-        except:
-            pass
-
-    def isExpandable(self):
-        return 1
-
-    def getSubList(self):
-        keys = dir(self.object)
-        sublist = []
-        for key in keys:
-            try:
-                value = getattr(self.object, key)
-            except AttributeError:
-                continue
-            item = makeObjecttreeitem(
-                self.appliEficas,
-                str(key) + " =",
-                value,
-                lambda value, key=key, object=self.object: setattr(object, key, value),
-            )
-            sublist.append(item)
-        return sublist
-
-        # a piori inutile PN 06 11 17
-        # def wait_fichier_init(self):
-        """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation
-        (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
-
-    #    return self.object.definition.fichier_ini
-
-    def makeObjecttreeitem(self, appliEficas, labeltext, object, setFunction=None):
-        """
-        Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet
-        de type item associe a l'object passe en argument.
-        """
-        return makeObjecttreeitem(appliEficas, labeltext, object, setFunction)
-
-    # def __del__(self):
-    #    print "__del__",self
-
-
-class AtomicObjectTreeItem(ObjectTreeItem):
-    def isExpandable(self):
-        return 0
-
-
-class SequenceTreeItem(ObjectTreeItem):
-    def isExpandable(self):
-        return len(self._object) > 0
-
-    def __len__(self):
-        return len(self._object)
-
-    def keys(self):
-        return list(range(len(self._object)))
-
-    def getIconName(self):
-        if self._object.isValid():
-            return "ast-green-los"
-        elif self._object.isOblig():
-            return "ast-red-los"
-        else:
-            return "ast-yel-los"
-
-    def ajoutPossible(self):
-        return self._object.ajoutPossible()
-
-    def getIndex(self, child):
-        """Retourne le numero de child dans la liste des enfants de self"""
-        return self._object.getIndex(child.getObject())
-
-    def getText(self):
-        return "    "
-
-    def addItem(self, obj, pos):
-        self._object.insert(pos, obj)
-        item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj)
-        return item
-
-    def suppItem(self, item):
-        try:
-            self._object.remove(item.getObject())
-            # la liste peut etre retournee vide !
-            message = "Mot-clef " + item.getObject().nom + " supprime"
-            self.appliEficas.afficheMessages(message)
-            return 1
-        except:
-            return 0
-
-    def getSubList(self):
-        isublist = iter(self.sublist)
-        liste = self._object.data
-        iliste = iter(liste)
-        self.sublist = []
-
-        while 1:
-            old_obj = obj = None
-            for item in isublist:
-                old_obj = item.getObject()
-                if old_obj in liste:
-                    break
-
-            for obj in iliste:
-                if obj is old_obj:
-                    break
-
-                # nouvel objet : on cree un nouvel item
-                def setFunction(value, object=obj):
-                    object = value
-
-                it = self.makeObjecttreeitem(
-                    self.appliEficas, obj.nom + " : ", obj, setFunction
-                )
-                self.sublist.append(it)
-            if old_obj is None and obj is None:
-                break
-            if old_obj is obj:
-                self.sublist.append(item)
-        return self.sublist
diff --git a/InterfaceGUI/common/objecttreeitem.py b/InterfaceGUI/common/objecttreeitem.py
new file mode 100644 (file)
index 0000000..81338a1
--- /dev/null
@@ -0,0 +1,551 @@
+# -*- coding: utf-8 -*-
+# 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
+#
+"""
+"""
+from builtins import str
+from builtins import object
+import types, os, sys
+from copy import copy, deepcopy
+from uuid import uuid1
+
+# import du chargeur de composants
+from InterfaceGUI.common.comploader import makeObjecttreeitem
+from Accas.accessor import CONNECTOR
+from Accas.extensions.eficas_translation import tr
+from Accas.extensions.eficas_exception import EficasException
+
+from reprlib import Repr
+
+myrepr = Repr()
+myrepr.maxstring = 100
+myrepr.maxother = 100
+
+
+class TreeItem(object):
+
+    """Abstract class representing tree items.
+
+    Methods should typically be overridden, otherwise a default action
+    is used.
+
+    """
+
+    # itemNode est une factory qui doit retourner un objet de la classe Node
+    # ou derive de cette classe.
+    # Le widget arbre utilisera cet objet comme noeud associe au tree item.
+    # Par defaut, utilise la classe Node de base
+    # La signature de la factory est la suivante :
+    # itemNode(treeOrNode,item,command,rmenu)
+    # ou treeOrNode est le noeud parent, item est l'item associe
+    # command est une fonction python appelee sur selection graphique
+    # du noeud et rmenu est une fonction python appelee sur click droit sur le noeud
+    itemNode = None
+
+    def __init__(self):
+        """Constructor.  Do whatever you need to do."""
+
+    def getText(self):
+        """Return text string to display."""
+
+    def getLabelText(self):
+        """Return label text string to display in front of text (if any)."""
+
+    expandable = None
+
+    def _isExpandable(self):
+        if self.expandable is None:
+            self.expandable = self.isExpandable()
+        return self.expandable
+
+    def isExpandable(self):
+        """Return whether there are subitems."""
+        return 1
+
+    def _getSubList(self):
+        """Do not override!  Called by TreeNode."""
+        if not self.isExpandable():
+            return []
+        sublist = self.getSubList()
+        if not sublist:
+            self.expandable = 0
+        return sublist
+
+    def IsEditable(self):
+        """Return whether the item's text may be edited."""
+        pass
+
+    def SetText(self, text):
+        """Change the item's text (if it is editable)."""
+        pass
+
+    def getIconName(self):
+        """Return name of icon to be displayed normally."""
+        pass
+
+    def getSelectedIconName(self):
+        """Return name of icon to be displayed when selected."""
+        pass
+
+    def getSubList(self):
+        """Return list of items forming sublist."""
+        pass
+
+    def onDoubleClick(self):
+        """Called on a double-click on the item."""
+        pass
+
+
+class Delegate(object):
+    def __init__(self, delegate=None):
+        self.object = delegate
+        self.__cache = {}
+
+    def setDelegate(self, delegate):
+        self.resetcache()
+        self.object = delegate
+
+    def getDelegate(self):
+        return self.object
+
+    def __getattr__(self, name):
+        attr = getattr(self.object, name)  # May raise AttributeError
+        setattr(self, name, attr)
+        self.__cache[name] = attr
+        return attr
+
+    def resetcache(self):
+        for key in list(self.__cache.keys()):
+            try:
+                delattr(self, key)
+            except AttributeError:
+                pass
+        self.__cache.clear()
+
+    def cachereport(self):
+        keys = list(self.__cache.keys())
+        keys.sort()
+        # print keys
+
+
+class ObjectTreeItem(TreeItem, Delegate):
+    def __init__(self, appliEficas, labeltext, object, setFunction=None):
+        self.labeltext = labeltext
+        self.appliEficas = appliEficas
+        # L'objet delegue est stocke dans l'attribut object
+        # L'objet associe a l'item est stocke dans l'attribut _object
+        # Il peut etre obtenu par appel a la methode getObject
+        # Attention : le delegue peut etre different de l'objet associe (MCLIST)
+        # Dans le cas d'une MCListe de longueur 1, l'objet associe est la MCListe
+        # et l'objet delegue est le MCFACT (object = _object.data[0])
+        Delegate.__init__(self, object)
+        # On cache l'objet initial (pour destruction eventuelle
+        # ulterieure)
+        self._object = object
+        self.setFunction = setFunction
+        self.expandable = 1
+        self.sublist = []
+        self.init()
+
+
+        # La partie suivante  ne sert que pour le Web
+        # on met le meme id au noeud et a l objet
+        # utile pour les MCList
+        if hasattr(object, "idUnique"):
+            self.idUnique = object.idUnique
+        else:
+            self.idUnique = uuid1().hex
+
+        if self._object.nature == "MCList" and len(self._object.data) == 1:
+            # pour les suppressions on met le meme id a l objet et a la liste
+            self._object.data[0].idUnique = self.idUnique
+            self._object.idUnique = self._object.data[0].idUnique
+            if hasattr(self.appliEficas, "dicoIdNode"):
+                self.appliEficas.dicoIdNode[self._object.data[0].idUnique] = self
+            self.idUnique = 0
+            return
+
+        self._object.idUnique = self.idUnique
+        if hasattr(self.appliEficas, "dicoIdNode") and self.idUnique:
+            self.appliEficas.dicoIdNode[self.idUnique] = self
+
+    def init(self):
+        return
+
+    def getObject(self):
+        return self._object
+
+    def connect(self, channel, callable, args):
+        """Connecte la fonction callable (avec arguments args) a l'item self sur le
+        canal channel
+        """
+        # print self,channel,callable,args
+        CONNECTOR.Connect(self._object, channel, callable, args)
+        CONNECTOR.Connect(self.object, channel, callable, args)
+
+    def copy(self):
+        """
+        Cree un item copie de self
+        """
+        object = self._object.copy()
+        appliEficas = copy(self.appliEficas)
+        labeltext = copy(self.labeltext)
+        fonction = deepcopy(self.setFunction)
+        item = makeObjecttreeitem(appliEficas, labeltext, object, fonction)
+        return item
+
+    def isActif(self):
+        if hasattr(self.object, "actif"):
+            return self.object.actif
+        else:
+            return 1
+
+    def update(self, item):
+        """
+        Met a jour l'item courant a partir d'un autre item passe en argument
+        Ne fait rien par defaut
+        """
+        pass
+
+    def getLabelText(self):
+        """Retourne 3 valeurs :
+        - le texte a afficher dans le noeud representant l'item
+        - la fonte dans laquelle afficher ce texte
+        - la couleur du texte
+        """
+        # None --> fonte et couleur par defaut
+        return tr(self.labeltext), None, None
+
+    def getNature(self):
+        """
+        Retourne la nature de l'item et de l'objet
+        """
+        return self.object.nature
+
+    def getRegles(self):
+        """retourne les regles de l'objet pointe par self"""
+        return self.object.getRegles()
+
+    def getListeMcPresents(self):
+        """Retourne la liste des mots-cles fils de l'objet pointe par self"""
+        return self.object.listeMcPresents()
+
+    def getVal(self):
+        """Retourne le nom de la valeur de l'objet pointe par self dans le cas
+        ou celle-ci est un objet (ASSD)"""
+        return self.object.getVal()
+
+    def get_definition(self):
+        """
+        Retourne l'objet definition de l'objet pointe par self
+        """
+        return self.object.definition
+
+    def getListeMcOrdonnee(self, liste, dico):
+        """retourne la liste ordonnee (suivant le catalogue) brute des mots-cles
+        d'une entite composee dont le chemin complet est donne sous forme
+        d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
+        il faut encore rearranger cette liste (certains mots-cles deja
+        presents ne doivent plus etre proposes, regles ...)"""
+        return self.object.getListeMcOrdonnee(liste, dico)
+
+    def getListeMcOrdonneeBrute(self, liste, dico):
+        """
+        retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
+        d'une entite composee dont le chemin complet est donne sous forme
+        d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
+        """
+        return self.object.getListeMcOrdonneeBrute(liste, dico)
+
+    def getGenealogie(self):
+        """
+        Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE)
+        de l'objet pointe par self
+        """
+        return self.object.getGenealogie()
+
+    def getIndexChild(self, nom_fils):
+        """
+        Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
+        Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
+        le nouveau mot-cle
+        """
+        return self.object.getIndexChild(nom_fils)
+
+    def getIndexChild_old(self, nom_fils):
+        """
+        Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
+        Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
+        le nouveau mot-cle
+        """
+        liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(
+            self.getGenealogie(), self.getJdc().dicoCataOrdonne
+        )
+        liste_noms_mc_presents = self.object.listeMcPresents()
+        l = []
+        for nom in liste_noms_mc_ordonnee:
+            if nom in liste_noms_mc_presents or nom == nom_fils:
+                l.append(nom)
+        # l contient les anciens mots-cles + le nouveau dans l'ordre
+        return l.index(nom_fils)
+
+    def appendChild(self, name, pos=None):
+        """
+        Permet d'ajouter un item fils a self
+        """
+        if pos == "first":
+            index = 0
+        elif pos == "last":
+            index = len(self.listeMcPresents())
+        elif type(pos) == int:
+            # la position est fixee
+            index = pos
+        # elif type(pos) == types.InstanceType:
+        elif type(pos) == object:
+            # pos est un item. Il faut inserer name apres pos
+            index = self.getIndex(pos) + 1
+        # elif type(name) == types.InstanceType:
+        elif type(name) == object:
+            index = self.getIndexChild(name.nom)
+        else:
+            index = self.getIndexChild(name)
+        return self.addobject(name, index)
+
+    def appendBrother(self, name, pos="after"):
+        """
+        Permet d'ajouter un frere a self
+        par defaut on l'ajoute apres self
+        """
+        index = self._object.parent.getIndex(self.getObject())
+        if pos == "before":
+            index = index
+        elif pos == "after":
+            index = index + 1
+        else:
+            print((tr("%d n'est pas un index valide pour appendBrother", pos)))
+            return
+        return self.parent.addobject(name, index)
+
+    def getCopieObjet(self):
+        """Retourne une copie de l'objet pointe par self"""
+        return self.object.copy()
+
+    def getPosition(self):
+        """Retourne la valeur de l'attribut position de l'objet pointe par self"""
+        definition = self.get_definition()
+        try:
+            return getattr(definition, "position")
+        except AttributeError:
+            return "local"
+
+    def getNom(self):
+        """Retourne le nom de l'objet pointe par self"""
+        return self.object.nom
+
+    def getJdc(self):
+        """Retourne le jdc auquel appartient l'objet pointe par self"""
+        return self.object.jdc
+
+    def getValeur(self):
+        """Retourne la valeur de l'objet pointe par self"""
+        return self.object.valeur
+
+    def getCr(self):
+        """Retourne le compte-rendu CR de self"""
+        return self.object.report()
+
+    def getObjetCommentarise(self):
+        """
+        Cette methode retourne un objet commentarise
+        representatif de self.object
+        --> a surcharger par les differents items
+        """
+        raise EficasException(
+            "MESSAGE AU DEVELOPPEUR : il faut \
+                                 surcharger la methode getObjetCommentarise() \
+                                 pour la classe %s",
+            self.__class__.__name__,
+        )
+
+    def isValid(self):
+        """Retourne 1 si l'objet pointe par self est valide, 0 sinon"""
+        return self.object.isValid()
+
+    def isCopiable(self):
+        """
+        Retourne 1 si l'objet est copiable, 0 sinon
+        Par defaut retourne 0
+        """
+        return 0
+
+    def getMcPresents(self):
+        """Retourne le dictionnaire des mots-cles presents de l'objet pointe par self"""
+        return self.object.dictMcPresents()
+
+    def verifConditionRegles(self, l_mc_presents):
+        return self.object.verifConditionRegles(l_mc_presents)
+
+    def getFr(self):
+        """Retourne le fr de l'objet pointe par self"""
+        try:
+            return self.object.getFr()
+        except:
+            return ""
+
+    def getDocu(self):
+        """Retourne la cle de doc de l'objet pointe par self"""
+        return self.object.getDocu()
+
+    def setValeur(self, new_valeur):
+        """Remplace la valeur de l'objet pointe par self par new_valeur"""
+        return self.object.setValeur(new_valeur)
+
+    def getText(self):
+        return myrepr.repr(self.object)
+
+    def getIconName(self):
+        if not self.isExpandable():
+            return "python"
+
+    def IsEditable(self):
+        return self.setFunction is not None
+
+    def SetText(self, text):
+        try:
+            value = eval(text)
+            self.setFunction(value)
+        except:
+            pass
+
+    def isExpandable(self):
+        return 1
+
+    def getSubList(self):
+        keys = dir(self.object)
+        sublist = []
+        for key in keys:
+            try:
+                value = getattr(self.object, key)
+            except AttributeError:
+                continue
+            item = makeObjecttreeitem(
+                self.appliEficas,
+                str(key) + " =",
+                value,
+                lambda value, key=key, object=self.object: setattr(object, key, value),
+            )
+            sublist.append(item)
+        return sublist
+
+        # a piori inutile PN 06 11 17
+        # def wait_fichier_init(self):
+        """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation
+        (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
+
+    #    return self.object.definition.fichier_ini
+
+    def makeObjecttreeitem(self, appliEficas, labeltext, object, setFunction=None):
+        """
+        Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet
+        de type item associe a l'object passe en argument.
+        """
+        return makeObjecttreeitem(appliEficas, labeltext, object, setFunction)
+
+    # def __del__(self):
+    #    print "__del__",self
+
+
+class AtomicObjectTreeItem(ObjectTreeItem):
+    def isExpandable(self):
+        return 0
+
+
+class SequenceTreeItem(ObjectTreeItem):
+    def isExpandable(self):
+        return len(self._object) > 0
+
+    def __len__(self):
+        return len(self._object)
+
+    def keys(self):
+        return list(range(len(self._object)))
+
+    def getIconName(self):
+        if self._object.isValid():
+            return "ast-green-los"
+        elif self._object.isOblig():
+            return "ast-red-los"
+        else:
+            return "ast-yel-los"
+
+    def ajoutPossible(self):
+        return self._object.ajoutPossible()
+
+    def getIndex(self, child):
+        """Retourne le numero de child dans la liste des enfants de self"""
+        return self._object.getIndex(child.getObject())
+
+    def getText(self):
+        return "    "
+
+    def addItem(self, obj, pos):
+        self._object.insert(pos, obj)
+        item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj)
+        return item
+
+    def suppItem(self, item):
+        try:
+            self._object.remove(item.getObject())
+            # la liste peut etre retournee vide !
+            message = "Mot-clef " + item.getObject().nom + " supprime"
+            self.appliEficas.afficheMessages(message)
+            return 1
+        except:
+            return 0
+
+    def getSubList(self):
+        isublist = iter(self.sublist)
+        liste = self._object.data
+        iliste = iter(liste)
+        self.sublist = []
+
+        while 1:
+            old_obj = obj = None
+            for item in isublist:
+                old_obj = item.getObject()
+                if old_obj in liste:
+                    break
+
+            for obj in iliste:
+                if obj is old_obj:
+                    break
+
+                # nouvel objet : on cree un nouvel item
+                def setFunction(value, object=obj):
+                    object = value
+
+                it = self.makeObjecttreeitem(
+                    self.appliEficas, obj.nom + " : ", obj, setFunction
+                )
+                self.sublist.append(it)
+            if old_obj is None and obj is None:
+                break
+            if old_obj is obj:
+                self.sublist.append(item)
+        return self.sublist
index d7cb0b9973128e6d1fbce0568a63f0bafcc5207a..c2a93a1ad451f6b7f372caa5443c24932b658b14 100644 (file)
@@ -38,7 +38,7 @@ class SaisieValeur(object):
         validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat)
         if commentaire != "" :
             if validite : self.editor.afficheCommentaire(commentaire)
-            else        : self.editor.afficheInfos(commentaire,'red')
+            else        : self.editor.afficheMessage(commentaire,'red')
         self.inSaisieValeur=False
         self.setValide()
 
@@ -56,7 +56,7 @@ class SaisieValeur(object):
             try:
                 nouvelleValeur = str(self.lineEditVal.text())
             except UnicodeEncodeError as e:
-                self.editor.afficheInfos("pb d encoding", Qt.red)
+                self.editor.afficheMessage("pb d encoding", Qt.red)
                 validite, commentaire = self.politique.recordValeur(None)
                 self.lineEditVal.setText("")
                 self.setValide()
@@ -74,7 +74,7 @@ class SaisieValeur(object):
         if self.node.item.definition.validators != None:
             if self.node.item.definition.validators.verifItem(nouvelleValeur) != 1:
                 commentaire = self.node.item.definition.validators.infoErreurItem()
-                self.editor.afficheInfos(commentaire, Qt.red)
+                self.editor.afficheMessage(commentaire, Qt.red)
                 self.inSaisieValeur = False
                 return
 
@@ -82,7 +82,7 @@ class SaisieValeur(object):
         validite, commentaire = self.politique.recordValeur(nouvelleValeurFormat)
         if commentaire != "":
             if validite: self.editor.afficheCommentaire(commentaire)
-            else: self.editor.afficheInfos(commentaire, 'red')
+            else: self.editor.afficheMessage(commentaire, 'red')
         self.inSaisieValeur = False
         self.setValide()
 
@@ -134,7 +134,7 @@ class SaisieValeur(object):
                             commentaire = tr(
                                 "Veuillez entrer le complexe sous forme aster ou sous forme python"
                             )
-                            self.editor.afficheInfos(commentaire)
+                            self.editor.afficheMessage(commentaire)
                             return listeValeurs, 0
 
                     else:  # ce n'est pas un tuple a la mode aster
index 97c4534f202efc0471619bb0e726c6f27d2ba0c8..268033934b8e7c6c16e05d01929e55a6a8db567f 100755 (executable)
@@ -1,7 +1,6 @@
 # coding: utf-8
 #!/usr/bin/env python3
 import sys
-from accasConnecteur import AccasConnecteur
 
 code='Essai'
 #code=None
@@ -52,16 +51,21 @@ app.config["REDIS_URL"] = "redis://localhost"
 app.register_blueprint(sse, url_prefix='/stream')
 
 ### Eficas Connector
-def createConnecteur(app):
-    monConnecteur=AccasConnecteur(code, langue='ang',appWeb=app)
-    return monConnecteur
+def createWebAppli(app):
+    import os
+    sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
+    from Editeur.eficas_go import getEficas
+    eficasAppli=getEficas(code, langue='ang',GUIPath= 'Web',appWeb=app)
+    return eficasAppli
 
-monConnecteur=createConnecteur(app)
+
+eficasAppli=createWebAppli(app)
 debug=1
 if debug : 
+    eficasEditeur=eficasAppli.getEditor()
     print ('les commandes dans le catalogue')
     print ('_______________________________')
-    print (monConnecteur.getListeCommandes())
+    print (eficasEditeur.getListeCommandes())
 
 def fromConnecteur(maFonction,*args,**kwargs):
   fnct=globals()[maFonction]
@@ -96,9 +100,9 @@ def deleteChildren(idList):
 
 #TODO: Câbler la sélection du catalogue avant d'activer les appels suivants
 #      car si la page Web n'est pas rendue et que le connecteur génère une erreur... boom !
-def afficheInfos(txt, couleur):                     #TODO: RENAME TO ... displayWarning
-    print ('Flask/afficheInfos: ', txt, couleur)
-    # sse.publish( {'txt':txt, 'color':couleur, 'messageClass':"alert-warning" ,'message': "Hello from afficheInfos!"},
+def afficheMessage(txt, couleur):                     #TODO: RENAME TO ... displayWarning
+    print ('Flask/afficheMessage: ', txt, couleur)
+    # sse.publish( {'txt':txt, 'color':couleur, 'messageClass':"alert-warning" ,'message': "Hello from afficheMessage!"},
     #              type='displayMessage')
 
 def afficheAlerte(titre, message):                  #TODO: RENAME TO ... displayDanger
@@ -126,13 +130,13 @@ def updateSimp():
         id=req['id'];value=req['value']
         # id, value = req.values()       # Dangereux correspondance implicite
         value             = str(value)   #On peut écrire Pi
-        rId,message,changeDone       = monConnecteur.changeValeur(id,value);
+        rId,message,changeDone       = eficasEditeur.changeValeur(id,value);
         assert(rId==id)
         #changeDone        = True
         print ("changeDone : ",changeDone)
         # Ne pas recuperer et ne pas renvoyer le noeud dans le cas du SIMP
         #  (le changeDone et l''ancienne valeur ds la WebApp suffit 
-        node              = monConnecteur.getDicoForFancy(monConnecteur.monEditeur.getNodeById(id))
+        node              = eficasEditeur.getDicoForFancy(eficasEditeur.getNodeById(id))
         print("Flask/updateSimp node : ",node)
         # return jsonify([myTreeDico])
         
@@ -155,7 +159,7 @@ def updateSDName():
         print(req['id'])
         id=req['id'];sdnom=req['sdnom']
         sdnom              = str(sdnom)   #On peut écrire Pi
-        changeDone,message = monConnecteur.updateSDName(id,sdnom);
+        changeDone,message = eficasEditeur.updateSDName(id,sdnom);
         #changeDone        = True
         print ("changeDone : ",changeDone)
         
@@ -178,7 +182,7 @@ def removeNode():
         # Print the dictionary
         print("/removeNode ",req);print("/removeNode ",req['id']);
         id  = req['id'];
-        ret,message = monConnecteur.suppNode(id);
+        ret,message = eficasEditeur.suppNode(id);
         print ("/removeNode : ret : ",ret," message : ",message)
         
         return make_response(json.dumps( {'ret':ret, 'message':message} ))
@@ -197,8 +201,8 @@ def appendChild():
         print(__file__+"/appendChild : ",req);
         id=req['id'];name=req['name'];pos=req['pos'];
         # id, value = req.values() # Dangereux correspondance implicite
-        #rId,message,changeDone  = monConnecteur.appendChild(id,name,pos);
-        newId                    = monConnecteur.appendChild(id,name,pos);
+        #rId,message,changeDone  = eficasEditeur.appendChild(id,name,pos);
+        newId                    = eficasEditeur.appendChild(id,name,pos);
         print (__file__+"/appendChild : newId : ",newId);
         
         return make_response(json.dumps( {'id':newId} ))
@@ -213,11 +217,20 @@ def appendChild():
 @app.route('/')
 def index():
 
-
-    monConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm')
-    #monConnecteur.litFichierComm('../WebTest/edg_REP1300_FULL_PN.comm')
-    myFancyTreeDico=monConnecteur.getDicoForFancy(monConnecteur.monEditeur.tree.racine)
-    
+#PN decider de ce qu on appelle
+# Lecture du cata
+# Lecture du fichier
+    #eficasEditeur = eficasAppli.litFichierComm('../Codes/WebTest/web_tres_simple_avec_2Fact.comm')
+    #eficasAppli.litFichierComm('../WebTest/edg_REP1300_FULL_PN.comm')
+
+    eficasEditeur = eficasAppli.openFile('../Codes/WebTest/web_tres_simple_avec_2Fact.comm')
+    if not(eficasEditeur)  :
+       return render_template('commandes_2.html',
+          titre='Pb a la lecture',
+          listeCommandes = [],
+          tree= None
+    )
+    myFancyTreeDico=eficasEditeur.getDicoForFancy(eficasEditeur.tree.racine)
     myFancyTreeJS=json.dumps([myFancyTreeDico],indent=4)  #TODO : remove indent if not DEBUG
     
     print("---- myFancyTreeDico ----")
@@ -227,7 +240,7 @@ def index():
 
     return render_template('commandes_2.html',
       titre=code,
-      listeCommandes = monConnecteur.getListeCommandes(),
+      listeCommandes = eficasEditeur.getListeCommandes(),
       tree=myFancyTreeJS,
       # tree=tree4Fancy,
     )