]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
appliEficas partout
authorpascale.noyret <pascale.noyret@edf.fr>
Tue, 4 Jun 2019 14:28:16 +0000 (16:28 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Tue, 4 Jun 2019 14:28:16 +0000 (16:28 +0200)
52 files changed:
Editeur/Objecttreeitem.py
Editeur/TroisDPal.py
Editeur/cata2Xml.py [deleted file]
Editeur/chercheBlocInto.py [deleted file]
Editeur/chercheNbElem.py [deleted file]
Editeur/comploader.py
Editeur/session.py
Editeur/tout.sh [deleted file]
Editeur/toutBloc.sh [deleted file]
Efi2Xsd/MCAccasXsd.py
Ihm/I_JDC.py
Ihm/I_MACRO_ETAPE.py
Ihm/I_MCCOMPO.py
Ihm/I_MCLIST.py
Ihm/I_MCSIMP.py
InterfaceQT4/compofact.py
InterfaceQT4/compojdc.py
InterfaceQT4/compomacro.py
InterfaceQT4/compomclist.py
InterfaceQT4/compooper.py
InterfaceQT4/composimp.py
InterfaceQT4/configuration.py
InterfaceQT4/editor.pourCIST [deleted file]
InterfaceQT4/editor.py
InterfaceQT4/editorSsIhm.py
InterfaceQT4/eficas_go.py
InterfaceQT4/groupe.py
InterfaceQT4/monWidgetCommande.py
InterfaceQT4/monWidgetSimpBool.py
InterfaceQT4/qtEficas.py
InterfaceQT4/qtEficasSsIhm.py
InterfaceQT4/readercata.py
Noyau/N_JDC.py
Noyau/N_SIMP.py
convert/autre_parseur.py
convert/convert_TELEMAC.py
convert/convert_XML.py
convert/convert_pyth.py
convert/convert_python.py
convert/parseur_python.py
generator/a.py [new file with mode: 0644]
generator/generator_PSEN.py
generator/generator_ProcessOutputs.py
generator/generator_TELEMAC.py
generator/generator_XML.py
generator/generator_aplat.py
generator/generator_dico.py
generator/generator_dicoImbrique.py
generator/generator_map.py
generator/generator_mapVP.py
generator/generator_python.py
generator/generator_vers3DSalome.py

index 7d419ca959eda4a91a329c93c8b6eaa073e471e1..dd7d41f96a0f9ad8294ef81fa47de8a6859a7f98 100644 (file)
@@ -143,9 +143,9 @@ class Delegate(object):
 
 
 class ObjectTreeItem(TreeItem,Delegate):
-    def __init__(self, appli, labeltext, object, setFunction=None):
+    def __init__(self, appliEficas, labeltext, object, setFunction=None):
         self.labeltext = labeltext
-        self.appli = appli
+        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
@@ -180,10 +180,10 @@ class ObjectTreeItem(TreeItem,Delegate):
         Cree un item copie de self
         """
         object = self._object.copy()
-        appli = copy(self.appli)
+        appliEficas = copy(self.appliEficas)
         labeltext = copy(self.labeltext)
         fonction = deepcopy(self.setFunction)
-        item = makeObjecttreeitem(appli,labeltext,object,fonction)
+        item = makeObjecttreeitem(appliEficas,labeltext,object,fonction)
         return item
     
     def isActif(self):
@@ -420,7 +420,7 @@ class ObjectTreeItem(TreeItem,Delegate):
             except AttributeError:
                 continue
             item = makeObjecttreeitem(
-                self.appli,
+                self.appliEficas,
                 str(key) + " =",
                 value,
                 lambda value, key=key, object=self.object:
@@ -434,12 +434,12 @@ class ObjectTreeItem(TreeItem,Delegate):
         (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
     #    return self.object.definition.fichier_ini
 
-    def makeObjecttreeitem(self,appli,labeltext, object, setFunction=None):
+    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(appli,labeltext,object,setFunction)
+        return makeObjecttreeitem(appliEficas,labeltext,object,setFunction)
 
     #def __del__(self):
     #    print "__del__",self
@@ -478,7 +478,7 @@ class SequenceTreeItem(ObjectTreeItem):
 
     def addItem(self,obj,pos):
         self._object.insert(pos,obj)
-        item = self.makeObjecttreeitem(self.appli, obj.nom + ":", obj)
+        item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj)
         return item
 
     def suppItem(self,item):
@@ -486,7 +486,7 @@ class SequenceTreeItem(ObjectTreeItem):
             self._object.remove(item.getObject())
             # la liste peut etre retournee vide !
             message = "Mot-clef " + item.getObject().nom + " supprime"
-            self.appli.afficheInfos(message)
+            self.appliEficas.afficheInfos(message)
             return 1
         except:
             return 0
@@ -508,7 +508,7 @@ class SequenceTreeItem(ObjectTreeItem):
               # nouvel objet : on cree un nouvel item
               def setFunction(value, object=obj):
                   object=value
-              it = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+              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)
index 6d42efa04bf8f98753dfc6cc717a0a3abfa2ee93..5fc0d0853ad452258291c2431d96636d15a7298e 100644 (file)
@@ -32,9 +32,9 @@ from Extensions.i18n import tr
 
 class TroisDPilote(object):
 
-   def __init__(self,node,appli):
+   def __init__(self,node,appliEficas):
       self.node=node
-      self.appli=appli
+      self.appliEficas=appliEficas
 
    def envoievisu(self):
       """ 
@@ -51,6 +51,6 @@ class TroisDPilote(object):
          return ""
       from Extensions.param2 import originalMath
       originalMath.toOriginal()
-      self.appli.envoievisu(texte)
+      self.appliEficas.envoievisu(texte)
       originalMath.toSurcharge()
   
diff --git a/Editeur/cata2Xml.py b/Editeur/cata2Xml.py
deleted file mode 100755 (executable)
index e075d18..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2017   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 __future__ import absolute_import
-from __future__ import print_function
-try :
-  from builtins import str
-  from builtins import object
-except :
-  pass
-import sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-
-import xml.etree.ElementTree as ET
-from xml.dom import minidom
-
-from PyQt4.QtGui import *
-
-def prettify(elem):
-    """Return a pretty-printed XML string for the Element.
-    """
-    rough_string = ET.tostring(elem, 'iso-8859-1')
-    reparsed = minidom.parseString(rough_string)
-    return reparsed.toprettyxml(indent="  ")
-
-                
-class CatalogueXML(object):
-        def __init__(self,cata,cataName):
-                self.fichier="/tmp/XML/"+cataName+".xml"
-                self.cata=cata
-                self.first=ET.Element('cata')
-                comment=ET.Comment("catalogue "+str(cataName))
-                self.first.append(comment)
-                self.reglesUtilisees=[]
-                self.validatorsUtilises=[]
-                self.constrListTxtCmd()
-                self.ecrire_fichier()
-
-
-        def ecrire_fichier(self):
-                try :
-                   import codecs
-                  f = codecs.open(self.fichier, "w", "ISO-8859-1")
-                   #print prettify(self.first)
-                   f.write(prettify(self.first))
-                   f.close()
-                except :
-                   print(("Impossible d'ecrire le fichier : "+ str(self.fichier)))
-
-        def constrListTxtCmd(self):
-                mesCommandes=self.cata.JdC.commandes
-                self.commandes=ET.SubElement(self.first,'commandes')
-                for maCommande in mesCommandes:
-                    maCommande.enregistreXMLStructure(self.commandes,self)
-
-
-if __name__ == "__main__" :
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-        code="Aster"
-        version=None
-
-        from Editeur  import session
-        options=session.parse(sys.argv)
-        if options.code!= None :    code=options.code
-        if options.cata!= None : monCata=options.cata
-        if options.ssCode!= None :  ssCode=options.ssCode
-
-        sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
-        from InterfaceQT4.ssIhm  import QWParentSSIhm, appliEficasSSIhm
-        Eficas=appliEficasSSIhm(code=code)
-        parent=QWParentSSIhm(code,Eficas,version)
-
-        import readercata
-        monreadercata  = readercata.READERCATA( parent, parent )
-        Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
-
-        monCataXML=CatalogueXML(monCata,code)
-
-
-
-
diff --git a/Editeur/chercheBlocInto.py b/Editeur/chercheBlocInto.py
deleted file mode 100755 (executable)
index 624020d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2017   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 sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-import Accas
-
-
-class ChercheInto:
-        def __init__(self,cata,cataName):
-                self.cata=cata
-                self.dictInto={}
-                mesCommandes=self.cata.JdC.commandes
-                for maCommande in mesCommandes:
-                    self.construitListeInto(maCommande)
-
-
-        def construitListeInto(self,e):
-            if isinstance(e,Accas.A_BLOC.BLOC) :
-               print (e.condition)
-            for nomFils, fils in e.entites.items():
-                self.construitListeInto(fils)
-
-
-if __name__ == "__main__" :
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-        code="Aster"
-        version=None
-
-        from Editeur  import session
-        options=session.parse(sys.argv)
-        if options.code!= None :    code=options.code
-        if options.cata!= None : monCata=options.cata
-        if options.ssCode!= None :  ssCode=options.ssCode
-
-        sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
-        from InterfaceQT4.ssIhm  import QWParentSSIhm, appliEficasSSIhm
-        Eficas=appliEficasSSIhm(code=code)
-        parent=QWParentSSIhm(code,Eficas,version)
-
-        import readercata
-        monreadercata  = readercata.READERCATA( parent, parent )
-        Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
-
-        monConstruitInto=ChercheInto(monCata,code)
-
-
-
-
diff --git a/Editeur/chercheNbElem.py b/Editeur/chercheNbElem.py
deleted file mode 100755 (executable)
index f8cc098..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2017   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 sys,os
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../InterfaceQT4'))
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'../UiQT4'))
-from Extensions.i18n import tr
-from string import split,strip,lowercase,uppercase
-import re,string
-import Accas
-
-
-class ChercheInto:
-        def __init__(self,cata,cataName):
-                self.cata=cata
-                self.dictInto={}
-                mesCommandes=self.cata.JdC.commandes
-                for maCommande in mesCommandes:
-                    print (maCommande.nom)
-                    print (maCommande.entites )
-                    print (len(maCommande.entites) )
-
-
-#        def construitListeInto(self,e):
-#            if isinstance(e,Accas.A_BLOC.BLOC) :
-#               print (e.condition.
-#            for nomFils, fils in e.entites.items():
-#                self.construitListeInto(fils)
-
-
-if __name__ == "__main__" :
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       #monCata="/local/noyret/Install_Eficas/Aster/Cata/cataSTA11/cata.py"
-       #monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-       monCata="/local/noyret/Install_Eficas/MAP/mapcata.py"
-        code="MAP"
-        version=None
-
-        from Editeur  import session
-        options=session.parse(sys.argv)
-        if options.code!= None :    code=options.code
-        if options.cata!= None : monCata=options.cata
-        if options.ssCode!= None :  ssCode=options.ssCode
-
-        sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..',code))
-
-        from InterfaceQT4.ssIhm  import QWParentSSIhm, appliEficasSSIhm
-        Eficas=appliEficasSSIhm(code=code)
-        parent=QWParentSSIhm(code,Eficas,version)
-
-        import readercata
-        monreadercata  = readercata.READERCATA( parent, parent )
-        Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
-
-        monConstruitInto=ChercheInto(monCata,code)
-
-
-
-
index 40ba093fb3492e7997b7729d45248ce05586e0bb..5f240ae0e6c40104230cd122bd33d69c2ffdb2f4 100644 (file)
@@ -27,7 +27,7 @@
        le dictionnaire composants.
      - gettreeitem(object) -> type d'item : fonction qui retourne un type
        d'item correspondant au type de l'objet noyau fourni.
-     - makeObjecttreeitem(appli,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
+     - makeObjecttreeitem(appliEficas,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
        correspondant a l'objet noyau fourni.
 """
 # import generaux
@@ -85,11 +85,11 @@ def gettreeitem(object):
     itemtype=composants[None]
     return itemtype
 
-def makeObjecttreeitem(appli,labeltext, object, setFunction=None):
+def makeObjecttreeitem(appliEficas,labeltext, object, setFunction=None):
     """
        Cette fonction permet de construire et de retourner un objet
        de type item associe a l'object passe en argument.
     """
     c = gettreeitem(object)
-    return c(appli,labeltext, object, setFunction)
+    return c(appliEficas,labeltext, object, setFunction)
 
index ebbf40a90af40519782c008a60fb6631cbecadb9..6f7733c8401e312c48889acf0309b30bd1b4db78 100644 (file)
@@ -310,7 +310,7 @@ def parse(args):
     #printDEnv()
     return options
 
-def getUnit(d_study,appli):
+def getUnit(d_study,appliEficas):
     """
        Fonction : construit et retourne un dictionnaire contenant les informations
        sur les fichiers poursuite et includes sous la forme adaptee
@@ -321,22 +321,22 @@ def getUnit(d_study,appli):
                     ...] 
 
        d_study : dictionnaire de l'etude
-       appli : objet application EFICAS (permet d'acceder aux services comme getSource)
+       appliEficas : objet application EFICAS (permet d'acceder aux services comme getSource)
     """
-    return getDunit(d_study,appli)
+    return getDunit(d_study,appliEficas)
 
-def getDunit(d_unit,appli):
+def getDunit(d_unit,appliEficas):
     d={}
     if 'pours' in d_unit:
        # on a une poursuite
        comm=d_unit["pours"]["comm"]
-       g=getDunit(d_unit["pours"],appli)
-       text=appli.getSource(comm)
+       g=getDunit(d_unit["pours"],appliEficas)
+       text=appliEficas.getSource(comm)
        d[None]=comm,text,g
 
     for k,v in list(d_unit.items()):
        if k in (u"pours","comm"): continue
-       text=appli.getSource(v)
+       text=appliEficas.getSource(v)
        d[k]=v,text,d
 
     return d
diff --git a/Editeur/tout.sh b/Editeur/tout.sh
deleted file mode 100644 (file)
index 885b50e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-echo "Aster"
-./cata2Xml.py -k Aster
-
-echo "Adao"
-read a
-./cata2Xml.py -k Adao
-
-echo "Carmel3D"
-read a
-./cata2Xml.py -k Carmel3D
-
-echo "CarmelCND"
-read a
-./cata2Xml.py -k CarmelCND
-
-echo "Openturns_Wrapper"
-read a
-./cata2Xml.py -k Openturns_Wrapper
-
-echo "Openturns_Study"
-read a
-./cata2Xml.py -k Openturns_Study
-
-echo "MAP"
-read a
-./cata2Xml.py -k MAP
-
-echo "MT"
-read a
-./cata2Xml.py -k MT
-
-echo "SPECA"
-read a
-./cata2Xml.py -k SPECA
-
diff --git a/Editeur/toutBloc.sh b/Editeur/toutBloc.sh
deleted file mode 100644 (file)
index c77c2fb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-echo "Aster"
-./chercheBlocInto.py -k Aster
-
-echo "Adao"
-read a
-./chercheBlocInto.py -k Adao
-
-echo "Carmel3D"
-read a
-./chercheBlocInto.py -k Carmel3D
-
-echo "CarmelCND"
-read a
-./chercheBlocInto.py -k CarmelCND
-
-echo "Openturns_Wrapper"
-read a
-./chercheBlocInto.py -k Openturns_Wrapper
-
-echo "Openturns_Study"
-read a
-./chercheBlocInto.py -k Openturns_Study
-
-echo "MAP"
-read a
-./chercheBlocInto.py -k MAP
-
-echo "MT"
-read a
-./chercheBlocInto.py -k MT
-
-echo "SPECA"
-read a
-./chercheBlocInto.py -k SPECA
-
index 5c6737abca53db63723f4ff9b5f4a09c02d5b7d2..d346e31dd03f971e32295d4c204ec77aacb3dc5c 100755 (executable)
@@ -23,157 +23,99 @@ from Accas import A_ASSD
 class X_OBJECT:
 # -------------
 
-  def delObjPyxb(self):
+  def delObjPyxb(self, debug = False):
       if not self.cata.modeleMetier : return
       if self.nom == 'Consigne' : return None
-      #print ('----------- delObjPyxb', self.nom)  
       trouve = False
       listeArg=[]
-      #print self.perePyxb.nom
-      #print self.perePyxb.objPyxb.orderedContent()
       
-      #print (dir(self.perePyxb.objPyxb))
-      for i in self.perePyxb.objPyxb.orderedContent(): 
-            if id(self.objPyxb) == id(i._Content__value) : trouve = True ;continue
-            #print ('j ajoute', i._Content__value)
-            listeArg.append(i._Content__value)
-      if not trouve : print ('objet pas trouve')
-      grandPere=self.perePyxb.perePyxb
-      ancienObjPerePyxb=self.perePyxb.objPyxb
-
-      #print (listeArg)
-      nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
-      #print (nvlObjPerePyxb)
-      #print (nvlObjPerePyxb.orderedContent())
-      self.perePyxb.objPyxb=nvlObjPerePyxb
-      self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
-
-      #print (self.nom, ' a pour gp ', grandPere)
-      if  grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
-      #print ('----------- fin delObjPyxb', self.nom)  
+      if debug : print self.perePyxb.objPyxb.orderedContent()
+      if debug : print (map(lambda o:o.value, self.perePyxb.objPyxb.orderedContent()))
       
-  def addObjPyxbV0(self,indiceDansLeContenu):
-      if not self.cata.modeleMetier : return
-      #print ('**********************************************')
-      #print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDansLeContenu)
-      # adherence Accas sur le parent
-      parent=self.parent
-      while (parent.isBLOC()): parent=parent.parent
-      self.perePyxb=parent
-      grandPere=self.perePyxb.perePyxb
-      ancienObjPerePyxb=self.perePyxb.objPyxb
-      #print ('dans le perePyxb', self.perePyxb.nom)
-      #print ('j ai pour orderedContent', self.objPyxb.orderedContent())
-      self.objPyxb.objAccas=self
+      elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=self.perePyxb.objPyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
+      if debug : print ('element moi = ', elt, 'id de moi = ', id(self.objPyxb))
+      if (elt.elementDeclaration.isPlural()):
+         if debug : print ('je suis Plural')
+         monIndexInOrderedContent=0
+         for c in self.perePyxb.objPyxb.orderedContent(): 
+           if isinstance(c._Content__value,list) and  isinstance(c._Content__value[0], type(self.objPyxb)): monIndexInOrderedContent += 1
+
+         listeObjetsAccas=self.parent.getChild(self.nom,restreint='oui')
+         if len(listeObjetsAccas) == 1 : monIndex=0
+         else : monIndex=listeObjetsAccas.index(self)
+
+         listeObjetsPyxb=getattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key)
+         listeObjetsPyxb.pop(monIndex)
+         monIndexInOrderedContent += monIndex
+         self.perePyxb.objPyxb.orderedContent().pop(monIndexInOrderedContent)
+      else :
+        newOrderedContent = []
+        for i in self.perePyxb.objPyxb.orderedContent(): 
+            if id(self.objPyxb) == id(i._Content__value) : trouve = True ;continue
+            newOrderedContent.append(i)
+        if not trouve : print ('elt a supprimer ', self.nom, 'non trouve')
+        for i in xrange(len(newOrderedContent)):
+          self.perePyxb.objPyxb.orderedContent()[i]=newOrderedContent[i]
+        self.perePyxb.objPyxb.orderedContent().pop(len(newOrderedContent))
+
+        setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,None)
+        if debug : print (map(lambda o:o.value, self.perePyxb.objPyxb.orderedContent()))
+
       
-      listeArg=[]
-      indice=0
-      # a tester
-      # a affiner si on ajoute en fin 
-      #print (indiceDansLeContenu)
-      #print (self.perePyxb.objPyxb.orderedContent())
-      for i in self.perePyxb.objPyxb.orderedContent(): 
-          if indice==indiceDansLeContenu : listeArg.append(self.objPyxb)
-          else : listeArg.append(i._Content__value)
-          indice=indice+1
-      #print ('avec', listeArg)
-      if indiceDansLeContenu == len(self.perePyxb.objPyxb.orderedContent()):
-          listeArg.append(self.objPyxb)
-
-      #print ('avec', listeArg)
-
-      nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
-      self.perePyxb.objPyxb=nvlObjPerePyxb
-      self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
-      #print (self.nom, ' a pour gp ', grandPere)
-      if  grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
-
-  def addObjPyxb(self,indiceDansLeContenu):
+
+  def addObjPyxb(self,indiceDsLeContenu):
       if not self.cata.modeleMetier : return
-      #print ('**********************************************')
-      #print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDansLeContenu)
+      print ('_____________ addObjPyxb ds X_OBJECT', self.nom, indiceDsLeContenu)
       # adherence Accas sur le parent
       parent=self.parent
-      while (parent.isBLOC()): parent=parent.parent
+      while (parent.isBLOC()): 
+           if parent != self.parent : indiceDsLeContenu += parent.rangDsPyxb()
+           parent=parent.parent
       self.perePyxb=parent
       
-      #EF: grandPere et ancienObjPerePyxb sont devenus inutiles
-      # grandPere=self.perePyxb.perePyxb
-      # ancienObjPerePyxb=self.perePyxb.objPyxb
-      # print ('dans le perePyxb', self.perePyxb.nom)
-      # print ('j ai pour orderedContent', self.objPyxb.orderedContent())
-
       self.objPyxb.objAccas=self
-      
-      # listeArg=[]
-      # indice=0
-      # # a tester
-      # # a affiner si on ajoute en fin 
-      # #print (indiceDansLeContenu)
-      # #print (self.perePyxb.objPyxb.orderedContent())
-      # for i in self.perePyxb.objPyxb.orderedContent(): 
-      #     if indice==indiceDansLeContenu : listeArg.append(self.objPyxb)
-      #     else : listeArg.append(i._Content__value)
-      #     indice=indice+1
-      # #print ('avec', listeArg)
-      # if indiceDansLeContenu == len(self.perePyxb.objPyxb.orderedContent()):
-      #     listeArg.append(self.objPyxb)
-      #print('self.cata.modeleMetier.Namespace : ',self.cata.modeleMetier.Namespace)
-      #print('self.nom : ',self.nom)
       elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=self.perePyxb.objPyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
-      #perePyxb est en fait l'objet ACAS père de notre objet PyxB (Il peut être éloigné à cause des BLOCS)
-      self.perePyxb.objPyxb.orderedContent().insert(indiceDansLeContenu,elt)
-      setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
-      #print ('avec', listeArg)
-
-      #EF: J'imagine que la ligne suivante sert a demander au père de se reconstruire avec la liste des args
-      #nvlObjPerePyxb=self.perePyxb.maClasseModeleMetier(*listeArg)
-      #self.perePyxb.objPyxb=nvlObjPerePyxb
-      #self.perePyxb.objPyxb.objAccas=ancienObjPerePyxb.objAccas
-      #print (self.nom, ' a pour gp ', grandPere)
-      #if  grandPere : grandPere.reconstruitAvecNvlObj(ancienObjPerePyxb,nvlObjPerePyxb)
-
-  def reconstruitAvecNvlObj(self, ancienObj,nvlObj):
-      if not self.cata.modeleMetier : return
-      #print ('reconstruitAvecNvlObj pour', self, self.nom, ancienObj,nvlObj)
-      listeArg=[]
-      for i in self.objPyxb.orderedContent(): 
-          if id(ancienObj) == id(i._Content__value) : listeArg.append(nvlObj)
-          else : listeArg.append(i._Content__value)
-      nouveauMoiPyxb=self.maClasseModeleMetier(*listeArg)
-      nouveauMoiPyxb.objAccas=self
-      self.objPyxb=nouveauMoiPyxb
-      if self.perePyxb : self.perePyxb.reconstruitAvecNvlObj(self.objPyxb,nouveauMoiPyxb) 
-          
-
+      self.perePyxb.objPyxb.orderedContent().insert(indiceDsLeContenu,elt)
+      if (elt.elementDeclaration.isPlural()):
+      # je suis donc un MCList
+         listeObjetsAccas=self.parent.getChild(self.nom,restreint='oui')
+         if len(listeObjetsAccas) == 1 : monIndex=1
+         else : monIndex=listeObjetsAccas.index(self)
+         listeObjetsPyxb=getattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key)
+         listeObjetsPyxb.insert(monIndex,self.objPyxb)
+      else :
+         setattr(self.perePyxb.objPyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
+
+  def rangDsPyxb(self):
+      monRangEnAccas=self.parent.mcListe.index(self)
+      rangEnPyxb=0
+      for frere in self.parent.mcListe[0: monRangEnAccas] :
+          rangEnPyxb += frere.longueurDsArbre()
+      return rangEnPyxb
+      
 
 class X_MCSIMP(X_OBJECT):
 # -----------------------
       
    def buildObjPyxb(self) :
-      # self.valeur tient compte de la valeur par defaut
-      # utiliser getValeur ? expression numpy
       if not self.cata.modeleMetier : return
+      if self.nom == 'Consigne' : return None
+      if self.nom == 'Spring_Stifness' :  
+         #trace()
+         print ('Sprinf_Stifness' ,self.valeur)
       #print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
       #print ('objPyxbDeConstruction', self.objPyxbDeConstruction)
       #if self.objPyxbDeConstruction == None : print (self.nom, ' pas de pyxb')
-      if self.nom == 'Consigne' : return None
       if self.objPyxbDeConstruction != None :
         self.objPyxb = self.objPyxbDeConstruction
         self.objPyxb.objAccas=self
         self.maClasseModeleMetier =type(self.objPyxb)
-        #print (self.maClasseModeleMetier)
         self.objPyxbDeConstruction = None
       else :
         self.monNomClasseModeleMetier='T_'+self.nom
         if self.nom in list(self.cata.DicoNomTypeDifferentNomElt.keys()) : 
            self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
-           #print (self.nom, self.monNomClasseModeleMetier)
         self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
-        #print (self.maClasseModeleMetier)
-        #print (self.valeur)
-        #print (type(self.valeur))
 
         if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
         else                   : self.objPyxb=self.maClasseModeleMetier(_validate_constraints=False); 
@@ -185,20 +127,16 @@ class X_MCSIMP(X_OBJECT):
 
    def setValeurObjPyxb(self,newVal):
        if not self.cata.modeleMetier : return
-       #print ('------------------------------------------------------------------')
-       #print ('dans setValeurObjPyxb MCSIMP ', self.nom)
+       print ('dans setValeurObjPyxb MCSIMP ', self.nom, newVal)
+       #print (' self.perePyxb = ', self.perePyxb.nom)
        if inspect.isclass(newVal) and issubclass(newVal,A_ASSD)  : newVal = newVal.nom
-       #print (newVal)
-       
        #print (self.nom , ' a pour pere', self.perePyxb, self.perePyxb.nom, self.perePyxb.objPyxb)
        
        if newVal != None : nvlObj=self.maClasseModeleMetier(newVal)
-       #else              : nvlObj=self.maClasseModeleMetier()
        # a priori impossible mais ?
        else              : nvlObj=self.maClasseModeleMetier(_validate_constraints=False)
        self.val=newVal
 
-       #print (self.perePyxb.objPyxb.orderedContent())
        setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
        trouve=False
        indice=0
@@ -212,67 +150,23 @@ class X_MCSIMP(X_OBJECT):
        if not trouve : print ('Attention souci au changement de valeur de ', self.nom)
        self.objPyxb=nvlObj
        self.objPyxb.objAccas=self
-       #print (self.perePyxb.objPyxb.orderedContent())
-       #print ('------------------------------------------------------------------')
+       #print ('fin du setValeurObjPyxb pour ', self.nom, self.perePyxb.objPyxb.orderedContent())
 
         
       
-   def addObjPyxb(self, indiceDsLeContenu):
-      if not self.cata.modeleMetier : return
-      if self.nom == 'Consigne'     : return None
-      #print ('addObjPyxb : ajout de ', self.nom, 'en ', indiceDsLeContenu)
-
-      # adherence Accas sur le parent
-      # parent=self.parent
-      # while (parent.isBLOC() ): parent=parent.parent
-      # self.perePyxb=parent
-      #print ('dans le perePyxb', self.perePyxb.nom)
-      #print (dir(self.perePyxb))
-
-      self.monNomClasseModeleMetier='T_'+self.nom
-      if self.nom in list(self.cata.DicoNomTypeDifferentNomElt.keys()) : 
-         self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
-      self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
-      #nvlObj=self.maClasseModeleMetier() 
-      #nvlObj=self.maClasseModeleMetier(_validate_constraints=False)
-      if self.valeur != None : self.objPyxb=self.maClasseModeleMetier(self.valeur)
-      else                   : self.objPyxb=self.maClasseModeleMetier(_validate_constraints=False); 
-      #print (self.perePyxb.objPyxb.orderedContent())
-      #for i in (self.perePyxb.objPyxb.orderedContent()): print i._Content__value;print (type(i._Content__value))
-
-      X_OBJECT.addObjPyxb(self, indiceDsLeContenu)
-      
-      # setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
-      # tampon=self.perePyxb.objPyxb.orderedContent()[-1]
-      # self.objPyxb  = nvlObj
-      # self.objPyxb.objAccas=self
-      # indexOC=-1
-      # longueur=len(self.perePyxb.objPyxb.orderedContent())
-      # #print (self.perePyxb.objPyxb.orderedContent())
-      # #print (self.perePyxb.nom)
-      # for i in reversed(range(longueur)):
-      #     self.perePyxb.objPyxb.orderedContent()[i]=self.perePyxb.objPyxb.orderedContent()[i-1]
-      #     if i == indiceDsLeContenu + 1 : break
-      # self.perePyxb.objPyxb.orderedContent()[indiceDsLeContenu]=tampon
-
-
 
 class X_MCCOMPO(X_OBJECT) :
 # -------------------------
 # 
    def buildObjPyxb(self,mc_list) :
-      #print ('________________________________________________')
       if not self.cata.modeleMetier : return
       #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
-
       self.listArg=[]
       self.dicoArg={}
       for objAccas in mc_list :
-        #print (objAccas.nom,objAccas.nature)
         if objAccas.nature == 'MCBLOC' :
            self.exploreBLOC(objAccas)
         elif objAccas.nature == 'MCList' :
-           #print ('MCList explore', objAccas.nom, len(objAccas), objAccas[0].definition.max )
            if objAccas[0].definition.max > 1 :
               self.listArg.append(objAccas) # les MCList n ont pas objPyxb
               self.dicoArg[objAccas.nom]=[]
@@ -286,7 +180,6 @@ class X_MCCOMPO(X_OBJECT) :
         else :
            if objAccas.nom == 'Consigne'     : continue 
            self.listArg.append(objAccas.objPyxb)
-           #print (self.listArg)
            self.dicoArg[objAccas.nom]=objAccas.objPyxb
            objAccas.perePyxb=self
 
@@ -298,6 +191,7 @@ class X_MCCOMPO(X_OBJECT) :
          self.monNomClasseModeleMetier=self.cata.DicoNomTypeDifferentNomElt[self.nom][self.nomComplet()]
       self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
       
+      # PN : Ne doit-on pas tester avant
       if self.objPyxbDeConstruction != None :
         self.objPyxb = self.objPyxbDeConstruction
         self.objPyxbDeConstruction = None
@@ -308,17 +202,11 @@ class X_MCCOMPO(X_OBJECT) :
         # self.objPyxb=self.maClasseModeleMetier(*self.listArg)
         self.objPyxb=self.maClasseModeleMetier(**self.dicoArg)
         newordercontent=[]
-
-      #  print ('uuuuuuuuuuuuuu', self.objPyxb.orderedContent())
-      #  print ('kkkkkkkkkkkkkkkkkkkkk listArg', self.listArg)
         for obj in self.listArg:
-      #     print (obj)
            # on teste le caractere pluriel
            if (hasattr(obj, 'nature')) : # attention on a un object Accas et non un pyxb car les MCList n ont pas de objPyxb
-      #         print ('obj----------', obj.nom)
                max=obj[0].definition.max 
            else : max = 1
-      #     print (max)
            if  max == 1 :
             if not(issubclass(type(obj), pyxb.binding.basis.enumeration_mixin) ):
                newordercontent.append(self.objPyxb.orderedContent()[map(lambda o:id(o.value), self.objPyxb.orderedContent()).index(id(obj))] )
@@ -327,8 +215,6 @@ class X_MCCOMPO(X_OBJECT) :
            else  : # element Pural
             for c in self.objPyxb.orderedContent() :
                if isinstance(c._Content__value,list) and  isinstance(c._Content__value[0], type(obj[0].objPyxb)): newordercontent.append(c)
-      #  print ('uuuuuuuuuuuuuu', newordercontent)
-
 
         for i in xrange(len(self.listArg)):
           self.objPyxb.orderedContent()[i]=newordercontent[i]
@@ -337,13 +223,6 @@ class X_MCCOMPO(X_OBJECT) :
       #print ('_______________________________________')
       # assert(self.objPyxb.validateBinding())
 
-   def delObjPyxb(self):
-      if not self.cata.modeleMetier : return
-      #print ('******************************************')
-      #print ('je passe ds delObjPyxb pour ', self, self.nom)
-      #print (self.perePyxb)
-      #print (dir(self)) 
-      #print ('******************************************')
 
    def exploreBLOC(self,objAccas):
       #print (' ds exploreBLOC', objAccas .nom)
@@ -379,28 +258,24 @@ class X_MCBLOC (X_MCCOMPO):
 # --------------------------
    def buildObjPyxb(self,mc_list):
       if not self.cata.modeleMetier : return
-      # mise a none ? le bloc n a pas d existence en pyxb
+      #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list, 'ne fait rien')
       self.perePyxb=None
-      #print ('_______________________________________')
-      #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list)
-      self.filsPyxb=[]
       self.objPyxb=None
-      # Pas sur d en avoir besoin du filsPyxb
-      # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc 
-      #for objAccas in mc_list :
-      #   self.filsPyxb.append(objAccas.objPyxb)
-      #print (self.filsPyxb)
-      #print ('Fin ', self.nom, self.objPyxb)
-      #print ('_______________________________________')
-
         
    def addObjPyxb(self, indiceDsLeContenu):
       if not self.cata.modeleMetier : return
+      print ('X_MCBLOC addObjPyxb', self.nom, self, self.mcListe, indiceDsLeContenu)
       rangDeLObjet=indiceDsLeContenu
       for obj in self.mcListe:
           obj.addObjPyxb( rangDeLObjet)
           rangDeLObjet=rangDeLObjet+obj.longueurDsArbre()
        
+   def delObjPyxb(self):
+      if not self.cata.modeleMetier : return
+      #print ('X_MCBLOC delObjPyxb', self.nom, ' --------------------------')
+      for obj in self.mcListe:
+          obj.delObjPyxb()
+      #print ('fin X_MCBLOC delObjPyxb --------------------------')
 
 class X_MCLIST (X_MCCOMPO):
 # --------------------------
@@ -409,54 +284,24 @@ class X_MCLIST (X_MCCOMPO):
       #print ('X_MCLIST buildObjPyxb ne fait rien', self.nom, self, mc_list)
       pass
     
-  def addObjPyxb(self,indiceDansLeContenu):
-      #traceback.print_stack()
-      #print ('X_MCLIST addObjPyxb ne fait rien', self.nom)
-      pass
+  def addObjPyxb(self,indiceDsLeContenu):
+      #print ('X_MCLIST addObjPyxb', self.nom, indiceDsLeContenu)
+      rangDeLObjet=indiceDsLeContenu
+      for objFils in self :
+          objFils.addObjPyxb(rangDeLObjet)
+          rangDeLObjet= rangDeLObjet + 1
 
+  def delObjPyxb(self):
+      if not self.cata.modeleMetier : return
+      #print ('X_MCLIST delObjPyxb', self.nom, ' --------------------------')
+      for obj in self:
+          obj.delObjPyxb()
+      #print ('fin X_MCLIST delObjPyxb --------------------------')
 
 
 class X_MCFACT (X_MCCOMPO):
 # -------------------------
-# on gere  au niveau du MCCOMPO
-
-
-  def addObjPyxb(self,indiceDansLeContenu):
-    if not self.cata.modeleMetier : return
-    #print ('**********************************************')
-    #print ('_____________ addObjPyxb ds X_MCLIST', self.nom, indiceDansLeContenu)
-    # adherence Accas sur le parent
-    #perePyxb est en fait l'objet ACCAS père de notre objet PyxB (Il peut être éloigné à cause des BLOCS)
-    parentNonBloc=self.parent
-    while (parentNonBloc.isBLOC()): parentNonBloc=parentNonBloc.parent
-    self.perePyxb=parentNonBloc
-    objPerePyxb=self.perePyxb.objPyxb     
-
-    self.objPyxb.objAccas=self
-      
-    # print('self.cata.modeleMetier.Namespace : ',self.cata.modeleMetier.Namespace)
-    # print('self.nom : ',self.nom)
-    
-    listeObjets=self.parent.getChild(self.nom,restreint='oui')
-    nbObjsPresents=len(listeObjets)
-    # nbObjsPresents == 1 nous indique qu'il n'y avait pas d'objet avec notre 'nom' dans le père
-
-    #Il y a une symetrie entre le contenu de l'orderedContent pour l'objet plural et la liste maintenue pas pyxb pour l'attribut et la mcListe ACCAS
-    elt=pyxb.binding.basis.ElementContent(self.objPyxb, instance=objPerePyxb, tag=pyxb.namespace.ExpandedName(self.cata.modeleMetier.Namespace, self.nom))
-    objPerePyxb.orderedContent().insert(indiceDansLeContenu,elt)
-
-    if (elt.elementDeclaration.isPlural()):
-      if  (nbObjsPresents == 1):
-      #vérifier que lorsque l'élément est optionnel il existe une liste vide ??
-      # setattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb,)
-        ouAjouter=0
-      else:
-        ouAjouter=listeObjets.getIndex(self)
-      liste=getattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key)
-      liste.insert(ouAjouter,self.objPyxb)
-    else:
-      setattr(objPerePyxb,elt.elementDeclaration._ElementDeclaration__key,self.objPyxb)
-      
+  pass
 
 class X_JDC (X_MCCOMPO):
 # ---------------------
index 880ed3d643670201ee4eb3103d35a83cded28d9b..94926de209f436179a53d283b6957f77440a0b36 100644 (file)
@@ -850,7 +850,7 @@ class JDC(I_OBJECT.OBJECT):
       Noyau.N_JDC.JDC.supprime(self)
       for etape in self.etapes:
          etape.supprime()
-      self.appli=None
+      self.appliEficas=None
       self.g_context={}
       self.const_context={}
       self.sds_dict={}
@@ -947,9 +947,9 @@ class JDC(I_OBJECT.OBJECT):
           Retourne le nom du fichier correspondant a un numero d'unite
           logique (entier) ainsi que le source contenu dans le fichier
       """
-      if self.appli is not None:
-         # Si le JDC est relie a une application maitre, on delegue la recherche
-         file,text= self.appli.getFile(unite,fic_origine)
+      if self.appliEficas is not None:
+         # Si le JDC est relie a une appliEficascation maitre, on delegue la recherche
+         file,text= self.appliEficas.getFile(unite,fic_origine)
       else:
          file = None
          if unite != None:
index 0de991d84b1c09f00783e4d9730a36d340e6a7ab..ab284d4ef5ec17b8f1826422c35b314ac30a538b 100644 (file)
@@ -115,7 +115,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.text_converted=0
        self.text_error=""
        if self.nom != "INCLUDE_MATERIAU":
-          format=self.parent.appli.appliEficas.format_fichier
+          format=self.jdc.appliEficas.format_fichier
           #on force a python pour Carmel
           if format=="CARMEL3D" : format="python"
           import convert
@@ -123,7 +123,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
               # Le convertisseur existe on l'utilise
               p=convert.plugins[format]()
               p.text=text
-              text=p.convert('exec',self.jdc.appli)
+              text=p.convert('exec',self.jdc.appliEficas)
               #Si le fichier ne peut pas etre converti, le cr n'est pas vide
               #et le texte est retourne tel que
               if not p.cr.estvide(): 
@@ -135,7 +135,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
        if hasattr(self,'sd') and self.sd != None : context_ini[self.sd.nom]=self.sd
        j=self.JdC_aux( procedure=text, nom=fichier,
-                                appli=self.jdc.appli,
+                                appliEficas=self.jdc.appliEficas,
                                 cata=self.jdc.cata,
                                 cata_ord_dico=self.jdc.cata_ordonne_dico,
                                 context_ini = context_ini,
@@ -597,8 +597,8 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     except:
        # Impossible de construire le jdc auxiliaire (sortie par exception)
        l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
-       if self.jdc.appli is not None:
-          self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+       if self.jdc.appliEficas is not None:
+          self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                                        message= tr("Ce fichier ne sera pas pris en compte\n %s",''.join(l)))
 
        self.g_context={}
@@ -763,8 +763,8 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          f,text=None,None
 
       self.recorded_units=units
-      if f is None and self.jdc.appli:
-         self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+      if f is None and self.jdc.appliEficas:
+         self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                message= tr("Ce fichier ne sera pas pris en compte\nLe fichier associe n'est pas defini"))
       return f,text
 
@@ -866,7 +866,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          for concept in self.old_context_fichier_init.values():
              self.jdc.deleteConcept(concept)
       if fichier == None :
-         fichier=str(self.jdc.appli.getFile_dictDonnees())
+         fichier=str(self.jdc.appliEficas.getFile_dictDonnees())
          if fichier  == str("") : 
            self.fichier_ini="badfile"
            self.fichier_text=""
@@ -931,7 +931,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
              self.jdc.deleteConcept(concept)
 
       if fichier == None :
-         fichier=str(self.jdc.appli.getFileVariable())
+         fichier=str(self.jdc.appliEficas.getFileVariable())
          if fichier  == str("") : 
            self.fichier_ini="badfile"
            self.fichier_text=""
@@ -1019,14 +1019,14 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
   def makeIncl2Except(self,mess=None):
          l=traceback.format_exception_only(tr("Fichier invalide"),sys.exc_info()[1])
-         if self.jdc.appli is not None:
+         if self.jdc.appliEficas is not None:
              if mess == None :
-                     self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+                     self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                      message= tr("Le contenu de ce fichier ne sera pas pris en compte\n %s",\
                                                                    ''.join(l)))
 
              else :
-                     self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+                     self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                                             message=tr(mess))
          #self.parent.recordUnit(unite,self)
          self.g_context={}
@@ -1084,8 +1084,8 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
            self.parent.recordUnit(unite,self)
          except:
            l=traceback.format_exception_only(tr("Fichier invalide %s",sys.exc_info()[1]))
-           if self.jdc.appli:
-              self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+           if self.jdc.appliEficas:
+              self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                                             message=tr("Le contenu de ce fichier ne sera pas pris en compte\n"+''.join(l)))
            self.parent.recordUnit(unite,self)
            self.g_context={}
@@ -1222,8 +1222,8 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
            self.parent.recordUnit(None,self)
          except:
            l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
-           if self.jdc.appli:
-              self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
+           if self.jdc.appliEficas:
+              self.jdc.appliEficas.afficheAlerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
                                             message=tr("Ce fichier ne sera pas pris en compte\n %s",''.join(l)))
            self.parent.recordUnit(None,self)
            self.g_context={}
index a90d7ffbcb37aac1813c70e9f97f21a70e19fba0..384e1595a37861582a3bb3f29b63327bae82cb0c 100644 (file)
@@ -168,24 +168,18 @@ class MCCOMPO(I_OBJECT.OBJECT):
   # ajoute la taille des les Blocs
   # faut -il chercher plus loin ds les petits-enfants ?
       if objet.nature == 'MCList' : objet=objet[0]
-      print ('je cherche ',objet, objet.nom, self.nom)
       leRang=0
       positionDsLaListe=0
       try :
         positionDsLaListe=self.mcListe.index(objet)
         positionDsLaListeDeFactSiFact =0
-        print ('en position', positionDsLaListe)
       except :
         for mc in self.mcListe:
-           print (mc)
            if mc.nature == 'MCList':
               try :
-                print ('ds try')
                 positionDsLaListeDeFactSiFact=mc.index(objet)
-                print ('break')
                 break
               except :
-                print ('ds except')
                 positionDsLaListe=positionDsLaListe+1
            else : positionDsLaListe=positionDsLaListe+1
       i=0
@@ -193,7 +187,6 @@ class MCCOMPO(I_OBJECT.OBJECT):
         leRang= leRang + self.mcListe[i].longueurDsArbre()
         i=i+1
       leRang=leRang+positionDsLaListeDeFactSiFact
-      print (leRang)
       return leRang
  
 
@@ -225,9 +218,6 @@ class MCCOMPO(I_OBJECT.OBJECT):
        return 0
 
     self.initModif()
-    print ('suppEntite MCCOMPO _____________________________________________________')
-    print (  objet.nom)
-    print ('_____________________________________________________')
     objet.delObjPyxb()
     self.mcListe.remove(objet)
     CONNECTOR.Emit(self,"supp",objet)
@@ -246,7 +236,7 @@ class MCCOMPO(I_OBJECT.OBJECT):
           Ajoute le mot-cle name a la liste des mots-cles de
           l'objet MCCOMPOSE
       """
-      print ('addEntite', name, pos)
+      #print ('addEntite', name, pos)
       self.initModif()
       if type(name)==bytes or type(name) == str :
         # on est en mode creation d'un motcle 
@@ -262,7 +252,7 @@ class MCCOMPO(I_OBJECT.OBJECT):
 
       # On verifie que l'ajout d'objet est autorise
       if self.ispermis(objet) == 0:
-        self.jdc.appli.afficheAlerte(tr("Erreur"),
+        self.jdc.appliEficas.afficheAlerte(tr("Erreur"),
                                       tr("L'objet %(v_1)s ne peut  etre un fils de %(v_2)s",\
                                       {'v_1': objet.nom, 'v_2': self.nom}))
         self.finModif()
@@ -294,7 +284,7 @@ class MCCOMPO(I_OBJECT.OBJECT):
          # on cree une liste d'objets. Dans le cas contraire,
          # on emet un message d'erreur.
          if not old_obj.isRepetable():
-            self.jdc.appli.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
+            self.jdc.appliEficas.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
             self.finModif()
             return 0
          else:
index fc8583fb98168f8ff66ea9c92c1e692e53769839..b7781d92b59f27a1b2522d54466e8a41ddefa9b1 100644 (file)
@@ -96,7 +96,7 @@ class MCList:
                   raise EficasException(tr("traitement non-prevu"))
 
       if not self.ajoutPossible():
-         self.jdc.appli.afficheAlerte(tr("Erreur"),
+         self.jdc.appliEficas.afficheAlerte(tr("Erreur"),
                                        tr("L'objet %s ne peut pas etre ajoute", obj.nom))
          return None
 
index 6ac37526fa3586e0ea9bcbb9cef35e828851e799..b207c0413880343c37c36c29e37c9c18183ef987 100644 (file)
@@ -98,9 +98,9 @@ class MCSIMP(I_OBJECT.OBJECT):
       # traitement d'un flottant isole
       txt = str(self.valeur)
       clefobj=self.getNomConcept()
-      if clefobj in self.jdc.appli.appliEficas.dict_reels :
-        if self.valeur in self.jdc.appli.appliEficas.dict_reels[clefobj]:
-           txt=self.jdc.appli.appliEficas.dict_reels[clefobj][self.valeur]
+      if clefobj in self.jdc.appliEficas.dict_reels :
+        if self.valeur in self.jdc.appliEficas.dict_reels[clefobj]:
+           txt=self.jdc.appliEficas.dict_reels[clefobj][self.valeur]
     elif type(self.valeur) in (list,tuple) :
       if self.valeur==[] or self.valeur == (): return str(self.valeur)
       # traitement des listes
@@ -109,9 +109,9 @@ class MCSIMP(I_OBJECT.OBJECT):
       for val in self.valeur:
         if type(val) == float : 
            clefobj=self.getNomConcept()
-           if clefobj in self.jdc.appli.appliEficas.dict_reels:
-              if val in self.jdc.appli.appliEficas.dict_reels[clefobj]:
-                 txt=txt + sep +self.jdc.appli.appliEficas.dict_reels[clefobj][val]
+           if clefobj in self.jdc.appliEficas.dict_reels:
+              if val in self.jdc.appliEficas.dict_reels[clefobj]:
+                 txt=txt + sep +self.jdc.appliEficas.dict_reels[clefobj][val]
               else :
                  txt=txt + sep + str(val)
            else :
@@ -154,9 +154,9 @@ class MCSIMP(I_OBJECT.OBJECT):
     val=self.valeur
     if type(val) == float : 
       clefobj=self.getNomConcept()
-      if clefobj in self.jdc.appli.appliEficas.dict_reels :
-        if val in self.jdc.appli.appliEficas.appliEficas.dict_reels[clefobj] :
-           return self.jdc.appli.appliEficas.dict_reels[clefobj][val]
+      if clefobj in self.jdc.appliEficas.dict_reels :
+        if val in self.jdc.appliEficas.appliEficas.dict_reels[clefobj] :
+           return self.jdc.appliEficas.dict_reels[clefobj][val]
     if type(val) != tuple :
       try:
         return val.getName()
index 26f8907a6a4a21b5cf5040a2363ef8f981f9c0f9..4d3383958fcfea186e3f60b918f851137f5d83ad 100644 (file)
@@ -115,7 +115,7 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
             # nouvel objet : on cree un nouvel item
             def setFunction(value, object=obj):
                 object.setval(value)
-            item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+            item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
             sublist[pos]=item
          pos=pos+1
 
index 111a4e982f71bbf3ff0899e82775de9e052f69d7..87121de436b0d467bbd08715c118c28487d30d86 100644 (file)
@@ -115,7 +115,7 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
     for obj in liste:
        if sublist[pos] is None:
           # nouvel objet : on cree un nouvel item
-          item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj)
+          item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj)
           sublist[pos]=item
        pos=pos+1
 
index 2398751d6aae6d4516e04d82ed5853651d8d63ce..010d6d184a4fea671b06298c761558606c6b48fa 100644 (file)
@@ -71,8 +71,8 @@ class MACROTreeItem(compooper.EtapeTreeItem):
 
 class INCLUDETreeItemBase(MACROTreeItem):
 
-    def __init__(self,appli, labeltext, object, setFunction):    
-       MACROTreeItem.__init__(self,appli, labeltext, object, setFunction)
+    def __init__(self,appliEficas, labeltext, object, setFunction):    
+       MACROTreeItem.__init__(self,appliEficas, labeltext, object, setFunction)
 
     def isCopiable(self):
        return 0
@@ -87,7 +87,7 @@ class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):
     def createPopUpMenu(self):
       typeNode.PopUpMenuNode.createPopUpMenu(self)
       
-    def makeEdit(self):    #,appli,node
+    def makeEdit(self):    #,appliEficas,node
         if self.item.object.text_converted == 0:
                 # Le texte du fichier inclus n'a pas pu etre converti par le module convert
                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
@@ -119,7 +119,7 @@ class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):
     def createPopUpMenu(self):
       typeNode.PopUpMenuNode.createPopUpMenu(self)
 
-    def makeEdit(self):    #,appli,node
+    def makeEdit(self):    #,appliEficas,node
         if self.item.object.text_converted == 0:
                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
                 msg=msg+self.item.object.text_error
@@ -172,18 +172,18 @@ class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
 # ------------------------------------
     
 
-def treeitem(appli, labeltext, object, setFunction=None):
+def treeitem(appliEficas, labeltext, object, setFunction=None):
    """ Factory qui retourne l'item adapte au type de macro : 
        INCLUDE, POURSUITE, MACRO
    """
    if object.nom == "INCLUDE_MATERIAU":
-      return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setFunction)
+      return INCLUDE_MATERIAUTreeItem(appliEficas, labeltext, object, setFunction)
    elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
-      return INCLUDETreeItem(appli, labeltext, object, setFunction)
+      return INCLUDETreeItem(appliEficas, labeltext, object, setFunction)
    elif object.nom == "POURSUITE":
-      return POURSUITETreeItem(appli, labeltext, object, setFunction)
+      return POURSUITETreeItem(appliEficas, labeltext, object, setFunction)
    else:
-      return MACROTreeItem(appli, labeltext, object, setFunction)
+      return MACROTreeItem(appliEficas, labeltext, object, setFunction)
 
 import Accas
 objet=Accas.MACRO_ETAPE
index fca3168d21e4f5c15ec8f74e3f044c9073f3f519..5fb722c8b77c59304b669115a7cc8788b0ec3397 100644 (file)
@@ -138,7 +138,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
               # nouvel objet : on cree un nouvel item
               def setFunction(value, object=obj):
                   object=value
-              item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+              item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
               sublist[pos]=item
               #Attention : on ajoute une information supplementaire pour l'actualisation de 
               # la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE
@@ -211,8 +211,8 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 import Accas
 objet = Accas.MCList    
 
-def treeitem(appli,labeltext,object,setFunction):
+def treeitem(appliEficas,labeltext,object,setFunction):
   """ Factory qui produit un objet treeitem adapte a un objet 
       Accas.MCList (attribut objet de ce module)
   """
-  return MCListTreeItem(appli,labeltext,object,setFunction)
+  return MCListTreeItem(appliEficas,labeltext,object,setFunction)
index d9326beedab4b22ff6b8a370fca3d0032871fca0..ac272a04c93b76a0485592c5148224fb695766ef 100644 (file)
@@ -66,61 +66,12 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
 
     def createPopUpMenu(self):
         typeNode.PopUpMenuNode.createPopUpMenu(self)
-#        if ("AFFE_CARA_ELEM" in self.item.getGenealogie()) and self.editor.salome: 
-#           self.ViewElt = QAction(tr('View3D'),self.tree)
-#           self.tree.connect(self.ViewElt,SIGNAL("triggered()"),self.view3D)
-#           self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
-#           self.menu.addAction(self.ViewElt)
-#           if self.item.isValid() :
-#              self.ViewElt.setEnabled(1)
-#           else:
-#              self.ViewElt.setEnabled(0)
-#        if  self.item.getNom() == "DISTRIBUTION" :
-#           self.Graphe = QAction(tr('Graphique'),self.tree)
-#           self.Graphe.triggered.connect(self.viewPng)
-#           self.Graphe.setStatusTip(tr("affiche la distribution "))
-#           self.menu.addAction(self.Graphe)
-#           if self.item.isValid() :
-#              self.Graphe.setEnabled(1)
-#           else:
-#              self.Graphe.setEnabled(0)
 
 #    def view3D(self) :
 #        from Editeur import TroisDPal
 #        troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
 #        troisD.envoievisu()
 
-#    def viewPng(self) :
-#        from monPixmap import MonLabelPixmap
-#        import generator
-#        try:
-#            from PyQt5.QtCore import Qt
-#            from PyQt5.QtWidgets import QMessageBox, QAction, QApplication
-#            QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
-#            g = generator.plugins[self.appliEficas.format_fichier]()
-#            g.gener(self.item.object, format='beautifie')
-#            stdGener = g.getGenerateur()
-#            loi = list(g.dictMCLois.keys())[0]
-#            nomLoi = loi.getName()
-#            (fd, fichier) = tempfile.mkstemp(prefix = "openturns_graph_", suffix = ".png")
-#            os.close(fd)
-#            chemin = os.path.dirname(fichier)
-#            base = os.path.splitext(os.path.basename(fichier))[0]
-#            script = stdGener.GraphiquePDF(loi, chemin, base)
-            #print script
-#            d = {}
-#            exec(script, d)
-#            widgetPng=MonLabelPixmap(self.appliEficas,fichier,nomLoi)
-#            os.remove(fichier)
-#            QApplication.restoreOverrideCursor()
-#            widgetPng.show()
-#        except:
-#            QApplication.restoreOverrideCursor()
-#            QMessageBox.warning(
-#                self.appliEficas,
-#                tr("Erreur interne"),
-#                tr("La PDF de la loi ne peut pas etre affichee."),
-#                tr("&Annuler"))
 
 class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
   """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
@@ -246,7 +197,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
             # nouvel objet : on cree un nouvel item
             def setFunction(value, object=obj):
                 object.setval(value)
-            item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
+            item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
             sublist[pos]=item
          pos=pos+1
 
@@ -278,8 +229,8 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
          oldnom=self.object.sd.nom
       test,mess= self.object.nommeSd(nom)
       if test:self.object.parent.resetContext()
-      if (test and oldnom in self.appli.dict_reels ):
-              self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
+      if (test and oldnom in self.appliEficas.dict_reels ):
+              self.appliEficas.dict_reels[nom]=self.appliEficas.dict_reels[oldnom]
       return test,mess
 
   def isReentrant(self):
@@ -294,7 +245,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
           représentatif de self.object
       """
       # Format de fichier utilisé
-      format=self.appli.appliEficas.format_fichier
+      format=self.appliEficas.format_fichier
       return self.object.getObjetCommentarise(format)
 
   def getObjetCommentarise_BAK(self):
@@ -304,7 +255,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
       """
       import generator,Accas
       # Format de fichier utilisé
-      format=self.appli.appliEficas.format_fichier
+      format=self.appliEficas.format_fichier
       g=generator.plugins[format]()
       texte_commande = g.gener(self.object,format='beautifie')
       # Il faut enlever la premiere ligne vide de texte_commande que 
index 3a70133bbb67da743d07515c1663626fd551fcdb..13bf8a8a5fa9cb59bfd6b8f6e120489308bb4d46 100644 (file)
@@ -341,17 +341,17 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       try :
         if "R" in self.object.definition.type:
            clef=self.object.getNomConcept()
-           if clef in self.appli.dict_reels:
+           if clef in self.appliEficas.dict_reels:
               if type(valeurs) == tuple:
                  valeurs_reelles=[]
                  for val in valeurs :
-                    if val in self.appli.dict_reels[clef]:
-                       valeurs_reelles.append(self.appli.dict_reels[clef][val])
+                    if val in self.appliEficas.dict_reels[clef]:
+                       valeurs_reelles.append(self.appliEficas.dict_reels[clef][val])
                     else :
                        valeurs_reelles.append(val)
               else :
-                 if valeurs in self.appli.dict_reels[clef]:
-                    valeurs_reelles=self.appli.dict_reels[clef][valeurs]
+                 if valeurs in self.appliEficas.dict_reels[clef]:
+                    valeurs_reelles=self.appliEficas.dict_reels[clef][valeurs]
               valeurs=valeurs_reelles
       except :
         pass
@@ -501,7 +501,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
 
 
   def getIconName(self):
-    if self.appli.maConfiguration.differencieSiDefaut and self.isValid():
+    if self.appliEficas.maConfiguration.differencieSiDefaut and self.isValid():
       if self.object.definition.defaut != None :
          if self.object.valeur == self.object.definition.defaut : return "ast-green-dark-ball"
          if self.object.definition.max > 1 and list(self.object.valeur) == list(self.object.definition.defaut) : return "ast-green-dark-ball"
index 10edd6bce4fc7fb55ab6f3cd149e442d1f007afe..5b3d59c241e06c9fcb7fad7f4f567efb74277374 100644 (file)
@@ -37,7 +37,7 @@ from Extensions.i18n import tr
 class configBase(object):
 
   #-------------------------------
-  def __init__(self,appli,repIni):
+  def __init__(self,appliEficas,repIni):
   #-------------------------------
 
   # Classe de base permettant de lire, afficher
@@ -52,9 +52,9 @@ class configBase(object):
   # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
   # dans le fichier general sinon
 
-      self.appli   = appli  
-      self.code    = appli.code
-      self.salome  = appli.salome
+      self.appliEficas   = appliEficas  
+      self.code    = appliEficas.code
+      self.salome  = appliEficas.salome
       if self.salome : self.name="editeur_salome.ini"
       else           : self.name="editeur.ini"
       self.rep_mat = None
@@ -81,7 +81,7 @@ class configBase(object):
       #Particularite des schemas MAP
       if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
 
-      #if self.appli: self.parent=appli.top
+      #if self.appliEficas: self.parent=appliEficas.top
       #else:        self.parent=None
 
       if not os.path.isdir(self.savedir) :
@@ -137,6 +137,7 @@ class configBase(object):
       self.ajoutExecution=False
       self.utilParExtensions=[]
       self.rendVisiblesLesCaches=False
+      self.pasDeMCOptionnels=False
 
       self.dumpXSD=False
       self.withXSD=False
@@ -149,7 +150,7 @@ class configBase(object):
   def lectureFichierIniStandard(self):
   #--------------------------------------
 
-      name='prefs_'+self.appli.code
+      name='prefs_'+self.appliEficas.code
       try :
         prefsCode=__import__(name)
       except :
@@ -252,5 +253,5 @@ class configBase(object):
 #
 
 
-def makeConfig(appli,rep):
-    return configBase(appli,rep)
+def makeConfig(appliEficas,rep):
+    return configBase(appliEficas,rep)
diff --git a/InterfaceQT4/editor.pourCIST b/InterfaceQT4/editor.pourCIST
deleted file mode 100644 (file)
index 5e7bd5b..0000000
+++ /dev/null
@@ -1,1967 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   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 __future__ import absolute_import
-from __future__ import print_function
-try :
-   from builtins import str
-   from builtins import range
-except : pass
-
-import types,sys,os, re
-import  subprocess
-import traceback
-
-import six
-from six.moves import range
-from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter
-from PyQt5.QtGui import QPalette
-from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
-import time
-import pdb
-from datetime import date
-from Extensions.i18n import tr
-
-import traceback
-
-# Modules Eficas
-
-import convert, generator
-from Editeur        import session
-from Editeur        import comploader
-from Editeur        import Objecttreeitem
-from desBaseWidget  import Ui_baseWidget
-from InterfaceQT4.monViewTexte   import ViewText
-from monWidgetCreeParam import MonWidgetCreeParam 
-from . import browser
-from . import readercata
-
-DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
-
-    
-
-
-class JDCEditor(Ui_baseWidget,QWidget):
-# ----------------------------------------- #
-    """
-       Editeur de jdc
-    """
-
-    def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):
-    #----------------------------------------------------------------------------------------------------------#
-
-        QWidget.__init__(self,None)
-        self.i=0
-        self.setupUi(self)
-        self.inhibeSplitter=0
-        self.widgetOptionnel=None
-        self.fenetreCentraleAffichee=None
-        self.dejaDansPlieTout=False
-        self.afficheCommandesPliees = True
-        self.listeDesListesOuvertes=set()
-        self.appliEficas = appli
-        self.appli       = appli  #---- attendu par IHM
-        self.vm          = vm
-        self.fichier     = fichier
-        self.jdc         = jdc
-        self.first      = True
-        self.QWParent    = QWParent
-        self.couleur     = Qt.black
-        self.nodeEnCours=None
-         
-        if appli != None :
-           self.salome =  self.appliEficas.salome
-        else :
-           self.salome=0
-           print ("dans JDC pas d appli ????????")
-
-        # ces attributs sont mis a jour par definitCode appelee par newEditor
-        self.code   = self.appliEficas.CONFIGURATION.code
-        self.initSplitterSizes()
-
-        #self.afficheListesPliees=False
-        self.afficheListesPliees=True
-        if self.code == "ASTER" or self.code == "monCode" : self.afficheListesPliees =True
-        if self.code == 'PSEN_N1' : self.afficheListesPliees = False
-
-        self.mode_nouv_commande=self.appliEficas.CONFIGURATION.mode_nouv_commande
-        self.closeAutreCommande=self.appliEficas.CONFIGURATION.closeAutreCommande
-        self.closeFrameRechercheCommande=self.appliEficas.CONFIGURATION.closeFrameRechercheCommande
-        self.closeArbre=self.appliEficas.CONFIGURATION.closeArbre
-        self.affiche=self.appliEficas.CONFIGURATION.affiche
-        self.afficheOptionnelVide=self.appliEficas.CONFIGURATION.afficheOptionnelVide
-        self.nombreDeBoutonParLigne = self.appliEficas.CONFIGURATION.nombreDeBoutonParLigne
-        self.dicoImages = self.appliEficas.CONFIGURATION.dicoImages
-        self.simpleClic = self.appliEficas.CONFIGURATION.simpleClic
-        #self.taille = self.appliEficas.taille
-
-        #if self.code in ['MAP','CARMELCND','PSEN'] : self.afficheCommandesPliees=False
-        if self.code in ['MAP','CARMELCND'] : self.afficheCommandesPliees=False
-        if self.code in ['MAP',]:
-           self.widgetTree.close()
-           self.widgetTree=None
-        if self.closeArbre: self.fermeArbre()
-
-        self.version_code = session.d_env.cata
-
-
-        if not hasattr ( self.appliEficas, 'readercata') or  self.appliEficas.multi==True:
-           self.readercata  = readercata.READERCATA( self, self.appliEficas )
-           self.appliEficas.readercata=self.readercata
-           self.appliEficas.code=self.code
-        else :
-           self.readercata=self.appliEficas.readercata
-        if self.readercata.fic_cata == None : return    #Sortie Salome
-        self.titre=self.readercata.titre
-        self.Ordre_Des_Commandes=self.readercata.Ordre_Des_Commandes
-        self.Classement_Commandes_Ds_Arbre=self.readercata.Classement_Commandes_Ds_Arbre
-
-        self.format =  self.appliEficas.format_fichier
-
-        self.dict_reels={}
-        self.liste_simp_reel=[]
-        self.ihm="QT"
-        self.dicoNouveauxMC={}
-        self.dicoNouveauxFact={}
-
-        nameConf='configuration_'+self.code
-        configuration=__import__(nameConf)
-        self.CONFIGURATION = self.appliEficas.CONFIGURATION
-        self.CONFIGStyle =   self.appliEficas.CONFIGStyle
-
-        try:
-          self.CONFIGURATION.generator_module
-          _module = __import__(self.CONFIGURATION.generator_module)
-          info = _module.entryPoint()
-          generator.plugins.addEntryPoint(info)
-        except:
-          pass
-
-        try:
-          self.CONFIGURATION.convert_module
-          #print self.CONFIGURATION.convert_module
-          _module = __import__(self.CONFIGURATION.convert_module)
-          info = _module.entryPoint()
-          convert.plugins.addEntryPoint(info)
-        except :
-          pass
-
-        self.sb = None
-        if hasattr(self.appliEficas,"statusBar"):
-           self.sb = self.appliEficas.statusBar()
-
-        self.fileInfo       = None
-        self.lastModified   = 0
-
-        self.modified   = False
-        self.isReadOnly = False
-        self.node_selected = []
-        self.deplier = True
-        self.message=''
-        if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True
-        else :  self.afficheApresInsert=False
-        if self.code in ['TELEMAC',] : self.enteteQTree='premier'
-        else : self.enteteQTree='complet'
-        if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True
-        else : self.affichePlie=False
-
-        self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue
-
-        #------- construction du jdc --------------
-
-        jdc_item = None
-
-        self.nouveau=0
-        if self.fichier is not None:        #  fichier jdc fourni
-            self.fileInfo = QFileInfo(self.fichier)
-            self.fileInfo.setCaching(0)
-            if jdc==None :
-               try :
-                   self.jdc = self.readFile(self.fichier)
-                   if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
-               except :
-                   print ("mauvaise lecture")
-            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)
-                else :
-                   self.jdc = self._newJDCInclude(units=units)
-                self.nouveau=1
-
-        if self.jdc:
-            self.jdc.appli = self # a resorber
-            self.jdc.editor = self 
-            self.jdc.lang    = self.appli.langue
-            self.jdc.aReafficher=False
-            txt_exception  = None
-            if not jdc:
-                self.jdc.analyse()
-                txt_exception = self.jdc.cr.get_mess_exception()
-            if txt_exception:
-                self.jdc = None
-                QApplication.restoreOverrideCursor()
-                self.affiche_infos(tr("Erreur fatale au chargement de %s",str(fichier)),Qt.red)
-                if (self.appliEficas.ssIhm == False) : QMessageBox.critical( self, tr("Erreur fatale au chargement d'un fichier"), txt_exception)
-            else:
-                comploader.charger_composants("QT")
-                jdc_item=Objecttreeitem.make_objecttreeitem( self, "nom", self.jdc )
-                if (not self.jdc.isvalid()) and (not self.nouveau) and (self.appliEficas.ssIhm == False):
-                    self.viewJdcRapport()
-
-
-        if jdc_item and self.appliEficas.ssIhm==False:
-            self.tree = browser.JDCTree( jdc_item,  self )
-        self.appliEficas.construitMenu()
-
-        
-        #############
-        self.adjustSize()
-
-
-    #-------------------#  Pour execution avec output et error dans le bash
-    def runPSEN(self):
-    # #-------------------#
-    #   #if self.modified or self.fichier==None  : self.saveFile()
-    #   self.saveFile()
-    #
-    #   #lancement avec le .bat
-    #   path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_Eficas','PSEN'))
-    #   WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
-    #   import subprocess
-    #   p = subprocess.Popen(['python',WrapperFilePath])
-    #   (out,err)=p.communicate()
-    #   print out
-    #   print err
-
-
-        self.saveFile()
-
-        # lancement avec le .bat
-        path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../', '../', 'PSEN_Eficas', 'PSEN'))
-        filer = open('temp.txt', 'r')
-        _path = []
-        for line in filer:
-            _path.append(line)
-        filer.close()
-
-
-        if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
-            Python3_path = _path[2].replace('\n', '')
-        import subprocess
-
-        # execfile
-        # 'PF_PARAMETERS' in self.readercata.Ordre_Des_Commandes
-        if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
-            WrapperFilePath = os.path.join(path1, 'PFWrapper.py')
-            p = subprocess.Popen([Python3_path + '/python.exe', WrapperFilePath])
-        else:
-            WrapperFilePath = os.path.join(path1, 'PSSEWrapper.py')
-            p = subprocess.Popen(['python', WrapperFilePath])
-        (out, err) = p.communicate()
-        print( out)
-        print( err)
-
-    #-------------------#  Pour execution avec output et error dans le bash
-    def runPSEN_N1(self):
-    #-------------------#
-    
-      self.saveFile()
-      #cmd = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','PSEN_N1','run.py'))
-      #cmd = "from run import runPSEN_N1; dico="+str(dico)
-      
-      #textePython=("python "+ cmd + " "+ str(dico))
-      #self._viewTextExecute( textePython,"psen_run",".sh")
-
-      path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
-      sys.path.append(path1)      
-      
-      if not(self.jdc.isvalid()):
-         QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
-      if generator.plugins.has_key('dicoImbrique'):
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.generator.Dico 
-         
-         ##to delete
-         fileDico =  os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
-         f = open( str(fileDico), 'wb')
-         f.write("Dico =" + str(dico) )
-         f.close()
-
-      if 'PSSE_path' in dico['CASE_SELECTION']:
-        from Run import run
-        #self.appliEficas.close()
-        run(dico)
-      elif 'PF_path' in dico['CASE_SELECTION']:
-            import subprocess
-            RunPFfile = os.path.join(path1, 'RunPF.py')
-            Python3_path=dico['CASE_SELECTION']['Python3_path']
-            p = subprocess.Popen([Python3_path + '/python.exe', RunPFfile])
-            p.wait()
-
-
-      #res,txt_exception=run(dico)
-      #if res : QMessageBox.information( self, tr("fin de script run"), txt_exception)
-      #else  : QMessageBox.critical( self, tr("Erreur fatale script run"), txt_exception)
-       
-
-    #-------------------#  Pour execution avec output et error dans le bash
-    def process_N1(self):
-    #-------------------#
-    
-      path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
-      sys.path.append(path1)     
-    
-   
-      if generator.plugins.has_key('dicoImbrique'):
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.getDico() #generator.Dico
-         
-    
-         for k in dico['CONTINGENCY_PROCESSING'].keys():
-          
-             if k[0:19] == 'Component_List_For_' or k[0:21] =='Contingency_List_For_' : 
-                newK=k.replace('___',' ')
-                l="'"+str(newK)+"'"
-                dico['CONTINGENCY_PROCESSING'][l]=dico['CONTINGENCY_PROCESSING'][k]
-                del dico['CONTINGENCY_PROCESSING'][k]
-
-         ###to delete
-         fileDico =  os.path.join(path1, 'dicoN1_process.py')
-         f = open( str(fileDico), 'wb')
-         f.write("Dico =" + str(dico) )
-         f.close()
-         ###
-         return dico    
-    
-        #return self.getDico()
-
-    #-------------------#  Pour execution avec output et error dans le bash
-    def process_VP(self):
-    #-------------------#
-      if 'dicoImbrique' in generator.plugins:
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.getDico() #generator.Dico
-         return dico
-
-   
-    #--------------------------------#
-    def ajoutCommentaire(self):
-    #--------------------------------#
-        if self.tree.selectedItems()==[] :
-          QMessageBox.warning( self, tr("Pas de noeud selectionne"),tr("Selectionnez un Noeud \nLe commentaire sera place apres le noeud selectionne"))
-          return 
-        noeudAvantCommentaire=self.tree.selectedItems()[0]
-        if noeudAvantCommentaire ==self.tree.racine : 
-            self.tree.racine.appendChild("COMMENTAIRE",pos=0)
-            return
-        noeudAvantCommentaire.addComment(True)
-        
-
-
-    #--------------------------------#
-    def _newJDC( self ,units = None):
-    #--------------------------------#
-        """
-        Initialise un nouveau JDC vierge
-        """
-        self.modified=1
-        CONTEXT.unset_current_step()
-
-        texte=""
-        if self.code == "CARMELCND" : texte=self._newJDCCND()
-        if self.code == "ZCRACKS" : texte=self._newZCRACKS()
-        if self.code == "TELEMAC" : texte=self._newTELEMAC()
-        if self.code == "PSEN"    : texte = self._newPSEN()
-        if self.code == "PSEN_N1" : texte = self._newPSEN_N1()
-
-        if hasattr(self.readercata.cata[0],'TEXTE_NEW_JDC') : texte=self.readercata.cata[0].TEXTE_NEW_JDC
-
-        #if self.code == "CF" : texte = self._new_CF()
-        #   texte=self.newTexteCND
-       
-        jdc=self.readercata.cata[0].JdC( procedure =texte,
-                                         appli=self,
-                                         cata=self.readercata.cata,
-                                         cata_ord_dico=self.readercata.cata_ordonne_dico,
-                                         rep_mat=self.CONFIGURATION.rep_mat
-                                        )
-        jdc.lang    = self.appli.langue
-        if units is not None:
-           jdc.recorded_units=units
-           jdc.old_recorded_units=units
-        ## PNPN est ce que la ligne suivante est bien utile ?
-        if texte == "" :jdc.analyse()
-        return jdc
-
-    #--------------------------------#
-    def _newJDCInclude( self ,units = None):
-    #--------------------------------#
-        """
-        Initialise un nouveau JDC vierge
-        """
-        import Extensions.jdc_include
-        JdC_aux=Extensions.jdc_include.JdC_include
-        CONTEXT.unset_current_step()
-
-        jaux=self.readercata.cata[0].JdC( procedure="",
-                               appli=self,
-                               cata=self.readercata.cata,
-                               cata_ord_dico=self.readercata.cata_ordonne_dico,
-                               rep_mat=self.CONFIGURATION.rep_mat,
-                              )
-        jaux.analyse()
-
-        J=JdC_aux( procedure="",
-                   appli=self,
-                   cata=self.readercata.cata,
-                   cata_ord_dico=self.readercata.cata_ordonne_dico,
-                   jdc_pere=jaux,
-                   rep_mat=self.CONFIGURATION.rep_mat,
-                   )
-        J.analyse()
-        if units is not None:
-           J.recorded_units=units
-           J.old_recorded_units=units
-        return J
-
-
-    #-------------------------------#
-    def readFile(self, fn):
-    #--------------------------------#
-        """
-        Public slot to read the text from a file.
-        @param fn filename to read from (string or QString)
-        """
-        fn = six.text_type(fn)
-
-        # ------------------------------------------------------------------------------------
-        #                         charge le JDC
-        # ------------------------------------------------------------------------------------
-
-        jdcName=os.path.basename(fn)
-        # Il faut convertir le contenu du fichier en fonction du format
-        if self.appliEficas.format_fichier_in in convert.plugins:
-             # Le convertisseur existe on l'utilise
-             #appli = self
-             p=convert.plugins[self.appliEficas.format_fichier_in]()
-             p.readfile(fn)
-             if p.text=="" : self.nouveau=1
-             pareil,texteNew=self.verifieCHECKSUM(p.text)
-             #if texteNew == ""
-             if pareil == False and (self.appliEficas.ssIhm == False) :
-                QMessageBox.warning( self, tr("fichier modifie"),tr("Attention! fichier change hors EFICAS"))
-             p.text=texteNew
-             memeVersion,texteNew=self.verifieVersionCataDuJDC(p.text)
-             if memeVersion == 0 : texteNew=self.traduitCatalogue(texteNew)
-             p.text=texteNew
-             text=p.convert('exec',self.appliEficas)
-             if not p.cr.estvide():
-                self.affiche_infos("Erreur a la conversion",Qt.red)
-        else :
-            self.affiche_infos("Type de fichier non reconnu",Qt.red)
-            if self.appliEficas.ssIhm == False:
-                    QMessageBox.critical( self, tr("Type de fichier non reconnu"),
-                    tr("EFICAS ne sait pas ouvrir le type de fichier %s" ,self.appliEficas.format_fichier_in))
-            return None
-
-        CONTEXT.unset_current_step()
-        jdc=self.readercata.cata[0].JdC(procedure=text,
-                                    appli=self,
-                                    cata=self.readercata.cata,
-                                    cata_ord_dico=self.readercata.cata_ordonne_dico,
-                                    nom=jdcName,
-                                    rep_mat=self.CONFIGURATION.rep_mat
-                                   )
-        # ----------------------------------------------------
-        #      charge le JDC fin
-        # ----------------------------------------------------
-        self.modified = False
-
-#        qApp.restoreOverrideCursor()
-        if self.fileInfo!= None :
-           self.lastModified = self.fileInfo.lastModified()
-        else :
-           self.lastModified = 1
-        nouveauTitre=self.titre+"              "+os.path.basename(self.fichier)
-        self.appliEficas.setWindowTitle(nouveauTitre)
-        return jdc
-
-
-    #-----------------------#
-    def get_source(self,file):
-    #-----------------------#
-
-        # Il faut convertir le contenu du fichier en fonction du format
-        if self.format in convert.plugins :
-            # Le convertisseur existe on l'utilise
-            p=convert.plugins[self.format]()
-            p.readfile(file)
-            text=p.convert('execnoparseur')
-            if not p.cr.estvide():
-                self.affiche_infos("Erreur a la conversion",Qt.red)
-            return text
-        else:
-            # Il n'existe pas c'est une erreur
-            self.affiche_infos("Type de fichier non reconnu",Qt.red)
-            QMessageBox.critical( self, tr("Type de fichier non reconnu"),tr("EFICAS ne sait pas ouvrir ce type de fichier"))
-            return None
-
-    #-----------------------------------------------------------------------#
-    def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
-    #--------------------------------------------------------------------#
-        w = ViewText( self.QWParent,self ,caption,txt,largeur,hauteur)
-        w.show()
-    #
-
-    #----------------------------------------------#
-    def __generateTempFilename(self, prefix, suffix):
-    #----------------------------------------------#
-        import tempfile
-        (fd, filename) = tempfile.mkstemp(prefix=prefix, suffix=suffix)
-        os.close(fd)
-        return filename
-    #
-
-
-    #----------------------------------------------#
-    def _viewTextExecute(self, txt, prefix, suffix):
-    #----------------------------------------------#
-        self.w = ViewText( self.QWParent )
-        self.w.setWindowTitle( "execution" )
-        self.monExe=QProcess(self.w)
-        pid=self.monExe.pid()
-        nomFichier = self.__generateTempFilename(prefix, suffix = ".sh")
-        f=open(nomFichier,'w')
-        f.write(txt)
-        f.close()
-        self.monExe.readyReadStandardOutput.connect( self.readFromStdOut)
-        self.monExe.readyReadStandardError.connect( self.readFromStdErr)
-        exe='sh ' + nomFichier
-        self.monExe.start(exe)
-        self.monExe.closeWriteChannel()
-        self.w.exec_()
-        try:
-          commande="rm  "+ nomFichier
-          os.system(commande)
-        except :
-          pass
-
-    def readFromStdErr(self):
-        a=self.monExe.readAllStandardError()
-        self.w.view.append(str(a.data()))
-
-    def readFromStdOut(self) :
-        a=self.monExe.readAllStandardOutput()
-        self.w.view.append(str(a.data()))
-
-    def readFromStdErrQT4(self):
-        a=self.monExe.readAllStandardError()
-        self.w.view.append(QString.fromUtf8(a.data(),len(a))) ;
-
-    def readFromStdOutQT4(self) :
-        a=self.monExe.readAllStandardOutput()
-        self.w.view.append(QString.fromUtf8(a.data(),len(a))) ;
-        
-    #-----------------------#
-    def generDico(self):
-    #-----------------------#
-       if 'dico' in generator.plugins:
-         self.generator=generator.plugins['dico']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.generator.Dico
-         return dico
-
-    #-----------------------#
-    def gestionParam(self):
-    #-----------------------#
-        w = MonWidgetCreeParam( self)
-        w.show()
-
-    #-----------------------#
-    def viewJdcSource(self):
-    #-----------------------#
-        if self.fichier == None : return
-        f=open(self.fichier,'r')
-        texteSource=f.read()
-        f.close()
-        self._viewText(texteSource, "JDC_SOURCE")
-
-    #-----------------------#
-    def viewJdcPy(self):
-    #-----------------------#
-        strSource = str( self.getTextJDC(self.format) )
-        self._viewText(strSource, "JDC_RESULTAT")
-
-    #-----------------------#
-    def viewJdcRapport(self):
-    #-----------------------#
-        strRapport = six.text_type( self.jdc.report() )
-        # on ajoute les regles
-        
-        self._viewText(strRapport, "JDC_RAPPORT")
-
-    #-----------------------#
-    def viewJdcRegles(self):
-    #-----------------------#
-        if self.tree :self.tree.AppelleBuildLBRegles()
-
-
-    #----------------#
-    def closeIt(self):
-    #----------------#
-        """
-        Public method called by the viewmanager to finally get rid of us.
-        """
-        if self.jdc:
-            self.jdc.supprime()
-        self.close()
-
-    #----------------------------------------------#
-    def affiche_infos(self,message,couleur=Qt.black):
-    #----------------------------------------------#
-        if self.sb:
-           mapalette=self.sb.palette()
-           mapalette.setColor( QPalette.WindowText, couleur )
-           self.sb.setPalette( mapalette );
-           self.sb.showMessage(message,4000)
-           self.couleur=couleur
-
-    #------------------------------#
-    def affiche_alerte(self,titre,message):
-    #------------------------------#
-    # appele par I_MACRO_ETAPE
-        QMessageBox.information( self, titre, message)
-
-    #-----------------------------------#
-    def affiche_commentaire(self,message):
-    #-----------------------------------#
-        self.labelCommentaire.setText(message)
-        QTimer.singleShot(6000, self.rendInvisible)
-
-    #----------------------#
-    def rendInvisible(self):
-    #----------------------#
-        self.labelCommentaire.setText("")
-
-    #-------------------#
-    def initModif(self):
-    #-------------------#
-      """
-          Met l'attribut modified a 'o' : utilise par Eficas pour savoir
-          si un JDC doit etre sauvegarde avant destruction ou non
-      """
-      self.modified = True
-
-    #---------------------------------------#
-    def chercheNoeudSelectionne(self,copie=1):
-    #---------------------------------------#
-      """
-        appele par Cut et Copy pour positionner self.node_selected
-      """
-      self.node_selected=[]
-      if len(self.tree.selectedItems()) == 0 : return
-      self.node_selected=self.tree.selectedItems()
-
-
-    #---------------------#
-    def handleSupprimer(self):
-    #---------------------#
-      self.chercheNoeudSelectionne()
-      if len(self.node_selected) == 0 : return
-      self.QWParent.noeud_a_editer = []
-      if self.node_selected[0]==self.tree.racine: return
-      if len(self.node_selected) == 1 : self.node_selected[0].delete()
-      else : self.node_selected[0].deleteMultiple(self.node_selected)
-
-    #---------------------#
-    def handleRechercher(self):
-    #---------------------#
-      from .monRecherche import DRecherche
-      monRechercheDialg=DRecherche(parent=self,fl=0)
-      monRechercheDialg.show()
-
-
-    #--------------------------------#
-    def handleRechercherDsCatalogue(self):
-    #-----------------------------#
-      from .monRechercheCatalogue import DRechercheCatalogue
-      monRechercheDialg=DRechercheCatalogue(self.QWParent,self)
-      monRechercheDialg.show()
-
-    #---------------------#
-    def handleDeplier(self):
-    #---------------------#
-       if self.tree == None : return
-       #self.tree.collapseAll()
-       if self.deplier :
-          #print "je plie"
-          self.tree.expandItem(self.tree.topLevelItem(0))
-          self.deplier = False
-          if self.fenetreCentraleAffichee != None  :
-             if hasattr(self.fenetreCentraleAffichee.node,'plieToutEtReaffiche'):
-                 self.fenetreCentraleAffichee.node.plieToutEtReaffiche()
-       else:
-          #print "je deplie"
-          self.tree.expandItem(self.tree.topLevelItem(0))
-          self.deplier = True
-          if self.fenetreCentraleAffichee != None  :
-             if hasattr(self.fenetreCentraleAffichee.node,'deplieToutEtReaffiche'):
-                 self.fenetreCentraleAffichee.node.deplieToutEtReaffiche()
-
-    #---------------------#
-    def handleEditCut(self):
-    #---------------------#
-      """
-      Stocke dans Eficas.noeud_a_editer le noeud a couper
-      """
-      #print "handleEditCut"
-      self.chercheNoeudSelectionne()
-      self.QWParent.edit="couper"
-      self.QWParent.noeud_a_editer = self.node_selected
-
-    #-----------------------#
-    def handleEditCopy(self):
-    #-----------------------#
-      """
-      Stocke dans Eficas.noeud_a_editer le noeud a copier
-      """
-      self.chercheNoeudSelectionne()
-      if len(self.node_selected) == 0 : return
-      if len(self.node_selected) == 1 : self.node_selected[0].updateNodeLabelInBlue()
-      else :  self.node_selected[0].updatePlusieursNodeLabelInBlue(self.node_selected)
-      self.QWParent.edit="copier"
-      self.QWParent.noeud_a_editer = self.node_selected
-
-    #------------------------#
-    def handleEditPaste(self):
-    #------------------------#
-      """
-      Lance la copie de l'objet place dans self.QWParent.noeud_a_editer
-      Ne permet que la copie d'objets de type Commande ou MCF
-      """
-      self.chercheNoeudSelectionne()
-      if (not(hasattr(self.QWParent,'noeud_a_editer'))) or len(self.QWParent.noeud_a_editer)==0:
-          QMessageBox.information( self,
-                      tr("Copie impossible"),
-                      tr("Veuillez selectionner un objet a copier"))
-          return
-      if len(self.node_selected) != 1 :
-          QMessageBox.information( self,
-                      tr("Copie impossible"),
-                      tr("Veuillez selectionner un seul objet : la copie se fera apres le noeud selectionne"))
-          return
-      noeudOuColler=self.node_selected[0]
-
-      if len(self.QWParent.noeud_a_editer)!=1:
-         #self.handleEditPasteMultiple()
-         QMessageBox.information( self, tr("Copie impossible"), tr("Aucun Objet n a ete copie ou coupe"))
-         return
-
-      noeudACopier=self.QWParent.noeud_a_editer[0]
-
-      if (self.QWParent.edit != "couper"):
-        #print   (noeudOuColler.item.parent.get_child(noeudOuColler.item.nom)) 
-        try:
-           if noeudOuColler == self.tree.racine :
-               child=noeudOuColler.doPastePremier(noeudACopier)
-           else :
-               child=noeudACopier.doPaste(noeudOuColler,'after')
-
-           if child==None or child==0:
-               QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet'))
-               self.message = ''
-               self.affiche_infos("Copie refusee",Qt.red)
-           if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
-               try :
-                 nom=noeudACopier.item.sd.nom
-                 child.item.nomme_sd(nom)
-               except :
-                 pass
-           return
-           self.initModif()
-           child.select()
-        except  :
-           traceback.print_exc()
-           QMessageBox.critical( self,tr( "Copie refusee"),tr('Copie refusee pour ce type d objet'))
-           self.message = ''
-           self.affiche_infos("Copie refusee",Qt.red)
-           return
-
-      # il faut declarer le JDCDisplay_courant modifie
-      # suppression eventuelle du noeud selectionne
-      # si possible on renomme l objet comme le noeud couper
-
-      if (self.QWParent.edit == "couper"):
-         print ('je pass la')
-         if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
-           QMessageBox.critical( self, tr("Deplacement refuse"),tr('Deplacement refuse entre 2 fichiers. Seule la copie est autorisee '))
-
-         #if 1:
-         try :
-           # indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
-            indexNoeudACopier=self.getTreeIndex(noeudACopier)
-            noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
-            noeudACopier.treeParent.buildChildren()
-
-         #else:
-         except:
-            pass
-         self.QWParent.noeud_a_editer=[]
-
-      # on rend la copie a nouveau possible en liberant le flag edit
-      self.QWParent.edit="copier"
-      noeudACopier.select()
-
-    #----------------------------------#
-    def handleDeplaceMultiple(self):
-    #----------------------------------#
-       pass
-
-    #----------------------------------#
-    def handleEditPasteMultiple(self):
-    #----------------------------------#
-
-    # On ne garde que les niveaux "Etape"
-    # On insere dans l'ordre du JDC
-     listeNoeudsACouper=[]
-     listeIndex=[]
-     listeChild=[]
-     listeItem=[]
-     from InterfaceQT4 import compojdc
-     noeudOuColler=self.node_selected[0]
-     if not (isinstance(noeudOuColler.treeParent, compojdc.Node)):
-        QMessageBox.information( self,
-                  tr("Copie impossible a cet endroit",),
-                  tr("Veuillez selectionner une commande, un parametre, un commentaire ou une macro"))
-        return
-     indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler)
-
-     for noeud in self.QWParent.noeud_a_editer :
-        if not (isinstance(noeud.treeParent, compojdc.Node)): continue
-        indexInTree=noeud.treeParent.children.index(noeud)
-        indice = 0
-        for index in listeIndex:
-            if index < indexInTree : indice = indice +1
-        listeIndex.insert(indice, indexInTree)
-        listeNoeudsACouper.insert(indice, noeud)
-
-     noeudJdc=noeudOuColler.treeParent
-     dejaCrees=0
-     # on les cree a l'envers parcequ'on ajoute a NoeudOuColler
-     listeIndex.reverse()
-     for index in listeIndex:
-         indexTravail=index
-         if indexNoeudOuColler < index:
-            indexTravail=indexTravail+dejaCrees
-         noeudOuColler=noeudJdc.children[indexNoeudOuColler]
-         noeud=noeudJdc.children[indexTravail]
-         child=noeud.doPaste(noeudOuColler)
-         listeChild.append(child)
-         dejaCrees=dejaCrees+1
-
-     self.QWParent.noeud_a_editer = []
-     for i in range(len(listeIndex)):
-        noeud=noeudJdc.children[indexNoeudOuColler+1+i]
-        self.QWParent.noeud_a_editer.append(noeud)
-
-     listeASupprimer=[]
-     if self.QWParent.edit !="couper" : return
-
-     for index in listeIndex:
-         indexTravail=index
-         if indexNoeudOuColler < index:
-            indexTravail=indexTravail+(len(listeIndex))
-         noeud=noeudJdc.children[indexTravail]
-
-         listeItem.append(noeud.item)
-         listeASupprimer.append(noeud)
-
-     for i in range(len(listeChild)):
-         self.tree.item.suppitem(listeItem[i])
-         listeChild[i].item.update(listeItem[i])
-
-     self.QWParent.noeud_a_editer = []
-
-
-    #---------------------#
-    def getFileName(self):
-    #---------------------#
-      return self.fichier
-
-    #---------------------------#
-    def getFileVariable(self) :
-    #---------------------------#
-     titre = tr("Choix d'un fichier XML")
-     texte = tr("Le fichier contient une commande MODEL\n")
-     texte = texte+tr('Donnez le nom du fichier XML qui contient la description des variables')
-     QMessageBox.information( self, titre,tr(texte))
-
-     fichier = QFileDialog.getOpenFileName(self.appliEficas,
-                   tr('Ouvrir Fichier'),
-                   self.appliEficas.CONFIGURATION.savedir,
-                   tr('Wrapper Files (*.xml);;''All Files (*)'))
-     return  fichier
-
-    #--------------------------------------------------#
-    def writeFile(self, fn, txt = None,formatLigne="beautifie"):
-    #--------------------------------------------------#
-        """
-        Public slot to write the text to a file.
-
-        @param fn filename to write to string
-        @return flag indicating success
-        """
-
-        fn = six.text_type(fn)
-       
-        if txt == None :
-            txt = self.getTextJDC(self.format,formatLigne=formatLigne)
-            eol = '\n'
-            if len(txt) >= len(eol):
-               if txt[-len(eol):] != eol:
-                  txt += eol
-            else:
-                txt += eol
-            txt=self.ajoutVersionCataDsJDC(txt)
-            checksum=self.getChecksum(txt)
-            txt=txt+checksum
-        if self.code=="TELEMAC" : return 1
-        try:
-            f = open(fn, 'w')
-            f.write(txt)
-            f.close()
-            return 1
-        except IOError as why:
-            if (self.appliEficas.ssIhm == False):
-                QMessageBox.critical(self, tr('Sauvegarde du Fichier'),
-                tr('Le fichier')+str(fn) + tr('n a pas pu etre sauvegarde : ') + str(why))
-            else :
-                print (why)
-            return 0
-
-    #-----------------------------------------------------------#
-    def getTextJDC(self,format,pourRun=0,formatLigne="beautifie"):
-    #-----------------------------------------------------------#
-      if self.code == "MAP" and not(format in generator.plugins): format = "MAP"
-      if format in generator.plugins:
-         
-         # Le generateur existe on l'utilise
-         self.generator=generator.plugins[format]()
-         try :
-            jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas)
-            if pourRun : jdc_formate=self.generator.textePourRun
-            if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
-         except ValueError as e:
-            QMessageBox.critical(self, tr("Erreur a la generation"),str(e))
-            return
-
-         if not self.generator.cr.estvide():
-            self.affiche_infos(tr("Erreur a la generation"),Qt.red)
-            QMessageBox.critical( self, tr("Erreur a la generation"),tr("EFICAS ne sait pas convertir ce JDC"))
-            return ""
-         else:
-            return jdc_formate
-      else:
-         # Il n'existe pas c'est une erreur
-         self.affiche_infos(tr("Format %s non reconnu" , self.format),Qt.red)
-         QMessageBox.critical( self, "Format  non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
-         return ""
-
-    #----------------------#
-    def getDico(self):
-    #---------------------#
-      if 'dicoImbrique' in generator.plugins:
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.generator.Dico 
-         return dico
-      else : 
-         self.affiche_infos(tr("Format %s non reconnu" , self.format),Qt.red)
-         QMessageBox.critical( self, "Format  non reconnu" ,tr("EFICAS ne sait pas convertir le JDC selon le format "+ self.format))
-         return ""
-
-
-    #------------#
-    def run(self):
-    #------------#
-      fonction="run"+self.code
-      #print fonction
-      if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
-
-    #------------#
-    def saveRun(self):
-    #------------#
-      fonction="saveRun"+self.code
-      if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
-
-    #---------------#
-    def runMAP(self):
-    #---------------#
-
-      if not(self.jdc.isvalid()):
-         QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution MAP"))
-         return
-      if len(self.jdc.etapes) != 1 :
-         QMessageBox.critical( self, tr("Execution impossible "),tr("le JDC doit contenir un et un seul composant"))
-         return
-      if self.modified or self.fichier==None  :
-         self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
-         texte=self.getTextJDC("MAP")
-         self.writeFile( self.fichierMapInput, txt = texte)
-      else :
-         self.fichierMapInput=self.fichier
-      composant=self.jdc.etapes[0].nom.lower()[0:-5]
-
-
-      # :TRICKY: to determine if a component requires SALOME, loads the component from Eficas catalog
-      # then instantiate corresponding class and call getUseSalome() method
-      try:
-          from mapengine.spec import factory
-          mapComponent = factory.new(composant)[0]
-
-          command = "map"
-          if mapComponent.getUseSalome():
-              command += " -r sappli"
-          textePython=(command + " run -n "+composant +" -i "+self.fichierMapInput)
-
-          #textePython="ls -l"
-          self._viewTextExecute( textePython,"map_run",".sh")
-          #try:
-          #  commande="rm  "+self.fichierMapInput
-          #   os.system(commande)
-          #except :
-          #   pass
-      except Exception as e:
-          print((traceback.print_exc()))
-
-    #-------------------#
-    def runZCRACKS(self):
-    #-------------------#
-      if not(self.jdc.isvalid()):
-         QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
-         return
-      if self.modified or self.fichier==None  :
-      #if 1:
-         self.fichierZcracksInput = self.__generateTempFilename(prefix = "zcracks_run", suffix = ".z7p")
-         texte=self.getTextJDC("ZCRACKS",pourRun=1)
-         self.writeFile( self.fichierZcracksInput, txt = texte)
-      else :
-         self.fichierZcracksInput=self.fichier
-      try :
-          #commande ="Zrun -zp "
-          commande="more "
-          textePython=(commande + self.fichierZcracksInput)
-          self._viewTextExecute( textePython,"run_zcracks",".sh")
-      except Exception as e:
-          print((traceback.print_exc()))
-
-    #-------------------#
-    def runCARMELCND(self):
-    #-------------------#
-      #if not(self.jdc.isvalid()):
-      #   QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution "))
-      #   return
-      if self.modified or self.fichier==None  :
-         QMessageBox.critical( self, tr( "Execution impossible "),tr("Sauvegarder SVP avant l'execution "))
-         return
-      if not hasattr(self,'generator'): texte=self.getTextJDC(self.format)
-      from PrepareRunCarmel import prepareRunCarmel
-      fichierGenerique=os.path.basename(self.fichier).split(".")[0]
-      repMed=os.path.dirname(self.fichier)
-      repExeCarmel=self.generator.get_repExeCarmel()
-      textePython=prepareRunCarmel(repExeCarmel,repMed,fichierGenerique)
-      nomFichier = self.__generateTempFilename("carmel_run", suffix = ".sh")
-      f=open(nomFichier,'w')
-      f.write(textePython)
-      f.close()
-      commande="xterm -e sh "+nomFichier +"\n"
-      os.system(commande)
-
-    #-------------------#
-    def runCarmelCS(self):
-    #-------------------#
-      try :
-          commande="runSession pilotyacsCS.py"
-          os.system(commande)
-      except Exception as e:
-          print((traceback.print_exc()))
-
-    #-----------------------------------------------------#
-    def determineNomFichier(self,path,extension):
-    #-----------------------------------------------------#
-      if self.appli.code in DictExtensions:
-         chaine1=DictExtensions[self.appli.code]+" (*."+DictExtensions[self.appli.code]+");;"
-         extensions= tr(chaine1+ "All Files (*)")
-      else :
-         extensions= tr("JDC (*.comm);;" "All Files (*)")
-
-      if self.appli.code == "MAP" :
-         extensions = extensions + ";; Run (*.input);;"
-
-      fn = QFileDialog.getSaveFileName( self,
-             tr("sauvegarde"), path,
-             extensions,None,
-             QFileDialog.DontConfirmOverwrite)
-      if fn == None : return (0, None)
-      fn=fn[0]
-      if fn=='': return (0, None)
-
-      ext = QFileInfo(fn).suffix()
-      if ext == '': fn+=extension
-
-      if QFileInfo(fn).exists():
-           msgBox = QMessageBox(self)
-           msgBox.setWindowTitle(tr("Sauvegarde du Fichier"))
-           msgBox.setText(tr("Le fichier <b>%s</b> existe deja.", six.text_type(fn)))
-           msgBox.addButton(tr("&Ecraser"),0)
-           msgBox.addButton(tr("&Abandonner"),1)
-           abort=msgBox.exec_()
-           if abort == 1 :  return (0, "")
-      return (1,fn)
-
-    #-----------------#
-    def saveRunMAP(self):
-    #-----------------#
-        extension=".input"
-        if not(self.jdc.isvalid()):
-           QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
-                                tr("Un JdC valide est necessaire pour creer un .input")
-                                 )
-           return
-        try :
-          composant=self.jdc.etapes[0].nom.lower()[0:-5]
-        except :
-           QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
-                                tr("Choix du composant obligatoire")
-                                 )
-           return
-        if hasattr(self.CONFIGURATION, "savedir"): path=self.CONFIGURATION.savedir
-        else : path='C:/'
-
-        monNomFichier=""
-        if self.fichier is not None and self.fichier != "" :
-             maBase=str(QFileInfo(self.fichier).baseName())+".input"
-             monPath=str(QFileInfo(self.fichier).absolutePath())
-             monNomFichier=os.path.join(monPath,maBase)
-        elif hasattr(self,'monNomFichierInput'):
-            monNomFichier=self.monNomFichierInput
-
-
-        monDialog=QFileDialog(self.appliEficas)
-        monDialog.setDirectory (path)
-        monDialog.setWindowTitle ("Save")
-
-        for c in monDialog.children():
-            if isinstance(c,QDialogButtonBox):
-               for b in c.children():
-                  if isinstance(b,QPushButton):
-                     avant=b.text()
-                     if avant=="&Open": b.setText("Save")
-        mesFiltres= "input Map (*.input);;All Files (*)"
-        monDialog.setNameFilters(mesFiltres)
-        if monNomFichier!="" : monDialog.selectFile(monNomFichier)
-        BOk=monDialog.exec_()
-        if BOk==0: return
-        fn=str(monDialog.selectedFiles()[0])
-        if fn == "" or fn == None : return
-        if not fn.endswith(".input"):
-            fn += ".input"
-        self.monNomFichierInput=fn
-
-        if not hasattr(self, 'fichierMapInput') or not self.fichierMapInput or not os.path.exists(self.fichierMapInput):
-            self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
-            texte=self.getTextJDC("MAP")
-            self.writeFile( self.fichierMapInput, txt = texte)
-
-        cmd = ("map gen -t dat -n " + composant + " -i " + self.fichierMapInput + " -o " + fn)
-        p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
-        (output, err) = p.communicate()
-
-
-    #-----------------#
-    def saveRunPSEN(self):
-    #-----------------#
-        print( "saveRunPSEN")
-        self.saveFile()
-        return
-
-
-    #-----------------------------------------#
-    def chercheGroupes(self):
-    #-----------------------------------------#
-        listeMA,listeNO=self.getTextJDC("GroupMA")
-        return listeMA,listeNO
-
-    #-----------------------------------------#
-    def chercheDico(self):
-    #-----------------------------------------#
-        dicoCourant={}
-        format =  self.appliEficas.format_fichier
-        if format in generator.plugins:
-           # Le generateur existe on l'utilise
-           self.generator=generator.plugins[format]()
-           jdc_formate=self.generator.gener(self.jdc,format='beautifie',config=self.appliEficas.CONFIGURATION)
-           dicoCourant=self.generator.dico
-        return dicoCourant
-
-         
-
-    #-----------------------------------------#
-    def handleAjoutGroup(self,listeGroup):
-    #-----------------------------------------#
-        try :
-        #if 1:
-           from ajoutGroupe import handleAjoutGroupFiltre
-           #print listeGroup
-           handleAjoutGroupFiltre(self,listeGroup)
-           #print "apres handleAjoutGroupFiltre"
-        except :
-        #else :
-           pass
-
-    #-----------------------------------------------------------------#
-    def saveFileLegerAs(self, fileName = None) :
-    #-----------------------------------------------------------------#
-        if fileName != None :
-           self.fichier = fileName
-           return self.saveFileLeger()
-        return self.saveFileLeger()
-
-    #-----------------------------------------------------------------#
-    def saveFileLeger(self, path = None, saveas= 0,formatLigne="beautifie"):
-    #-----------------------------------------------------------------#
-        extension='.casR'
-        fn = self.fichier
-        #saveas=True # Pour forcer le nom
-        self.generator=generator.plugins[self.format]()
-        if self.fichier is None or saveas:
-          if path is None: path=self.CONFIGURATION.savedir
-          bOK, fn=self.determineNomFichier(path,extension)
-          if bOK == 0 : return (0, None)
-          if fn == None : return (0, None)
-          if fn== '' : return (0, None)
-
-          ulfile = os.path.abspath(six.text_type(fn))
-          self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
-          fn = six.text_type(QDir.toNativeSeparators(fn))
-
-        self.fichier = os.path.splitext(fn)[0]+extension
-
-        if hasattr(self.generator, "writeLeger"):
-            self.generator.writeLeger(self.fichier,self.jdc,config=self.appliEficas.CONFIGURATION,appli=self.appliEficas)
-
-        if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
-
-        self.modified = 0
-        nouveauTitre=self.titre+"              "+str(os.path.basename(self.fichier))
-        self.appliEficas.setWindowTitle(nouveauTitre)
-        return (1, self.fichier)
-
-    #-----------------------------------------------------------------#
-    def saveFile(self, path = None, saveas= 0,formatLigne="beautifie"):
-    #-----------------------------------------------------------------#
-        """
-        Public slot to save the text to a file.
-
-        @param path directory to save the file in (string or QString)
-        @return tuple of two values (boolean, string) giving a success indicator and
-            the name of the saved file
-        """
-
-        self.modified=1
-        if not self.modified and not saveas:
-            return (0, None)      # do nothing if text wasn't changed
-
-        if self.appli.code in DictExtensions :
-           extension=DictExtensions[self.appli.code]
-        else :
-           extension='.comm'
-
-        newName = None
-        fn = self.fichier
-        if self.fichier is None or saveas:
-          if path is None: path=self.CONFIGURATION.savedir
-          bOK, fn=self.determineNomFichier(path,extension)
-          if bOK == 0 : return (0, None)
-          if fn == None : return (0, None)
-          if fn== '' : return (0, None)
-
-          ulfile = os.path.abspath(six.text_type(fn))
-          self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
-          fn = six.text_type(QDir.toNativeSeparators(fn))
-          newName = fn
-
-
-        if not (self.writeFile(fn,formatLigne=formatLigne)): return (0, None)
-        self.fichier = fn
-        self.modified  = False
-        if self.fileInfo is None or saveas:
-           self.fileInfo = QFileInfo(self.fichier)
-           self.fileInfo.setCaching(0)
-        self.lastModified = self.fileInfo.lastModified()
-        if newName is not None:
-           self.appliEficas.addToRecentList(newName)
-           self.tree.racine.item.getObject().nom=os.path.basename(newName)
-           self.tree.racine.updateNodeLabel()
-
-        if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
-            self.generator.writeDefault(fn)
-        elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
-            self.generator.writeDefault(fn)
-
-        if self.salome :
-               self.appliEficas.addJdcInSalome( self.fichier)
-        self.modified = 0
-        nouveauTitre=self.titre+"              "+str(os.path.basename(self.fichier))
-        self.appliEficas.setWindowTitle(nouveauTitre)
-
-        return (1, self.fichier)
-#
-
-    #----------------------------------------------#
-    def sauveLigneFile(self):
-    #----------------------------------------------#
-        self.modified=1
-        return self.saveFile(formatLigne="Ligne")
-
-
-    #----------------------------------------------#
-    def saveFileAs(self, path = None,fileName=None):
-    #----------------------------------------------#
-        """
-        Public slot to save a file with a new name.
-
-        @param path directory to save the file in (string or QString)
-        @return tuple of two values (boolean, string) giving a success indicator and
-            the name of the saved file
-        """
-        if fileName != None :
-           self.fichier = fileName
-           return self.saveFile()
-        return self.saveFile(path,1,"beautifie")
-
-
-
-    #---------------------------------------------#
-    def getFile(self,unite=None,fic_origine = ''):
-    #---------------------------------------------#
-    # appele par I_JDC
-        ulfile  = None
-        jdcText = ""
-
-        titre  = ""
-
-        if unite :
-            titre = tr("Choix unite %d ", unite)
-            texte = tr("Le fichier %s contient une commande INCLUDE \n",  str(fic_origine)) +"\n"
-            texte = texte+ tr("Donnez le nom du fichier correspondant a l unite logique ") + repr(unite)
-            labeltexte = tr('Fichier pour unite ') + repr( unite)
-        else:
-            titre = tr("Choix d'un fichier de poursuite")
-            texte = tr("Le fichier %s contient une commande POURSUITE\n", fic_origine)
-            texte = texte+tr('Donnez le nom du fichier dont vous \n voulez faire une poursuite')
-
-        QMessageBox.information( self, titre,texte)
-        fn = QFileDialog.getOpenFileName(self.appliEficas,
-                   titre,
-                   self.appliEficas.CONFIGURATION.savedir)
-
-        # ce retour est impose par le getFile d'I_JDC
-        if fn== '' : return None," "
-        if not fn : return (0, " ")
-        fn=fn[0]
-
-        ulfile = os.path.abspath(six.text_type(fn))
-        self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
-
-        # On utilise le convertisseur defini par format_fichier
-        source=self.get_source(ulfile)
-        if source:
-            # On a reussia convertir le fichier self.ulfile
-            jdcText = source
-        else:
-            # Une erreur a ete rencontree
-            jdcText = ''
-        return ulfile, jdcText
-
-    #-----------------------------------#
-    def updateJdc(self, itemApres,texte):
-    #------------------------------------#
-    # ajoute une etape  de JdC a partir d un texte
-        monItem=itemApres
-        etape=monItem.item.object
-        CONTEXT.set_current_step(etape)
-        etape.build_includeInclude(texte)
-        self.tree.racine.buildChildren()
-
-    #-----------------------------------#
-    def updateJdcEtape(self, itemApres,texte):
-    #------------------------------------#
-    # ajoute une etape  de JdC a partir d un texte
-        monItem=itemApres
-        etape=monItem.item.object
-        CONTEXT.set_current_step(etape)
-        try :
-          ok=etape.build_includeEtape(texte)
-        except :
-          ok=0
-        if not ok :
-           QMessageBox.information( self,
-                      tr("Import texte"),
-                      tr("Impossible d importer le texte"))
-        self.tree.racine.buildChildren()
-        return ok
-
-
-
-
-
-
-    #----------------------------------------------#
-    def ajoutMCFact(self,etape,MCFils,listeAvant=()):
-    #----------------------------------------------#
-    # dans le JDC
-        print ('ajoutMCFact')
-        ouChercher=etape
-        print (ouChercher)
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-              print (mot)
-              print (ouChercher)
-        monMC=etape.get_child(ouChercher,restreint="oui")
-        if monMC== None : monMC= ouChercher.addentite(MCFils)
-        monMC.isvalid()
-
-    #-------------------------------------#
-    def getValeur(self,nomEtape,MCFils,listeAvant=()):
-    #-------------------------------------#
-    # dans le JDC
-
-        ouChercher=None
-        for e in self.jdc.etapes:
-            if e.nom == nomEtape : ouChercher=e; break
-        if ouChercher==None : return None
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-              #print (mot, ouChercher)
-              if ouChercher==None : return None
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        if monMC== None : return None
-        return monMC.valeur
-
-    #-----------------------------------------------------------#
-    def setValeur(self,nomEtape,MCFils,valeur,listeAvant=()):
-    #--------------------------------------------------------#
-    # dans le JDC
-
-        ouChercher=None
-        for e in self.jdc.etapes:
-            if e.nom == nomEtape : ouChercher=e; break
-        if ouChercher==None : return None
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-              #print (mot, ouChercher)
-              if ouChercher==None : return None
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        monMC.setValeur(valeur)
-        monMC.isvalid()
-
-    #-------------------------------------#
-    def deleteEtape(self,etape):
-    #-------------------------------------#
-        self.jdc.suppentite(etape)
-
-    #-------------------------------------#
-    def deleteMC(self,etape,MCFils,listeAvant=()):
-    #-------------------------------------#
-        ouChercher=etape
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        if monMC != None :  ouChercher.suppentite(monMC)
-        ouChercher.state='changed'
-        ouChercher.isvalid()
-        
-    #-------------------------------------#
-    def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
-    #-------------------------------------#
-        print('debut ajoutMC')
-        ouChercher=etape
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-        monMC=etape.get_child(ouChercher,restreint="oui")
-        print( monMC)
-        if monMC== None : monMC= ouChercher.addentite(MCFils)
-        monMC.valeur=valeurs
-        monMC.val=valeurs
-        monMC.state='changed'
-        monMC.isvalid()
-        print(monMC)
-        
-        
-    #-----------------------------------------------------------#
-    def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
-    #-----------------------------------------------------------#
-        ouChercher=etape
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-        if ouChercher ==None : print( 'SOUCI'); return
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        if monMC== None : monMC= ouChercher.addentite(MCFils)
-        monMC.definition.into=valeurs
-        monMC.state='changed'
-        monMC.isvalid()
-
-    #-------------------------------------#
-    def changeIntoDefMC(self,etape,listeMC,valeurs):
-    #-------------------------------------#
-        definitionEtape=getattr(self.jdc.cata[0],etape)
-        ouChercher=definitionEtape
-        if len(listeMC) > 1 :
-           for mc in listeMC[0:-1]:
-             mcfact=ouChercher.entites[mc]
-             ouChercher=mcfact
-           
-        mcAccas=ouChercher.entites[listeMC[-1]]
-        mcAccas.into=valeurs
-
-    #-------------------------------------------------------------#
-    def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
-    #-------------------------------------------------------------#
-        #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
-        definitionEtape=getattr(self.jdc.cata[0],etape)
-        ouChercher=definitionEtape
-        for k in listeAvant : 
-            ouChercher=ouChercher.entites[k]
-        MCADetruire=ouChercher.entites[nomDuMC]
-        ouChercher.ordre_mc.remove(nomDuMC)
-        del ouChercher.entites[nomDuMC]
-        del self.dicoNouveauxMC[nomDuMC]
-
-
-    #-------------------------------------------------------------#
-    def ajoutDefinitionMC(self,etape,listeAvant,nomDuMC,typ,**args):
-    #-------------------------------------------------------------#
-        print('debut ajoutDefinitionMC')
-        definitionEtape=getattr(self.jdc.cata[0],etape)
-        ouChercher=definitionEtape
-        for k in listeAvant : 
-            ouChercher=ouChercher.entites[k]
-        from Accas import A_SIMP
-        Nouveau=A_SIMP.SIMP(typ,**args)
-        Nouveau.pere=ouChercher
-        Nouveau.nom=nomDuMC
-        Nouveau.ordre_mc=[]
-        ouChercher.entites[nomDuMC]=Nouveau
-        ouChercher.ordre_mc.append(nomDuMC)
-        self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',etape,listeAvant,nomDuMC,typ,args)
-        print( self.dicoNouveauxMC)
-        print('fin ajoutDefinitionMC')
-
-    #----------------------------------------------------#
-    def changeIntoMCandSet(self,etape,MCFils,into,valeurs):
-    #----------------------------------------------------#
-        monMC=etape.get_child(MCFils,restreint="oui")
-        if monMC== None : monMC= etape.addentite(MCFils)
-        monMC.definition.into=into
-        monMC.valeur=valeurs
-        monMC.val=valeurs
-        monMC.state='changed'
-        monMC.isvalid() 
-        
-        
-        
-        
-    #-------------------------------------------------------------------#
-    def reCalculeValiditeMCApresChgtInto(self,nomEtape,MCFils,listeAvant=()):
-    #-------------------------------------------------------------------#
-    # dans le JDC
-        for e in self.jdc.etapes:
-            if e.nom == nomEtape : ouChercher=e; break
-        
-        for mot in listeAvant :
-            try :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-            # Le mot clef n est pas la
-            except : return 0
-        try :
-           monMC=ouChercher.get_child(MCFils,restreint="oui")
-        # Le mot clef n est pas la
-        except : return 0
-        if monMC == None : return 0
-
-        if hasattr(monMC.definition,'into') :
-           if type(monMC.definition.into) ==types.FunctionType : maListeDeValeur=monMC.definition.into()
-           else : maListeDeValeur=monMC.definition.into
-        else :
-           return 0
-        
-        monMC.state='changed'
-        return 1
-
-    #-------------------------------------#
-    def changeDefautDefMC(self,nomEtape,listeMC,valeurs):
-    #-------------------------------------#
-    # dans le MDD
-
-        #if isinstance (etape, str):
-        #  for e in self.jdc.etapes:
-        #    if e.nom == etape : etape=e; break
-        #if etape == None : return
-        definitionEtape=getattr(self.jdc.cata[0],nomEtape)
-        ouChercher=definitionEtape
-        if len(listeMC) > 1 :
-
-           for mc in listeMC[0:-1]:
-             mcfact=ouChercher.entites[mc]
-             ouChercher=mcfact
-           
-        mcAccas=ouChercher.entites[listeMC[-1]]
-        mcAccas.defaut=valeurs
-        return 1
-        
-        
-
-
-    #---------------------------------------------------------------------#
-    def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
-    #---------------------------------------------------------------------#
-    # dans le MDD
-        print ('ajoutDefinitionMCFact', nomDuMC)
-        definitionEtape=getattr(self.jdc.cata[0],nomEtape)
-        ouChercher=definitionEtape
-        for k in listeAvant : 
-            ouChercher=ouChercher.entites[k]
-        from Accas import A_SIMP
-        for mc in listeMC :
-            nomMC=mc[0]
-            typMC=mc[1]
-            argsMC=mc[2]
-            nouveauMC=A_SIMP.SIMP(typMC,**argsMC)
-            nouveauMC.nom=nomMC
-            args[nomMC]=nouveauMC
-        from Accas import A_FACT
-        nouveauFact=A_FACT.FACT(**args)
-        nouveauFact.pere=ouChercher
-        nouveauFact.nom=nomDuMC
-        from Editeur.autre_analyse_cata import traite_entite
-        traite_entite(nouveauFact,[])
-        ouChercher.entites[nomDuMC]=nouveauFact
-        ouChercher.ordre_mc.append(nomDuMC)
-        self.dicoNouveauxFact[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,listeMC,args)
-        #print self.dicoNouveauxMC
-
-
-
-    #-------------------------------------#
-    def ajoutVersionCataDsJDC(self,txt):
-    #-------------------------------------#
-        if not hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): return txt
-        ligneVersion="#VERSION_CATALOGUE:"+self.readercata.cata[0].VERSION_CATALOGUE+":FIN VERSION_CATALOGUE\n"
-        texte=txt+ligneVersion
-        return texte
-
-    #-------------------------------------#
-    def verifieVersionCataDuJDC(self,text):
-    #-------------------------------------#
-        memeVersion=False
-        indexDeb=text.find("#VERSION_CATALOGUE:")
-        indexFin=text.find(":FIN VERSION_CATALOGUE")
-        if indexDeb < 0 :
-           self.versionCataDuJDC="sans"
-           textJDC=text
-        else :
-           self.versionCataDuJDC=text[indexDeb+19:indexFin]
-           textJDC=text[0:indexDeb]+text[indexFin+23:-1]
-
-        self.versionCata="sans"
-        if hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): self.versionCata=self.readercata.cata[0].VERSION_CATALOGUE
-
-        if self.versionCata==self.versionCataDuJDC : memeVersion=True
-        return memeVersion,textJDC
-
-    #-------------------------------#
-    def traduitCatalogue(self,texte):
-    #-------------------------------#
-        nomTraducteur="traduit"+self.readercata.code+self.versionCataDuJDC+"To"+self.versionCata
-        sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"../Traducteur")))
-        try :
-            traducteur=__import__(nomTraducteur)
-            monTraducteur=traducteur.MonTraducteur(texte)
-            nouveauTexte=monTraducteur.traduit()
-            return nouveauTexte
-        except :
-            return texte
-
-
-    #------------------------------#
-    def verifieCHECKSUM(self,text):
-    #------------------------------#
-        indexDeb=text.find("#CHECKSUM:")
-        if indexDeb < 0 :
-           return 1, text
-        indexFin=text.find(":FIN CHECKSUM")
-        checkAvant=text[indexDeb:indexFin+13]
-        textJDC=text[0:indexDeb]+text[indexFin+13:-1]
-        checksum=self.getChecksum(textJDC)
-        pareil=(checkAvant==checksum)
-        return pareil, textJDC
-
-    #---------------------------#
-    def getChecksum(self,texte):
-    #---------------------------#
-        newtexte=texte.replace('"','\\"')
-        commande='echo "'+newtexte+'"|md5sum'
-        a=os.popen(commande)
-        checksum=a.read()
-        a.close()
-        ligne="#CHECKSUM:"+checksum[0:-1]+":FIN CHECKSUM"
-        return ligne
-
-
-    #---------------------------#
-    def _new_CF(self):
-    #---------------------------#
-        texte="CONDUITE_FORCEE();"
-        return texte
-
-
-    #---------------------------#
-    def _newTELEMAC(self):
-    #---------------------------#
-        #texte="INITIALIZATION();BOUNDARY_CONDITIONS();GENERAL_PARAMETERS();PHYSICAL_PARAMETERS();NUMERICAL_PARAMETERS();"
-        texte="COMPUTATION_ENVIRONMENT();HYDRO();GENERAL_PARAMETERS();NUMERICAL_PARAMETERS()"
-        #texte="TRACERS();"
-        return texte
-
-    #---------------------------#
-    def _newPSEN(self):
-    #---------------------------#
-        if 'PF_PARAMETERS' in self.Ordre_Des_Commandes:
-            texte = "DIRECTORY() ;PF_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
-        else:
-            texte = "DIRECTORY() ; PSSE_PARAMETERS() ; SIMULATION() ; sansnom=DISTRIBUTION() ; sansnom=DISTRIBUTION() ; CORRELATION() ;"
-            # texte=""
-        return texte
-
-    #---------------------------#
-    def _newPSEN_N1(self):
-    #---------------------------#
-        texte="CASE_SELECTION();N_PROCESSING_OPTIONS();CONTINGENCY_OPTIONS();CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
-        #texte="CONTINGENCY_SELECTION();\nCONTINGENCY_PROCESSING(); "
-        return texte
-
-    #---------------------------#
-
-    #---------------------------#
-    def _newZCRACKS(self):
-    #---------------------------#
-        texte="MAILLAGES();REMESHING();"
-        return texte
-
-    #---------------------------#
-    def _newJDCCND(self):
-    #---------------------------#
-      extensions=tr('Fichiers Med (*.med);;''Tous les Fichiers (*)')
-      
-      #if self.salome == 0 :
-      QMessageBox.information( self,
-                      tr("Fichier Med"),
-                      tr("Veuillez selectionner un fichier Med"))
-      QSfichier = QFileDialog.getOpenFileName(self.appliEficas,
-                        caption='Fichier Med',
-                        filter=extensions)
-      QSfichier=QSfichier[0]
-      self.fichierMED=QSfichier
-      from acquiertGroupes import getGroupes
-      erreur,self.listeGroupes,self.nomMaillage,self.dicoCoord=getGroupes(self.fichierMED)
-      if erreur != "" : print ("a traiter")
-      texteComm="COMMENTAIRE(u'Cree - fichier : "+self.fichierMED +" - Nom Maillage : "+self.nomMaillage+"');\nPARAMETRES()\n"
-      texteSources=""
-      texteCond=""
-      texteNoCond=""
-      texteVcut=""
-      texteZs=""
-      for groupe in self.listeGroupes :
-          if groupe[0:8]=='CURRENT_': 
-             texteSources +=groupe[8:]+"=SOURCE("
-             texteSources +="VecteurDirecteur=(1.0,2.0,3.0,),);\n"
-          if groupe[0:5]=='COND_':    texteCond    +=groupe[5:]+"=CONDUCTEUR();\n"
-          if groupe[0:7]=='NOCOND_':  texteNoCond  +=groupe[7:]+"=NOCOND();\n"
-          if groupe[0:5]=='VCUT_':    texteVcut    +='V_'+groupe[5:]+"=VCUT();\n"
-          if groupe[0:3]=='ZS_':      texteZs      +=groupe[3:]+"=ZS();\n"
-      texte=texteComm+texteSources+texteCond+texteNoCond+texteVcut+texteZs
-      self.newTexteCND=texte
-      self.modified=1
-      return texte
-
-
-    #---------------------------#
-    def  BoutonFileSelected(self):
-    #---------------------------#
-
-      QSfichier=self.openfile.selectedFiles()[0]
-      self.fichierMED=str(QSfichier)
-      from acquiertGroupes import getGroupes
-      erreur,self.listeGroupes,self.nomMaillage=getGroupes(self.fichierMED)
-      if erreur != "" : print ("a traiter")
-
-    #-----------------------------
-    def BoutonSalomePressed(self):
-    #----------------------------
-      Msg,self.listeGroupes=self.appliEficas.ChercheGrpMailleInSalome()
-      self.fichierMED="A_partir_de_SMESH"
-      self.nomMaillage="A_partir_de_SMESH"
-      self.openfile.close()
-
-
-    #-----------------------------------------
-    def initSplitterSizes(self, nbWidget=3):
-    #-----------------------------------------
-       #print ("je passe ds initSplitterSizes", nbWidget)
-
-       if   self.code in [ 'Adao', 'ADAO', ] : self.splitterSizes3=[1,1550,150]
-       elif self.code in [ 'MAP']            : self.splitterSizes3=[700,300]
-       else                                  : self.splitterSizes3=[150,1000,300]
-
-       if   self.code in [ 'Adao', 'ADAO', ] : self.splitterSizes2=[5,1500]
-       else                                  : self.splitterSizes2=[300,1000]
-
-
-
-    #-----------------------------------------
-    def restoreSplitterSizes(self,nbWidget=3):
-    #----------------------------------------
-      
-      #traceback.print_stack()
-      #print ("je passe ds restoreSplitterSizes")
-      if not(hasattr(self,'splitter')) : return
-      if nbWidget==2  : newSizes=self.splitterSizes2
-      if nbWidget==3  : newSizes=self.splitterSizes3
-      #self.inhibeSplitter = 1
-      self.splitter.setSizes(newSizes)
-      #self.inhibeSplitter = 0
-      QApplication.processEvents()
-      # seule la fentetre du milieu est necessaire
-      self.splitter.widget(1).resizeEvent=self.saveSplitterSizes
-   
-    #-----------------------------------------
-    def saveSplitterSizes(self,event):
-    #-----------------------------------------
-      #print ("je passe ds saveSplitterSizes")
-      if self.inhibeSplitter : return
-      if self.widgetOptionnel == None  : self.splitterSizes2 = self.splitter.sizes()[0:2]
-      else                             : self.splitterSizes3 = self.splitter.sizes()[0:3]
-
-    #------------------------
-    def fermeOptionnel(self):
-    #------------------------
-      if self.widgetOptionnel == None : return
-
-      self.inhibeSplitter=1
-      self.widgetOptionnel.setParent(None)
-      self.widgetOptionnel.close()
-      self.widgetOptionnel.deleteLater()
-      self.widgetOptionnel=None
-      self.inhibeSplitter=0
-      self.restoreSplitterSizes(2)
-
-    #------------------------
-    def ajoutOptionnel(self):
-    #------------------------
-      #if len(self.splitterSizes) == 2 : self.splitterSizes.append(self.oldSizeWidgetOptionnel)
-      #else : self.splitterSizes[2] = self.oldSizeWidgetOptionnel # ceinture pour les close bizarres
-      #self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2]
-      
-      self.restoreSplitterSizes(3)
-
-
-    #------------------------
-    def fermeArbre(self):
-    #------------------------
-       #print (self.widgetTree)
-       self.oldWidgetTree=self.widgetTree
-       self.widgetTree.hide()
-       #self.widgetTree=None
-
-    #------------------------
-    def ouvreArbre(self):
-    #------------------------
-       #print ('je passe la')
-       #print (self.widgetTree)
-       #self.widgetTree=self.oldWidgetTree
-       self.widgetTree.show()
-       #self.restoreSplitterSizes(3)
-
-    #-----------------------------
-    def getTreeIndex(self,noeud):
-    #----------------------------
-      indexNoeud=-1
-      if noeud in noeud.treeParent.children :
-          indexNoeud=noeud.treeParent.children.index(noeud)
-      else :
-          if hasattr(noeud,'vraiParent') :
-              noeudVrai = noeud
-              noeudVraiParent = noeud.vraiParent
-              while noeudVraiParent != noeud.treeParent and hasattr(noeudVraiParent,'vraiParent') :
-                  noeudVrai = noeudVraiParent
-                  noeudVraiParent = noeudVraiParent.vraiParent
-                  pass
-              if noeudVraiParent == noeud.treeParent :
-                  indexNoeud=noeud.treeParent.children.index(noeudVrai)
-                  pass
-              pass
-          pass
-      return indexNoeud
-
-if __name__ == "__main__":
-    self.code='ASTER'
-    name='prefs_'+prefs.code
-    prefsCode=__import__(name)
-
-
-    if hasattr(prefsCode,'encoding'):
-       # Hack pour changer le codage par defaut des strings
-       import sys
-       reload(sys)
-       sys.setdefaultencoding(prefs.encoding)
-       del sys.setdefaultencoding
-       # Fin hack
-
-#    code=options.code
-#
-    app = QApplication(sys.argv)
-    mw = JDCEditor(None,'azAster.comm')
-    app.setMainWidget(mw)
-    app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
-    mw.show()
-
-    res = app.exec_loop()
-    sys.exit(res)
index ff65676db1da5aecbe4752b50ae814fb6be87cb2..878cfc849ae86331608ca0e1efb65950bb0f5ad4 100755 (executable)
@@ -65,7 +65,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
 # Methodes faisant appel a ssIhm
 # ----------------------------------------
 
-    def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+    def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, units = None, include=0):
     #------------------------------------------------------------------------------------------
 
 
@@ -77,11 +77,11 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
         self.fenetreCentraleAffichee=None
         self.dejaDansPlieTout=False
         self.listeDesListesOuvertes=set()
-        if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+        if appliEficas!=None and hasattr(appliEficas,"statusBar"): self.sb = appliEficas.statusBar()
         else : self.sb = None
         self.QWParent=QWParent
 
-        JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
+        JDCEditorSsIhm. __init__ (self,appliEficas,fichier, jdc,units,include)
         if self.jdc:
              comploader.chargerComposants()
              self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
@@ -551,7 +551,6 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     def run(self):
     #------------#
       fonction="run"+self.code
-      #print fonction
       if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
 
     #------------#
@@ -564,6 +563,11 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
 # ---------------------------------------------
 # Methodes Non Crees dans ssIHM 
 # ---------------------------------------------
+    #---------------#
+    def runVP(self):
+    #---------------#
+      texte=self.getTextJDC("MAPVp",pourRun=1)
+      print (texte)
 
     #---------------#
     def runMAP(self):
@@ -660,13 +664,13 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
     #-----------------------------------------------------#
     def determineNomFichier(self,path,extension):
     #-----------------------------------------------------#
-      if self.appli.code in DictExtensions:
-         chaine1=DictExtensions[self.appli.code]+" (*."+DictExtensions[self.appli.code]+");;"
+      if self.appliEficas.code in DictExtensions:
+         chaine1=DictExtensions[self.appliEficas.code]+" (*."+DictExtensions[self.appliEficas.code]+");;"
          extensions= tr(chaine1+ "All Files (*)")
       else :
          extensions= tr("JDC (*.comm);;" "All Files (*)")
 
-      if self.appli.code == "MAP" :
+      if self.appliEficas.code == "MAP" :
          extensions = extensions + ";; Run (*.input);;"
 
       fn = QFileDialog.getSaveFileName( self,
@@ -792,7 +796,7 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
         self.fichierComplet = os.path.splitext(fn)[0]+extension
 
         if hasattr(self.generator, "writeComplet"):
-            self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+            self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
 
         if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
 
@@ -816,8 +820,8 @@ class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
         if not self.modified and not saveas:
             return (0, None)      # do nothing if text wasn't changed
 
-        if self.appli.code in DictExtensions :
-           extension=DictExtensions[self.appli.code]
+        if self.appliEficas.code in DictExtensions :
+           extension=DictExtensions[self.appliEficas.code]
         else :
            extension='.comm'
 
index 7a2d4be485e65165f1604f4676fafb2a85160dc4..3ff669d8f90d2611e3b1c4a20d5c3864cc0d819b 100755 (executable)
@@ -53,13 +53,12 @@ class JDCEditorSsIhm :
 # Methodes Communes ou appelees depuis avec Ihm
 # ---------------------------------------------
 
-    def __init__ (self,appli,fichier = None, jdc = None,  units = None, include=0 ):
+    def __init__ (self,appliEficas,fichier = None, jdc = None,  units = None, include=0 ):
     #------------------------------------------------------------------------------#
     # paticularisee avec Ihm
 
         if debug : print ('dans le init de JDCEditorSsIhm')
-        self.appliEficas = appli
-        self.appli       = appli
+        self.appliEficas = appliEficas
         self.fichier     = fichier
         self.fichierComplet  = fichier
         self.jdc         = jdc
@@ -70,7 +69,7 @@ class JDCEditorSsIhm :
         self.dict_reels       = {}
         self.liste_simp_reel  = []
 
-        if appli != None : self.salome =  self.appliEficas.salome
+        if self.appliEficas != None : self.salome =  self.appliEficas.salome
         else             : self.salome =  0
 
         # ces attributs sont mis a jour par definitCode appelee par newEditor
@@ -162,9 +161,8 @@ class JDCEditorSsIhm :
                 self.nouveau=1
 
         if self.jdc:
-            self.jdc.appli = self # a resorber
             self.jdc.editor = self
-            self.jdc.lang    = self.appli.langue
+            self.jdc.lang    = self.appliEficas.langue
             self.jdc.aReafficher=False
             txt_exception  = None
             if not jdc:
@@ -223,7 +221,7 @@ class JDCEditorSsIhm :
 
         #jdc=self.readercata.cata[0].JdC(procedure=text,
         jdc=self.readercata.cata.JdC(procedure=text,
-                                    appli=self,
+                                    appliEficas=self,
                                     cata=self.readercata.cata,
                                     cata_ord_dico=self.readercata.cata_ordonne_dico,
                                     nom=jdcName,
@@ -255,13 +253,13 @@ class JDCEditorSsIhm :
         #jdc=self.readercata.cata[0].JdC( procedure =texte,
         #print (self.readercata.cata)
         jdc=self.readercata.cata.JdC( procedure =texte,
-                                         appli=self,
+                                         appliEficas=self,
                                          cata=self.readercata.cata,
                                          cata_ord_dico=self.readercata.cata_ordonne_dico,
                                          rep_mat=self.maConfiguration.rep_mat
                                         )
 
-        jdc.lang    = self.appli.langue
+        jdc.lang    = self.appliEficas.langue
         if units is not None:
            jdc.recorded_units=units
            jdc.old_recorded_units=units
@@ -286,7 +284,7 @@ class JDCEditorSsIhm :
 
         #jaux=self.readercata.cata[0].JdC( procedure="",
         jaux=self.readercata.cata.JdC( procedure="",
-                               appli=self,
+                               appliEficas=self,
                                cata=self.readercata.cata,
                                cata_ord_dico=self.readercata.cata_ordonne_dico,
                                rep_mat=self.maConfiguration.rep_mat,
@@ -295,7 +293,7 @@ class JDCEditorSsIhm :
         jaux.analyse()
 
         J=JdC_aux( procedure="",
-                   appli=self,
+                   appliEficas=self,
                    cata=self.readercata.cata,
                    cata_ord_dico=self.readercata.cata_ordonne_dico,
                    jdc_pere=jaux,
@@ -445,7 +443,7 @@ class JDCEditorSsIhm :
          # Le generateur existe on l'utilise
          self.generator=generator.plugins[format]()
          try :
-            jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+            jdc_formate=self.generator.gener(self.jdc,format=formatLigne,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
             if pourRun : jdc_formate=self.generator.textePourRun
             if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
          except ValueError as e:
@@ -536,7 +534,7 @@ class JDCEditorSsIhm :
         self.generator=generator.plugins[self.format]()
         print (self.generator)
         if hasattr(self.generator, "writeComplet"):
-            self.generator.writeComplet(fichier,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
+            self.generator.writeComplet(fichier,self.jdc,config=self.appliEficas.maConfiguration,appliEficas=self.appliEficas)
 
 
 # ---------------------------------------------
index 9a375d6d13a2595eeb879470d2da1d38b7886c28..a9ad4d76f18978e3ea48aa4b6d8c17672480e3fd 100755 (executable)
@@ -107,7 +107,7 @@ def genereXML(code=None,fichier=None,ssCode=None,multi=False,langue='en',debug=T
     monEditeur=JDCEditorSsIhm(monEficasSsIhm,fichier)
     fichierXML=fichier[:fichier.rfind(".")]+'.xml'
     monEditeur.saveFile(fichierXML)
-    print (fichierXML)
+    monEditeur.generator.writeDefault(fichierXML)
 
 
 def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
index 4413124fa31079ef7d96d37a59cc8901115a2484..53baea0f9598af4fbefec71f4be429466f313fff 100644 (file)
@@ -61,12 +61,13 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       self.listeMCAAjouter=[]
       self.dictMCVenantDesBlocs={}
       if hasattr(self,'RBDeplie')  : self.RBDeplie.clicked.connect(self.setDeplie)
-
       if hasattr(self,'RBPlie')    : self.RBPlie.clicked.connect( self.setPlie)
+
       self.setAcceptDrops(True)
-      if hasattr (self, 'commandesLayout'): 
-         spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
-         self.commandesLayout.addItem(spacerItem)
+      #if hasattr (self, 'commandesLayout'): 
+      #   print (' j ajoute un spacer dans ', self.node.item.nom)
+      #   spacerItem = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Expanding)
+      #   self.commandesLayout.addItem(spacerItem)
      
   def donneFocus(self):
       for fenetre in self.listeFocus:
@@ -82,7 +83,6 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       for node in self.node.children:
            # non return mais  continue car il faut tenir compte des blocs
            if node.appartientAUnNoeudPlie==True : continue
-           #print ("je suis apres le if pour ",node.item.nom)
            widget=node.getPanelGroupe(self,self.maCommande)
            #print ("widget pour ", node.item.nom, widget)
            self.listeFocus.append(node.fenetre)
@@ -114,19 +114,8 @@ class Groupe(QWidget,FacultatifOuOptionnel):
   def afficheOptionnel(self):
         if self.editor.maConfiguration.closeOptionnel : return
         liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
-        listeSsLesPlus = []
-        # ------
-        genea =self.obj.getGenealogie()
-        listeMcPossible = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico)
-        listeMcPresents = self.obj.listeMcPresents()
-        for MC in liste :
-            if MC not in listeMcPresents   : listeSsLesPlus.append(MC)
-        
-        #print (liste,liste_rouge,listeSsLesPlus,self)
         self.monOptionnel=self.editor.widgetOptionnel
-        #self.monOptionnel.afficheOptionnel(listeSsLesPlus,liste_rouge,self)
         self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
-        #self.monOptionnel.affiche(liste)
            
 
   def ajouteMCOptionnelDesBlocs(self):
index 460c14534a48f03b853a06e8b2f0b2555fba163a..f017edf09396dee7a1b6b8b84118dbdaa3e25eb7 100644 (file)
@@ -47,88 +47,75 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
   """
   """
   def __init__(self,node,editor,etape):
+
       self.listeAffichageWidget=[]
       self.inhibe=0
       self.ensure=0
       editor.inhibeSplitter=1
       Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self)
+      spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding)
+      self.verticalLayoutCommande.addItem(spacerItem)
       editor.inhibeSplitter=0
 
-      resize=0
-      if node.item.getFr() != "" : 
-         self.labelDoc.setText(node.item.getFr())
-         resize=1
-      else : self.labelDoc.close()
-      
-      if not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close()
+      # Gestion du nom de L OPER si il est nomme 
+      if   not(hasattr(etape.definition,'sd_prod')) or (etape.definition.sd_prod==None): self.LENom.close()
       elif (hasattr(etape.definition,'sd_prod') and type(etape.definition.sd_prod)== types.FunctionType):self.LENom.close()
       elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: 
-           self.LENom.setText(etape.sdnom)
-           resize=resize*1
+         self.LENom.setText(etape.sdnom)
       else : 
-           self.LENom.setText("")
-           resize=resize*1
-      if resize :
+         self.LENom.setText("")
+      if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
+      self.racine=self.node.tree.racine
+      if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True)
+
+      # Gestion de la doc de l objet
+      if node.item.getFr() != "" : 
+         self.labelDoc.setText(node.item.getFr())
          nouvelleSize=self.frameAffichage.height()+60
          self.frameAffichage.setMinimumHeight(nouvelleSize)
          self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize)
+      else : self.labelDoc.close()
       
-
-
+   
+      # Gestion du nom de l etape
       maPolice= QFont("Times", 10,)
       self.setFont(maPolice)
       self.labelNomCommande.setText(tr(self.obj.nom))
 
-      self.editor.maConfiguration.closeAutreCommande=False
 
+      # Gestion du Frame d affichage des autres commandes
       if self.editor.maConfiguration.closeAutreCommande == True  : self.closeAutreCommande()
       else :
-        try :
-           self.bCatalogue.clicked.connect(self.afficheCatalogue)
-           self.bAvant.clicked.connect(self.afficheAvant)
-           self.bApres.clicked.connect(self.afficheApres)
-        except :
-           pass
+         self.bCatalogue.clicked.connect(self.afficheCatalogue)
+         self.bAvant.clicked.connect(self.afficheAvant)
+         self.bApres.clicked.connect(self.afficheApres)
        
-      if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
-   
       if self.editor.maConfiguration.closeFrameRechercheCommande==True  : 
          self.frameAffichage.close()
          self.closeAutreCommande()
 
-      if self.editor.code in ['CARMELCND',] : self.closeAutreCommande()
-      self.racine=self.node.tree.racine
-      if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True)
 
       self.setAcceptDrops(True)
       self.etablitOrdre()
 
-      if self.editor.code == "CARMELCND" : 
-         self.RBPoubelle.close() # JDC Fige
-         return                  # Pas de MC Optionnels pour Carmel
-
       if self.editor.maConfiguration.enleverPoubellePourCommande  : 
          self.RBPoubelle.close() # JDC Fige
+
+      if self.editor.maConfiguration.pasDeMCOptionnels  : 
          return                  # Pas de MC Optionnels pour Carmel
 
       from .monWidgetOptionnel import MonWidgetOptionnel
       if self.editor.widgetOptionnel!= None : 
-        self.monOptionnel=self.editor.widgetOptionnel
+         self.monOptionnel=self.editor.widgetOptionnel
       else :
-        self.editor.inhibeSplitter=1
-        self.monOptionnel=MonWidgetOptionnel(self.editor)
-        self.editor.widgetOptionnel=self.monOptionnel
-        self.editor.splitter.addWidget(self.monOptionnel)
-        self.editor.ajoutOptionnel()
-        self.editor.inhibeSplitter=0
-        self.monOptionnel=self.editor.widgetOptionnel
-      self.afficheOptionnel()
-      spacerItem = QSpacerItem(21, 500, QSizePolicy.Expanding, QSizePolicy.Expanding)
-      #spacerItem = QSpacerItem(21, 20, QSizePolicy.Preferred, QSizePolicy.Preferred)
-      #self.commandesLayout.addItem(spacerItem)
-      self.verticalLayoutCommande.addItem(spacerItem)
-
-      #self.editor.restoreSplitterSizes()
+         self.editor.inhibeSplitter=1
+         self.monOptionnel=MonWidgetOptionnel(self.editor)
+         self.editor.widgetOptionnel=self.monOptionnel
+         self.editor.splitter.addWidget(self.monOptionnel)
+         self.editor.ajoutOptionnel()
+         self.editor.inhibeSplitter=0
+         self.monOptionnel=self.editor.widgetOptionnel
+         self.afficheOptionnel()
 
       #print "fin init de widget Commande"
       
@@ -151,12 +138,12 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       # on s assure que ce n est pas un chgt de fenetre
       #print "je passe dans focusNextPrevChild"
       if self.editor.fenetreCentraleAffichee != self : return True
-      f=self.focusWidget()
+      f = self.focusWidget()
       if f not in self.listeAffichageWidget :
          i=0
          while not hasattr (f,'AAfficher') :
            if f==None :i=-1; break
-           f=f.parentWidget()
+           f = f.parentWidget()
          if hasattr(f,'AAfficher') : f=f.AAfficher
          if i != -1 : i=self.listeAffichageWidget.index(f)
       else :i=self.listeAffichageWidget.index(f) 
@@ -201,10 +188,6 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
          i=i+1
       # si on boucle on perd l'ordre
  
-  def  afficheNieme(self,n):
-      #print ('ds afficheNieme')
-      self.listeAffichageWidget[n].setFocus(7)
-
   def  afficheSuivant(self,f):
       #print ('ds afficheSuivant')
       try :
@@ -247,7 +230,6 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
 
   def focusInEvent(self,event):
       #print "je mets a jour dans focusInEvent de monWidget Commande "
-      if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
       self.afficheOptionnel()
 
 
@@ -269,17 +251,6 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       else : self.recentre()
       self.inhibeExpand=False
 
-  def reafficheSeulement(self,nodeAReafficher,index):
-      #print ('ds reafficheSeulement', nodeAReafficher)
-      parentNodeAReafficher=nodeAReafficher.parentQt
-      index=parentNodeAReafficher.commandesLayout.indexOf(nodeAReafficher)
-      oldFenetre=nodeAReafficher.node.fenetre
-      newWidget=nodeAReafficher.node.getPanelGroupe(parentNodeAReafficher,self,index)
-      nodeAReafficher.node.fenetre=newWidget
-      oldFenetre.setParent(None)
-      oldFenetre.close()
-      oldFenetre.deleteLater()
-      #print ("fin pour " , self.node.item.nom)
 
 
   def recentre(self):
@@ -288,13 +259,7 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       s.horizontalScrollBar().setSliderPosition(self.avantH)
       s.verticalScrollBar().setSliderPosition(self.avantV)
 
-  def rendVisibleNoeud(self,node):
-      self.f=node.fenetre
-      #print "dans rendVisibleNoeud",self.f
-      QTimer.singleShot(1, self.rendVisible)
-     
   def rendVisible(self):
-      #print "dans rendVisible",self.f
       QApplication.processEvents()
       self.f.setFocus(7)
       self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f)
@@ -315,10 +280,10 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       if not(hasattr (self,'RBValide')) : return
       icon = QIcon()
       if self.node.item.object.isValid() : icon=QIcon(self.repIcon+"/ast-green-ball.png")
-      else : icon=QIcon(self.repIcon+"/ast-red-ball.png")
+      else :                               icon=QIcon(self.repIcon+"/ast-red-ball.png")
       nomIcone = self.node.item.getIconName()
       if nomIcone == "ast-yellow-square" : icon=QIcon(self.repIcon+"/ast-yel-ball.png")
-      if nomIcone == "ast-red-square" : self.LENom.setDisabled(True)
+      if nomIcone == "ast-red-square"    : self.LENom.setDisabled(True)
 
       self.LENom.setDisabled(False)
       self.RBValide.setIcon(icon)
index 5b12888f90063d617a4a30e3a75548c238761f5c..53a60983b8d201cefb3937ea4740a55201eb992b 100644 (file)
@@ -47,7 +47,9 @@ class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille):
        if valeur == None  : return
        if valeur == True  : self.RBTrue.setChecked(True)
        if valeur == False : self.RBFalse.setChecked(True)
-
+       if self.monSimpDef.homo == 'constant' :
+          if valeur == True  : self.RBFalse.setDisabled(True)
+          else :               self.RBTrue.setDisabled(True)
 
   def boutonTrueClic(self):
       SaisieValeur.LEvaleurPressed(self,True)
index 05b8db93d55b958fb9b7b321158d715f374a4a4d..86a5f1fe5b14ce45a35fdacce4af53ca9d7c462d 100755 (executable)
@@ -92,8 +92,6 @@ class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
            if  hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'taille') : self.taille=self.maConfiguration.taille
            else : self.taille=1700
 
-           #if self.code in ['MAP',] : self.resize(1440,self.height())
-           #else : self.resize(self.taille,self.height())
            self.resize(self.taille,self.height())
 
 
index df16af256417279b76d7861ae425985e52ca8cf9..c16a0c0fa4e02d2d1092d910abe92b2d96633cc6 100755 (executable)
@@ -131,14 +131,14 @@ class AppliSsIhm:
 
     def initEditor(self,fichier = None,jdc = None, units = None,include=0):
         if (hasattr(self, 'editor')) and self.editor != None : 
-           print ('un seul editeur par appli')
+           print ('un seul editeur par application')
            sys.Exit()
         #self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
         self.editor = self.viewmanager.getNewEditorNormal()
         
     def initEditorNormal(self,fichier = None,jdc = None, units = None,include=0):
         if (hasattr(self, 'editor')) and self.editor != None : 
-           print ('un seul editeur par appli')
+           print ('un seul editeur par application')
            sys.Exit()
         #self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
         self.editor = self.viewmanager.getNewEditorNormal()
index 2ebb174b6755adef5575c6b3d81b87e42fd2ce56..a3232ea62a0522fd907a873f75c660fd0078d883 100644 (file)
@@ -225,6 +225,7 @@ class ReaderCata (ReaderCataCommun):
       self.cata = self.importCata(self.fic_cata)
       # pointeur pour le dumpXSD
       self.cata.JdC.module=self.cata
+      if self.cata.JdC.fichierSource == None :  self.cata.JdC.fichierSource = self.cata.__file__
       self.cata.modeleMetier = modeleMetier
       if not self.cata :
           try:
index bf33c7faaa36e9838f22bf18416e72ccfa76276a..575f55121a1c2f9859b7aa82d6467819e0af3d84 100644 (file)
@@ -87,7 +87,7 @@ NONE = None
 
     def __init__(self, definition=None, procedure=None, cata=None,
                  cata_ord_dico=None, parent=None,
-                 nom='SansNom', appli=None, context_ini=None, **args):
+                 nom='SansNom', appliEficas=None, context_ini=None, **args):
         self.procedure = procedure
         self.definition = definition
         self.cata = cata
@@ -97,7 +97,7 @@ NONE = None
         self._build_reserved_kw_list()
         self.cata_ordonne_dico = cata_ord_dico
         self.nom = nom
-        self.appli = appli
+        self.appliEficas = appliEficas
         self.parent = parent
         self.context_ini = context_ini
         # On conserve les arguments supplementaires. Il est possible de passer
@@ -149,8 +149,8 @@ NONE = None
            compte-rendu self.cr
         """
         try:
-            #if self.appli != None:
-            #    self.appli.afficheInfos( 'Compilation du fichier de commandes en cours ...')
+            #if self.appliEficas != None:
+            #    self.appliEficas.afficheInfos( 'Compilation du fichier de commandes en cours ...')
             # Python 2.7 compile function does not accept unicode filename, so we encode it
             # with the current locale encoding in order to have a correct
             # traceback
@@ -220,8 +220,8 @@ Causes possibles :
                     if isinstance(sd, ASSD):
                         self.sds_dict[sdnom] = sd
 
-            #if self.appli != None:
-            #    self.appli.afficheInfos(
+            #if self.appliEficas != None:
+            #    self.appliEficas.afficheInfos(
             #        'Interpretation du fichier de commandes en cours ...')
 
             # On sauve le contexte pour garder la memoire des constantes
@@ -232,8 +232,8 @@ Causes possibles :
             exec(self.proc_compile, self.g_context)
 
             CONTEXT.unsetCurrentStep()
-            if self.appli != None:
-                self.appli.afficheInfos('')
+            if self.appliEficas != None:
+                self.appliEficas.afficheInfos('')
 
         except InterruptParsingError:
             # interrupt the command file parsing used by FIN to ignore the end
@@ -441,10 +441,10 @@ Causes possibles :
             Retourne le nom du fichier correspondant a un numero d'unite
             logique (entier) ainsi que le source contenu dans le fichier
         """
-        if self.appli:
-            # Si le JDC est relie a une application maitre, on delègue la
+        if self.appliEficas:
+            # Si le JDC est relie a une appliEficascation maitre, on delègue la
             # recherche
-            return self.appli.getFile(unite, fic_origine)
+            return self.appliEficas.getFile(unite, fic_origine)
         else:
             if unite != None:
                 if os.path.exists("fort." + str(unite)):
@@ -466,7 +466,7 @@ Causes possibles :
         Met le mode de traitement a PAR LOT
         ou a COMMANDE par COMMANDE
         en fonction de la valeur du mot cle PAR_LOT et
-        du contexte : application maitre ou pas
+        du contexte : appliEficascation maitre ou pas
 
         En PAR_LOT='NON', il n'y a pas d'ambiguite.
         d'analyse et juste avant la phase d'execution.
@@ -475,11 +475,11 @@ Causes possibles :
         """
         if user_value:
             self.parLot_user = parLot
-        if self.appli == None:
-            # Pas d application maitre
+        if self.appliEficas == None:
+            # Pas d appliEficascation maitre
             self.parLot = parLot
         else:
-            # Avec application maitre
+            # Avec appliEficascation maitre
             self.parLot = 'OUI'
 
     def accept(self, visitor):
index a9bcfc6ffc991b403862d9fb80d9d9fbf0089280..c8710876f67fba3d27ec85e6b0bba893d30731cc 100644 (file)
@@ -50,7 +50,7 @@ class SIMP(N_ENTITE.ENTITE):
     def __init__(self, typ,ang="", fr="", statut='f', into=None, intoSug = None,siValide = None, defaut=None,
                  min=1, max=1, homo=1, position='local',
                  val_min=float('-inf'), val_max=float('inf'), docu="", validators=None, nomXML=None,
-                 sug=None,fenetreIhm=None, attribut=False, creeDesObjetsDeType = None):
+                 sug=None,fenetreIhm=None, attribut=False, creeDesObjetsDeType = None, sortie='n'):
         """
             Un mot-clé simple est caractérisé par les attributs suivants :
             - type : cet attribut est obligatoire et indique le type de valeur attendue
@@ -72,6 +72,7 @@ class SIMP(N_ENTITE.ENTITE):
             - attribut : si projection XSD sur attribut
             - creeDesObjetsDeType : type des UserASSD si siValide en cree
             - nomXML   : se projette en XSD avec un autre nom pour accepter les tirets
+            - sortie : force l ecriture dans le fichier de sortie (utile pour Telemac)
         """
         #print (self)
         #import traceback
@@ -112,6 +113,7 @@ class SIMP(N_ENTITE.ENTITE):
         self.attribut = attribut
         self.creeDesObjetsDeType = creeDesObjetsDeType
         self.nomXML = nomXML
+        self.sortie=sortie
 
     def verifCata(self):
         """
index 794f888a7a5104eb0b795a58b46dfb392f9f7302..aaa4377c60fca05f4041e0629e2fb657b3f99a49 100644 (file)
@@ -171,7 +171,7 @@ class PARSEUR_PYTHON(object):
         self.getOptions()
         return self.line
 
-    def getTexte(self,appli=None):
+    def getTexte(self,appliEficas=None):
         """
            Retourne le texte issu de l'analyse
         """
index 2e934c09ee03dea30ff17f2d8b164c608952ea5f..084175080f92d69b4429c14d43898a38191a57f6 100644 (file)
@@ -93,31 +93,31 @@ class TELEMACparser(Pythonparser):
 
    
 
-   def convert(self, outformat, appli=None):
+   def convert(self, outformat, appliEficas=None):
 
 
       from Accas import A_BLOC, A_FACT, A_SIMP
       try :
-        self.dicoCasToCata = appli.readercata.dicoCasToCata
+        self.dicoCasToCata = appliEficas.readercata.dicoCasToCata
       except :
         self.dicoCasToCata = {}
         print ('pas de dicoCasToCata')
-      self.dicoInverse              = appli.readercata.dicoInverse
-      self.dicoMC                   = appli.readercata.dicoMC
-      self.Ordre_Des_Commandes      = appli.readercata.Ordre_Des_Commandes
+      self.dicoInverse              = appliEficas.readercata.dicoInverse
+      self.dicoMC                   = appliEficas.readercata.dicoMC
+      self.Ordre_Des_Commandes      = appliEficas.readercata.Ordre_Des_Commandes
       try :
-        self.TelemacdicoEn            = appli.readercata.TelemacdicoEn
+        self.TelemacdicoEn            = appliEficas.readercata.TelemacdicoEn
       except :
         self.TelemacdicoEn = {}
         print ('pas de TelemacdicoEn')
       try :
-        self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+        self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn
       except :
         self.DicoEnumCasFrToEnumCasEn = {}
         print ('pas de DicoEnumCasFrToEnumCasEn')
       
 
-      if appli.langue=='fr' :
+      if appliEficas.langue=='fr' :
           #from enum_Telemac2d_auto       import DicoEnumCasFrToEnumCasEn
           for k in self.DicoEnumCasFrToEnumCasEn :
               self.TelemacdicoEn[k]=self.DicoEnumCasFrToEnumCasEn[k]
@@ -295,8 +295,8 @@ class TELEMACparser(Pythonparser):
 
 
       # ne sert plus
-      #appli.listeTelemac=self.dictSimp
-      appli.listeTelemac={}
+      #appliEficas.listeTelemac=self.dictSimp
+      appliEficas.listeTelemac={}
       if 'debut' in dicoComment :
           commentaire="COMMENTAIRE("+repr(dicoComment['debut'])+")\n"
           self.textePy=commentaire+self.textePy
index 8d9f9b8ed305a1793f0e858cba11782d6dd02491..c19648ab57c68e226af7fa6b5cfd50d0eb5cf8cb 100644 (file)
@@ -60,7 +60,7 @@ class XMLparser:
 
 
 
-   def convert(self, outformat, appli=None):
+   def convert(self, outformat, appliEficas=None):
    # ici on ne fait rien
    # on le fera a la creation du JDC
        try:
index 098612eb8e4b87715433b689aba75e0b20b8ef1f..9a73c09c3b2ec61da061c8a74f8d1cba9f98361a 100644 (file)
@@ -115,7 +115,7 @@ class Pythparser(object):
          s= s.replace('"<string>"','"<%s>"'%self.filename)
          self.cr.fatal(tr("Erreur a l'evaluation :\n %s", s))
 
-   def convert(self,outformat,appli=None):
+   def convert(self,outformat,appliEficas=None):
       if outformat == 'dict':
          return self.getdict()
       else:
index 123f3183b5e0e811349c272237b4ea806038c5fd..510721e90906d8224d46470fee8e1df876623a55 100644 (file)
@@ -111,13 +111,13 @@ class Pythonparser(object):
          self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
          return
    
-   def convert(self,outformat,appli=None):
+   def convert(self,outformat,appliEficas=None):
       if outformat == 'exec':
          try:
             #import cProfile, pstats, StringIO
             #pr = cProfile.Profile()
             #pr.enable()            
-            l= PARSEUR_PYTHON(self.text).getTexte(appli)
+            l= PARSEUR_PYTHON(self.text).getTexte(appliEficas)
 
             #pr.disable()
             #s = StringIO.StringIO()
index e3f28ba3a54207a5a164914226771d42d9e72940..fb7fe91c82d9df0326b74ffbb389914a0b05a647 100644 (file)
@@ -296,7 +296,7 @@ class PARSEUR_PYTHON(object):
     def __init__(self,texte):
         self.texte = texte
         self.l_objets=None
-        self.appli=None
+        self.appliEficas=None
 
     def isAffectation(self,texte):
         """
@@ -581,7 +581,7 @@ class PARSEUR_PYTHON(object):
                     if nouvelindice == len(texte) :
                         nouvelindice=nouvelindice -1
                         break
-                 if mot in self.appli.liste_simp_reel:
+                 if mot in self.appliEficas.liste_simp_reel:
                     if valeur[0] != "'":
                        try :
                          clef=eval(valeur)
@@ -612,7 +612,7 @@ class PARSEUR_PYTHON(object):
                        #cas du tuple de valeurs
                        valeur=texte[indiceC+1:nouvelindice+1]
                        indiceC=nouvelindice+1 
-                       if mot in self.appli.liste_simp_reel:
+                       if mot in self.appliEficas.liste_simp_reel:
                           valeur=valeur[1:-1]
                           for val in valeur.split(',') :
                           # Attention la derniere valeur est""
@@ -650,21 +650,21 @@ class PARSEUR_PYTHON(object):
            #index=epure1.find(u"=")
            #epure2=epure1[index+1:len(epure1)].replace(u"_F(u","(u")
            #dict_reel_concept=self.construitGenea(epure2)
-           if self.appli:
-             dict_reel_concept=construitGenea(epure2,self.appli.liste_simp_reel)
+           if self.appliEficas:
+             dict_reel_concept=construitGenea(epure2,self.appliEficas.liste_simp_reel)
            else:
              dict_reel_concept={}
         if nomConcept == "sansnom" :
            nomConcept = ""
         if nomConcept !=None :
            if len(dict_reel_concept) != 0:
-              self.appli.dict_reels[nomConcept]=dict_reel_concept
+              self.appliEficas.dict_reels[nomConcept]=dict_reel_concept
 
-    def getTexte(self,appli=None):
+    def getTexte(self,appliEficas=None):
         """
         Retourne le texte issu de l'analyse
         """
-        self.appli=appli
+        self.appliEficas=appliEficas
         try:
         #if 1:
             if not self.l_objets : self.analyse()
@@ -688,10 +688,10 @@ if __name__ == "__main__" :
     #fichier = 'D:/Eficas_dev/Tests/zzzz100a.comm'
     #fichier = 'U:/Eficas_dev/Tests/test_eval.comm'
     texte = open(fichier,'r').read()
-    class appli(object):
+    class appliEficas(object):
        dict_reels={}
        liste_simp_reel=["VALE","VALE_C","GROUP_MA","RAYON"]
-    a=appli()
+    a=appliEficas()
 
     compile(txt, '<string>', 'exec')
     print((a.dict_reels))
diff --git a/generator/a.py b/generator/a.py
new file mode 100644 (file)
index 0000000..db583c4
--- /dev/null
@@ -0,0 +1,5 @@
+Title = 'toto' 
+txt=''
+txt += "Title" + "= " + str(Title) + "\n"
+print txt
+
index e60d43e4bf26bc806430cbbaacd35cc8df0059d6..f2c1b22b4aebe05b0cbea76869369caba3ee290d 100755 (executable)
@@ -57,7 +57,7 @@ class PSENGenerator(DicoImbriqueGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None, appli=None):
+   def gener(self,obj,format='brut',config=None, appliEficas=None):
 
       try :
          self.MachineDico = obj.MachineDico
index 2c7b0fae8175c1143289a7b2fb14141b1942be97..efce52f05fa64a58671403fc8995440347c5c7b4 100755 (executable)
@@ -50,7 +50,7 @@ class ProcessOutputsGenerator(PythonGenerator,ModificationGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None, appli=None):
+   def gener(self,obj,format='brut',config=None, appliEficas=None):
 
       # Cette instruction genere le contenu du fichier de commandes (persistance)
       texteModification=self.generTexteModif(obj)
index 3b52f688074248e062cf92058dc1e5349b122a74..a89b564ee091334a7a46e2389f83a5d43af7450f 100644 (file)
@@ -58,11 +58,11 @@ class TELEMACGenerator(PythonGenerator):
    """
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None,appli=None,statut="Leger"):
+   def gener(self,obj,format='brut',config=None,appliEficas=None,statut="Leger"):
  
       self.statut        = statut
-      self.langue        = appli.langue
-      try : self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+      self.langue        = appliEficas.langue
+      try : self.TelemacdicoEn = appliEficas.readercata.TelemacdicoEn
       except : 
         print ('Attention : pas de TelemacdicoEn declare') 
         self.TelemacdicoEn = {}
@@ -76,7 +76,7 @@ class TELEMACGenerator(PythonGenerator):
           self.DicoEnumCasEnInverse[motClef]=d
       if self.langue == 'fr' : 
          #from  enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
-         self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+         self.DicoEnumCasFrToEnumCasEn = appliEficas.readercata.DicoEnumCasFrToEnumCasEn
          for motClef in self.DicoEnumCasFrToEnumCasEn:
               d={}
               for valTelemac in self.DicoEnumCasFrToEnumCasEn[motClef]:
@@ -85,12 +85,12 @@ class TELEMACGenerator(PythonGenerator):
               self.DicoEnumCasEnInverse[motClef]=d
       self.initDico()
       # Pour Simplifier les verifs d ecriture
-      if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac
+      if hasattr(appliEficas,'listeTelemac') : self.listeTelemac=appliEficas.listeTelemac
       else : self.listeTelemac = ()
 
       self.dicoCataToCas={}
       try :
-        self.dicoCasToCata=appli.readercata.dicoCasToCata
+        self.dicoCasToCata=appliEficas.readercata.dicoCasToCata
       except :
         print ('Attention pas de dicoCasToCata declare')
         self.dicoCasToCata={}
@@ -148,8 +148,8 @@ class TELEMACGenerator(PythonGenerator):
 # ecriture de Leger
 #----------------------------------------------------------------------------------------
 
-   def writeComplet(self,fn,jdc,config,appli) :
-       jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Entier")
+   def writeComplet(self,fn,jdc,config,appliEficas) :
+       jdc_formate=self.gener(jdc,config=config,appliEficas=appliEficas,statut="Entier")
        self.writeDefault(fn)
 
 
@@ -174,10 +174,8 @@ class TELEMACGenerator(PythonGenerator):
         s=PythonGenerator.generMCSIMP(self,obj)
 
 
-        # Attention pas sur --> ds certains cas non traite par MCFACT ?
-        # a reflechir avec Yoann
-        # ajouter le statut ?
-        if self.statut == 'Leger' :
+        # si le statut = Leger on peut vouloir forcer l ecriture
+        if self.statut == 'Leger'  and obj.definition.sortie == 'n':
           if hasattr(obj.definition,'defaut') and (obj.definition.defaut == obj.valeur) and (obj.nom not in self.listeTelemac) : return s
           if hasattr(obj.definition,'defaut') and obj.definition.defaut != None and (type(obj.valeur) == tuple or type(obj.valeur) == list) and (tuple(obj.definition.defaut) == tuple(obj.valeur)) and (obj.nom not in self.listeTelemac) : return s
 
index 1f3fe65a534f9d61b0004da367cfef051c5fcf82..6401ded1ccdabc79449610651f19b01b73d9626f 100644 (file)
@@ -54,7 +54,7 @@ class XMLGenerator(PythonGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
        
       try :
         self.texteXML=obj.toXml()
index 2bbdaade91961ae4805ab0af0c19d8d092891123..6eaff182aa9dadad1cf1e652adbf0d4c4388d3c3 100644 (file)
@@ -90,7 +90,7 @@ class AplatGenerator(object):
       fp.write(self.text)
       fp.close()
 
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
       """
           Retourne une representation du JDC obj sous une forme qui est parametree par format.
           Si format vaut 'brut', 'standard' ou 'beautifie', retourne le texte issu de generator
index 20cba9eb9c83540c96fabfc495d11abc8078c2e5..91c69c232bb7b6c8c78ea9628c647d1e1cb71c15 100644 (file)
@@ -55,7 +55,7 @@ class DicoGenerator(PythonGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
        
       self.initDico()
       
index 4c201b9761a384cf3326084524a41c94c9e1313b..d5d845cf13f6f68bd614b207d238045f11b4d4cc 100644 (file)
@@ -54,7 +54,7 @@ class DicoImbriqueGenerator(PythonGenerator):
    extensions=('.comm',)
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None, appli=None):
+   def gener(self,obj,format='brut',config=None, appliEficas=None):
        
       self.initDico()
       
index 43b4bb716237f1f7a066c06013d2a58b8b56d502..97e7edd0563b56645519ce10e41f3c219443da86 100644 (file)
@@ -56,7 +56,7 @@ class MapGenerator(PythonGenerator):
 
    """
 
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
       self.initDico()
       self.text=PythonGenerator.gener(self,obj,format)
       if obj.isValid() :self.genereExeMap()
index bafbfbfe32c80164df7ae0f84391ce5e5325ce95..95273e67b7caef973ca9533d062885323fee3134 100644 (file)
@@ -59,9 +59,12 @@ class MapGenerator(PythonGenerator):
 
    """
 
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
+      self.appliEficas=appliEficas
+      self.cata=self.appliEficas.readercata.cata
       self.initDico()
       self.text=PythonGenerator.gener(self,obj,format)
+      self.textePourRun =''
       if obj.isValid() :self.genereExeMap()
       return self.text
 
@@ -69,18 +72,8 @@ class MapGenerator(PythonGenerator):
    def genereExeMap(self) :
       '''
       Prepare le contenu du fichier de parametres python
-      peut ensuite etre obtenu au moyen de la fonction getTubePy().
       '''
-      #nomSpec="spec_"+self.schema
-      #self.texteEXE="from map.spec import %s;\n"%nomSpec
-      #self.texteEXE+="node=%s.new();\n"%nomSpec
-      #self.texteEXE+="node.getInputData();\n"
-      #self.texteEXE+="node.setInputData(%s);\n"%self.dictValeur
-      #self.texteEXE+="node.execute();\n"
-      #self.texteEXE+="res=node.getOutputData();\n"
-      #self.texteEXE = "%s\n"%self.dictValeur
       self.texteEXE = ""
-      self.txtEquations += ']\n'
       self.texteEXE += self.genereCsv()
       self.texteEXE += self.genereCalc()
       self.texteEXE += self.txtNomCst
@@ -90,7 +83,9 @@ class MapGenerator(PythonGenerator):
       self.texteEXE += self.txtValNA
       self.texteEXE += self.txtInitName
       self.texteEXE += self.txtInitVal
-      self.texteEXE += self.txtEquations
+      self.texteEXE += self.genereEquations()
+      self.textePourRun = self.texteEXE
+      #print (self.texteEXE)
       
       
 
@@ -106,7 +101,21 @@ class MapGenerator(PythonGenerator):
      txt = txtNom + txtVal 
      return txt
 
-      
+   def genereEquations(self) :
+      txt="equation =["
+      index=0
+      for param in  self.listInitialParameters:
+          print (param)
+          txt+= 'Dy[j*5 + '+str(index)+ '] = '
+          txt+=","
+      #if obj.nom in( 'initiation','propagation','termination','stabilization') :
+      #   for objFils in obj.data:
+      #     for mc in objFils.mcListe :  
+      #        self.txtEquations +=  "'" + mc.nom + "', "
+      txt=txt[0:-1]
+      txt+="]\n"
+      return txt
+
    def genereCsv(self) :
       txt =  'study_name = ' +self.dictValeur['SimulationName'] +  "\n"
       txt += 'csv_output_file_name = ' + self.dictValeur['OutPutFolder'] + '/c_solver_stiff_ode_1d_' + self.dictValeur['SimulationName']+ '.csv\n'
@@ -116,7 +125,6 @@ class MapGenerator(PythonGenerator):
       if not hasattr(self,'schema') : self.schema=""
       self.dictParam={}
       self.dictValeur={}
-      self.txtEquations  = "equation = [ "
   
    def writeDefault(self, fn):
       fileEXE = fn[:fn.rfind(".")] + '.py'
@@ -150,19 +158,17 @@ class MapGenerator(PythonGenerator):
          self.txtValNA    += ']\n'
            
       if obj.nom == 'InitialParameters' :
+         self.listInitialParameters =[]
          self.txtInitName  = "initial_Value_names = [ "
          self.txtInitVal   = "initial_Values = [ "
          for objFils in obj.data:
            for mc in objFils.mcListe :  
               self.txtInitName +=  "'" + mc.nom + "', "
               self.txtInitVal  +=  str(mc.valeur) + ", "
+              self.listInitialParameters.append(mc.nom)
          self.txtInitName += ']\n'
          self.txtInitVal  += ']\n'
 
-      if obj.nom in( 'initiation','propagation','termination','stabilization') :
-         for objFils in obj.data:
-           for mc in objFils.mcListe :  
-              self.txtEquations +=  "'" + mc.nom + "', "
       return s
     
    def generMCSIMP(self,obj) :
index 7a41cd62a8d1df121f5e707c8814ed86e0f2856c..426ffd33e839e56118869acb98eeac68f80d823a 100644 (file)
@@ -86,14 +86,14 @@ class PythonGenerator(object):
                          fin='fin CR format python pour python')
       # Le texte au format python est stocke dans l'attribut text
       self.text=''
-      self.appli=None
+      self.appliEficas=None
 
    def writefile(self,filename):
       fp=open(filename,'w')
       fp.write(self.text)
       fp.close()
 
-   def gener(self,obj,format='brut',config=None,appli=None):
+   def gener(self,obj,format='brut',config=None,appliEficas=None):
       """
           Retourne une representation du JDC obj sous une
           forme qui est parametree par format.
@@ -105,8 +105,7 @@ class PythonGenerator(object):
       if obj == None : 
          print ('appel a gener avec None')
          return
-      self.appli=obj.getJdcRoot().appli
-      #self.appli=obj.appli
+      self.appliEficas=appliEficas
       liste= self.generator(obj)
       #format='standard'
       if format == 'brut':
@@ -517,9 +516,9 @@ class PythonGenerator(object):
          if vientDeListe and repr(valeur) != str(valeur) : s=repr(valeur)
          if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.0'
          clefobj=etape.getSdname()
-         if self.appli.appliEficas and clefobj in self.appli.appliEficas.dict_reels:
-           if valeur in self.appli.appliEficas.dict_reels[clefobj]:
-             s=self.appli.appliEficas.dict_reels[clefobj][valeur]
+         if self.appliEficas and clefobj in self.appliEficas.dict_reels:
+           if valeur in self.appliEficas.dict_reels[clefobj]:
+             s=self.appliEficas.dict_reels[clefobj][valeur]
          
       elif type(valeur) == bytes or type(valeur) == str :
          if valeur.find('\n') == -1:
index 331cbfbe0b3a9d0748d30f7392ea53ad805133eb..9f405a45f4108b76429b9078611b1e03a3fc6d74 100644 (file)
@@ -96,7 +96,7 @@ class vers3DSalomeGenerator(PythonGenerator):
       self.commande = ""
       self.dict_attributs = {} 
 
-   def gener(self,node,config=None,appli=None):
+   def gener(self,node,config=None,appliEficas=None):
       """
       """
       self.node=node