]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
Merge V9 dans Master
authorpascale.noyret <pascale.noyret@edf.fr>
Fri, 21 Sep 2018 12:13:35 +0000 (14:13 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Fri, 21 Sep 2018 12:13:35 +0000 (14:13 +0200)
296 files changed:
Accas/A_BLOC.py
Accas/A_ETAPE.py
Accas/A_FACT.py
Accas/A_JDC.py
Accas/A_JDC_CATA.py
Accas/A_MACRO_ETAPE.py
Accas/A_MCBLOC.py
Accas/A_MCFACT.py
Accas/A_MCLIST.py
Accas/A_MCSIMP.py
Accas/A_OPER.py
Accas/A_PROC.py
Accas/A_PROC_ETAPE.py
Accas/A_SIMP.py
CMakeLists.txt
Editeur/Eficas_utils.py
Editeur/Objecttreeitem.py
Editeur/TroisDPal.py
Editeur/analyse_catalogue.py
Editeur/analyse_catalogue_initial.py
Editeur/autre_analyse_cata.py
Editeur/cata2Xml.py
Editeur/chercheBlocInto.py
Editeur/chercheNbElem.py
Editeur/comploader.py
Editeur/listePatrons.py
Editeur/session.py
Editeur/uiinfo.py
Efi2Xsd/AccasXsd.py [new file with mode: 0755]
Efi2Xsd/CMakeLists.txt [new file with mode: 0644]
Efi2Xsd/MCAccasXsd.py [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6 ext.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7 ext.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8 ext.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9 ext.xsd [new file with mode: 0755]
Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd [new file with mode: 0755]
Efi2Xsd/README.txt [new file with mode: 0644]
Efi2Xsd/ReadMe.txt [new file with mode: 0644]
Efi2Xsd/ReadmeFichiers.txt [new file with mode: 0644]
Efi2Xsd/XMLSchema(1.1)_efv1.xsd [new file with mode: 0644]
Efi2Xsd/XSL/Eficas2Xsd.xslt [new file with mode: 0755]
Efi2Xsd/XSL/MED_FAM_gen.xsd [new file with mode: 0644]
Efi2Xsd/XSL/MED_FAM_v2_gen.xsd [new file with mode: 0644]
Efi2Xsd/XSL/MappingMapToXMLSchema_1_1__ef.xslt [new file with mode: 0755]
Efi2Xsd/XSL/Saxon.cmd [new file with mode: 0644]
Efi2Xsd/__init__.py [new file with mode: 0644]
Efi2Xsd/balises.py [new file with mode: 0644]
Efi2Xsd/cata.xml [new symlink]
Efi2Xsd/efficas.py [new file with mode: 0644]
Efi2Xsd/introspect.py [new file with mode: 0644]
Efi2Xsd/mapDesTypes.py [new file with mode: 0755]
Efi2Xsd/model.xsd [new symlink]
Efi2Xsd/readerEfiXsd.py [new file with mode: 0755]
Extensions/commande_comm.py
Extensions/commentaire.py
Extensions/etape_niveau.py
Extensions/interpreteur_formule.py
Extensions/jdc.py
Extensions/jdc_include.py
Extensions/localisation.py
Extensions/mcnuplet.py
Extensions/niveau.py
Extensions/nuplet.py
Extensions/parametre.py
Extensions/parametre_eval.py
Extensions/pluginloader.py
Extensions/translationQT5.py
Ihm/I_ASSD.py
Ihm/I_AVANT.py
Ihm/I_A_CLASSER.py
Ihm/I_ENTITE.py
Ihm/I_ETAPE.py
Ihm/I_EXCLUS.py
Ihm/I_FONCTION.py
Ihm/I_FORM_ETAPE.py
Ihm/I_JDC.py
Ihm/I_JDC_CATA.py
Ihm/I_LASSD.py
Ihm/I_MACRO_ETAPE.py
Ihm/I_MCCOMPO.py
Ihm/I_MCFACT.py
Ihm/I_MCLIST.py
Ihm/I_MCSIMP.py
Ihm/I_OBJECT.py
Ihm/I_PRESENT_ABSENT.py
Ihm/I_PRESENT_PRESENT.py
Ihm/I_PROC_ETAPE.py
Ihm/I_REGLE.py
Ihm/I_UN_PARMI.py
Ihm/I_VALIDATOR.py
InterfaceQT4/aiemonWidgetPlusieursBase.py [new file with mode: 0644]
InterfaceQT4/bizarreEditorDu5aout.py [new file with mode: 0644]
InterfaceQT4/browser.py
InterfaceQT4/compobloc.py
InterfaceQT4/compocomm.py
InterfaceQT4/compocommandecomm.py
InterfaceQT4/compofact.py
InterfaceQT4/compoformule.py
InterfaceQT4/compojdc.py
InterfaceQT4/compomacro.py
InterfaceQT4/compomclist.py
InterfaceQT4/compooper.py
InterfaceQT4/compoparam.py
InterfaceQT4/composimp.py
InterfaceQT4/configuration.py
InterfaceQT4/editor.py
InterfaceQT4/editorJuillet.py [new file with mode: 0755]
InterfaceQT4/editorSsIhm.py [new file with mode: 0755]
InterfaceQT4/eficas_go.py
InterfaceQT4/feuille.py
InterfaceQT4/gereIcones.py
InterfaceQT4/gereListe.py
InterfaceQT4/gereListeAvril11.py [new file with mode: 0644]
InterfaceQT4/gereRegles.py
InterfaceQT4/getVersion.py
InterfaceQT4/groupe.py
InterfaceQT4/monBoutonValide.py
InterfaceQT4/monChoixCata.py
InterfaceQT4/monChoixCode.py
InterfaceQT4/monChoixCommande.py
InterfaceQT4/monFonctionPanel.py
InterfaceQT4/monGroupeOptionnel.py
InterfaceQT4/monLayoutBouton.py [new file with mode: 0644]
InterfaceQT4/monRecherche.py
InterfaceQT4/monSelectVal.py
InterfaceQT4/monViewTexte.py
InterfaceQT4/monWidget4a6RadioButton.py
InterfaceQT4/monWidget4a6RadioButtonSD.py
InterfaceQT4/monWidgetBloc.py
InterfaceQT4/monWidgetCB.py
InterfaceQT4/monWidgetCBIntoSug.py [new file with mode: 0644]
InterfaceQT4/monWidgetCBSD.py
InterfaceQT4/monWidgetCommande.py
InterfaceQT4/monWidgetCommandeDeplie1Niveau.py [new file with mode: 0644]
InterfaceQT4/monWidgetCommentaire.py
InterfaceQT4/monWidgetCreeParam.py
InterfaceQT4/monWidgetFact.py
InterfaceQT4/monWidgetFactPlie.py
InterfaceQT4/monWidgetFormule.py
InterfaceQT4/monWidgetInfo.py
InterfaceQT4/monWidgetIntoSug.py
InterfaceQT4/monWidgetMatrice.py
InterfaceQT4/monWidgetNiveauFact.py [new file with mode: 0644]
InterfaceQT4/monWidgetOptionnel.py
InterfaceQT4/monWidgetParam.py
InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py
InterfaceQT4/monWidgetPlusieursBase.py
InterfaceQT4/monWidgetPlusieursInto.py
InterfaceQT4/monWidgetPlusieursIntoOrdonne.py
InterfaceQT4/monWidgetPlusieursPlie.py
InterfaceQT4/monWidgetPlusieursTuple.py
InterfaceQT4/monWidgetPlusieursTupleAvril11.py [new file with mode: 0644]
InterfaceQT4/monWidgetPlusieursTupleN.py [new file with mode: 0644]
InterfaceQT4/monWidgetRadioButton.py
InterfaceQT4/monWidgetSDCOInto.py
InterfaceQT4/monWidgetSimpBase.py
InterfaceQT4/monWidgetSimpBool.py
InterfaceQT4/monWidgetSimpComplexe.py
InterfaceQT4/monWidgetSimpSalome.py
InterfaceQT4/monWidgetSimpTuple.py
InterfaceQT4/monWidgetSimpTupleN.py [new file with mode: 0644]
InterfaceQT4/monWidgetTableau.py [new file with mode: 0644]
InterfaceQT4/monWidgetUniqueSDCO.py
InterfaceQT4/monWidgetVide.py
InterfaceQT4/politiquesValidation.py
InterfaceQT4/qtEficas.py
InterfaceQT4/qtEficasSsIhm.py [new file with mode: 0755]
InterfaceQT4/qtEficas_with_log.py
InterfaceQT4/qtSaisie.py
InterfaceQT4/readercata.py
InterfaceQT4/readercataXML.py [new file with mode: 0644]
InterfaceQT4/typeNode.py
InterfaceQT4/viewManager.py
InterfaceQT4/viewManagerSsIhm.py [new file with mode: 0644]
Noyau/N_ASSD.py
Noyau/N_BLOC.py
Noyau/N_CO.py
Noyau/N_CONVERT.py
Noyau/N_CR.py
Noyau/N_ENTITE.py
Noyau/N_ETAPE.py
Noyau/N_Exception.py
Noyau/N_FACT.py
Noyau/N_FONCTION.py
Noyau/N_GEOM.py
Noyau/N_JDC.py
Noyau/N_JDC_CATA.py
Noyau/N_MACRO.py
Noyau/N_MACRO_ETAPE.py
Noyau/N_MCBLOC.py
Noyau/N_MCCOMPO.py
Noyau/N_MCFACT.py
Noyau/N_MCLIST.py
Noyau/N_MCSIMP.py
Noyau/N_OBJECT.py
Noyau/N_OPER.py
Noyau/N_OPS.py
Noyau/N_PROC.py
Noyau/N_PROC_ETAPE.py
Noyau/N_REGLE.py
Noyau/N_SENSIBILITE.py
Noyau/N_SIMP.py
Noyau/N_VALIDATOR.py
Noyau/N_types.py
Noyau/N_utils.py
Noyau/__init__.py
Noyau/context.py
Noyau/nommage.py
Noyau/strfunc.py
Traducteur/changeValeur.py
Traducteur/dictErreurs.py
Traducteur/inseremocle.py
Traducteur/load.py
Traducteur/mocles.py
Traducteur/movemocle.py
Traducteur/parseur.py
Traducteur/regles.py
Traducteur/removemocle.py
Traducteur/renamemocle.py
Traducteur/traduitV10V11.py
Traducteur/traduitV11V12.py
Traducteur/traduitV7V8.py
Traducteur/traduitV8V9.py
Traducteur/traduitV9V10.py
Traducteur/utils.py
UiQT5/CMakeLists.txt
UiQT5/Tuple10.ui [new file with mode: 0644]
UiQT5/Tuple3.ui
UiQT5/Tuple4.ui [new file with mode: 0644]
UiQT5/Tuple5.ui [new file with mode: 0644]
UiQT5/Tuple6.ui [new file with mode: 0644]
UiQT5/Tuple7.ui [new file with mode: 0644]
UiQT5/Tuple8.ui [new file with mode: 0644]
UiQT5/Tuple9.ui [new file with mode: 0644]
UiQT5/dateEtHeure.ui [new file with mode: 0644]
UiQT5/desChoixCode.ui
UiQT5/desWidgetCB.ui
UiQT5/desWidgetCBIntoSug.ui [new file with mode: 0644]
UiQT5/desWidgetCommande.ui
UiQT5/desWidgetFact.ui
UiQT5/desWidgetFactPlie.ui
UiQT5/desWidgetFactTableau.ui [new file with mode: 0644]
UiQT5/desWidgetNiveauFact.ui [new file with mode: 0644]
UiQT5/desWidgetPlusieursBase.ui
UiQT5/desWidgetPlusieursTuple.ui
UiQT5/desWidgetSimpTxt.ui
UiQT5/desWidgetTableau.ui [new file with mode: 0644]
UiQT5/desWidgetTuple10.ui [new file with mode: 0644]
UiQT5/desWidgetTuple4.ui [new file with mode: 0644]
UiQT5/desWidgetTuple5.ui [new file with mode: 0644]
UiQT5/desWidgetTuple6.ui [new file with mode: 0644]
UiQT5/desWidgetTuple7.ui [new file with mode: 0644]
UiQT5/desWidgetTuple8.ui [new file with mode: 0644]
UiQT5/desWidgetTuple9.ui [new file with mode: 0644]
UiQT5/myMain.ui
Validation/V_AU_MOINS_UN.py
Validation/V_AU_PLUS_UN.py
Validation/V_A_CLASSER.py
Validation/V_ENSEMBLE.py
Validation/V_ETAPE.py
Validation/V_EXCLUS.py
Validation/V_JDC.py
Validation/V_MACRO_ETAPE.py
Validation/V_MCBLOC.py
Validation/V_MCCOMPO.py
Validation/V_MCFACT.py
Validation/V_MCLIST.py
Validation/V_MCSIMP.py
Validation/V_MEME_NOMBRE.py
Validation/V_PRESENT_ABSENT.py
Validation/V_PRESENT_PRESENT.py
Validation/V_PROC_ETAPE.py
Validation/V_UN_PARMI.py
convert/autre_parseur.py
convert/convert_TELEMAC.py
convert/convert_XML.py [new file with mode: 0644]
convert/convert_dico.py [new file with mode: 0644]
convert/convert_map.py
convert/convert_pyth.py
convert/convert_python.py
convert/parseur_python.py
convert/readXml.py [new file with mode: 0644]
generator/Formatage.py
generator/generator_CARMEL3D_frequentiel.py
generator/generator_CARMEL3D_temporel.py
generator/generator_TELEMAC.py
generator/generator_XML.py [new file with mode: 0644]
generator/generator_aplat.py
generator/generator_dico.py
generator/generator_dicoImbrique.py
generator/generator_map.py
generator/generator_python.py
generator/generator_vers3DSalome.py

index 295717263202ba46cd55e8030f3336c930534625..badd8d9d94f5c7909d1fdc24f3e4029aab362779 100644 (file)
 from __future__ import absolute_import
 from Noyau import N_BLOC
 from Ihm import I_ENTITE
-from . import A_MCBLOC
+from Accas import A_MCBLOC
+from Efi2Xsd.AccasXsd  import X_BLOC
 
-class BLOC(N_BLOC.BLOC,I_ENTITE.ENTITE):
+
+class BLOC(N_BLOC.BLOC,X_BLOC,I_ENTITE.ENTITE):
    class_instance=A_MCBLOC.MCBLOC
    def __init__(self,*tup,**args):
       I_ENTITE.ENTITE.__init__(self)
index 0a9b8e943465edc86e161fcf4e142b4101a9c7a2..a3dbd595012dee672488731dc876c4b558bbfe24 100644 (file)
@@ -21,10 +21,10 @@ from __future__ import absolute_import
 from Noyau import N_ETAPE
 from Validation import V_ETAPE
 from Ihm import I_ETAPE
+from Efi2Xsd.MCAccasXsd  import X_MCCOMPO
 
-class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE,
-            N_ETAPE.ETAPE):
+class ETAPE(I_ETAPE.ETAPE,V_ETAPE.ETAPE,X_MCCOMPO,N_ETAPE.ETAPE):
    def __init__(self,oper=None,reuse=None,args={}):
-      # Pas de constructeur pour B_ETAPE.ETAPE
+      print ('------------- ETAPE accas', oper.nom, args)
       N_ETAPE.ETAPE.__init__(self,oper,reuse,args)
       V_ETAPE.ETAPE.__init__(self)
index e26c97faf4be30e75ddcaca19e4be9b2bd156916..ebccc614dafeaec6c5bee2c892d6bd27f6c18f89 100644 (file)
 from __future__ import absolute_import
 from Noyau import N_FACT
 from Ihm import I_ENTITE
-from . import A_MCFACT
-from . import A_MCLIST
+from Accas import A_MCFACT
+from Accas import A_MCLIST
+from Efi2Xsd.AccasXsd  import X_FACT
 
-class FACT(N_FACT.FACT,I_ENTITE.ENTITE):
+
+class FACT(N_FACT.FACT,X_FACT,I_ENTITE.ENTITE):
    class_instance=A_MCFACT.MCFACT
    list_instance=A_MCLIST.MCList
    def __init__(self,*tup,**args):
index 8ef54772c9520edcc1e6322e9f256b162ccafaec..d17bd2343340876411b1d27b653f0281aae9522b 100644 (file)
@@ -22,12 +22,14 @@ from Noyau import N_JDC
 from Validation import V_JDC
 from Extensions import jdc
 from Ihm import I_JDC
+from Efi2Xsd.MCAccasXsd  import X_JDC
 
-class JDC(jdc.JDC,I_JDC.JDC,V_JDC.JDC,N_JDC.JDC):
+class JDC(jdc.JDC,I_JDC.JDC,X_JDC,V_JDC.JDC,N_JDC.JDC):
    from .A_ASSD import CO,assd
 
    def __init__(self,*pos,**args):
       N_JDC.JDC.__init__(self,*pos,**args)
+      X_JDC.__init__(self)
       V_JDC.JDC.__init__(self)
       I_JDC.JDC.__init__(self)
       jdc.JDC.__init__(self)
index 75e1c27e501bd593f789eae29372049075c56e07..fd8a248d57043bd53b1f96cea76847d1734c78f7 100644 (file)
@@ -21,8 +21,9 @@ from __future__ import absolute_import
 from . import A_JDC
 from Noyau import N_JDC_CATA
 from Ihm import I_JDC_CATA
+from Efi2Xsd.AccasXsd  import X_JDC_CATA
 
-class JDC_CATA(I_JDC_CATA.JDC_CATA,N_JDC_CATA.JDC_CATA):
+class JDC_CATA(I_JDC_CATA.JDC_CATA,N_JDC_CATA.JDC_CATA,X_JDC_CATA):
    class_instance=A_JDC.JDC
    def __init__(self,*pos,**kw):
       #print pos
index a9af48273a687caad7d9c5ecc24dcd038c21ffaa..2bba807e646337db45ac04c2e9aa95f8a7ad55f8 100644 (file)
@@ -22,8 +22,10 @@ from Noyau import N_MACRO_ETAPE
 from Validation import V_MACRO_ETAPE
 from Ihm import I_MACRO_ETAPE
 from .A_ASSD import CO
+from Efi2Xsd.MCAccasXsd  import X_MCCOMPO
 
 class MACRO_ETAPE(I_MACRO_ETAPE.MACRO_ETAPE,
+                  X_MCCOMPO,
                   V_MACRO_ETAPE.MACRO_ETAPE,
                   N_MACRO_ETAPE.MACRO_ETAPE):
    typeCO=CO
index 0cc5047b820a0d0387c5a0ced5c047e8195319f9..df125d12fa0cfc2d981c8aa823f0fa743fa08704 100644 (file)
@@ -21,8 +21,10 @@ from __future__ import absolute_import
 from Noyau import N_MCBLOC
 from Validation import V_MCBLOC
 from Ihm import I_MCBLOC
+from Efi2Xsd.MCAccasXsd  import X_MCBLOC
 
-class MCBLOC(I_MCBLOC.MCBLOC,N_MCBLOC.MCBLOC,V_MCBLOC.MCBLOC):
-   def __init__(self,val,definition,nom,parent):
-      N_MCBLOC.MCBLOC.__init__(self,val,definition,nom,parent)
+
+class MCBLOC(I_MCBLOC.MCBLOC,N_MCBLOC.MCBLOC,X_MCBLOC,V_MCBLOC.MCBLOC):
+   def __init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=None):
+      N_MCBLOC.MCBLOC.__init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
       V_MCBLOC.MCBLOC.__init__(self)
index 03128a7910e1519c4c45dda144a4fc9e7289908f..50fd1a8da1d801faa27ba0ccd221aa123b9c9bda 100644 (file)
@@ -21,8 +21,9 @@ from __future__ import absolute_import
 from Noyau import N_MCFACT
 from Validation import V_MCFACT
 from Ihm import I_MCFACT
+from Efi2Xsd.MCAccasXsd  import X_MCFACT
 
-class MCFACT(I_MCFACT.MCFACT,N_MCFACT.MCFACT,V_MCFACT.MCFACT):
-   def __init__(self,val,definition,nom,parent):
-      N_MCFACT.MCFACT.__init__(self,val,definition,nom,parent)
+class MCFACT(I_MCFACT.MCFACT,N_MCFACT.MCFACT,X_MCFACT,V_MCFACT.MCFACT):
+   def __init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=None):
+      N_MCFACT.MCFACT.__init__(self,val,definition,nom,parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
       V_MCFACT.MCFACT.__init__(self)
index 7ba5c53f6ad8f199cafeab85cdaa08e944bc9b29..5554f5ecc330f28d94446ca248d8f972a9e43f3f 100644 (file)
@@ -21,7 +21,9 @@ from __future__ import absolute_import
 from Noyau import N_MCLIST
 from Validation import V_MCLIST
 from Ihm import I_MCLIST
+from Efi2Xsd.MCAccasXsd  import X_MCLIST
 
-class MCList(I_MCLIST.MCList,N_MCLIST.MCList,V_MCLIST.MCList):
+
+class MCList(I_MCLIST.MCList,N_MCLIST.MCList,X_MCLIST,V_MCLIST.MCList):
    def __init__(self):
       N_MCLIST.MCList.__init__(self)
index cc246e89af9a3cd7f942f5a608181a8cc8d1cb36..a3c63cb607c053260164227daaf4060dee33ba23 100644 (file)
@@ -21,8 +21,10 @@ from __future__ import absolute_import
 from Noyau import N_MCSIMP
 from Validation import V_MCSIMP
 from Ihm import I_MCSIMP
+from Efi2Xsd.MCAccasXsd  import X_MCSIMP
 
-class MCSIMP(I_MCSIMP.MCSIMP,N_MCSIMP.MCSIMP,V_MCSIMP.MCSIMP):
-   def __init__(self,val,definition,nom,parent):
-      N_MCSIMP.MCSIMP.__init__(self,val,definition,nom,parent)
+class MCSIMP(I_MCSIMP.MCSIMP,N_MCSIMP.MCSIMP,X_MCSIMP,V_MCSIMP.MCSIMP):
+   def __init__(self,val,definition,nom,parent,objPyxbDeConstruction=None):
+   #def __init__(self,val,definition,nom,parent,objPyxbDeConstruction) quand cela sera correct dans les update_etape. pour l instant on laisse le defaut a None : 9 Aout 18:
+      N_MCSIMP.MCSIMP.__init__(self,val,definition,nom,parent,objPyxbDeConstruction)
       V_MCSIMP.MCSIMP.__init__(self)
index 7c1e59e48bba6a91a03091143328882e1718028c..c1a4f0a54505203dc5bd5cf510c686d1342b1fa4 100644 (file)
 from __future__ import absolute_import
 from Noyau import N_OPER
 from Ihm import I_ENTITE
-from . import A_ETAPE 
+from Accas import A_ETAPE 
+from Efi2Xsd.AccasXsd  import X_OPER
 
-class OPER(N_OPER.OPER,I_ENTITE.ENTITE):
+
+class OPER(N_OPER.OPER,X_OPER,I_ENTITE.ENTITE):
    class_instance=A_ETAPE.ETAPE
    def __init__(self,*tup,**args):
       I_ENTITE.ENTITE.__init__(self)
index a920913d4f0455635a2b516770b7a53297344a39..0ae8bb484094180106f5648a19516d7850c4ca0e 100644 (file)
 from __future__ import absolute_import
 from Noyau import N_PROC
 from Ihm import I_ENTITE
-from . import A_PROC_ETAPE 
+from Accas import A_PROC_ETAPE 
+from Efi2Xsd.AccasXsd import X_PROC
 
-class PROC(N_PROC.PROC,I_ENTITE.ENTITE):
+class PROC(N_PROC.PROC,X_PROC,I_ENTITE.ENTITE):
    class_instance=A_PROC_ETAPE.PROC_ETAPE
    def __init__(self,*tup,**args):
-      #print tup
-      #print args
+      #print (tup)
+      #print (args)
       I_ENTITE.ENTITE.__init__(self)
       N_PROC.PROC.__init__(self,*tup,**args)
 
index b3ab7529f0739e99ff40826071b5751cbb204b0d..7db1db8bf055e7f4ac034b11cf2961ad56ec4629 100644 (file)
@@ -21,9 +21,11 @@ from __future__ import absolute_import
 from Noyau import N_PROC_ETAPE
 from Validation import V_PROC_ETAPE
 from Ihm import I_PROC_ETAPE
+from Efi2Xsd.MCAccasXsd  import X_MCCOMPO
 
 class PROC_ETAPE(I_PROC_ETAPE.PROC_ETAPE,
                  V_PROC_ETAPE.PROC_ETAPE,
+                 X_MCCOMPO,
                  N_PROC_ETAPE.PROC_ETAPE):
    def __init__(self,oper=None,args={}):
       N_PROC_ETAPE.PROC_ETAPE.__init__(self,oper=oper,args=args)
index 9a438d15fcc537649b9f9e4626327347560a28a6..584627ed3a37dbccc58e9ffc021dcbc505ca2638 100644 (file)
 from __future__ import absolute_import
 from Noyau import N_SIMP
 from Ihm import I_ENTITE
-from . import A_MCSIMP
+from Accas import A_MCSIMP
+from Efi2Xsd.AccasXsd import X_SIMP
 
-class SIMP(N_SIMP.SIMP,I_ENTITE.ENTITE):
+class SIMP(N_SIMP.SIMP,X_SIMP,I_ENTITE.ENTITE):
    class_instance=A_MCSIMP.MCSIMP
    def __init__(self,*tup,**args):
       #print tup
index 2ecd6000cae8bcc3f48979c51dfde05329b0a888..164af95d68d0c9e91b7548e56594bdc61f1d7678 100644 (file)
@@ -118,6 +118,7 @@ endif ( NOT ${_VALIDOPT} )
 add_subdirectory ( Accas )
 add_subdirectory ( Aide )
 add_subdirectory ( Editeur )
+add_subdirectory ( Efi2Xsd )
 add_subdirectory ( Extensions )
 add_subdirectory ( Ihm )
 install ( DIRECTORY InterfaceQT4 DESTINATION ${CMAKE_INSTALL_PREFIX} )
index df1880b9164df2f2e0c374ebcb0cd89517f7bf74..89c601c594f53c4c63503bc5600d697cbb07f369 100644 (file)
@@ -27,7 +27,7 @@ import codecs,types
 
 from Extensions.i18n import tr
 
-def substract_list(liste1,liste2):
+def substractList(liste1,liste2):
   """ 
       Enleve tous les elements de liste2 presents dans liste1 et retourne liste1
   """
@@ -38,7 +38,7 @@ def substract_list(liste1,liste2):
       pass
   return liste1
 
-def get_rep_user(dir):
+def getRepUser(dir):
   """
       Determine sur quelle plate-forme s'execute Eficas et recherche
       le repertoire de l'utilisateur /$home/Eficas_install
@@ -92,7 +92,7 @@ def stripPath(pathAndFile):
     """ Return filename.ext if path/filename.ext is given """
     return os.path.split(pathAndFile)[1]
 
-def init_rep_cata_dev(fic_cata,rep_goal):
+def initRep_CataDev(fic_cata,rep_goal):
   """ 
       Initialise le repertoire des catalogues developpeurs (chemin d'acces donne
       dans le fichier eficas.ini cad :
@@ -106,7 +106,7 @@ def init_rep_cata_dev(fic_cata,rep_goal):
   try :
     if not os.path.isdir(rep_goal) :
       os.mkdir(rep_goal)
-    #texte_entete = get_entete_cata(fic_cata)
+    #texte_entete = getEnteteCata(fic_cata)
     texte_entete=""
     # rep_goal doit contenir les catalogues du developpeur sous la forme *.capy
     # il faut creer le catalogue developpeur par concatenation de entete,declaration_concepts
@@ -127,7 +127,7 @@ def init_rep_cata_dev(fic_cata,rep_goal):
     traceback.print_exc()
     print ( tr("Impossible de transferer les fichiers requis dans : %s", str(rep_goal)))
 
-def get_entete_cata(fic_cata):
+def getEnteteCata(fic_cata):
   """ Retrouve l'entete du catalogue """
   l_lignes = open(fic_cata,'r').readlines()
   txt = ''
index 09369dc267e8f4ad641ef5621ce2af88d720e00b..21c2408de15de784e23dc7f1b86999bb6063c242 100644 (file)
@@ -33,7 +33,7 @@ from six.moves.reprlib import Repr
 from copy import copy,deepcopy
 
 # import du chargeur de composants
-from .comploader import make_objecttreeitem
+from .comploader import makeObjecttreeitem
 from Ihm import CONNECTOR
 from Extensions.i18n import tr
 from Extensions.eficas_exception import EficasException
@@ -65,29 +65,29 @@ class TreeItem(object):
     def __init__(self):
         """Constructor.  Do whatever you need to do."""
 
-    def GetText(self):
+    def getText(self):
         """Return text string to display."""
 
-    def GetLabelText(self):
+    def getLabelText(self):
         """Return label text string to display in front of text (if any)."""
 
     expandable = None
 
-    def _IsExpandable(self):
+    def _isExpandable(self):
         """Do not override!  Called by TreeNode."""
         if self.expandable is None:
-            self.expandable = self.IsExpandable()
+            self.expandable = self.isExpandable()
         return self.expandable
 
-    def IsExpandable(self):
+    def isExpandable(self):
         """Return whether there are subitems."""
         return 1
 
-    def _GetSubList(self):
+    def _getSubList(self):
         """Do not override!  Called by TreeNode."""
-        if not self.IsExpandable():
+        if not self.isExpandable():
             return []
-        sublist = self.GetSubList()
+        sublist = self.getSubList()
         if not sublist:
             self.expandable = 0
         return sublist
@@ -98,16 +98,16 @@ class TreeItem(object):
     def SetText(self, text):
         """Change the item's text (if it is editable)."""
 
-    def GetIconName(self):
+    def getIconName(self):
         """Return name of icon to be displayed normally."""
 
-    def GetSelectedIconName(self):
+    def getSelectedIconName(self):
         """Return name of icon to be displayed when selected."""
 
-    def GetSubList(self):
+    def getSubList(self):
         """Return list of items forming sublist."""
 
-    def OnDoubleClick(self):
+    def onDoubleClick(self):
         """Called on a double-click on the item."""
 
 class Delegate(object):
@@ -115,11 +115,11 @@ class Delegate(object):
         self.object = delegate
         self.__cache = {}
 
-    def setdelegate(self, delegate):
+    def setDelegate(self, delegate):
         self.resetcache()
         self.object = delegate
 
-    def getdelegate(self):
+    def getDelegate(self):
         return self.object
 
     def __getattr__(self, name):
@@ -143,7 +143,7 @@ class Delegate(object):
 
 
 class ObjectTreeItem(TreeItem,Delegate):
-    def __init__(self, appli, labeltext, object, setfunction=None):
+    def __init__(self, appli, labeltext, object, setFunction=None):
         self.labeltext = labeltext
         self.appli = appli
         # L'objet delegue est stocke dans l'attribut object
@@ -156,7 +156,7 @@ class ObjectTreeItem(TreeItem,Delegate):
         # On cache l'objet initial (pour destruction eventuelle
         # ulterieure)
         self._object = object
-        self.setfunction = setfunction
+        self.setFunction = setFunction
         self.expandable = 1
         self.sublist=[]
         self.init()
@@ -182,11 +182,11 @@ class ObjectTreeItem(TreeItem,Delegate):
         object = self._object.copy()
         appli = copy(self.appli)
         labeltext = copy(self.labeltext)
-        fonction = deepcopy(self.setfunction)
-        item = make_objecttreeitem(appli,labeltext,object,fonction)
+        fonction = deepcopy(self.setFunction)
+        item = makeObjecttreeitem(appli,labeltext,object,fonction)
         return item
     
-    def isactif(self):
+    def isActif(self):
         if hasattr(self.object,'actif'):
             return self.object.actif
         else:
@@ -199,7 +199,7 @@ class ObjectTreeItem(TreeItem,Delegate):
         """
         pass
 
-    def GetLabelText(self):
+    def getLabelText(self):
         """ Retourne 3 valeurs :
         - le texte a afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
@@ -208,24 +208,24 @@ class ObjectTreeItem(TreeItem,Delegate):
         # None --> fonte et couleur par defaut
         return self.labeltext,None,None
 
-    def get_nature(self) :
+    def getNature(self) :
         """ 
             Retourne la nature de l'item et de l'objet
         """ 
         return self.object.nature
 
-    def get_regles(self):
+    def getRegles(self):
         """ retourne les regles de l'objet pointe par self """
-        return self.object.get_regles()
+        return self.object.getRegles()
     
-    def get_liste_mc_presents(self):
+    def getListeMcPresents(self):
         """ Retourne la liste des mots-cles fils de l'objet pointe par self """
-        return self.object.liste_mc_presents()
+        return self.object.listeMcPresents()
     
-    def get_val(self):
+    def getVal(self):
         """ Retourne le nom de la valeur de l'objet pointe par self dans le cas
             ou celle-ci est un objet (ASSD) """
-        return self.object.getval()
+        return self.object.getVal()
     
     def get_definition(self):
         """ 
@@ -233,45 +233,45 @@ class ObjectTreeItem(TreeItem,Delegate):
         """
         return self.object.definition
 
-    def get_liste_mc_ordonnee(self,liste,dico):
+    def getListeMcOrdonnee(self,liste,dico):
         """ retourne la liste ordonnee (suivant le catalogue) brute des mots-cles
             d'une entite composee dont le chemin complet est donne sous forme
             d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
             il faut encore rearranger cette liste (certains mots-cles deja
             presents ne doivent plus etre proposes, regles ...)"""
-        return self.object.get_liste_mc_ordonnee(liste,dico)
+        return self.object.getListeMcOrdonnee(liste,dico)
 
-    def get_liste_mc_ordonnee_brute(self,liste,dico):
+    def getListeMcOrdonneeBrute(self,liste,dico):
         """
         retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
         d'une entite composee dont le chemin complet est donne sous forme
         d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
         """
-        return self.object.get_liste_mc_ordonnee_brute(liste,dico)
+        return self.object.getListeMcOrdonneeBrute(liste,dico)
    
-    def get_genealogie(self):
+    def getGenealogie(self):
         """
         Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE)
         de l'objet pointe par self
         """
-        return self.object.get_genealogie()
+        return self.object.getGenealogie()
 
-    def get_index_child(self,nom_fils):
+    def getIndexChild(self,nom_fils):
         """
         Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
         Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
         le nouveau mot-cle
         """
-        return self.object.get_index_child(nom_fils)
+        return self.object.getIndexChild(nom_fils)
 
-    def get_index_child_old(self,nom_fils):
+    def getIndexChild_old(self,nom_fils):
         """
         Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
         Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter
         le nouveau mot-cle
         """
-        liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(self.get_genealogie(),self.get_jdc().cata_ordonne_dico)
-        liste_noms_mc_presents = self.object.liste_mc_presents()
+        liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(self.getGenealogie(),self.getJdc().cata_ordonne_dico)
+        liste_noms_mc_presents = self.object.listeMcPresents()
         l=[]
         for nom in liste_noms_mc_ordonnee:
             if nom in liste_noms_mc_presents or nom == nom_fils:
@@ -279,24 +279,24 @@ class ObjectTreeItem(TreeItem,Delegate):
         # l contient les anciens mots-cles + le nouveau dans l'ordre
         return l.index(nom_fils)
         
-    def append_child(self,name,pos=None):
+    def appendChild(self,name,pos=None):
         """
           Permet d'ajouter un item fils a self
         """
         if pos == 'first':
             index = 0
         elif pos == 'last':
-            index = len(self.liste_mc_presents())
+            index = len(self.listeMcPresents())
         elif type(pos) == int :
             # la position est fixee 
             index = pos
         elif type(pos) == types.InstanceType:
             # pos est un item. Il faut inserer name apres pos
-            index = self.get_index(pos) +1
+            index = self.getIndex(pos) +1
         elif type(name) == types.InstanceType:
-            index = self.get_index_child(name.nom)
+            index = self.getIndexChild(name.nom)
         else:
-            index = self.get_index_child(name)
+            index = self.getIndexChild(name)
         return self.addobject(name,index)
 
     def appendBrother(self,name,pos='after'):
@@ -304,7 +304,7 @@ class ObjectTreeItem(TreeItem,Delegate):
         Permet d'ajouter un frere a self
         par defaut on l'ajoute apres self
         """
-        index = self._object.parent.get_index(self.getObject())
+        index = self._object.parent.getIndex(self.getObject())
         if pos == 'before':
             index = index
         elif pos == 'after':
@@ -314,15 +314,11 @@ class ObjectTreeItem(TreeItem,Delegate):
             return
         return self.parent.addobject(name,index)
 
-    def get_nom_etape(self):
-        """Retourne le nom de self """
-        return self.object.get_nom_etape()
-
-    def get_copie_objet(self):
+    def getCopieObjet(self):
         """ Retourne une copie de l'objet pointe par self """
         return self.object.copy()
     
-    def get_position(self):
+    def getPosition(self):
         """ Retourne la valeur de l'attribut position de l'objet pointe par self """
         definition = self.get_definition()
         try:
@@ -330,79 +326,79 @@ class ObjectTreeItem(TreeItem,Delegate):
         except AttributeError:
             return 'local'
         
-    def get_nom(self):
+    def getNom(self):
         """ Retourne le nom de l'objet pointe par self """
         return self.object.nom
 
-    def get_jdc(self):
+    def getJdc(self):
         """ Retourne le jdc auquel appartient l'objet pointe par self """
         return self.object.jdc
     
-    def get_valeur(self):
+    def getValeur(self):
         """ Retourne la valeur de l'objet pointe par self """
         return self.object.valeur
 
-    def get_cr(self):
+    def getCr(self):
         """ Retourne le compte-rendu CR de self """
         return self.object.report()
 
-    def get_objet_commentarise(self):
+    def getObjetCommentarise(self):
         """
         Cette methode retourne un objet commentarise
         representatif de self.object
         --> a surcharger par les differents items
         """
         raise EficasException("MESSAGE AU DEVELOPPEUR : il faut \
-                                 surcharger la methode get_objet_commentarise() \
+                                 surcharger la methode getObjetCommentarise() \
                                  pour la classe %s", self.__class__.__name__)
         
-    def isvalid(self):
+    def isValid(self):
         """ Retourne 1 si l'objet pointe par self est valide, 0 sinon"""
-        return self.object.isvalid()
+        return self.object.isValid()
 
-    def iscopiable(self):
+    def isCopiable(self):
         """
         Retourne 1 si l'objet est copiable, 0 sinon
         Par defaut retourne 0
         """
         return 0
     
-    def get_mc_presents(self):
+    def getMcPresents(self):
         """ Retourne le dictionnaire des mots-cles presents de l'objet pointe par self """
-        return self.object.dict_mc_presents()
+        return self.object.dictMcPresents()
 
-    def verif_condition_regles(self,l_mc_presents):
-        return self.object.verif_condition_regles(l_mc_presents)
+    def verifConditionRegles(self,l_mc_presents):
+        return self.object.verifConditionRegles(l_mc_presents)
 
-    def get_fr(self):
+    def getFr(self):
         """ Retourne le fr de l'objet pointe par self """
         try:
-            return self.object.get_fr()
+            return self.object.getFr()
         except:
             return ""
 
-    def get_docu(self):
+    def getDocu(self):
         """ Retourne la cle de doc de l'objet pointe par self """
-        return self.object.get_docu()
+        return self.object.getDocu()
 
-    def set_valeur(self,new_valeur):
+    def setValeur(self,new_valeur):
         """ Remplace la valeur de l'objet pointe par self par new_valeur """
-        return self.object.set_valeur(new_valeur)
+        return self.object.setValeur(new_valeur)
         
-    def GetText(self):
+    def getText(self):
         return myrepr.repr(self.object)
     
-    def GetIconName(self):
-        if not self.IsExpandable():
+    def getIconName(self):
+        if not self.isExpandable():
             return "python"
 
     def IsEditable(self):
-        return self.setfunction is not None
+        return self.setFunction is not None
 
     def SetText(self, text):
         try:
             value = eval(text)
-            self.setfunction(value)
+            self.setFunction(value)
         except:
             pass
 # Modif de ma part CCar : je ne comprend pas a quoi ca sert
@@ -410,10 +406,10 @@ class ObjectTreeItem(TreeItem,Delegate):
       #  else:
       #      self.object = value
 
-    def IsExpandable(self):
+    def isExpandable(self):
         return 1
         
-    def GetSubList(self):
+    def getSubList(self):
         keys = dir(self.object)
         sublist = []
         for key in keys:
@@ -421,7 +417,7 @@ class ObjectTreeItem(TreeItem,Delegate):
                 value = getattr(self.object, key)
             except AttributeError:
                 continue
-            item = make_objecttreeitem(
+            item = makeObjecttreeitem(
                 self.appli,
                 str(key) + " =",
                 value,
@@ -430,27 +426,28 @@ class ObjectTreeItem(TreeItem,Delegate):
             sublist.append(item)
         return sublist
 
-    def wait_fichier_init(self):
+    # a piori inutile PN 06 11 17
+    #def wait_fichier_init(self):
         """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation
         (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """
-        return self.object.definition.fichier_ini
+    #    return self.object.definition.fichier_ini
 
-    def make_objecttreeitem(self,appli,labeltext, object, setfunction=None):
+    def makeObjecttreeitem(self,appli,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 make_objecttreeitem(appli,labeltext,object,setfunction)
+        return makeObjecttreeitem(appli,labeltext,object,setFunction)
 
     #def __del__(self):
     #    print "__del__",self
 
 class AtomicObjectTreeItem(ObjectTreeItem):
-    def IsExpandable(self):
+    def isExpandable(self):
         return 0
 
 class SequenceTreeItem(ObjectTreeItem):
-    def IsExpandable(self):
+    def isExpandable(self):
         return len(self._object) > 0
 
     def __len__(self) :
@@ -459,40 +456,40 @@ class SequenceTreeItem(ObjectTreeItem):
     def keys(self):
         return list(range(len(self._object)))
 
-    def GetIconName(self):
-        if self._object.isvalid():
+    def getIconName(self):
+        if self._object.isValid():
           return "ast-green-los"
-        elif self._object.isoblig():
+        elif self._object.isOblig():
           return "ast-red-los"
         else:
           return "ast-yel-los"
 
-    def ajout_possible(self):
-        return self._object.ajout_possible()
+    def ajoutPossible(self):
+        return self._object.ajoutPossible()
 
-    def get_index(self,child):
+    def getIndex(self,child):
         """ Retourne le numero de child dans la liste des enfants de self """
-        return self._object.get_index(child.getObject())
+        return self._object.getIndex(child.getObject())
 
-    def GetText(self):
+    def getText(self):
       return  "    "
 
-    def additem(self,obj,pos):
+    def addItem(self,obj,pos):
         self._object.insert(pos,obj)
-        item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj)
+        item = self.makeObjecttreeitem(self.appli, obj.nom + ":", obj)
         return item
 
-    def suppitem(self,item):
+    def suppItem(self,item):
         try :
             self._object.remove(item.getObject())
             # la liste peut etre retournee vide !
             message = "Mot-clef " + item.getObject().nom + " supprime"
-            self.appli.affiche_infos(message)
+            self.appli.afficheInfos(message)
             return 1
         except:
             return 0
 
-    def GetSubList(self):
+    def getSubList(self):
         isublist=iter(self.sublist)
         liste=self._object.data
         iliste=iter(liste)
@@ -507,9 +504,9 @@ class SequenceTreeItem(ObjectTreeItem):
            for obj in iliste:
               if obj is old_obj:break
               # nouvel objet : on cree un nouvel item
-              def setfunction(value, object=obj):
+              def setFunction(value, object=obj):
                   object=value
-              it = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+              it = self.makeObjecttreeitem(self.appli, 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 e73d7454dcc0a219af512cfafe2bccaefe13b5a1..6d42efa04bf8f98753dfc6cc717a0a3abfa2ee93 100644 (file)
@@ -43,7 +43,7 @@ class TroisDPilote(object):
       if format in generator.plugins :
          # Le generateur existe on l'utilise
          g=generator.plugins[format]()
-         g.init_jdc(self.node.get_jdc())
+         g.initJdc(self.node.getJdc())
          texte=g.gener(self.node)
       else:
          print ("Le generateur n'a pas ete trouve")
index 90477500705c91e8c96e0341630bcf8f1e6c54cd..c99742828a92bdb088b33db2e92171c68cf544f2 100644 (file)
@@ -34,7 +34,7 @@ from Noyau.N_CR import CR
 from six.moves import range
 
 #
-__Id__="$Id: analyse_catalogue.py,v 1.9.8.1.2.1.2.6 2014-01-23 09:14:44 pnoyret Exp $"
+__Id__="$Id: analyseCatalogue.py,v 1.9.8.1.2.1.2.6 2014-01-23 09:14:44 pnoyret Exp $"
 __version__="$Name:  $"
 #
 l_noms_commandes = ['OPER','PROC','MACRO','FORM']
@@ -42,20 +42,20 @@ l_noms_composes=['FACT','BLOC','NUPL','FORM']
 l_noms_simples=['SIMP',]
 l_noms=l_noms_composes+l_noms_simples
 
-def elimine_commentaires(text):
+def elimineCommentaires(text):
         """ Elimine les lignes de commentaires dans text
         Attention : supprime sauvagement tous les caracteres entre # et le retour chariot ..."""
         comments = re.compile(r'#[^\n]*')
         return comments.sub(u'',text)
 
-def cherche_nom(text):
+def chercheNom(text):
         Whitespace = r'[ \f\t]*'
         Name = r'[a-zA-Z_]\w*'
         myexpr = '(u'+Name+')'+Whitespace+'='+Whitespace+'$'
         a=re.search(myexpr,text)
         return a.group(1)
 
-def cherche_args(text):
+def chercheArgs(text):
         text = text.strip()
         longueur = len(text)
         if text[0] != '(u':
@@ -80,7 +80,7 @@ def cherche_args(text):
                                 return text[1:i],''
 
 class ENTITE(object):
-        def cherche_enfants(self):
+        def chercheEnfants(self):
                 try :
                         self.text = self.text.strip()
                         liste = re.split(u'=',self.text,1)
@@ -89,19 +89,19 @@ class ENTITE(object):
                                 reste=liste[1]
                                 reste = reste.strip()
                                 if reste[0:4] in l_noms :
-                                        nom_mc = cherche_nom(arg1+'=')
-                                        arg_mc, self.text = cherche_args(reste[4:])
-                                        self.cree_mc(nom_mc,arg_mc,reste[0:4])
+                                        nom_mc = chercheNom(arg1+'=')
+                                        arg_mc, self.text = chercheArgs(reste[4:])
+                                        self.creeMc(nom_mc,arg_mc,reste[0:4])
                                 else :
                                         self.text = reste
-                                self.cherche_enfants()
+                                self.chercheEnfants()
                         else :
                                 # pas de = rencontre
                                 return
                 except Exception as e:
-                        self.cr.fatal(tr("Erreur rencontree dans recherche_enfants : %s", e.__str()))
+                        self.cr.fatal(tr("Erreur rencontree dans rechercheEnfants : %s", e.__str()))
                 
-        def cree_mc(self,nom_mc,arg_mc,test):
+        def creeMc(self,nom_mc,arg_mc,test):
                 if test in l_noms_composes :
                         mc = FACT_CATA(nom_mc,arg_mc,self)
                         self.children.append(mc)
@@ -111,7 +111,7 @@ class ENTITE(object):
                 else :
                         print (tr("Erreur dans la creation du mot-cle : %s", nom_mc) )
 
-        def construit_liste_dico(self):
+        def construitListeDico(self):
                 l=[]
                 d={}
                 if len(self.children)==0:
@@ -136,8 +136,8 @@ class COMMANDE_CATA(ENTITE) :
                 self.cr = CR()
                 self.cr.debut = "Debut commande %s" %self.nom
                 self.cr.fin = "Fin commande %s" %self.nom
-                self.cherche_enfants()
-                self.construit_liste_dico()
+                self.chercheEnfants()
+                self.construitListeDico()
                 parent.cr.add(self.cr)
 
         def affiche(self):
@@ -168,8 +168,8 @@ class FACT_CATA(ENTITE) :
                 self.cr = CR()
                 self.cr.debut = "Debut mot-cle facteur ou bloc %s" %self.nom
                 self.cr.fin = "Fin mot-cle facteur ou bloc %s" %self.nom
-                self.cherche_enfants()
-                self.construit_liste_dico()
+                self.chercheEnfants()
+                self.construitListeDico()
                 parent.cr.add(self.cr)
 
         def affiche(self,ind):
@@ -187,11 +187,11 @@ class CATALOGUE_CATA(object):
                 self.cr = CR()
                 self.cr.debut = "Debut compte-rendu catalogue %s" %self.fichier
                 self.cr.fin = "Fin compte-rendu catalogue %s" %self.fichier
-                self.ouvrir_fichier()
+                self.ouvrirFichier()
                 self.liste_commandes=[]
                 self.liste_textes_commandes=[]
 
-        def ouvrir_fichier(self):
+        def ouvrirFichier(self):
                 try :
                         f=open(self.fichier,'r')
                         self.texte_complet=f.read()
@@ -200,14 +200,14 @@ class CATALOGUE_CATA(object):
                         print((tr("Impossible d'ouvrir le fichier : %s ", str(self.fichier))))
                         self.cr.fatal(tr("Impossible d'ouvrir le fichier : %s ", str(self.fichier)))
 
-        def constr_list_txt_cmd(self,text):
-                text = elimine_commentaires(text)
+        def constrListTxtCmd(self,text):
+                text = elimineCommentaires(text)
                 pattern = '\) *;'
                 liste=re.split(pattern,text)
                 for i in range(0,len(liste)-1):
                         self.liste_textes_commandes.append(liste[i]+')')
 
-        def analyse_commande_old(self,text):
+        def analyseCommandeOld(self,text):
                 liste = re.split(u'OPER *\(u',text,1)
                 if len(liste) < 2 :
                         liste = re.split(u'PROC *\(u',text,1)
@@ -220,16 +220,16 @@ class CATALOGUE_CATA(object):
                         return
                 debut = liste[0]
                 fin = liste[1]
-                nom_cmd = cherche_nom(debut)
+                nom_cmd = chercheNom(debut)
                 if nom_cmd == 'erreur !':
                         print((tr("Erreur dans la recherche  du nom de la commande : "), debut))
-                args_cmd,toto = cherche_args(u'(u'+fin)
+                args_cmd,toto = chercheArgs(u'(u'+fin)
                 if args_cmd == 'erreur !':
                         print((tr("Erreur dans la recherche des  args de la commande :") , debut))
                 cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
                 self.liste_commandes.append(cmd)
 
-        def analyse_commande(self,text):
+        def analyseCommande(self,text):
                 for nom_cmd in l_noms_commandes:
                         liste = re.split(nom_cmd+' *\(u',text,1)
                         if len(liste) == 2 : break
@@ -241,18 +241,18 @@ class CATALOGUE_CATA(object):
                         return
                 debut = liste[0]
                 fin = liste[1]
-                nom_cmd = cherche_nom(debut)
+                nom_cmd = chercheNom(debut)
                 if nom_cmd == 'erreur !':
                         print(( tr("Erreur dans la recherche du  nom de la commande : "), debut))
-                args_cmd,toto = cherche_args(u'(u'+fin)
+                args_cmd,toto = chercheArgs(u'(u'+fin)
                 if args_cmd == 'erreur !':
                         print(( tr("Erreur dans la recherche des args de la commande : "), debut))
                         print((tr(fin)))
                 cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
                 self.liste_commandes.append(cmd)
                 
-        def analyse_texte(self,texte):
-                self.constr_list_txt_cmd(texte)
+        def analyseTexte(self,texte):
+                self.constrListTxtCmd(texte)
                 try:
                         self.parent.configure_barre(len(self.liste_textes_commandes))
                 except:
@@ -262,16 +262,16 @@ class CATALOGUE_CATA(object):
                                 self.parent.update_barre()
                         except:
                                 pass
-                        self.analyse_commande(texte_commande)
-                self.construit_liste_dico()
+                        self.analyseCommande(texte_commande)
+                self.construitListeDico()
 
-        def ecrit_lcmd(self):
+        def ecritLcmd(self):
                 f=open(u'U:\\EFICAS\\Accas\\cata.txt','w')
                 for cmd in self.liste_commandes :
                         f.write(cmd.affiche())
                 f.close()
 
-        def construit_liste_dico(self):
+        def construitListeDico(self):
                 l=[]
                 d={}
                 for cmd in self.liste_commandes:
@@ -284,26 +284,26 @@ class CATALOGUE_CATA(object):
                 """ retourne l'objet rapport du catalogue de commande """
                 return self.cr
 
-def analyse_catalogue(parent,nom_cata):
+def analyseCatalogue(parent,nom_cata):
         cata = CATALOGUE_CATA(parent,nom_cata)
-        cata.analyse_texte(cata.texte_complet)
+        cata.analyseTexte(cata.texte_complet)
         return cata
 
-def analyse_catalogue_commande(parent,nom_cata):
+def analyseCatalogueCommande(parent,nom_cata):
         cata = CATALOGUE_CATA(parent,nom_cata)
-        cata.analyse_commande(cata.texte_complet)
-        cata.construit_liste_dico()
+        cata.analyseCommande(cata.texte_complet)
+        cata.construitListeDico()
         return cata
 
 
-def make_cata_pickle(fic_cata):
+def makeCataPickle(fic_cata):
         """
         Lance l'analyse de l'ordre des mots-cles dans le catalogue dont le nom
         est passe en argument et sauvegarde ces infos dans le fichier pickle relu
         par Eficas
         """
         fic_cata_p = os.path.splitext(fic_cata)[0]+'_pickled.py'
-        cata_ordonne = analyse_catalogue(None,fic_cata)
+        cata_ordonne = analyseCatalogue(None,fic_cata)
         f = open(fic_cata_p,'w+')
         p = six.moves.cPickle.Pickler(f)
         p.dump(cata_ordonne.entites)
@@ -311,7 +311,7 @@ def make_cata_pickle(fic_cata):
         
 if __name__ == "__main__" :
         import profile
-        profile.run(u"analyse_catalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
+        profile.run(u"analyseCatalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
 
 
 
index 9faf2851fe429b9e96182fcd4561c54d0bb31d5b..95c8b43f03dca9ddc90a89f373b5025d7ad20665 100644 (file)
@@ -28,7 +28,7 @@ import re,os
 
 from Extensions.i18n import tr
 #
-__Id__="$Id: analyse_catalogue_initial.py,v 1.2.4.1.2.2.2.4 2017-04-09 14:04:44 pnoyret Exp $"
+__Id__="$Id: analyseCatalogue_initial.py,v 1.2.4.1.2.2.2.4 2017-04-09 14:04:44 pnoyret Exp $"
 __version__="$Name: V7_main $"
 #
 
@@ -38,10 +38,10 @@ class Catalogue_initial(object):
                 self.liste_commandes=[]
                 self.lignes=[]
                 self.fichier=fichier
-                self.ouvrir_fichier()
-                self.constr_list_txt_cmd()
+                self.ouvrirFichier()
+                self.constrListTxtCmd()
 
-        def ouvrir_fichier(self):
+        def ouvrirFichier(self):
                 try :
                         f=open(self.fichier,'r')
                         self.lignes=f.readlines()
@@ -49,7 +49,7 @@ class Catalogue_initial(object):
                 except :
                         print(tr("Impossible d'ouvrir le fichier : %s", str(self.fichier)))
 
-        def constr_list_txt_cmd(self):
+        def constrListTxtCmd(self):
                 pattern = '^# Ordre Catalogue '
                 for i in self.lignes :
                     if (re.search(pattern,i)):
@@ -58,14 +58,14 @@ class Catalogue_initial(object):
                         self.liste_commandes.append(i)
 
 
-def analyse_catalogue(nom_cata):
+def analyseCatalogue(nom_cata):
         cata = Catalogue_initial(nom_cata)
         return cata.liste_commandes
 
 
 if __name__ == "__main__" :
         monCata="/local/noyret/Install_Eficas/EficasQT4/Openturns_StudyOpenTURNS_Cata_Study_V4.py"
-        analyse_catalogue(monCata)
+        analyseCatalogue(monCata)
 
 
 
index 9d4d6f1741ce10b421b513ad27269e5ee9206972..0848eb1417b98c6874d44655c7c26a30c3bd8a50 100644 (file)
@@ -31,7 +31,7 @@ if __name__ == "__main__" :
 
 from Accas import NUPL
 
-def traite_entiteNUPL(entite):
+def traiteEntiteNUPL(entite):
    """
        Fonction speciale pour les nuplets (classe NUPL)
        Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc
@@ -39,7 +39,7 @@ def traite_entiteNUPL(entite):
    """
    entite.ordre_mc=[]
 
-def traite_entite(entite,liste_simp_reel):
+def traiteEntite(entite,liste_simp_reel):
    """
        Cette fonction ajoute a l'objet entite un attribut de nom ordre_mc
        qui est une liste contenant le nom des sous entites dans l'ordre 
@@ -52,16 +52,16 @@ def traite_entite(entite,liste_simp_reel):
    l=[]
    for k,v in list(entite.entites.items()):
       if isinstance(v,NUPL):
-         traite_entiteNUPL(v)
+         traiteEntiteNUPL(v)
       else:
-         traite_reel(v,liste_simp_reel)
-         traite_entite(v,liste_simp_reel)
-         traite_cache(v)
+         traiteReel(v,liste_simp_reel)
+         traiteEntite(v,liste_simp_reel)
+         traiteCache(v)
       l.append((v._no,k))
    l.sort()
    entite.ordre_mc=[ item for index, item in l ]
 
-def traite_cache(objet):
+def traiteCache(objet):
     if not hasattr(objet, "cache"): return
     if objet.cache == 0 :return
     clef=objet.nom
@@ -72,29 +72,29 @@ def traite_cache(objet):
       objet.pere.mcOblig={}
       objet.pere.mcOblig[clef]=objet.defaut
 
-def traite_reel(objet,liste_simp_reel):
+def traiteReel(objet,liste_simp_reel):
     if objet.__class__.__name__ == "SIMP":
        if ( 'R' in objet.type):
           if objet.nom not in liste_simp_reel :
              liste_simp_reel.append(objet.nom)
 
-def analyse_niveau(cata_ordonne_dico,niveau,liste_simp_reel):
+def analyseNiveau(cata_ordonne_dico,niveau,liste_simp_reel):
    """
        Analyse un niveau dans un catalogue de commandes
    """
    if niveau.l_niveaux == ():
        # Il n'y a pas de sous niveaux
        for oper in niveau.entites:
-           traite_entite(oper,liste_simp_reel)
+           traiteEntite(oper,liste_simp_reel)
            cata_ordonne_dico[oper.nom]=oper
    else:
        for niv in niveau.l_niveaux:
-           analyse_niveau(cata_ordonne_dico,niv)
+           analyseNiveau(cata_ordonne_dico,niv)
   
-def analyse_catalogue(cata):
+def analyseCatalogue(cata):
    """
       Cette fonction analyse le catalogue cata pour construire avec l'aide
-      de traite_entite la structure de donnees ordre_mc qui donne l'ordre
+      de traiteEntite la structure de donnees ordre_mc qui donne l'ordre
       d'apparition des mots cles dans le catalogue
       Elle retourne un dictionnaire qui contient toutes les commandes
       du catalogue indexees par leur nom
@@ -104,19 +104,19 @@ def analyse_catalogue(cata):
    if cata.JdC.l_niveaux == ():
        # Il n'y a pas de niveaux
        for oper in cata.JdC.commandes:
-           traite_entite(oper,liste_simp_reel)
+           traiteEntite(oper,liste_simp_reel)
            cata_ordonne_dico[oper.nom]=oper
    else:
        for niv in cata.JdC.l_niveaux:
-           analyse_niveau(cata_ordonne_dico,niv,liste_simp_reel)
+           analyseNiveau(cata_ordonne_dico,niv,liste_simp_reel)
    return cata_ordonne_dico,liste_simp_reel
 
 
 if __name__ == "__main__" :
    from Cata import cata_STA6
-   dico=analyse_catalogue(cata_STA6)
+   dico=analyseCatalogue(cata_STA6)
    #import cata_saturne
-   #dico=analyse_catalogue(cata_saturne)
+   #dico=analyseCatalogue(cata_saturne)
 
    def print_entite(entite,dec='  '):
        print (dec,entite.nom,entite.__class__.__name__)
index 1c5e7e6972b64d0ab7838a4f5b991b9ece100250..e5d3dcac2f65015cc122b378f56e3af886625289 100755 (executable)
@@ -56,7 +56,7 @@ class CatalogueXML(object):
                 self.first.append(comment)
                 self.reglesUtilisees=[]
                 self.validatorsUtilises=[]
-                self.constr_list_txt_cmd()
+                self.constrListTxtCmd()
                 self.ecrire_fichier()
 
 
@@ -70,7 +70,7 @@ class CatalogueXML(object):
                 except :
                    print(("Impossible d'ecrire le fichier : "+ str(self.fichier)))
 
-        def constr_list_txt_cmd(self):
+        def constrListTxtCmd(self):
                 mesCommandes=self.cata.JdC.commandes
                 self.commandes=ET.SubElement(self.first,'commandes')
                 for maCommande in mesCommandes:
@@ -100,7 +100,7 @@ if __name__ == "__main__" :
         import readercata
         monreadercata  = readercata.READERCATA( parent, parent )
         Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
+        monCata=monreadercata.cata
 
         monCataXML=CatalogueXML(monCata,code)
 
index 624020d68007da7c21458a22f4b28c59ccc98777..40287971f66da2b999214c4d4fb91ac200a082e0 100755 (executable)
@@ -68,7 +68,7 @@ if __name__ == "__main__" :
         import readercata
         monreadercata  = readercata.READERCATA( parent, parent )
         Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
+        monCata=monreadercata.cata
 
         monConstruitInto=ChercheInto(monCata,code)
 
index f8cc09872cc0095c42b24df0953b6efddd6a9ff6..a00f3e14947fad8d384af84585b7c960bc6032e6 100755 (executable)
@@ -70,7 +70,7 @@ if __name__ == "__main__" :
         import readercata
         monreadercata  = readercata.READERCATA( parent, parent )
         Eficas.readercata=monreadercata
-        monCata=monreadercata.cata[0]
+        monCata=monreadercata.cata
 
         monConstruitInto=ChercheInto(monCata,code)
 
index 9c823dfdfa1fd28944f68095997af456a5057828..40ba093fb3492e7997b7729d45248ce05586e0bb 100644 (file)
 
      - composants : dictionnaire de stockage des relations entre types
        d'objet du noyau et types d'item
-     - charger_composants() : fonction de chargement des composants. Retourne
+     - chargerComposants() : fonction de chargement des composants. Retourne
        le dictionnaire composants.
      - gettreeitem(object) -> type d'item : fonction qui retourne un type
        d'item correspondant au type de l'objet noyau fourni.
-     - make_objecttreeitem(appli,labeltext, object, setfunction=None) -> item : fonction qui retourne un item
+     - makeObjecttreeitem(appli,labeltext, object, setFunction=None) -> item : fonction qui retourne un item
        correspondant a l'objet noyau fourni.
 """
 # import generaux
@@ -35,22 +35,18 @@ from __future__ import absolute_import
 import os,glob,types
 
 # Dictionnaire {object : item} permettant d'associer un item a un object
-# Ce dictionnaire est renseigne par la methode charger_composants 
+# Ce dictionnaire est renseigne par la methode chargerComposants 
 composants = {}
 
-def charger_composants(Ihm="QT"):
+def chargerComposants(Ihm="QT"):
     """
         Cette fonction a pour but de charger tous les modules composants graphiques
         (fichiers compo*.py dans le meme repertoire que ce module )
-        et de remplir le dictionnaire composants utilise par make_objecttreeitem
+        et de remplir le dictionnaire composants utilise par makeObjecttreeitem
     """
     reper=os.path.dirname(__file__)
-    if Ihm == "TK" :
-       repertoire=reper+"/../InterfaceTK"
-       package="InterfaceTK"
-    else :
-       repertoire=reper+"/../InterfaceQT4"
-       package="InterfaceQT4"
+    repertoire=reper+"/../InterfaceQT4"
+    package="InterfaceQT4"
     listfich=glob.glob(os.path.join(repertoire, "compo*.py"))
     for fichier in listfich:
         m= os.path.basename(fichier)[:-3]
@@ -89,12 +85,11 @@ def gettreeitem(object):
     itemtype=composants[None]
     return itemtype
 
-def make_objecttreeitem(appli,labeltext, object, setfunction=None):
+def makeObjecttreeitem(appli,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)
-    #print appli,labeltext, object, setfunction
-    return c(appli,labeltext, object, setfunction)
+    return c(appli,labeltext, object, setFunction)
 
index 074adbc134129fd94f5aa36933f804e3a440698e..f1cf08b4f056cdf77c3f1cefce0c50cf86381934 100644 (file)
@@ -40,9 +40,9 @@ class listePatrons(object) :
           self.sous_menu=sous_menus[code]
        self.code=code
        self.liste={}
-       self.traite_liste()
+       self.traiteListe()
 
-    def traite_liste(self):
+    def traiteListe(self):
         if not (self.code in sous_menus) : return
         if not (os.path.exists(self.rep_patrons)) : return
         for file in os.listdir(self.rep_patrons):
index 3ff1eb860e6cab9e552d009ef01738a8fa84bc10..ebbf40a90af40519782c008a60fb6631cbecadb9 100644 (file)
@@ -34,7 +34,7 @@ qui a lui meme un include (22,ii).
 Le deuxieme bb est un jeu de commandes simple.
 
 Le troisieme est decrit dans le fichier ff de type .ini
-qui est parse par le module ConfigParser.
+qui est parse par le module Configparser.
 Chaque section du fichier decrit un jeu de commandes.
 Un include est specifie par: numero logique=nom du fichier
 Une poursuite est specifiee par: poursuite=reference a un jeu de commande 
@@ -94,7 +94,7 @@ d_env={}
 # sont stockees hierarchiquement
 #
 
-def check_comm(option, opt_str, value, parser):
+def checkComm(option, opt_str, value, parser):
     if not hasattr(parser.values,"studies"):
        parser.values.studies=[]
        parser.values.comm=[]
@@ -105,7 +105,7 @@ def check_comm(option, opt_str, value, parser):
     parser.values.current=d_study
     parser.values.studies.append(d_study)
 
-def check_poursuite(option, opt_str, value, parser):
+def checkPoursuite(option, opt_str, value, parser):
     if parser.values.comm is None:
        raise OptionValueError(tr("un fichier de commandes doit etre defini avant une poursuite %s", value))
     if not os.path.isfile(value):
@@ -116,7 +116,7 @@ def check_poursuite(option, opt_str, value, parser):
     comm["pours"]=d_study
     parser.values.current=d_study
 
-def check_include(option, opt_str, value, parser):
+def checkInclude(option, opt_str, value, parser):
     try:
        args=[int(parser.rargs[0]),parser.rargs[1]]
     except:
@@ -134,7 +134,7 @@ def check_include(option, opt_str, value, parser):
     comm[args[0]]=args[1]
 
 
-def check_jdc(config,jdc,parser,fich):
+def checkJdc(config,jdc,parser,fich):
     """
         Fonction : analyse une section de fichier .ini pour en extraire
         les informations sur les fichiers poursuite et includes
@@ -142,7 +142,7 @@ def check_jdc(config,jdc,parser,fich):
 
         parser : objet analyseur de la ligne de commande
         fich : nom du fichier .ini en cours d'analyse
-        config : objet de la classe ConfigParser permettant de parser le fichier fich
+        config : objet de la classe Configparser permettant de parser le fichier fich
         jdc : nom de la section du fichier fich a analyser
     """
     d_study={}
@@ -161,7 +161,7 @@ def check_jdc(config,jdc,parser,fich):
                                       de commandes %(v_2)s n'existe pas", \
                                       {'v_1': fich, 'v_2': comm}))
 
-          pours=check_jdc(config,p,parser,fich)
+          pours=checkJdc(config,p,parser,fich)
           pours["comm"]=comm
           d_study["pours"]=pours
           continue
@@ -181,7 +181,7 @@ def check_jdc(config,jdc,parser,fich):
 
     return d_study
 
-def check_fich(option, opt_str, fich, parser):
+def checkFich(option, opt_str, fich, parser):
     """
         Fonction : parse le fichier fich (format .ini)
         
@@ -198,7 +198,7 @@ def check_fich(option, opt_str, fich, parser):
     if not hasattr(parser.values,"studies"):
        parser.values.studies=[]
        parser.values.comm=[]
-    config = six.moves.configparser.ConfigParser()
+    config = six.moves.configparser.configparser()
     config.read([fich])
     if not config.has_option(u"jdc","jdc"):
        raise OptionValueError(tr(" jdc %s manque option jdc dans section jdc", str(fich)))
@@ -213,11 +213,11 @@ def check_fich(option, opt_str, fich, parser):
                                 %(v_2)s n'existe pas", {'v_1': fich, 'v_2': comm}))
     parser.values.comm.append(comm)
 
-    d_study=check_jdc(config,jdc,parser,fich)
+    d_study=checkJdc(config,jdc,parser,fich)
     d_study["comm"]=comm
     parser.values.studies.append(d_study)
 
-def print_pours(d_pours,dec=''):
+def printPours(d_pours,dec=''):
     # Les fichiers includes d'abord
     for k,v in list(d_pours.items()):
        if k in (u"pours","comm"):continue
@@ -226,38 +226,42 @@ def print_pours(d_pours,dec=''):
     if "pours" in d_pours:
        # Description de la poursuite
        print((tr("%(v_1)s fichier poursuite: %(v_2)s", {'v_1': dec, 'v_2': d_pours["pours"]["comm"]})))
-       print_pours(d_pours["pours"],dec=dec+"++")
+       printPours(d_pours["pours"],dec=dec+"++")
 
-def print_d_env():
+def printDEnv():
     if d_env.studies is None:return
     for study in d_env.studies:
        print((tr("nom etude : %s", study["comm"])))
-       print_pours(study,dec="++")
+       printPours(study,dec="++")
 
-def create_parser():
+def createparser():
     # creation du parser des options de la ligne de commande
     #import prefs
     parser=optparse.OptionParser(usage=tr("utilisation : %prog [options]"), version="%prog 1.13")
 
     parser.add_option(u"-j","--jdc",dest="comm",type='string',
-                    action="callback",callback=check_comm,
+                    action="callback",callback=checkComm,
                     help=tr("nom du fichier de commandes"))
 
     parser.add_option(u"-p","--poursuite", type="string",dest="pours",
-                  action="callback", callback=check_poursuite,
+                  action="callback", callback=checkPoursuite,
                   help=tr("nom du fichier poursuite"))
 
     parser.add_option(u"-i","--include", 
-                  action="callback", callback=check_include,
+                  action="callback", callback=checkInclude,
                   nargs=2, help=tr("numero d'unite suivi du nom du fichier include"))
 
     parser.add_option(u"-f","--fich", type="string",dest="fich",
-                  action="callback", callback=check_fich,
+                  action="callback", callback=checkFich,
                   help=tr("fichier decrivant une etude"))
 
     parser.add_option(u"-c","--cata", action="store", type="string",dest="cata",
                   help=tr("version de catalogue a utiliser"))
 
+    parser.add_option(u"-v","--version_cata", action="store", type="string",dest="version_cata",
+                  help=tr("version de catalogue a utiliser"))
+
+
     parser.add_option(u"-k","--kode", action="store", type="string",dest="code",
                   help=tr("nom du code a utiliser"))
 
@@ -274,7 +278,7 @@ def create_parser():
     return parser
 
 def parse(args):
-    parser=create_parser()
+    parser=createparser()
     (options,args)=parser.parse_args(args[1:])
     if not hasattr(options,"studies"):
        options.studies=[]
@@ -303,10 +307,10 @@ def parse(args):
 
     global d_env
     d_env=options
-    #print_d_env()
+    #printDEnv()
     return options
 
-def get_unit(d_study,appli):
+def getUnit(d_study,appli):
     """
        Fonction : construit et retourne un dictionnaire contenant les informations
        sur les fichiers poursuite et includes sous la forme adaptee
@@ -317,22 +321,22 @@ def get_unit(d_study,appli):
                     ...] 
 
        d_study : dictionnaire de l'etude
-       appli : objet application EFICAS (permet d'acceder aux services comme get_source)
+       appli : objet application EFICAS (permet d'acceder aux services comme getSource)
     """
-    return get_dunit(d_study,appli)
+    return getDunit(d_study,appli)
 
-def get_dunit(d_unit,appli):
+def getDunit(d_unit,appli):
     d={}
     if 'pours' in d_unit:
        # on a une poursuite
        comm=d_unit["pours"]["comm"]
-       g=get_dunit(d_unit["pours"],appli)
-       text=appli.get_source(comm)
+       g=getDunit(d_unit["pours"],appli)
+       text=appli.getSource(comm)
        d[None]=comm,text,g
 
     for k,v in list(d_unit.items()):
        if k in (u"pours","comm"): continue
-       text=appli.get_source(v)
+       text=appli.getSource(v)
        d[k]=v,text,d
 
     return d
index 49e0294fbb4057aabb9c1ab2b2f303219daad62b..4e30351f9dc4c666cc9d3c4f5fe2af38db624b07 100644 (file)
@@ -45,7 +45,7 @@ class UIINFO:
       if type(self.groupes) != tuple:
          self.groupes=(self.groupes,)
 
-def traite_commande(commande,niveau):
+def traiteCommande(commande,niveau):
     """
         Cette fonction cree l'attribut UI de l'objet commande
         a partir des informations contenues dans UIinfo
@@ -63,12 +63,12 @@ def traite_commande(commande,niveau):
         if not grp in niveau.dict_groupes: niveau.dict_groupes[grp]=[]
         niveau.dict_groupes[grp].append(commande.nom)
 
-def traite_niveau(niveau):
+def traiteNiveau(niveau):
    if niveau.l_niveaux == ():
        # Il n'y a pas de sous niveaux. niveau.entites ne contient que des commandes
        niveau.dict_groupes={}
        for oper in niveau.entites:
-           traite_commande(oper,niveau)
+           traiteCommande(oper,niveau)
        # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
        # sans doublon
        niveau.liste_groupes=list(niveau.dict_groupes.keys())
@@ -79,7 +79,7 @@ def traite_niveau(niveau):
        #print niveau.dict_groupes
    else:
        for niv in niveau.l_niveaux:
-           traite_niveau(niv)
+           traiteNiveau(niv)
 
 def traite_UIinfo(cata):
    """
@@ -95,7 +95,7 @@ def traite_UIinfo(cata):
        # dans les attributs liste_groupes et dict_groupes
        cata.JdC.dict_groupes={}
        for commande in cata.JdC.commandes:
-           traite_commande(commande,cata.JdC)
+           traiteCommande(commande,cata.JdC)
        # A la fin les cles du dictionnaire dict_groupes donnent la liste des groupes
        # sans doublon
        cata.JdC.liste_groupes=list(cata.JdC.dict_groupes.keys())
@@ -107,7 +107,7 @@ def traite_UIinfo(cata):
    else:
        # Le catalogue de commandes contient des definitions de niveau
        for niv in cata.JdC.l_niveaux:
-          traite_niveau(niv)
+          traiteNiveau(niv)
 
 
 
diff --git a/Efi2Xsd/AccasXsd.py b/Efi2Xsd/AccasXsd.py
new file mode 100755 (executable)
index 0000000..4483ad4
--- /dev/null
@@ -0,0 +1,281 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import types
+
+# CONTEXT est accessible (__init__.py de Noyau)
+
+#import raw.efficas as efficas
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+# ds l init du SIMP il manque siValide et fenetreIhm
+
+from mapDesTypes import dictSIMPEficasXML, dictSIMPXMLEficas
+from mapDesTypes import dictFACTEficasXML, dictFACTXMLEficas
+from mapDesTypes import dictPROCEficasXML, dictPROCXMLEficas
+from mapDesTypes import dictOPEREficasXML, dictOPERXMLEficas
+from mapDesTypes import dictBLOCEficasXML, dictBLOCXMLEficas
+from mapDesTypes import dictPourCast, dictNomsDesTypes
+from mapDesTypes import listeParamDeTypeTypeAttendu, listeParamDeTypeStr, dictPourCast
+from mapDesTypes import listeParamTjsSequence, listeParamSelonType
+from mapDesTypes import Tuple
+
+
+from balises import *
+
+# -----------------
+class X_definition:
+# -----------------
+
+   def getCode(self):
+       if hasattr(self,'code') : return
+       obj=self
+       while ( not hasattr(obj,'code') ): obj=obj.pere
+       self.code = obj.code
+
+   #def genealogie(self,n):
+   #    texte=self.nom
+   #    obj=self
+   #    j=1
+   #    while ( hasattr(obj,'pere') ):
+   #        texte=obj.pere.nom+'_'+texte
+   #        obj=obj.pere
+   #        j=j+1
+   #        if j > n : return (True, 'T_'+texte)
+   #    return (False, 'T_'+texte)
+
+   def definitNomDuTypePyxb(self):
+       self.aCreer = True
+       cata = CONTEXT.getCurrentCata() 
+       nom='T_'+self.nom
+       if not (nom in cata.dictTypesXSD.keys()) :
+          cata.dictTypesXSD[nom] = [self,]
+          return nom
+       self.aCreer = False
+       if nom == 'T_Consigne' : return nom
+       listePossible=cata.dictTypesXSD[nom]
+       indice=0
+       while (indice < len(listePossible)) :
+          objAComparer=listePossible[indice]
+          if self.compare(objAComparer) : return objAComparer.nomDuTypePyxb
+          indice += 1
+       self.aCreer = True
+       cata.dictTypesXSD[nom].append(self)
+       nomAlter='T_'+self.nom+'_'+str(indice)
+       return nomAlter
+
+  # def existeDeja(self,nom):
+  #     if nom in cata.dictTypesXSD.keys() :
+  #         self.aCreer = False
+  #         return cata.dictTypesXSD[nom]
+  #     else :
+  #         cata.dictTypesXSD[nom] = self
+  #         return None
+
+# ----------------------------------------
+class X_definitionComposee (X_definition):
+# ----------------------------------------
+   
+   def CreeTexteComplexeVenantDesFils(self):
+       texteComplexeVenantDesFils=""
+       for nom in self.ordre_mc:
+          mcFils = self.entites[nom]
+          mcFils.dumpXsd()
+          self.texteComplexe += mcFils.texteElt
+          self.texteSimple   += mcFils.texteSimple 
+          texteComplexeVenantDesFils += mcFils.texteComplexe
+       return texteComplexeVenantDesFils
+
+   def dumpXsd(self):
+       #print ('------------------------------------------------')
+       #print ('dumpXsd de ' , self.nom)
+       self.getCode()
+       self.nomDuTypePyxb  = self.definitNomDuTypePyxb()
+       self.texteSimple    = "" # on n ajoute pas de type simple
+
+       self.traduitMinMax()
+       # pour accepter les PROC et ...
+       # 
+       if self.aCreer :
+          self.texteComplexe = debutTypeCompo.format(self.nomDuTypePyxb,self.minOccurs,self.maxOccurs)
+          texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
+          self.texteComplexe  = texteComplexeVenantDesFils + self.texteComplexe
+          self.texteComplexe += finTypeCompo
+       else :
+          self.texteComplexe = ""
+
+       minDsSequence=0
+       if hasattr(self, 'statut') and self.statut=='f'  : minDsSequence=0
+       maxDsSequence=1
+       if self.label in ('BLOC', 'FACT'):
+          self.texteElt=eltCompoDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minDsSequence,maxDsSequence)
+       else :
+          self.texteElt=eltCompoDsSequenceSiProc.format(self.nom,self.code,self.nomDuTypePyxb)
+       #print (self.texteComplexe)
+       #print ('------------------------------------------------')
+
+   def traduitMinMax(self):
+   # ____________________
+   # valable pour bloc, proc et oper
+      self.minOccurs = 0
+      self.maxOccurs = 1
+
+   def compare(self,autreMC):
+       if self.label != autreMC.label : return False
+       for attr in (  'regles', 'fr',  'defaut', 'min' ,'max', 'position' , 'docu' ) :
+           val1=getattr(self,attr)
+           val2=getattr(autreMC,attr)
+           if val1 != val2 : return False
+       for defFille in self.entites.keys():
+           if defFille not in autreMC.entites.keys() : return False
+           if not self.entites[defFille].compare(autreMC.entites[defFille]) : return False
+       return True
+
+# ---------------------------------
+class X_FACT (X_definitionComposee):
+#--------- ------------------------
+   def traduitMinMax(self):
+       if self.max     == '**' or self.max  == float('inf') : self.maxOccurs="unbounded"
+       else :                                                 self.maxOccurs = self.max
+       self.minOccurs = self.min
+       if self.statut =='f' : self.minOccurs=0
+
+# ---------------------------------
+class X_OPER (X_definitionComposee):
+# ---------------------------------
+    pass
+
+# ----------------------------------
+class X_PROC (X_definitionComposee):
+#-----------------------------------
+    pass
+
+#-----------------------------------
+class X_BLOC (X_definitionComposee):
+#-----------------------------------
+   def dumpXsd(self):
+       #print ('------------------------------------------------')
+       #print ('dumpXsd de ' , self.nom)
+       self.getCode()
+       self.nomDuTypePyxb  = self.definitNomDuTypePyxb()
+       self.texteSimple    = "" # on n ajoute pas de type simple
+
+       # Pour les blocs le minOccurs vaut 0 et le max 1
+       if self.aCreer :
+          self.texteComplexe = debutTypeSubst.format(self.nomDuTypePyxb)
+          texteComplexeVenantDesFils=self.CreeTexteComplexeVenantDesFils()
+          self.texteComplexe  = texteComplexeVenantDesFils + self.texteComplexe
+          self.texteComplexe += finTypeSubst
+       else :
+          self.texteComplexe = ""
+
+       self.texteElt=substDsSequence.format(self.code,self.nomDuTypePyxb,0,1)
+
+       #print ('------------------------------------------------')
+
+   def compare(self,autreMC):
+       if self.label != autreMC.label : return False
+       for attr in ( 'condition', 'regles', ):
+           val1=getattr(self,attr)
+           val2=getattr(autreMC,attr)
+           if val1 != val2 : return False
+       for defFille in self.entites.keys():
+           if defFille not in autreMC.entites.keys() : return False
+           if not self.entites[defFille].compare(autreMC.entites[defFille]) : return False
+       return True
+
+
+#--------------------------------
+class X_SIMP (X_definition):
+#--------------------------------
+   def dumpXsd(self):
+       #print ('exploreObjet SIMP')
+       self.getCode()
+       self.aCreer = True
+
+       #  --> homonymie on peut utiliser genealogie
+       #self.traduitMinMax()
+       #self.traduitValMinValMax()
+       self.nomDuTypeDeBase = self.traduitType()
+       self.nomDuTypePyxb   = self.definitNomDuTypePyxb()
+       if self.aCreer == True :
+         if self.into != None:
+           self.texteSimple   =  debutTypeSimpleWithInto.format (self.nomDuTypePyxb, self.nomDuTypeDeBase)
+           for val in self.into :
+               self.texteSimple += typeSimpleWithInto.format(val)
+           self.texteSimple  += finTypeSimpleWithInto
+         else :
+           self.texteSimple     = typeSimple.format(self.nomDuTypePyxb, self.nomDuTypeDeBase)
+       else :
+         # le type existe deja
+         self.texteSimple=""
+       self.texteComplexe   = ""
+
+       # on se sert des listes si maxOccurs est > 0
+       # a gerer dans le dump
+       if self.statut =='f' : minOccurs = 0
+       else :                minOccurs = 1
+       self.texteElt = eltDsSequence.format(self.nom,self.code,self.nomDuTypePyxb,minOccurs,1)
+
+   def traduitType(self):
+       # il faut traduire le min et le max
+       # il faut ajouter les regles
+       # il faut gerer les types tuple et fichier
+
+       if hasattr(self.type[0], 'label') and self.type[0].label == "Tuple"  : return ('XXXXXXXX')
+       return dictNomsDesTypes[self.type[0]]
+  
+   def traduitValMinValMax(self):
+       self.maxInclusive=self.val_max
+       self.minInclusive=self.val_min
+       if self.val_min == float('-inf') and val_max== float('inf') : return
+       print ('il faut affiner le type du SIMP ', self.nom)
+       if self.val_max == '**' or self.val_max == float('inf') : self.maxInclusive=None
+       else : self.maxInclusive = self.val_max
+       if self.val_min == '**' or self.val_max == float('-inf') : self.maxInclusive=None
+       else : self.minInclusive = self.val_min
+       
+   def traduitMinMax(self):
+       if self.min == 1 and self.max == 1 :  return
+       print ('il faut creer une liste ' , self.nom)
+   def compare(self,autreMC):
+       if self.label != autreMC.label : return False
+       for attr in ( 'type', 'ang', 'fr', 'into', 'intoSug' , 'siValide', 'defaut', 'min' ,'max' ,'homo' ,'position' ,'val_min' , 'val_max' , 'docu' , 'validators' , 'sug' ) :
+           val1=getattr(self,attr)
+           val2=getattr(autreMC,attr)
+           if val1 != val2 : return False
+       return True
+
+#-----------------
+class X_JDC_CATA :
+#-----------------
+
+    def dumpXsd(self):
+       
+        self.texteSimple   = ""
+        self.texteComplexe = ""
+        self.nomDuTypePyxb='T_'+self.code
+        self.texteCata = debutTypeCata.format(self.nomDuTypePyxb)
+        for commande in  self.commandes :
+            commande.code=self.code
+            commande.dumpXsd()
+            self.texteSimple += commande.texteSimple
+            self.texteSimple += commande.texteComplexe
+            self.texteCata   += commande.texteElt
+        self.texteCata += finTypeCata
+        self.texteElt=eltCata.format(self.code,self.code, self.nomDuTypePyxb)
+
+        self.texteXSD  = texteDebut.format(self.code,self.code,self.code)
+        self.texteXSD += self.texteSimple
+        self.texteXSD += self.texteCata
+        self.texteXSD += self.texteElt
+        self.texteXSD += texteFin
+        #print (self.texteSimple)
+        #print (self.texteCata)
+        #print (self.texteElt)
+        print (self.texteXSD)
+   
diff --git a/Efi2Xsd/CMakeLists.txt b/Efi2Xsd/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e3ce058
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+# Installation de tous les fichiers Python du repertoire et des sous-repertoires (sauf CVS)
+install ( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+          DESTINATION ${CMAKE_INSTALL_PREFIX}
+         FILES_MATCHING PATTERN *.py
+          PATTERN CVS EXCLUDE
+       )
+
+
+### Local Variables:
+### mode: cmake
+### End:
diff --git a/Efi2Xsd/MCAccasXsd.py b/Efi2Xsd/MCAccasXsd.py
new file mode 100755 (executable)
index 0000000..993cee0
--- /dev/null
@@ -0,0 +1,455 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import traceback
+#import raw.efficas as efficas
+import types
+
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+import pyxb
+import pyxb.binding
+import pyxb.binding.basis
+#import pyxb.utils.utility
+#import pyxb.utils.domutils
+
+class X_OBJECT:
+# -------------
+
+  def deletePyxbObject(self):
+      print ('----------- deletePyxbObject', self.nom)  
+      return
+      indice = 0
+      trouve = False
+      for i in self.perePyxb.objPyxb.orderedContent(): 
+            if id(self.objPyxb) == id(i._Content__value) : trouve = True ;break
+            indice = indice + 1
+      if not trouve : print ('objet pas trouve')
+      print (self.perePyxb.objPyxb.description)
+      del self.perePyxb.objPyxb.__dict__[self.nom]
+      print (self.perePyxb.objPyxb.__delattr__)
+      #delattr(self.perePyxb.objPyxb,self.nom)
+      # PNPN
+      
+      print ('delattr', self.perePyxb.objPyxb,self.nom)
+      del self.perePyxb.objPyxb.orderedContent()[indice]
+
+
+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 or  not self.cata.modeleMetier : return
+      #print ('X_MCSIMP buildObjPyxb', self.nom, self,self.valeur)
+      #if self.nom == 'diameter' : 
+      #    traceback.print_stack()
+      #    print ('****************************************************')
+      # print ('objPyxbDeConstruction', self.objPyxbDeConstruction)
+      #if self.objPyxbDeConstruction == None : print (self.nom, ' pas de pyxb')
+      if self.objPyxbDeConstruction != None :
+        self.objPyxb = self.objPyxbDeConstruction
+        self.maClasseModeleMetier =type(self.objPyxb)
+        #print (self.maClasseModeleMetier)
+        self.objPyxbDeConstruction = None
+      else :
+        self.monNomClasseModeleMetier='T_'+self.nom
+        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)
+        elif self.definition.into != None and 'TXM' in self.definition.type  : self.objPyxb = None
+        else                   : self.objPyxb=self.maClasseModeleMetier(); 
+      self.filsPyxb=None
+      #print ('X_MCSIMP', self.nom, self.objPyxb)
+      #print ('fin X_MCSIMP', self.objPyxb, self.nom,self)
+
+
+   def setValeurObjPyxb(self,newVal):
+       print ('dans setValeurObjPyxb MCSIMP')
+       if not self.cata or  not self.cata.modeleMetier : return
+       #  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()
+       self.val=newVal
+       setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+       print ('setattr', self.perePyxb.objPyxb,self.nom)
+       trouve=False
+       indice=0
+       for i in self.perePyxb.objPyxb.orderedContent(): 
+           if isinstance(i._Content__value, self.maClasseModeleMetier) : 
+              self.perePyxb.objPyxb.orderedContent()[indice]=self.perePyxb.objPyxb.orderedContent()[-1]
+              del(self.perePyxb.objPyxb.orderedContent()[-1])
+              trouve=True
+              break
+           indice+=1
+       if not trouve : print ('Attention souci au changement de valeur de ', self.nom)
+       self.objPyxb=nvlObj
+       print ('iiiiiiiiiiiiiiiiiiiiiiiiiiiiii', nvlObj, id(nvlObj))
+       #for i in self.perePyxb.objPyxb.orderedContent(): 
+       #    print ('ds le for pour i')
+       #    print (i._Content__value)
+       #    print (id(i._Content__value))
+       #    print (type((i._Content__value)))
+       #    if id(i._Content__value) == id(self.objPyxb) : break
+       #    indexOC +=1
+
+       #maValeur = getattr(self.perePyxb.objPyxb, self.nom)
+       #print ('je change', indexOC)
+       #if isinstance(maValeur, pyxb.binding.basis.simpleTypeDefinition):
+       #if 1 :
+       #   print ('jkjkljkljklj')
+       #   setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+       #   self.perePyxb.objPyxb.orderedContent()[indexOC]=self.perePyxb.objPyxb.orderedContent()[-1]
+       #   del(self.perePyxb.objPyxb.orderedContent()[-1])
+       #print ('apres',self.nom, self.perePyxb.objPyxb.orderedContent())
+       #else :
+       #   index=0
+       #   trouve=False
+       #   try :
+       #     for i in maValeur: 
+       #       if id(i) == id(self.objPyxb) :trouve = True ; break
+       #       index=index+1
+       #     maValeur[index]=nvlObj
+       #     self.perePyxb.objPyxb.orderedContent()[indexOC]._Content__value=nvlObj
+       #   except : pass
+       #   if not trouve : print (self.nom , 'pas trouve')
+
+       #print ('arret programme'); exit()
+
+       #print ('id objPyxb',id(self.objPyxb))
+       #print ('id objPyxb[0]',id(self.objPyxb[0]))
+       #print ('id elt ', id(self.objPyxb._element), self.objPyxb._element, type(self.objPyxb._element), type(self.objPyxb._element()))
+       #print ('        perePyxb _ElementMap')
+       #print (self.perePyxb.objPyxb._ElementMap)
+       #index=0
+       #for i in self.perePyxb.objPyxb._ElementMap.keys() : 
+       #    print (id(i), ' ',  id(self.perePyxb.objPyxb._ElementMap[i]))
+           #print (dir(self.perePyxb.objPyxb._ElementMap[i]))
+       #    print (id(self.perePyxb.objPyxb._ElementMap[i]))
+#         index=index+1
+       #print ('        objPyxb monBinding id')
+       #monBinding = getattr(self.perePyxb.objPyxb, self.nom)
+       #for i in monBinding : print id(i)
+       #print ('        perePyxb orderedContent')
+       #for i in self.perePyxb.objPyxb.orderedContent(): 
+       #    print id(i._Content__value)
+       #    print (i._Content__value, type(i._Content__value))
+       #print ('        perePyxb orderedContent')
+       #for i in self.perePyxb.objPyxb.content(): print id(i)
+       
+       #print (self.perePyxb.objPyxb.orderedContent())
+       #print (monBinding)
+        
+      
+   def addPyxbObject(self, indiceDsLeContenu):
+      if not self.cata or  not self.cata.modeleMetier : return
+
+      # adherence Accas sur le parent
+      parent=self.parent
+      while (parent.isBLOC() ): parent=parent.parent
+      self.perePyxb=parent
+
+      self.monNomClasseModeleMetier='T_'+self.nom
+      self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+      nvlObj=self.maClasseModeleMetier() 
+      print ('setattr', self.perePyxb.objPyxb,self.nom)
+      setattr(self.perePyxb.objPyxb,self.nom,nvlObj)
+      tampon=self.perePyxb.objPyxb.orderedContent()[-1]
+      self.objPyxb  = nvlObj
+      indexOC=-1
+      longueur=len(self.perePyxb.objPyxb.orderedContent())
+      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
+
+
+      #for i in self.perePyxb.objPyxb.orderedContent() :
+      #    print (i._Content__value, type(i._Content__value))
+      #print ('----------------')
+
+      #print self.perePyxb.objPyxb.orderedContent()
+      #for i in  self.perePyxb.objPyxb.orderedContent():
+      #     print ('valeur de ', i)
+      #     print (i._Content__value)
+      #     print (type(i._Content__value))
+      #     if isinstance(i._Content__value, self.maClasseModeleMetier) : 
+      #        print dir(i._Content__value)
+      #        self.objPyxb = i._Content__value 
+      #        setattr(self.perePyxb.objPyxb, self.nom, nvlObj)
+      #        self.perePyxb.objPyxb.orderedContent()[indexOC]=self.perePyxb.objPyxb.orderedContent()[-1]
+      #        del(self.perePyxb.objPyxb.orderedContent()[-1])
+      #     indexOC+=1
+      #PNPNPNPNPNPNPNPNP
+
+class X_MCCOMPO(X_OBJECT) :
+# -------------------------
+# 
+   def buildObjPyxb(self,mc_list) :
+      #print ('________________________________________________')
+      #print ('X_MCCOMPO buildObjPyxb', self.nom, self, mc_list)
+      if not self.cata or  not self.cata.modeleMetier : return
+
+      self.listArg=[]
+      for objAccas in mc_list :
+        if objAccas.nature == 'MCBLOC' :
+           self.exploreBLOC(objAccas)
+        elif objAccas.nature == 'MCList' :
+           for fils in objAccas : 
+               fils.perePyxb=self
+               self.listArg.append(fils.objPyxb)
+        else :
+           self.listArg.append(objAccas.objPyxb)
+           objAccas.perePyxb=self
+           print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+
+      self.monNomClasseModeleMetier='T_'+self.nom
+      self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+      if self.objPyxbDeConstruction != None :
+        self.objPyxb = self.objPyxbDeConstruction
+        self.objPyxbDeConstruction = None
+        #print ('je passe dans le if pour ', self.nom, self.objPyxb, self)
+      else :
+        self.objPyxb=self.maClasseModeleMetier(*self.listArg)
+      #print ('Fin __________ ', self.nom, self.objPyxb)
+      #print ('X_MCCOMPO', self.nom, self.objPyxb)
+      #print ('_______________________________________')
+
+   def deletePyxbObject(self):
+      print ('******************************************')
+      print ('je passe ds deletePyxbObject pour ', self, self.nom)
+      print (self.perePyxb)
+      print (dir(self)) 
+      print ('******************************************')
+
+   def exploreBLOC(self,objAccas):
+      laListeSsLesBlocs=[]
+      for fils in objAccas.mcListe:
+        if fils.nature == 'MCBLOC' :
+           self.exploreBLOC(fils)
+        elif fils.nature == 'MCList' :
+           for objFils in fils : 
+               fils.perePyxb=self
+               self.listArg.append(fils.objPyxb)
+               #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+        else :
+           self.listArg.append(fils.objPyxb)
+           fils.perePyxb=self
+           #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+          
+   
+
+  
+class X_MCBLOC (X_MCCOMPO):
+# --------------------------
+   def buildObjPyxb(self,mc_list):
+      if not self.cata or  not self.cata.modeleMetier : return
+      # mise a none ? le bloc n a pas d existence en pyxb
+      self.perePyxb=None
+      #print ('_______________________________________')
+      #print ('X_MCBLOC buildObjPyxb', self.nom, self, mc_list)
+      # on rattache ses fils au bloc mais leur pere sera ensuite le MCCOMPO qui contient le bloc 
+      # Pas sur d en avoir besoin du filsPyxb
+      self.filsPyxb=[]
+      self.objPyxb=None
+      for objAccas in mc_list :
+         self.filsPyxb.append(objAccas.objPyxb)
+      #print (self.filsPyxb)
+      #print ('Fin ', self.nom, self.objPyxb)
+      #print ('_______________________________________')
+
+        
+       
+
+class X_MCLIST (X_MCCOMPO):
+# --------------------------
+   def buildObjPyxb(self,mc_list):
+      #print ('__________________________________________________________________')
+      #print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+      #print ('on ne fait rien pour les MCLISTs, cela sera fait dans chaque MCFACT')
+      #print ('__________________________________________________________________')
+      pass
+
+   # detruire la methode suivante
+   #def build2ObjPyxb(self,mc_list):
+   #   print ('_______________________________________')
+   #   print ('X_MCLIST buildObjPyxb traite ds X_MCLIST', self.nom, self)
+   #   if not self.cata.modeleMetier : return
+   #   self.monNomClasseModeleMetier='T_'+self.nom
+   #   self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+   #   listArg=[]
+      # MCList est une liste
+   #   for nbDeSequence in self :
+   #      for objAccas in nbDeSequence.mcListe :
+             #print (type (objAccas))
+             #print (objAccas.nom, objAccas.objPyxb, type(objAccas.objPyxb))
+            #print ( type (objAccas.objPyxb) == list )
+            #if type (objAccas.objPyxb) == list :
+                #print ('ds le if')
+   #             for fils in objAccas.objPyxb : 
+   #                listArg.append(fils.objPyxb)
+   #                fils.perePyxb=self
+                   #print (fils.nom ,' a pour pere Pyxb', self, self.nom)
+   #          else :
+   #              listArg.append(objAccas.objPyxb)
+   #              objAccas.perePyxb=self
+                 #print (objAccas.nom ,' a pour pere Pyxb', self, self.nom)
+             #listArg.append(objAccas.objPyxb)
+             #objAccas.perePyxb=self
+             #print ( objAccas.nom, ' a pour perepyxb ' , objAccas.perePyxb.nom) 
+      
+   #   print ('X_MCLIST', self.nom, self, listArg)
+   #   self.objPyxb=self.maClasseModeleMetier(*listArg)
+   #   print ('fin buildObjPyxb traite ds X_MCLIST', self.nom, self, self.objPyxb)
+   #   print ('_______________________________________')
+
+class X_MCFACT (X_MCCOMPO):
+# -------------------------
+# on gere  au niveau du MCCOMPO
+      pass
+
+
+class X_JDC (X_MCCOMPO):
+# ---------------------
+   def  __init__(self):
+      #print ('_______________________________________')
+      #print ('X_JDC buildObjPyxb',  self)
+      if not self.cata or  not self.cata.modeleMetier : return
+      self.monNomClasseModeleMetier=self.code
+      self.maClasseModeleMetier=getattr(self.cata.modeleMetier,self.monNomClasseModeleMetier)
+      self.objPyxb=self.maClasseModeleMetier()
+      pyxb.GlobalValidationConfig._setContentInfluencesGeneration(pyxb.GlobalValidationConfig.ALWAYS)
+      pyxb.GlobalValidationConfig._setInvalidElementInContent(pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+      pyxb.GlobalValidationConfig._setOrphanElementInContent(pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+      #print ('fin buildObjPyxb _______________________________________')
+
+   def enregistreEtapePyxb(self,etape):
+     # OK seulement si sequence (choice ? ...)
+      if not self.cata.modeleMetier : return
+      print ('enregistreEtapePyxb' , etape)
+      self.objPyxb.append(etape.objPyxb)
+      etape.perePyxb = self
+      #self.toXml()
+
+   def toXml(self):
+      if not self.cata.modeleMetier : return
+      print ('***************',self.objPyxb,'***************',)
+      print ('***************',self.objPyxb.orderedContent(),'***************',)
+      print(self.objPyxb.toDOM().toprettyxml())
+      print(self.objPyxb.toxml())
+      return (self.objPyxb.toDOM().toprettyxml())
+        
+
+   def analyseFromXML(self):
+      print ("je suis ds analyseFromXML -- > appel ds analyse de I_JDC.py")
+      if self.procedure == "" : return
+      self.objPyxb=self.cata.modeleMetier.CreateFromDocument(self.procedure)
+      for objEtape in self.objPyxb.content():
+          objEtape.dictArgs= (self.pyxbToDict(objEtape))
+          objEtape.monNomClasseAccas=objEtape._ExpandedName.localName()
+          objEtape.monNomClasseAccas=objEtape.monNomClasseAccas[2:]
+          objEtape.dictPyxb['objEnPyxb']=objEtape
+          objEtape.dictArgs['dicoPyxbDeConstruction']=objEtape.dictPyxb
+          maClasseAccas=getattr(self.cata,objEtape.monNomClasseAccas)
+          objAccasEtape=maClasseAccas(**(objEtape.dictArgs))
+          # attention objAccasEtape = None normal (cf buildSd)
+          #print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
+          #print (objEtape , type(objEtape))
+          #print (objEtape.dictPyxb)
+          #print (maClasseAccas)
+          #print (objAccasEtape)
+          #print (objEtape.monNomClasseAccas, type(objEtape.monNomClasseAccas))
+          #print (objEtape._ExpandedName, type(objEtape._ExpandedName))
+          #print (objEtape.dictPyxb[u'experience'])
+          #print (objEtape.dictArgs)
+          #print (objEtape.dictPyxb)
+          #print ( 'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh')
+          #exit()
+      
+
+   def pyxbToDict(self,objAAnalyser):
+    # la transformation de l objAAnalyser en type lu par eficas ne fonctionne pas pour tout
+    # faudrait - il travailler sur les types des objets ?
+    # c est a revoir -> fonction cast a prevoir ds les 2 sens
+    if objAAnalyser is None: return
+    #print ('debut pour ',objAAnalyser)
+    dictArgs = {}
+    if isinstance(objAAnalyser, pyxb.binding.basis.simpleTypeDefinition): 
+       objAAnalyser.dictPyxb=objAAnalyser
+       #print (objAAnalyser.dictPyxb , type(objAAnalyser.dictPyxb))
+       if isinstance(objAAnalyser, pyxb.binding.basis.enumeration_mixin):    return str(objAAnalyser)
+       if isinstance(objAAnalyser, types.StringTypes):  return str(objAAnalyser)
+       if isinstance(objAAnalyser, types.FloatType):  return float(objAAnalyser)
+       if isinstance(objAAnalyser, (types.IntType, types.LongType)):  return int(objAAnalyser)
+       #if isinstance(objAAnalyser, (types.NoneType, types.BooleanType, types.FloatType, types.IntType, types.LongType)):
+       return repr(objAAnalyser)
+       # ou ? return objAAnalyser
+       #if isinstance(objAAnalyser, types.StringTypes): return pyxb.utils.utility.QuotedEscaped(objAAnalyser,)
+       #pour une enum getattr(value dans le type)
+       # return pythonLiteral(ReferenceFacet(facet=value, **kw))
+    objAAnalyser.dictPyxb = {} 
+    for expandedName, elementDeclaration in objAAnalyser._ElementMap.items():
+        objPyxbName  = expandedName.localName()
+        objPyxbValue = getattr(objAAnalyser, objPyxbName)
+        if objPyxbValue == None or objPyxbValue == [] : continue
+        if elementDeclaration.isPlural():
+            dictArgs[objPyxbName] = []
+            #objAAnalyser.dictPyxb[objPyxbName]={} 
+            objAAnalyser.dictPyxb[objPyxbName]=[] 
+            #objAAnalyser.dictPyxb['objEnPyxb']=objAAnalyser
+            for objPyxb in objPyxbValue : 
+                #print ('-------------',objPyxb)
+                dictArgs[objPyxbName].append(self.pyxbToDict(objPyxb))
+                objPyxb.dictPyxb['objEnPyxb'] = objPyxb
+                objAAnalyser.dictPyxb[objPyxbName].append(objPyxb.dictPyxb)
+        else:
+            dictArgs[objPyxbName] = self.pyxbToDict(getattr(objAAnalyser, objPyxbName))
+            #print ('ajout ds dico de ', objAAnalyser , 'de',  objPyxbName, objPyxbValue)
+            objAAnalyser.dictPyxb[objPyxbName] = objPyxbValue.dictPyxb
+            #print ('ajout ds dico de ', objPyxbValue.dictPyxb, 'de',  objPyxbName)
+            objAAnalyser.dictPyxb['objEnPyxb']=objAAnalyser
+    #print ("***********************************")
+    #print ('pyxbToDict  fin pour ********** ', objAAnalyser)
+    #print ('pyxbToDict ', objAAnalyser, objAAnalyser.dictPyxb)
+    #print ('pyxbToDict  fin pour ********** ', objAAnalyser)
+    #print ("***********************************")
+    #print (dictArgs)
+    #print (dictPyxb)
+    #for i in dictArgs.keys(): print (i, " ", dictArgs[i], " ", type(dictArgs[i]))
+    #print ('fin pour ',objAAnalyser)
+    return dictArgs
+
+   
+#   def analyseContent(self,objAAnalyser):
+#       objAAnalyser.dictArgs={}
+#       for objContenu in objAAnalyser.content():
+#          #print ('j analyse ', objContenu)
+#          objContenu.monNomClasseModeleMetier=str(objContenu.__class__).split('.')[-1]
+#          objContenu.monNomClasseAccas=objContenu.monNomClasseModeleMetier[2:-2]
+#          #maClasseAccas=classeAccasPere.entites[objContenu.monNomClasseAccas]
+#          if objContenu._IsSimpleTypeContent():
+#             print (objContenu.monNomClasseAccas,objContenu.pythonLiteral())
+#             print (objContenu.monNomClasseAccas,objContenu.xsdLiteral())
+#             #chaine=objContenu.pythonLiteral().split('(')[1].split(')')[0]
+#             print (dir(objContenu))
+#             objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=None
+#             #objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=objContenu.pythonLiteral()
+#          else :
+#             self.analyseContent(objContenu)
+#             objAAnalyser.dictArgs[objContenu.monNomClasseAccas]=objContenu.dictArgs
+       #print ( '________________')
+       #print (objAAnalyser.monNomClasseAccas)
+       #for i in objAAnalyser.dictArgs : print (i, objAAnalyser.dictArgs[i])
+       #print ( '________________')
+        
+  
+
+if __name__ == "__main__":
+   print ('a faire')
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6 ext.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6 ext.xsd
new file mode 100755 (executable)
index 0000000..22e488e
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <!--<xs:import  schemaLocation="./Model Efficas (1.1)  v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+       <xs:override schemaLocation="./Model Efficas (1.1)  v6.xsd">\r
+               <xs:attribute name="attribut" type="AT_attribut"/>\r
+               <xs:simpleType name="AT_attribut">\r
+                       <xs:restriction base="xs:string">\r
+                               <xs:enumeration value="n"/>\r
+                               <xs:enumeration value="o"/>\r
+                       </xs:restriction>\r
+               </xs:simpleType>\r
+\r
+<!--           <xs:complexType name="essai">\r
+                       <xs:sequence>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="attribut" default="n"/>\r
+               </xs:complexType>\r
+-->            \r
+               <xs:complexType name="T_SIMP">\r
+                       <xs:sequence>\r
+                               <xs:element ref="doc" minOccurs="0"/>\r
+                               <xs:element ref="portee" minOccurs="0">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:element>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                               <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                               <xs:element ref="plageValeur" minOccurs="0"/>\r
+                               <xs:element ref="typeAttendu"/>\r
+                               <xs:element ref="validators" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="nom" use="required"/>\r
+                       <xs:attribute ref="statut" default="o"/>\r
+                       <xs:attribute ref="min_occurs" default="1"/>\r
+                       <xs:attribute ref="max_occurs" default="1">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:attribute>\r
+                       <xs:attribute name="attribut" default="n">\r
+                               <xs:simpleType>\r
+                                       <xs:restriction base="xs:string">\r
+                                               <xs:enumeration value="n"/>\r
+                                               <xs:enumeration value="o"/>\r
+                                       </xs:restriction>\r
+                               </xs:simpleType>\r
+                       </xs:attribute>\r
+                       <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+                       <!--            <xs:attribute  default="n"  ref="attribut"/>-->\r
+                       <!--            <xs:attribute  default="n"  name="attribut" type="AT_attribut" />-->\r
+               </xs:complexType>\r
+       </xs:override>\r
+       </xs:schema>\r
\ No newline at end of file
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd
new file mode 100755 (executable)
index 0000000..2492a38
--- /dev/null
@@ -0,0 +1,732 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <xs:element name="doc" type="T_doc"/>\r
+       <xs:element name="cata" type="T_cata"/>\r
+       <xs:element name="regles" type="T_regles"/>\r
+       <xs:element name="typeCree" type="T_classe_utilisateur"/>\r
+       <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+       <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+       <xs:element name="fonction_utilisateur" type="T_fonction_python"/>\r
+       <xs:element name="commandes" type="T_commandes">\r
+               <!-- La contrainte suivante fonctionne -->\r
+               <xs:unique name="Uniq_Command">\r
+                       <xs:selector xpath="*"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:element name="validators" type="T_validators"/>\r
+       <xs:element name="plageValeur" type="T_plageValeur"/>\r
+       <xs:element name="typeAttendu" type="T_name"/>\r
+       <xs:element name="classeUtilisateurName" type="T_classe_utilisateur_username" abstract="true" substitutionGroup="typeAttendu"/>\r
+       <xs:element name="SIMP" type="T_SIMP"/>\r
+       <xs:element name="portee" type="T_portee" default="None"/>\r
+       <xs:element name="condition" type="T_fonction_python"/>\r
+       <xs:element name="borne_sup" type="T_typeAttendu"/>\r
+       <xs:element name="borne_inf" type="T_typeAttendu"/>\r
+       <!--    <xs:element name="into" type="T_into"/>-->\r
+       <xs:element name="into" type="T_into"/>\r
+       <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+       <xs:attribute name="nom" type="AT_nom"/>\r
+       <xs:attribute name="ag" type="AT_ag"/>\r
+       <xs:attribute name="fr" type="xs:string"/>\r
+       <xs:attribute name="ang" type="xs:string"/>\r
+       <xs:attribute name="docu" type="AT_docu"/>\r
+       <xs:attribute name="valeur_sugg" type="AT_valeur_sugg"/>\r
+       <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+       <xs:attribute name="max_occurs" type="AT_max_occurs"/>\r
+       <xs:attribute name="min_occurs" type="AT_min_occurs"/>\r
+       <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+       <xs:complexType name="T_doc">\r
+               <xs:attribute ref="fr" use="optional"/>\r
+               <xs:attribute ref="ang"/>\r
+               <xs:attribute ref="docu"/>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_cata">\r
+               <xs:sequence>\r
+                       <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_commandes">\r
+               <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                       <xs:element ref="OPER"/>\r
+                       <xs:element ref="PROC"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_Cardinalite"/>\r
+       <xs:complexType name="T_plageValeur">\r
+               <xs:choice>\r
+                       <xs:sequence>\r
+                               <xs:element ref="borne_sup" minOccurs="0"/>\r
+                               <xs:element ref="borne_inf" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:element ref="into"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_Accas_Common">\r
+               <xs:sequence>\r
+                       <xs:element ref="regles" minOccurs="0"/>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:choice maxOccurs="unbounded">\r
+                               <xs:element ref="BLOC"/>\r
+                               <xs:element ref="FACT"/>\r
+                               <xs:element ref="SIMP"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+       </xs:complexType>\r
+       <xs:element name="OPER" type="T_OPER">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC    -->\r
+               <xs:key name="Key_Name_In_Oper">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       \r
+       <xs:complexType name="T_OPER">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="typeCree"/>\r
+                               </xs:sequence>\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="PROC" type="T_PROC">\r
+               <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+               <xs:key name="Key_Name_In_Proc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_PROC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="FACT" type="T_FACT">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
+               <xs:key name="Key_Name_In_Fact">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <!-- Définition par restriction -->\r
+       <!--    <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="regles" minOccurs="0"/>\r
+                                       <xs:element ref="doc" minOccurs="0"/>\r
+                                       <xs:choice maxOccurs="unbounded">\r
+                                               <xs:element ref="BLOC"/>\r
+                                               <xs:element ref="FACT"/>\r
+                                               <xs:element ref="SIMP"/>\r
+                                       </xs:choice>\r
+                               </xs:sequence>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>-->\r
+       <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:attribute ref="statut"/>\r
+                               <xs:attribute ref="min_occurs" default="1"/>\r
+                               <xs:attribute ref="max_occurs" default="1">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:attribute>\r
+                       </xs:extension>\r
+                       <!--                            <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs  gt @efficas:min_occurs]"/>\r
+-->\r
+                       <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs  gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs  > min_occurs "/>-->\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_fonction_python">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:element name="BLOC" type="T_BLOC">\r
+               <xs:key name="Key_Name_In_Bloc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <xs:complexType name="T_BLOC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="condition"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_SIMP">\r
+               <xs:sequence>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:element ref="portee" minOccurs="0">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:element>\r
+                       <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                       <xs:element ref="plageValeur" minOccurs="0"/>\r
+                       <xs:element ref="typeAttendu"/>\r
+                       <xs:element ref="validators" minOccurs="0"/>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+               <xs:attribute ref="statut" default="o"/>\r
+               <xs:attribute ref="min_occurs" default="1"/>\r
+               <xs:attribute ref="max_occurs" default="1">\r
+                       <xs:annotation>\r
+                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                       </xs:annotation>\r
+               </xs:attribute>\r
+       </xs:complexType>\r
+       <xs:simpleType name="AT_statut">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="f"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!--<xs:simpleType name="T_repetable">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="n"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>-->\r
+       <xs:simpleType name="T_portee">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Global"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_max_occurs">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minInclusive value="-1"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_min_occurs">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minExclusive value="0"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Comparable -->\r
+       <!--    <xs:simpleType name="AT_borne_sup">\r
+       <xs:atomic base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_borne_inf">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_ag">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="No comment"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_docu">\r
+               <xs:annotation>\r
+                       <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_valeur_sugg">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <!-- TODO: Exclure mots clés python|efficas -->\r
+       <xs:simpleType name="AT_nom">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_predicat1">\r
+               <xs:list itemType="AT_nom"/>\r
+               <!-- TODO: Supprimer la liste -->\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_predicat2">\r
+               <xs:sequence>\r
+                       <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+                       <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+               </xs:sequence>\r
+               <!-- TODO: Supprimer la séquence -->\r
+       </xs:complexType>\r
+       <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+       <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+       <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+       <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+       <xs:element name="EXCLUS" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+       <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+       <xs:group name="predicat">\r
+               <xs:choice>\r
+                       <xs:element ref="A_CLASSER"/>\r
+                       <xs:element ref="AU_MOINS_UN"/>\r
+                       <xs:element ref="AU_PLUS_UN"/>\r
+                       <xs:element ref="ENSEMBLE"/>\r
+                       <xs:element ref="EXCLUS"/>\r
+                       <xs:element ref="PRESENT_ABSENT"/>\r
+                       <xs:element ref="PRESENT_PRESENT"/>\r
+                       <xs:element ref="UN_PARMI"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+       <xs:complexType name="T_regles">\r
+               <xs:sequence maxOccurs="unbounded">\r
+                       <xs:group ref="predicat"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <!--    <xs:simpleType name="T_typeCree">\r
+               <xs:restriction base="T_classe_utilisateur"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_subroutine">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_validators">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="NoRepeat"/>\r
+                       <xs:enumeration value="OnlyStr"/>\r
+                       <xs:enumeration value="VerifExiste"/>\r
+                       <xs:enumeration value="VerifTypeTuple"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_Bool">\r
+               <xs:restriction base="xs:boolean"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_Bool">\r
+               <xs:list itemType="T_Bool"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_I">\r
+               <xs:restriction base="xs:int"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_I">\r
+               <xs:list itemType="T_I"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_R">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_R">\r
+               <xs:list itemType="T_R"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_TXM">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_TXM">\r
+               <xs:list itemType="T_TXM"/>\r
+       </xs:simpleType>\r
+       <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+       <xs:simpleType name="T_C">\r
+               <xs:restriction>\r
+                       <xs:simpleType>\r
+                               <xs:list itemType="xs:double"/>\r
+                       </xs:simpleType>\r
+                       <xs:minLength value="2"/>\r
+                       <xs:maxLength value="2"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Ajouter une contrainte : taille pair -->\r
+       <!-- Il n'est pas possible de définir des listes de listes -->\r
+       <xs:simpleType name="T_list_C">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_name_base">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple_name">\r
+               <xs:restriction base="T_name_base">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- On ne peut pas rendre abstrait un simpleType && \r
+          Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+          lui peut être abstrait.\r
+    -->\r
+       <xs:simpleType name="T_classe_utilisateur_name">\r
+               <xs:restriction base="T_name">\r
+                       <xs:enumeration value="T_classe_utilisateur"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_classe_utilisateur_username">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_classe_utilisateur_name">\r
+                               <xs:attribute ref="nom" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_name">\r
+               <xs:union memberTypes="T_simple_name">\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="AT_nom">\r
+                                       <xs:enumeration value="T_Matrice_double"/>\r
+                                       <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
+                                       <xs:enumeration value="T_tuple"/>\r
+                                       <xs:enumeration value="T_classe_utilisateur"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:union>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_grma"/>\r
+       <xs:complexType name="T_grno"/>\r
+       <xs:complexType name="T_SalomeEntry"/>\r
+       <xs:complexType name="T_Fichier"/>\r
+       <!--    <xs:complexType name="T_Repertoire"/>-->\r
+       <xs:simpleType name="T_Repertoire">\r
+               <xs:list>\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="xs:string">\r
+                                       <xs:whiteSpace value="preserve"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:list>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple">\r
+               <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+       </xs:simpleType>\r
+       <!--    <xs:complexType name="T_TXM"/>-->\r
+       <!--    <xs:simpleType name="T_simple">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="T_list_double">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <!-- Possibilité d'utiliser un type paramétré ? -->\r
+       <xs:complexType name="T_Matrice_double">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_double">\r
+                               <xs:attribute name="n" type="xs:integer" use="required"/>\r
+                               <xs:attribute name="m" type="xs:integer" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
+       <xs:complexType name="T_Matrice_Symetrique_double">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_double">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Une liste est aussi un type simple ! -->\r
+       <!--    <xs:simpleType name="T_list_anySimpleType">\r
+               <xs:list itemType="xs:anySimpleType"/>\r
+       </xs:simpleType>\r
+-->\r
+       <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+       <xs:complexType name="T_tuple">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:anySimpleType">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_classe_utilisateur">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:element name="typesimple" type="T_simple"/>\r
+       <xs:element name="matrice_double" type="T_Matrice_double"/>\r
+       <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
+       <xs:element name="tuple" type="T_tuple"/>\r
+       <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
+       <!-- Essai -->\r
+       <!--    <xs:group name="T_Attendu_group1">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matrice_double"/>\r
+                       <xs:element ref="matrice_symetrique_double"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classe_utilisateur"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:group name="T_Attendu_group2">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matrice_double"/>\r
+                       <xs:element ref="matrice_symetrique_double"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classe_utilisateur"/>\r
+                       <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:group ref="T_Attendu_group1"/>\r
+       </xs:complexType>\r
+       -->\r
+       <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+       <!--\r
+       <xs:complexType name="T_into">\r
+         <xs:group ref="T_Attendu_group2"/>\r
+       </xs:complexType>\r
+       -->\r
+       <xs:complexType name="T_into">\r
+               <xs:choice>\r
+                       <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
+                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_into">\r
+                               <xs:choice>\r
+                                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="matrice_double" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+                               </xs:choice>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte   (ASSD) : pass\r
+class maille   (ASSD) : pass\r
+class carte_flux_r   (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+    def __call__(self, *l_typ_cham, **kwargs):\r
+        return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+               execmodul=None,\r
+               regles=ENSEMBLE('E1','E2','E3')\r
+               )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+                   NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+                );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+                NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+              );\r
+\r
+E1=PROC(nom="E1",\r
+        op=None,\r
+        regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+        ETAT_INIT = FACT(statut='f', max='**',\r
+                         GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+                         GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+                    ),\r
+\r
+        RESULTAT  = FACT(statut='f',\r
+                         DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
+                         VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                         ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                    ), \r
+        );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+        regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+        CONCEPT  = FACT(statut='f',max='**',\r
+                   NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+                   ),\r
+        CHAINE   = SIMP(statut='f',typ='TXM'),\r
+        POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+        );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+        DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+                           into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+        b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+             ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+             ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+             CARTE        = SIMP(statut='f',typ=carte,),\r
+             b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+                             CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+                                          fr="Options pour le calcul de contraintes et efforts generalises",\r
+                                           into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+                             ),\r
+                      ),  \r
+       );\r
+\r
+-->\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7 ext.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7 ext.xsd
new file mode 100755 (executable)
index 0000000..0b53186
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <!--<xs:import  schemaLocation="./Model Efficas (1.1)  v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+       <xs:override schemaLocation="./Model Efficas (1.1)  v7.xsd">\r
+               <xs:attribute name="attribut" type="AT_attribut"/>\r
+               <xs:simpleType name="AT_attribut">\r
+                       <xs:restriction base="xs:string">\r
+                               <xs:enumeration value="n"/>\r
+                               <xs:enumeration value="o"/>\r
+                       </xs:restriction>\r
+               </xs:simpleType>\r
+               <!--            <xs:complexType name="essai">\r
+                       <xs:sequence>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="attribut" default="n"/>\r
+               </xs:complexType>\r
+-->\r
+               <xs:complexType name="T_SIMP">\r
+                       <xs:sequence>\r
+                               <xs:element ref="doc" minOccurs="0"/>\r
+                               <xs:element ref="portee" minOccurs="0">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:element>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                               <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                               <xs:element ref="plageValeur" minOccurs="0"/>\r
+                               <xs:element ref="typeAttendu"/>\r
+                               <xs:element ref="validators" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="nom" use="required"/>\r
+                       <xs:attribute ref="statut" default="o"/>\r
+                       <xs:attribute ref="min_occurs" default="1"/>\r
+                       <xs:attribute ref="max_occurs" default="1">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:attribute>\r
+                       <xs:attribute name="attribut" default="n">\r
+                               <xs:simpleType>\r
+                                       <xs:restriction base="xs:string">\r
+                                               <xs:enumeration value="n"/>\r
+                                               <xs:enumeration value="o"/>\r
+                                       </xs:restriction>\r
+                               </xs:simpleType>\r
+                       </xs:attribute>\r
+                       <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+                       <!--            <xs:attribute  default="n"  ref="attribut"/>-->\r
+                       <!--            <xs:attribute  default="n"  name="attribut" type="AT_attribut" />-->\r
+               </xs:complexType>\r
+       </xs:override>\r
+</xs:schema>\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd
new file mode 100755 (executable)
index 0000000..0f1838f
--- /dev/null
@@ -0,0 +1,731 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <xs:element name="doc" type="T_doc"/>\r
+       <xs:element name="cata" type="T_cata"/>\r
+       <xs:element name="regles" type="T_regles"/>\r
+       <xs:element name="typeCree" type="T_classe_utilisateur"/>\r
+       <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+       <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+       <xs:element name="fonction_utilisateur" type="T_fonction_python"/>\r
+       <xs:element name="commandes" type="T_commandes">\r
+               <!-- La contrainte suivante fonctionne -->\r
+               <xs:unique name="Uniq_Command">\r
+                       <xs:selector xpath="*"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:element name="validators" type="T_validators"/>\r
+       <xs:element name="plageValeur" type="T_plageValeur"/>\r
+       <xs:element name="typeAttendu" type="T_name"/>\r
+       <xs:element name="classeUtilisateurName" type="T_classe_utilisateur_username" abstract="true" substitutionGroup="typeAttendu"/>\r
+       <xs:element name="SIMP" type="T_SIMP"/>\r
+       <xs:element name="portee" type="T_portee" default="None"/>\r
+       <xs:element name="condition" type="T_fonction_python"/>\r
+       <xs:element name="borne_sup" type="T_typeAttendu"/>\r
+       <xs:element name="borne_inf" type="T_typeAttendu"/>\r
+       <!--    <xs:element name="into" type="T_into"/>-->\r
+       <xs:element name="into" type="T_into"/>\r
+       <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+       <xs:attribute name="nom" type="AT_nom"/>\r
+       <xs:attribute name="ag" type="AT_ag"/>\r
+       <xs:attribute name="fr" type="xs:string"/>\r
+       <xs:attribute name="ang" type="xs:string"/>\r
+       <xs:attribute name="docu" type="AT_docu"/>\r
+       <xs:attribute name="valeur_sugg" type="AT_valeur_sugg"/>\r
+       <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+       <xs:attribute name="max_occurs" type="AT_max_occurs"/>\r
+       <xs:attribute name="min_occurs" type="AT_min_occurs"/>\r
+       <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+       <xs:complexType name="T_doc">\r
+               <xs:attribute ref="fr" use="optional"/>\r
+               <xs:attribute ref="ang"/>\r
+               <xs:attribute ref="docu"/>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_cata">\r
+               <xs:sequence>\r
+                       <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_commandes">\r
+               <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                       <xs:element ref="OPER"/>\r
+                       <xs:element ref="PROC"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_Cardinalite"/>\r
+       <xs:complexType name="T_plageValeur">\r
+               <xs:choice>\r
+                       <xs:sequence>\r
+                               <xs:element ref="borne_sup" minOccurs="0"/>\r
+                               <xs:element ref="borne_inf" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:element ref="into"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_Accas_Common">\r
+               <xs:sequence>\r
+                       <xs:element ref="regles" minOccurs="0"/>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:choice maxOccurs="unbounded">\r
+                               <xs:element ref="BLOC"/>\r
+                               <xs:element ref="FACT"/>\r
+                               <xs:element ref="SIMP"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+       </xs:complexType>\r
+       <xs:element name="OPER" type="T_OPER">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC    -->\r
+               <xs:key name="Key_Name_In_Oper">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_OPER">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="typeCree"/>\r
+                               </xs:sequence>\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="PROC" type="T_PROC">\r
+               <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+               <xs:key name="Key_Name_In_Proc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_PROC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="FACT" type="T_FACT">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
+               <xs:key name="Key_Name_In_Fact">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <!-- Définition par restriction -->\r
+       <!--    <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="regles" minOccurs="0"/>\r
+                                       <xs:element ref="doc" minOccurs="0"/>\r
+                                       <xs:choice maxOccurs="unbounded">\r
+                                               <xs:element ref="BLOC"/>\r
+                                               <xs:element ref="FACT"/>\r
+                                               <xs:element ref="SIMP"/>\r
+                                       </xs:choice>\r
+                               </xs:sequence>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>-->\r
+       <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:attribute ref="statut"/>\r
+                               <xs:attribute ref="min_occurs" default="1"/>\r
+                               <xs:attribute ref="max_occurs" default="1">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:attribute>\r
+                       </xs:extension>\r
+                       <!--                            <xs:assert test=".[exists(@efficas:max_occurs) and exists(@efficas:min_occurs) and @efficas:max_occurs  gt @efficas:min_occurs]"/>\r
+-->\r
+                       <!--<xs:assert test="if (.[exists(@efficas:max_occurs)] and .[exists(@efficas:min_occurs)] ) then (@efficas:max_occurs  gt @efficas:min_occurs) or @efficas:max_occurs = -1 else true" altova:message="Erreur max_occurs  > min_occurs "/>-->\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_fonction_python">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:element name="BLOC" type="T_BLOC">\r
+               <xs:key name="Key_Name_In_Bloc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <xs:complexType name="T_BLOC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_Accas_Common">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="condition"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_SIMP">\r
+               <xs:sequence>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:element ref="portee" minOccurs="0">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:element>\r
+                       <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                       <xs:element ref="plageValeur" minOccurs="0"/>\r
+                       <xs:element ref="typeAttendu"/>\r
+                       <xs:element ref="validators" minOccurs="0"/>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+               <xs:attribute ref="statut" default="o"/>\r
+               <xs:attribute ref="min_occurs" default="1"/>\r
+               <xs:attribute ref="max_occurs" default="1">\r
+                       <xs:annotation>\r
+                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                       </xs:annotation>\r
+               </xs:attribute>\r
+       </xs:complexType>\r
+       <xs:simpleType name="AT_statut">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="f"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!--<xs:simpleType name="T_repetable">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="n"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>-->\r
+       <xs:simpleType name="T_portee">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Global"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_max_occurs">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minInclusive value="-1"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_min_occurs">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minExclusive value="0"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Comparable -->\r
+       <!--    <xs:simpleType name="AT_borne_sup">\r
+       <xs:atomic base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_borne_inf">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_ag">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="No comment"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_docu">\r
+               <xs:annotation>\r
+                       <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_valeur_sugg">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <!-- TODO: Exclure mots clés python|efficas -->\r
+       <xs:simpleType name="AT_nom">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_predicat1">\r
+               <xs:list itemType="AT_nom"/>\r
+               <!-- TODO: Supprimer la liste -->\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_predicat2">\r
+               <xs:sequence>\r
+                       <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+                       <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+               </xs:sequence>\r
+               <!-- TODO: Supprimer la séquence -->\r
+       </xs:complexType>\r
+       <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+       <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+       <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+       <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+       <xs:element name="EXCLUS" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+       <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+       <xs:group name="predicat">\r
+               <xs:choice>\r
+                       <xs:element ref="A_CLASSER"/>\r
+                       <xs:element ref="AU_MOINS_UN"/>\r
+                       <xs:element ref="AU_PLUS_UN"/>\r
+                       <xs:element ref="ENSEMBLE"/>\r
+                       <xs:element ref="EXCLUS"/>\r
+                       <xs:element ref="PRESENT_ABSENT"/>\r
+                       <xs:element ref="PRESENT_PRESENT"/>\r
+                       <xs:element ref="UN_PARMI"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+       <xs:complexType name="T_regles">\r
+               <xs:sequence maxOccurs="unbounded">\r
+                       <xs:group ref="predicat"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <!--    <xs:simpleType name="T_typeCree">\r
+               <xs:restriction base="T_classe_utilisateur"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_subroutine">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_validators">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="NoRepeat"/>\r
+                       <xs:enumeration value="OnlyStr"/>\r
+                       <xs:enumeration value="VerifExiste"/>\r
+                       <xs:enumeration value="VerifTypeTuple"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_Bool">\r
+               <xs:restriction base="xs:boolean"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_Bool">\r
+               <xs:list itemType="T_Bool"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_I">\r
+               <xs:restriction base="xs:int"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_I">\r
+               <xs:list itemType="T_I"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_R">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_R">\r
+               <xs:list itemType="T_R"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_TXM">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_TXM">\r
+               <xs:list itemType="T_TXM"/>\r
+       </xs:simpleType>\r
+       <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+       <xs:simpleType name="T_C">\r
+               <xs:restriction>\r
+                       <xs:simpleType>\r
+                               <xs:list itemType="xs:double"/>\r
+                       </xs:simpleType>\r
+                       <xs:minLength value="2"/>\r
+                       <xs:maxLength value="2"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Ajouter une contrainte : taille pair -->\r
+       <!-- Il n'est pas possible de définir des listes de listes -->\r
+       <xs:simpleType name="T_list_C">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_name_base">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple_name">\r
+               <xs:restriction base="T_name_base">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- On ne peut pas rendre abstrait un simpleType && \r
+          Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+          lui peut être abstrait.\r
+    -->\r
+       <xs:simpleType name="T_classe_utilisateur_name">\r
+               <xs:restriction base="T_name">\r
+                       <xs:enumeration value="T_classe_utilisateur"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_classe_utilisateur_username">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_classe_utilisateur_name">\r
+                               <xs:attribute ref="nom" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_name">\r
+               <xs:union memberTypes="T_simple_name">\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="AT_nom">\r
+                                       <xs:enumeration value="T_Matrice_double"/>\r
+                                       <xs:enumeration value="T_Matrice_Symetrique_double"/>\r
+                                       <xs:enumeration value="T_tuple"/>\r
+                                       <xs:enumeration value="T_classe_utilisateur"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:union>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_grma"/>\r
+       <xs:complexType name="T_grno"/>\r
+       <xs:complexType name="T_SalomeEntry"/>\r
+       <xs:complexType name="T_Fichier"/>\r
+       <!--    <xs:complexType name="T_Repertoire"/>-->\r
+       <xs:simpleType name="T_Repertoire">\r
+               <xs:list>\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="xs:string">\r
+                                       <xs:whiteSpace value="preserve"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:list>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple">\r
+               <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+       </xs:simpleType>\r
+       <!--    <xs:complexType name="T_TXM"/>-->\r
+       <!--    <xs:simpleType name="T_simple">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="T_list_double">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <!-- Possibilité d'utiliser un type paramétré ? -->\r
+       <xs:complexType name="T_Matrice_double">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_double">\r
+                               <xs:attribute name="n" type="xs:integer" use="required"/>\r
+                               <xs:attribute name="m" type="xs:integer" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Faire l'exercice de dériver de T_Matrice_double -->\r
+       <xs:complexType name="T_Matrice_Symetrique_double">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_double">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Une liste est aussi un type simple ! -->\r
+       <!--    <xs:simpleType name="T_list_anySimpleType">\r
+               <xs:list itemType="xs:anySimpleType"/>\r
+       </xs:simpleType>\r
+-->\r
+       <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+       <xs:complexType name="T_tuple">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:anySimpleType">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_classe_utilisateur">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:element name="typesimple" type="T_simple"/>\r
+       <xs:element name="matrice_double" type="T_Matrice_double"/>\r
+       <xs:element name="matrice_symetrique_double" type="T_Matrice_Symetrique_double"/>\r
+       <xs:element name="tuple" type="T_tuple"/>\r
+       <xs:element name="classe_utilisateur" type="T_classe_utilisateur"/>\r
+       <!-- Essai -->\r
+       <!--    <xs:group name="T_Attendu_group1">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matrice_double"/>\r
+                       <xs:element ref="matrice_symetrique_double"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classe_utilisateur"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:group name="T_Attendu_group2">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matrice_double"/>\r
+                       <xs:element ref="matrice_symetrique_double"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classe_utilisateur"/>\r
+                       <xs:element ref="fonction_utilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:group ref="T_Attendu_group1"/>\r
+       </xs:complexType>\r
+       -->\r
+       <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+       <!--\r
+       <xs:complexType name="T_into">\r
+         <xs:group ref="T_Attendu_group2"/>\r
+       </xs:complexType>\r
+       -->\r
+       <xs:complexType name="T_into">\r
+               <xs:choice>\r
+                       <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
+                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="fonction_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_into">\r
+                               <xs:choice>\r
+                                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="matrice_double" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="matrice_symetrique_double" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="classe_utilisateur" minOccurs="0" maxOccurs="1"/>\r
+                               </xs:choice>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte   (ASSD) : pass\r
+class maille   (ASSD) : pass\r
+class carte_flux_r   (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+    def __call__(self, *l_typ_cham, **kwargs):\r
+        return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+               execmodul=None,\r
+               regles=ENSEMBLE('E1','E2','E3')\r
+               )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+                   NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+                );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+                NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+              );\r
+\r
+E1=PROC(nom="E1",\r
+        op=None,\r
+        regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+        ETAT_INIT = FACT(statut='f', max='**',\r
+                         GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+                         GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+                    ),\r
+\r
+        RESULTAT  = FACT(statut='f',\r
+                         DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
+                         VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                         ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                    ), \r
+        );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+        regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+        CONCEPT  = FACT(statut='f',max='**',\r
+                   NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+                   ),\r
+        CHAINE   = SIMP(statut='f',typ='TXM'),\r
+        POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+        );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+        DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+                           into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+        b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+             ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+             ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+             CARTE        = SIMP(statut='f',typ=carte,),\r
+             b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+                             CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+                                          fr="Options pour le calcul de contraintes et efforts generalises",\r
+                                           into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+                             ),\r
+                      ),  \r
+       );\r
+\r
+-->\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8 ext.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8 ext.xsd
new file mode 100755 (executable)
index 0000000..f6db1fc
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <!--<xs:import  schemaLocation="./Model Efficas (1.1)  v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+       <xs:override schemaLocation="./Model Efficas (1.1)  v8.xsd">\r
+               <xs:attribute name="attribut" type="AT_attribut"/>\r
+               <xs:simpleType name="AT_attribut">\r
+                       <xs:restriction base="xs:string">\r
+                               <xs:enumeration value="n"/>\r
+                               <xs:enumeration value="o"/>\r
+                       </xs:restriction>\r
+               </xs:simpleType>\r
+               <!--            <xs:complexType name="essai">\r
+                       <xs:sequence>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="attribut" default="n"/>\r
+               </xs:complexType>\r
+-->\r
+               <xs:complexType name="T_SIMP">\r
+                       <xs:sequence>\r
+                               <xs:element ref="doc" minOccurs="0"/>\r
+                               <xs:element ref="portee" minOccurs="0">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:element>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                               <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                               <xs:element ref="plageValeur" minOccurs="0"/>\r
+                               <xs:element ref="typeAttendu"/>\r
+                               <xs:element ref="validators" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="nom" use="required"/>\r
+                       <xs:attribute ref="statut" default="o"/>\r
+                       <xs:attribute ref="minOccurences" default="1"/>\r
+                       <xs:attribute ref="maxOccurences" default="1">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:attribute>\r
+                       <xs:attribute name="attribut" default="n">\r
+                               <xs:simpleType>\r
+                                       <xs:restriction base="xs:string">\r
+                                               <xs:enumeration value="n"/>\r
+                                               <xs:enumeration value="o"/>\r
+                                       </xs:restriction>\r
+                               </xs:simpleType>\r
+                       </xs:attribute>\r
+                       <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+                       <!--            <xs:attribute  default="n"  ref="attribut"/>-->\r
+                       <!--            <xs:attribute  default="n"  name="attribut" type="AT_attribut" />-->\r
+               </xs:complexType>\r
+       </xs:override>\r
+</xs:schema>\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd
new file mode 100755 (executable)
index 0000000..822cf3b
--- /dev/null
@@ -0,0 +1,724 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- édité avec XMLSpy v2018 sp1 (http://www.altova.com) par Fayolle (EDF R&D) -->\r
+<!-- edited with XMLSpy v2015 rel. 4 (http://www.altova.com) by USER1 (EDF-DSP) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" xmlns:altova="http://www.altova.com/xml-schema-extensions" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <xs:element name="doc" type="T_doc"/>\r
+       <xs:element name="cata" type="T_cata"/>\r
+       <xs:element name="regles" type="T_regles"/>\r
+       <xs:element name="typeCree" type="T_classeUtilisateur"/>\r
+       <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+       <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+       <xs:element name="fonctionUtilisateur" type="T_fonctionUtilisateur"/>\r
+       <xs:element name="commandes" type="T_commandes">\r
+               <!-- La contrainte suivante fonctionne -->\r
+               <xs:unique name="Uniq_Command">\r
+                       <xs:selector xpath="*"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:element name="validators" type="T_validators"/>\r
+       <xs:element name="plageValeur" type="T_plageValeur"/>\r
+       <xs:element name="typeAttendu" type="T_name"/>\r
+       <xs:element name="classeUtilisateurName" type="T_classeUtilisateurName" abstract="true" substitutionGroup="typeAttendu"/>\r
+       <xs:element name="SIMP" type="T_SIMP"/>\r
+       <xs:element name="portee" type="T_portee" default="None"/>\r
+       <xs:element name="condition" type="T_fonctionUtilisateur"/>\r
+       <xs:element name="borneSup" type="T_typeAttendu"/>\r
+       <xs:element name="borneInf" type="T_typeAttendu"/>\r
+       <!--    <xs:element name="into" type="T_into"/>-->\r
+       <xs:element name="into" type="T_into"/>\r
+       <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+       <xs:attribute name="nom" type="AT_nom"/>\r
+       <xs:attribute name="fr" type="xs:string"/>\r
+       <xs:attribute name="ang" type="xs:string"/>\r
+       <xs:attribute name="docu" type="AT_docu"/>\r
+       <xs:attribute name="valeurSugg" type="AT_valeurSugg"/>\r
+       <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+       <xs:attribute name="maxOccurences" type="AT_maxOccurences"/>\r
+       <xs:attribute name="minOccurences" type="AT_minOccurences"/>\r
+       <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+       <xs:complexType name="T_doc">\r
+               <xs:attribute ref="fr" use="optional"/>\r
+               <xs:attribute ref="ang"/>\r
+               <xs:attribute ref="docu"/>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_cata">\r
+               <xs:sequence>\r
+                       <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_commandes">\r
+               <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                       <xs:element ref="OPER"/>\r
+                       <xs:element ref="PROC"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_plageValeur">\r
+               <xs:choice>\r
+                       <xs:sequence>\r
+                               <xs:element ref="borneSup" minOccurs="0"/>\r
+                               <xs:element ref="borneInf" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:element ref="into"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_accasCommon">\r
+               <xs:sequence>\r
+                       <xs:element ref="regles" minOccurs="0"/>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:choice maxOccurs="unbounded">\r
+                               <xs:element ref="BLOC"/>\r
+                               <xs:element ref="FACT"/>\r
+                               <xs:element ref="SIMP"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+       </xs:complexType>\r
+       <xs:element name="OPER" type="T_OPER">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC    -->\r
+               <xs:key name="Key_Name_In_Oper">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_OPER">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommon">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="typeCree"/>\r
+                               </xs:sequence>\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="PROC" type="T_PROC">\r
+               <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+               <xs:key name="Key_Name_In_Proc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC | ./efficas:FACT| ./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_PROC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommon">\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="FACT" type="T_FACT">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
+               <xs:key name="Key_Name_In_Fact">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <!-- Définition par restriction -->\r
+       <!--    <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_accasCommon">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="regles" minOccurs="0"/>\r
+                                       <xs:element ref="doc" minOccurs="0"/>\r
+                                       <xs:choice maxOccurs="unbounded">\r
+                                               <xs:element ref="BLOC"/>\r
+                                               <xs:element ref="FACT"/>\r
+                                               <xs:element ref="SIMP"/>\r
+                                       </xs:choice>\r
+                               </xs:sequence>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>-->\r
+       <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommon">\r
+                               <xs:attribute ref="statut"/>\r
+                               <xs:attribute ref="minOccurences" default="1"/>\r
+                               <xs:attribute ref="maxOccurences" default="1">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:attribute>\r
+                       </xs:extension>\r
+                       <!--                            <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences  gt @efficas:minOccurences]"/>\r
+-->\r
+                       <!--<xs:assert test="if (.[exists(@efficas:maxOccurences)] and .[exists(@efficas:minOccurences)] ) then (@efficas:maxOccurences  gt @efficas:minOccurences) or @efficas:maxOccurences = -1 else true" altova:message="Erreur maxOccurences  > minOccurences "/>-->\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_fonctionUtilisateur">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:element name="BLOC" type="T_BLOC">\r
+               <xs:key name="Key_Name_In_Bloc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <xs:complexType name="T_BLOC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommon">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="condition"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_SIMP">\r
+               <xs:sequence>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:element ref="portee" minOccurs="0">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:element>\r
+                       <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                       <xs:element ref="plageValeur" minOccurs="0"/>\r
+                       <xs:element ref="typeAttendu"/>\r
+                       <xs:element ref="validators" minOccurs="0"/>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+               <xs:attribute ref="statut" default="o"/>\r
+               <xs:attribute ref="minOccurences" default="1"/>\r
+               <xs:attribute ref="maxOccurences" default="1">\r
+                       <xs:annotation>\r
+                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                       </xs:annotation>\r
+               </xs:attribute>\r
+       </xs:complexType>\r
+       <xs:simpleType name="AT_statut">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="f"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!--<xs:simpleType name="T_repetable">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="n"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>-->\r
+       <xs:simpleType name="T_portee">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Global"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_maxOccurences">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minInclusive value="-1"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_minOccurences">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minExclusive value="0"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Comparable -->\r
+       <!--    <xs:simpleType name="AT_borne_sup">\r
+       <xs:atomic base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_borne_inf">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_docu">\r
+               <xs:annotation>\r
+                       <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_valeurSugg">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <!-- TODO: Exclure mots clés python|efficas -->\r
+       <xs:simpleType name="AT_nom">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_predicat1">\r
+               <xs:list itemType="AT_nom"/>\r
+               <!-- TODO: Supprimer la liste -->\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_predicat2">\r
+               <xs:sequence>\r
+                       <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+                       <xs:element name="p2" type="AT_nom" minOccurs="1"/>\r
+               </xs:sequence>\r
+               <!-- TODO: Supprimer la séquence -->\r
+       </xs:complexType>\r
+       <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+       <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+       <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+       <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+       <xs:element name="EXCLUS" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+       <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+       <xs:group name="predicat">\r
+               <xs:choice>\r
+                       <xs:element ref="A_CLASSER"/>\r
+                       <xs:element ref="AU_MOINS_UN"/>\r
+                       <xs:element ref="AU_PLUS_UN"/>\r
+                       <xs:element ref="ENSEMBLE"/>\r
+                       <xs:element ref="EXCLUS"/>\r
+                       <xs:element ref="PRESENT_ABSENT"/>\r
+                       <xs:element ref="PRESENT_PRESENT"/>\r
+                       <xs:element ref="UN_PARMI"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+       <xs:complexType name="T_regles">\r
+               <xs:sequence maxOccurs="unbounded">\r
+                       <xs:group ref="predicat"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <!--    <xs:simpleType name="T_typeCree">\r
+               <xs:restriction base="T_classeUtilisateur"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_subroutine">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_validators">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="NoRepeat"/>\r
+                       <xs:enumeration value="OnlyStr"/>\r
+                       <xs:enumeration value="VerifExiste"/>\r
+                       <xs:enumeration value="VerifTypeTuple"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_Bool">\r
+               <xs:restriction base="xs:boolean"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_Bool">\r
+               <xs:list itemType="T_Bool"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_I">\r
+               <xs:restriction base="xs:int"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_I">\r
+               <xs:list itemType="T_I"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_R">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_R">\r
+               <xs:list itemType="T_R"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_TXM">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_TXM">\r
+               <xs:list itemType="T_TXM"/>\r
+       </xs:simpleType>\r
+       <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+       <xs:simpleType name="T_C">\r
+               <xs:restriction>\r
+                       <xs:simpleType>\r
+                               <xs:list itemType="xs:double"/>\r
+                       </xs:simpleType>\r
+                       <xs:minLength value="2"/>\r
+                       <xs:maxLength value="2"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Ajouter une contrainte : taille pair -->\r
+       <!-- Il n'est pas possible de définir des listes de listes -->\r
+       <xs:simpleType name="T_list_C">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_nameBase">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simpleName">\r
+               <xs:restriction base="T_nameBase">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- On ne peut pas rendre abstrait un simpleType && \r
+          Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+          lui peut être abstrait.\r
+    -->\r
+       <xs:simpleType name="T_classeUtilisateurTypeName">\r
+               <xs:restriction base="T_name">\r
+                       <xs:enumeration value="T_classeUtilisateur"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_classeUtilisateurName">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_classeUtilisateurTypeName">\r
+                               <xs:attribute ref="nom" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_name">\r
+               <xs:union memberTypes="T_simpleName">\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="AT_nom">\r
+                                       <xs:enumeration value="T_matriceDouble"/>\r
+                                       <xs:enumeration value="T_matriceSymetriqueDouble"/>\r
+                                       <xs:enumeration value="T_tuple"/>\r
+                                       <xs:enumeration value="T_classeUtilisateur"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:union>\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_grma"/>\r
+       <xs:complexType name="T_grno"/>\r
+       <xs:complexType name="T_SalomeEntry"/>\r
+       <xs:complexType name="T_Fichier"/>\r
+       <!--    <xs:complexType name="T_Repertoire"/>-->\r
+       <xs:simpleType name="T_Repertoire">\r
+               <xs:list>\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="xs:string">\r
+                                       <xs:whiteSpace value="preserve"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:list>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple">\r
+               <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_TXM T_list_TXM T_Bool T_list_Bool T_Repertoire"/>\r
+       </xs:simpleType>\r
+       <!--    <xs:complexType name="T_TXM"/>-->\r
+       <!--    <xs:simpleType name="T_simple">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="TXM"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="Bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="T_list_Double">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <!-- Possibilité d'utiliser un type paramétré ? -->\r
+       <xs:complexType name="T_matriceDouble">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_Double">\r
+                               <xs:attribute name="n" type="xs:integer" use="required"/>\r
+                               <xs:attribute name="m" type="xs:integer" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Faire l'exercice de dériver de T_matriceDouble -->\r
+       <xs:complexType name="T_matriceSymetriqueDouble">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_Double">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Une liste est aussi un type simple ! -->\r
+       <!--    <xs:simpleType name="T_list_anySimpleType">\r
+               <xs:list itemType="xs:anySimpleType"/>\r
+       </xs:simpleType>\r
+-->\r
+       <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : A voir-->\r
+       <xs:complexType name="T_tuple">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:anySimpleType">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_classeUtilisateur">\r
+               <xs:restriction base="AT_nom"/>\r
+       </xs:simpleType>\r
+       <xs:element name="typesimple" type="T_simple"/>\r
+       <xs:element name="matriceDouble" type="T_matriceDouble"/>\r
+       <xs:element name="matriceSymetriqueDouble" type="T_matriceSymetriqueDouble"/>\r
+       <xs:element name="tuple" type="T_tuple"/>\r
+       <xs:element name="classeUtilisateur" type="T_classeUtilisateur"/>\r
+       <!-- Essai -->\r
+       <!--    <xs:group name="T_Attendu_group1">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matriceDouble"/>\r
+                       <xs:element ref="matriceSymetriqueDouble"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classeUtilisateur"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:group name="T_Attendu_group2">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matriceDouble"/>\r
+                       <xs:element ref="matriceSymetriqueDouble"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classeUtilisateur"/>\r
+                       <xs:element ref="fonctionUtilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:group ref="T_Attendu_group1"/>\r
+       </xs:complexType>\r
+       -->\r
+       <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+       <!--\r
+       <xs:complexType name="T_into">\r
+         <xs:group ref="T_Attendu_group2"/>\r
+       </xs:complexType>\r
+       -->\r
+       <xs:complexType name="T_into">\r
+               <xs:choice>\r
+                       <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
+                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+                       <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_into">\r
+                               <xs:choice>\r
+                                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="tuple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+                               </xs:choice>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte   (ASSD) : pass\r
+class maille   (ASSD) : pass\r
+class carte_flux_r   (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+    def __call__(self, *l_typ_cham, **kwargs):\r
+        return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+               execmodul=None,\r
+               regles=ENSEMBLE('E1','E2','E3')\r
+               )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+                   NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+                );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+                NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+              );\r
+\r
+E1=PROC(nom="E1",\r
+        op=None,\r
+        regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+        ETAT_INIT = FACT(statut='f', max='**',\r
+                         GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+                         GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+                    ),\r
+\r
+        RESULTAT  = FACT(statut='f',\r
+                         DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
+                         VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                         ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                    ), \r
+        );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+        regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+        CONCEPT  = FACT(statut='f',max='**',\r
+                   NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+                   ),\r
+        CHAINE   = SIMP(statut='f',typ='TXM'),\r
+        POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+        );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+        DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+                           into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+        b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+             ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+             ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+             CARTE        = SIMP(statut='f',typ=carte,),\r
+             b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+                             CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+                                          fr="Options pour le calcul de contraintes et efforts generalises",\r
+                                           into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+                             ),\r
+                      ),  \r
+       );\r
+\r
+-->\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9 ext.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9 ext.xsd
new file mode 100755 (executable)
index 0000000..39322ca
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <!--<xs:import  schemaLocation="./Model Efficas (1.1)  v5.xsd" namespace="http://chercheurs.edf.com/logiciels/efficas"/>\r
+-->\r
+       <xs:override schemaLocation="./Model Efficas (1.1)  v9.xsd">\r
+               <xs:attribute name="attribut" type="AT_attribut"/> \r
+               <xs:simpleType name="AT_attribut">\r
+                       <xs:restriction base="xs:string">\r
+                               <xs:enumeration value="n"/>\r
+                               <xs:enumeration value="o"/>\r
+                       </xs:restriction>\r
+               </xs:simpleType>\r
+               <!--            <xs:complexType name="essai">\r
+                       <xs:sequence>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="attribut" default="n"/>\r
+               </xs:complexType>\r
+-->\r
+               <xs:complexType name="T_SIMP">\r
+                       <xs:sequence>\r
+                               <xs:element ref="doc" minOccurs="0"/>\r
+                               <xs:element ref="portee" minOccurs="0">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:element>\r
+                               <xs:element ref="valeurDef" minOccurs="0"/>\r
+                               <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                               <xs:element ref="plageValeur" minOccurs="0"/>\r
+                               <xs:element ref="nomTypeAttendu"/>\r
+                               <xs:element ref="validators" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:attribute ref="nom" use="required"/>\r
+                       <xs:attribute ref="statut" default="o"/>\r
+                       <xs:attribute ref="minOccurences" default="1"/>\r
+                       <xs:attribute ref="maxOccurences" default="1">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:attribute>\r
+                       <xs:attribute name="attribut" default="n">\r
+                               <xs:simpleType>\r
+                                       <xs:restriction base="xs:string">\r
+                                               <xs:enumeration value="n"/>\r
+                                               <xs:enumeration value="o"/>\r
+                                       </xs:restriction>\r
+                               </xs:simpleType>\r
+                       </xs:attribute>\r
+                       <!-- Les deux lignes suivantes ne fonctionnent pas car il faut que la cible référencée soit déjà définie dans le fichier importé ? -->\r
+                       <!--            <xs:attribute  default="n"  ref="attribut"/>-->\r
+                       <!--            <xs:attribute  default="n"  name="attribut" type="AT_attribut" />-->\r
+               </xs:complexType>\r
+       </xs:override>\r
+</xs:schema>\r
diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd
new file mode 100755 (executable)
index 0000000..42f4f0f
--- /dev/null
@@ -0,0 +1,741 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns="http://chercheurs.edf.com/logiciels/efficas" xmlns:efficas="http://chercheurs.edf.com/logiciels/efficas" targetNamespace="http://chercheurs.edf.com/logiciels/efficas" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0" vc:minVersion="1.1">\r
+       <xs:element name="doc" type="T_doc"/>\r
+       <xs:element name="cata" type="T_cata"/>\r
+       <xs:element name="regles" type="T_regles"/>\r
+       <xs:element name="typeCree" type="T_classeUtilisateur"/>\r
+       <xs:element name="valeurDef" type="T_typeAttendu"/>\r
+       <xs:element name="valeurSugg" type="T_typeAttendu"/>\r
+       <xs:element name="fonctionUtilisateur" type="T_fonctionUtilisateur"/>\r
+       <xs:element name="commandes" type="T_commandes">\r
+               <!-- La contrainte suivante fonctionne -->\r
+               <xs:unique name="Uniq_Command">\r
+                       <xs:selector xpath="*"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:element name="validators" type="T_validators"/>\r
+       <xs:element name="plageValeur" type="T_plageValeur"/>\r
+       <xs:element name="nomTypeAttendu" type="T_nomTypeAttendu"/>\r
+       <xs:element name="nomClasseUtilisateur" type="T_nomClasseUtilisateur" abstract="true" substitutionGroup="nomTypeAttendu"/>\r
+       <xs:element name="SIMP" type="T_SIMP"/>\r
+       <xs:element name="portee" type="T_portee" default="None"/>\r
+       <xs:element name="condition" type="T_fonctionUtilisateur"/>\r
+       <xs:element name="borneSup" type="T_borne"/>\r
+       <xs:element name="borneInf" type="T_borne"/>\r
+       <!--    <xs:element name="into" type="T_into"/>-->\r
+       <xs:element name="into" type="T_into"/>\r
+       <!--    <xs:element name="into_plus_fonction" type="T_into" abstract="true" substitutionGroup="into"/>-->\r
+       <xs:attribute name="nom" type="AT_nom"/>\r
+       <xs:attribute name="version" type="xs:string"/>\r
+       <xs:attribute name="fr" type="xs:string"/>\r
+       <xs:attribute name="ang" type="xs:string"/>\r
+       <xs:attribute name="docu" type="AT_docu"/>\r
+       <xs:attribute name="valeurSugg" type="AT_valeurSugg"/>\r
+       <xs:attribute name="statut" type="AT_statut" default="o"/>\r
+       <xs:attribute name="maxOccurences" type="AT_maxOccurences"/>\r
+       <xs:attribute name="minOccurences" type="AT_minOccurences"/>\r
+       <xs:attribute name="subroutine" type="AT_subroutine" default="None"/>\r
+       <xs:complexType name="T_doc">\r
+               <xs:attribute ref="fr" use="optional"/>\r
+               <xs:attribute ref="ang"/>\r
+               <xs:attribute ref="docu"/>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_cata">\r
+               <xs:sequence>\r
+                       <xs:element ref="commandes" minOccurs="0" maxOccurs="unbounded"/>\r
+               </xs:sequence>\r
+           <xs:attribute ref="nom"/>\r
+           <xs:attribute ref="version"/>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_commandes">\r
+               <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+                       <xs:element ref="OPER"/>\r
+                       <xs:element ref="PROC"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_plageValeur">\r
+               <xs:choice>\r
+                       <xs:sequence>\r
+                               <xs:element ref="borneSup" minOccurs="0"/>\r
+                               <xs:element ref="borneInf" minOccurs="0"/>\r
+                       </xs:sequence>\r
+                       <xs:element ref="into" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_accasCommun">\r
+               <xs:sequence>\r
+                       <xs:element ref="regles" minOccurs="0"/>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:choice maxOccurs="unbounded">\r
+                               <xs:element ref="BLOC"/>\r
+                               <xs:element ref="FACT"/>\r
+                               <xs:element ref="SIMP"/>\r
+                       </xs:choice>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+       </xs:complexType>\r
+       <xs:element name="OPER" type="T_OPER">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau dans OPER ou PROC    -->\r
+               <xs:key name="Key_Name_In_Oper">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Exclus" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Oper_Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Oper">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Oper_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_OPER">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommun">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="typeCree"/>\r
+                               </xs:sequence>\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="PROC" type="T_PROC">\r
+               <!-- La contrainte fonctionne pour toutes les PROC adjacentes et devrait être par PROC -->\r
+               <xs:key name="Key_Name_In_Proc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC | ./efficas:FACT | ./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Exclus" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Exclus">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_A_Classer" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_A_Classer">\r
+                       <xs:selector xpath="./efficas:regles/efficas:A_CLASSER/efficas:p1 | ./efficas:regles/efficas:A_CLASSER/efficas:p2"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Moins_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Moins_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_MOINS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Au_Plus_Un" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Au_Plus_Un">\r
+                       <xs:selector xpath="./efficas:regles/efficas:AU_PLUS_UN"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Ensemble" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Ensemble">\r
+                       <xs:selector xpath="./efficas:regles/efficas:ENSEMBLE"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Absent" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Absent">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_ABSENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Proc_Ref_A_Name_In_Present_Present" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Present_Present">\r
+                       <xs:selector xpath="./efficas:regles/efficas:PRESENT_PRESENT"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+               <xs:keyref name="Ref_A_Name_In_Un_Parmi" refer="Key_Name_In_Proc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+               <xs:unique name="Proc_Uniq_Name_In_Un_Parmi">\r
+                       <xs:selector xpath="./efficas:regles/efficas:UN_PARMI"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:unique>\r
+       </xs:element>\r
+       <xs:complexType name="T_PROC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommun">\r
+                               <xs:attribute ref="subroutine"/>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:element name="FACT" type="T_FACT">\r
+               <!-- La contrainte fonctionne uniquement si l'on n'oublie pas le prefix dans l'expression du selector !  -->\r
+               <!-- aucun nom identique ne doit apparaître dans les sous élements d'un même niveau de FACT              -->\r
+               <xs:key name="Key_Name_In_Fact">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Fact" refer="Key_Name_In_Fact">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <!-- Définition par restriction -->\r
+       <!--    <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_accasCommun">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="regles" minOccurs="0"/>\r
+                                       <xs:element ref="doc" minOccurs="0"/>\r
+                                       <xs:choice maxOccurs="unbounded">\r
+                                               <xs:element ref="BLOC"/>\r
+                                               <xs:element ref="FACT"/>\r
+                                               <xs:element ref="SIMP"/>\r
+                                       </xs:choice>\r
+                               </xs:sequence>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>-->\r
+       <xs:complexType name="T_FACT">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommun">\r
+                               <xs:attribute ref="statut"/>\r
+                               <xs:attribute ref="minOccurences" default="1"/>\r
+                               <xs:attribute ref="maxOccurences" default="1">\r
+                                       <xs:annotation>\r
+                                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                                       </xs:annotation>\r
+                               </xs:attribute>\r
+                       </xs:extension>\r
+                       <!--                            <xs:assert test=".[exists(@efficas:maxOccurences) and exists(@efficas:minOccurences) and @efficas:maxOccurences  gt @efficas:minOccurences]"/>\r
+-->\r
+                       <!--<xs:assert test="if (.[exists(@efficas:maxOccurences)] and .[exists(@efficas:minOccurences)] ) then (@efficas:maxOccurences  gt @efficas:minOccurences) or @efficas:maxOccurences = -1 else true" altova:message="Erreur maxOccurences  > minOccurences "/>-->\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_fonctionUtilisateur">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:element name="BLOC" type="T_BLOC">\r
+               <xs:key name="Key_Name_In_Bloc">\r
+                       <xs:annotation>\r
+                               <xs:documentation>SIMP devrait être selectionné que si .//SIMP[portee='Global']</xs:documentation>\r
+                       </xs:annotation>\r
+                       <xs:selector xpath="./efficas:BLOC |./efficas:FACT|./efficas:SIMP"/>\r
+                       <xs:field xpath="@efficas:nom"/>\r
+               </xs:key>\r
+               <xs:keyref name="Ref_A_Name_In_Bloc" refer="Key_Name_In_Bloc">\r
+                       <xs:selector xpath="./efficas:regles/efficas:EXCLUS"/>\r
+                       <xs:field xpath="."/>\r
+               </xs:keyref>\r
+       </xs:element>\r
+       <xs:complexType name="T_BLOC">\r
+               <xs:complexContent>\r
+                       <xs:extension base="T_accasCommun">\r
+                               <xs:sequence>\r
+                                       <xs:element ref="condition"/>\r
+                               </xs:sequence>\r
+                       </xs:extension>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_SIMP">\r
+               <xs:sequence>\r
+                       <xs:element ref="doc" minOccurs="0"/>\r
+                       <xs:element ref="portee" minOccurs="0">\r
+                               <xs:annotation>\r
+                                       <xs:documentation>La portée pouurait devenir un attribut de SIMP. Une autre solution consisterait a créer un SIMPG pour distinguer les @nom uniques des SIMP a portée globale des autres.</xs:documentation>\r
+                               </xs:annotation>\r
+                       </xs:element>\r
+                       <xs:element ref="valeurDef" minOccurs="0"/>\r
+                       <xs:element ref="valeurSugg" minOccurs="0"/>\r
+                       <xs:element ref="plageValeur" minOccurs="0"/>\r
+                       <xs:element ref="nomTypeAttendu"/>\r
+                       <xs:element ref="validators" minOccurs="0"/>\r
+               </xs:sequence>\r
+               <xs:attribute ref="nom" use="required"/>\r
+               <xs:attribute ref="statut" default="o"/>\r
+               <xs:attribute ref="minOccurences" default="1"/>\r
+               <xs:attribute ref="maxOccurences" default="1">\r
+                       <xs:annotation>\r
+                               <xs:documentation>La valeur -1 equivaut à oo</xs:documentation>\r
+                       </xs:annotation>\r
+               </xs:attribute>\r
+       </xs:complexType>\r
+       <xs:simpleType name="AT_statut">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="f"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!--<xs:simpleType name="T_repetable">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="n"/>\r
+                       <xs:enumeration value="o"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>-->\r
+       <xs:simpleType name="T_portee">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="None"/>\r
+                       <xs:enumeration value="Global"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_maxOccurences">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minInclusive value="-1"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_minOccurences">\r
+               <xs:restriction base="xs:long">\r
+                       <xs:minInclusive value="0"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Comparable -->\r
+       <!--    <xs:simpleType name="AT_borne_sup">\r
+       <xs:atomic base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_borne_inf">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_docu">\r
+               <xs:annotation>\r
+                       <xs:documentation>Référence une position dans un fichier maître contenant une liste de références à des pages de documentations</xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_valeurSugg">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <!-- TODO: Exclure mots clés python|efficas -->\r
+       <xs:simpleType name="T_pythonIdentifiant">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:pattern value="([A-Z]|[a-z]|_)([A-Z]|[a-z]|_|[0-9])*"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="AT_nom">\r
+               <xs:restriction base="T_pythonIdentifiant"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_predicat1">\r
+               <xs:list itemType="T_pythonIdentifiant"/>\r
+               <!-- TODO: Supprimer la liste -->\r
+       </xs:simpleType>\r
+       <xs:complexType name="T_predicat2">\r
+               <xs:sequence>\r
+                       <xs:element name="p1" type="T_predicat1" minOccurs="1"/>\r
+                       <xs:element name="p2" type="T_pythonIdentifiant" minOccurs="1"/>\r
+               </xs:sequence>\r
+               <!-- TODO: Supprimer la séquence -->\r
+       </xs:complexType>\r
+       <xs:element name="A_CLASSER" type="T_predicat2"/>\r
+       <xs:element name="AU_MOINS_UN" type="T_predicat1"/>\r
+       <xs:element name="AU_PLUS_UN" type="T_predicat1"/>\r
+       <xs:element name="ENSEMBLE" type="T_predicat1"/>\r
+       <xs:element name="EXCLUS" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_ABSENT" type="T_predicat1"/>\r
+       <xs:element name="PRESENT_PRESENT" type="T_predicat1"/>\r
+       <xs:element name="UN_PARMI" type="T_predicat1"/>\r
+       <xs:group name="predicat">\r
+               <xs:choice>\r
+                       <xs:element ref="A_CLASSER"/>\r
+                       <xs:element ref="AU_MOINS_UN"/>\r
+                       <xs:element ref="AU_PLUS_UN"/>\r
+                       <xs:element ref="ENSEMBLE"/>\r
+                       <xs:element ref="EXCLUS"/>\r
+                       <xs:element ref="PRESENT_ABSENT"/>\r
+                       <xs:element ref="PRESENT_PRESENT"/>\r
+                       <xs:element ref="UN_PARMI"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+       <xs:complexType name="T_regles">\r
+               <xs:sequence maxOccurs="unbounded">\r
+                       <xs:group ref="predicat"/>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <!--    <xs:simpleType name="T_typeCree">\r
+               <xs:restriction base="T_classeUtilisateur"/>\r
+       </xs:simpleType>\r
+-->\r
+       <xs:simpleType name="AT_subroutine">\r
+               <xs:restriction base="T_pythonIdentifiant"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_validators">\r
+               <xs:restriction base="xs:string">\r
+                       <xs:enumeration value="NoRepeat"/>\r
+                       <xs:enumeration value="OnlyStr"/>\r
+                       <xs:enumeration value="VerifExiste"/>\r
+                       <xs:enumeration value="VerifTypeTuple"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_bool">\r
+               <xs:restriction base="xs:boolean"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_bool">\r
+               <xs:list itemType="T_bool"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_I">\r
+               <xs:restriction base="xs:int"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_I">\r
+               <xs:list itemType="T_I"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_R">\r
+               <xs:restriction base="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_R">\r
+               <xs:list itemType="T_R"/>\r
+       </xs:simpleType>\r
+       <!--    <xs:simpleType name="T_TXM">\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_TXM">\r
+               <xs:list itemType="T_TXM"/>\r
+       </xs:simpleType>\r
+-->\r
+       <!--<xs:simpleType name="T_list_TXM">\r
+       <xs:restriction base="T_list_TXM2"> <xs:maxLength value="1"/><xs:minLength value="1"/></xs:restriction>\r
+</xs:simpleType>\r
+-->\r
+       <!--fonctionne mais ne permet pas de créer une liste de liste -->\r
+       <xs:simpleType name="T_C">\r
+               <xs:restriction>\r
+                       <xs:simpleType>\r
+                               <xs:list itemType="xs:double"/>\r
+                       </xs:simpleType>\r
+                       <xs:minLength value="2"/>\r
+                       <xs:maxLength value="2"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Ajouter une contrainte : taille pair -->\r
+       <!-- Il n'est pas possible de définir des listes de listes -->\r
+       <xs:simpleType name="T_list_C">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_nomTypeAttenduBase">\r
+               <xs:restriction base="T_pythonIdentifiant"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simpleName">\r
+               <xs:restriction base="T_nomTypeAttenduBase">\r
+                       <xs:enumeration value="Fichier"/>\r
+                       <xs:enumeration value="Repertoire"/>\r
+                       <xs:enumeration value="I"/>\r
+                       <xs:enumeration value="R"/>\r
+                       <xs:enumeration value="C"/>\r
+                       <xs:enumeration value="bool"/>\r
+                       <xs:enumeration value="grma"/>\r
+                       <xs:enumeration value="grno"/>\r
+                       <xs:enumeration value="SalomeEntry"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_nomTypeAttendu">\r
+               <xs:union memberTypes="T_simpleName">\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="T_pythonIdentifiant">\r
+                                       <xs:enumeration value="TXM"/>\r
+                                       <xs:enumeration value="matriceDouble"/>\r
+                                       <xs:enumeration value="matriceSymetriqueDouble"/>\r
+                                       <xs:enumeration value="tuple"/>\r
+                                       <xs:enumeration value="classeUtilisateur"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:union>\r
+       </xs:simpleType>\r
+       <!-- On ne peut pas rendre abstrait un simpleType && \r
+          Il n'est pas possible de dériver par restriction un simplecontent d'un type complex qui\r
+          lui peut être abstrait.\r
+    -->\r
+       <!-- Le type T_nomDuTypeClasseUtilisateur est réduit à l'énumeration "classeUtilisateur"\r
+          et utilisé dans le type T_nomClasseUtilisateur pour y ajouter un attribut nom\r
+    -->\r
+       <xs:simpleType name="T_nomDuTypeClasseUtilisateur">\r
+               <xs:restriction base="T_nomTypeAttendu">\r
+                       <xs:enumeration value="classeUtilisateur"/>\r
+               </xs:restriction>\r
+       </xs:simpleType>\r
+       <!-- Le nom de la classe utilisateur est donnée dans l'attribut nom-->\r
+       <xs:complexType name="T_nomClasseUtilisateur">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_nomDuTypeClasseUtilisateur">\r
+                               <xs:attribute ref="nom" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_grma"/>\r
+       <xs:complexType name="T_grno"/>\r
+       <xs:complexType name="T_SalomeEntry"/>\r
+       <xs:complexType name="T_Fichier"/>\r
+       <!--    <xs:complexType name="T_Repertoire"/>-->\r
+       <xs:simpleType name="T_Repertoire">\r
+               <xs:list>\r
+                       <xs:simpleType>\r
+                               <xs:restriction base="xs:string">\r
+                                       <xs:whiteSpace value="preserve"/>\r
+                               </xs:restriction>\r
+                       </xs:simpleType>\r
+               </xs:list>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_simple">\r
+               <xs:union memberTypes="T_I T_list_I T_R T_list_R T_C T_list_C T_bool T_list_bool T_Repertoire"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_TXM">\r
+               <xs:annotation>\r
+                       <xs:documentation>les TXM peuvent contenir des espaces, pour créer une liste de TXM, il faut donc répéter le nom de la balise.</xs:documentation>\r
+               </xs:annotation>\r
+               <xs:restriction base="xs:string"/>\r
+       </xs:simpleType>\r
+       <xs:simpleType name="T_list_Double">\r
+               <xs:list itemType="xs:double"/>\r
+       </xs:simpleType>\r
+       <!-- Possibilité d'utiliser un type paramétré ? -->\r
+       <xs:complexType name="T_matriceDouble">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_Double">\r
+                               <xs:attribute name="n" type="xs:integer" use="required"/>\r
+                               <xs:attribute name="m" type="xs:integer" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Faire l'exercice de dériver de T_matriceDouble -->\r
+       <xs:complexType name="T_matriceSymetriqueDouble">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="T_list_Double">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <!-- Une liste est aussi un type simple ! -->\r
+       <!--    <xs:simpleType name="T_list_anySimpleType">\r
+               <xs:list itemType="xs:anySimpleType"/>\r
+       </xs:simpleType>\r
+-->\r
+       <!-- Le fait de ne pas déclarer une liste risque d'être problématique pour le parsing : Problème résolu avec une séquence de tuple -->\r
+       <xs:complexType name="T_tuple">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:anySimpleType">\r
+                               <xs:attribute name="n" type="xs:int" use="required"/>\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+       <xs:simpleType name="T_classeUtilisateur">\r
+               <xs:restriction base="T_pythonIdentifiant"/>\r
+       </xs:simpleType>\r
+       <xs:element name="typesimple" type="T_simple"/>\r
+       <xs:element name="TXM" type="T_TXM"/>\r
+       <xs:element name="matriceDouble" type="T_matriceDouble"/>\r
+       <xs:element name="matriceSymetriqueDouble" type="T_matriceSymetriqueDouble"/>\r
+       <xs:element name="tuple" type="T_tuple"/>\r
+       <xs:element name="classeUtilisateur" type="T_classeUtilisateur"/>\r
+       <!-- Essai -->\r
+       <!--    <xs:group name="T_Attendu_group1">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matriceDouble"/>\r
+                       <xs:element ref="matriceSymetriqueDouble"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classeUtilisateur"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:group name="T_Attendu_group2">\r
+               <xs:choice>\r
+                       <xs:element ref="typesimple"/>\r
+                       <xs:element ref="matriceDouble"/>\r
+                       <xs:element ref="matriceSymetriqueDouble"/>\r
+                       <xs:element ref="tuple"/>\r
+                       <xs:element ref="classeUtilisateur"/>\r
+                       <xs:element ref="fonctionUtilisateur" minOccurs="1" maxOccurs="unbounded"/>\r
+               </xs:choice>\r
+       </xs:group>\r
+\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:group ref="T_Attendu_group1"/>\r
+       </xs:complexType>\r
+       -->\r
+       <!-- Faire plutot un groupe de substitution pour ne pas croiser les choix -->\r
+       <!--\r
+       <xs:complexType name="T_into">\r
+         <xs:group ref="T_Attendu_group2"/>\r
+       </xs:complexType>\r
+       -->\r
+       <xs:complexType name="T_into">\r
+               <xs:choice>\r
+                       <!--                    <xs:element ref="typesimple" type="T_Base"/>-->\r
+                       <xs:element ref="typesimple" minOccurs="0"/>\r
+                       <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+               </xs:choice>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_typeAttendu">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_into">\r
+                               <xs:choice>\r
+                                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="matriceDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="matriceSymetriqueDouble" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="tuple" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="classeUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+                               </xs:choice>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+       <xs:complexType name="T_borne">\r
+               <xs:complexContent>\r
+                       <xs:restriction base="T_into">\r
+                               <xs:choice>\r
+                                       <xs:element ref="typesimple" minOccurs="0" maxOccurs="1"/>\r
+                                       <xs:element ref="TXM" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       <xs:element ref="fonctionUtilisateur" minOccurs="0" maxOccurs="1"/>\r
+                               </xs:choice>\r
+                       </xs:restriction>\r
+               </xs:complexContent>\r
+       </xs:complexType>\r
+</xs:schema>\r
+<!-- Catalogue EFFICAS équivalent\r
+\r
+# coding: utf-8\r
+from Accas import *\r
+\r
+class carte   (ASSD) : pass\r
+class maille   (ASSD) : pass\r
+class carte_flux_r   (carte):pass\r
+\r
+class NOM_CHAM_INTO:\r
+    def __call__(self, *l_typ_cham, **kwargs):\r
+        return tuple(('A','B','C'))\r
+C_NOM_CHAM_INTO = NOM_CHAM_INTO()\r
+\r
+JdC = JDC_CATA(code='MAP',\r
+               execmodul=None,\r
+               regles=ENSEMBLE('E1','E2','E3')\r
+               )\r
+\r
+CREECARTE = OPER(nom="CREECARTE",op=None, sd_prod=carte, UNITE=SIMP(statut='f',typ='I',defaut=21),);\r
+\r
+CREECARTEFLUX = OPER(nom="CREECARTEFLUX",op=None, sd_prod=carte_flux_r,\r
+                   NOMFLUX=SIMP(statut='o',typ='TXM',defaut='monFlux'),\r
+                );\r
+\r
+CREEMAILLE = OPER(nom="CREEMAILLE",op=None, sd_prod=maille,\r
+                NOEUDS=SIMP(statut='o',typ='I',defaut=(1,2),min=2,max=2)\r
+              );\r
+\r
+E1=PROC(nom="E1",\r
+        op=None,\r
+        regles    = (EXCLUS('ETAT_INIT','RESULTAT',),),\r
+        ETAT_INIT = FACT(statut='f', max='**',\r
+                         GROUP_MA_1=SIMP(statut='o',typ='I',validators=NoRepeat(),max='**'),\r
+                         GROUP_NO_2=SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),\r
+                    ),\r
+\r
+        RESULTAT  = FACT(statut='f',\r
+                         DEPL=SIMP(statut='o', typ='R',  validators=NoRepeat()),\r
+                         VITE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                         ACCE=SIMP(statut='f', typ='R',  validators=NoRepeat()),\r
+                    ), \r
+        );\r
+\r
+E2=PROC(nom="E2", op=None,\r
+        regles   = (UN_PARMI('CONCEPT','CHAINE','TOUT' ),),\r
+        CONCEPT  = FACT(statut='f',max='**',\r
+                   NOM = SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),\r
+                   ),\r
+        CHAINE   = SIMP(statut='f',typ='TXM'),\r
+        POSITION = SIMP(statut='f',typ='I',defaut=1),\r
+        TOUT     = SIMP(statut='f',typ='TXM',into=("OUI",) ),\r
+        );\r
+\r
+E3=PROC(nom="E3",op=None,\r
+        DEFORMATION = SIMP(statut='f',typ='TXM',defaut="PETIT",\r
+                           into=("PETIT","PETIT_REAC","GROT_GDEP","SIMO_MIEHE","GDEF_HYPO_ELAS","GDEF_LOG")),\r
+        b_blocIn    = BLOC(condition = "DEFORMATION in ('PETIT','PETIT_REAC','GROT_GDEP')",\r
+             ITER_INTE_PAS = SIMP(statut='f',typ='I',defaut= 0 ),\r
+             ALGO_INTE     = SIMP(statut='f',typ='TXM',into=("ANALYTIQUE", "SECANTE", "DEKKER", "NEWTON_1D","BRENT",),),\r
+             CARTE        = SIMP(statut='f',typ=carte,),\r
+             b_carte       = BLOC(condition= "(AsType(CARTE) != carte_flux_r)",\r
+                             CONTRAINTE = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',\r
+                                          fr="Options pour le calcul de contraintes et efforts generalises",\r
+                                           into=C_NOM_CHAM_INTO(phenomene='CONTRAINTE',categorie='lin'),)\r
+                             ),\r
+                      ),  \r
+       );\r
+\r
+-->\r
diff --git a/Efi2Xsd/README.txt b/Efi2Xsd/README.txt
new file mode 100644 (file)
index 0000000..7c4bb86
--- /dev/null
@@ -0,0 +1,7 @@
+pyxbgen -u model.xsd -m efficas --write-for-customization
+/local/PyXB-1.2.6/scripts/pyxbgen  -u model.xsd -m efficas --write-for-customization
+/local/PyXB-1.2.6/scripts/pyxbgen  -u model_ext.xsd -m efficas_ext --write-for-customization
+
+
+/local/PyXB-1.2.6/scripts/pyxbgen  -u model.xsd -m efficas --write-for-customization --default-namespace-public --archive-to-file=model.wxsd 
+/local/PyXB-1.2.6/scripts/pyxbgen  -u model_ext.xsd -m efficas_ext --write-for-customization --archive-path=.:+
diff --git a/Efi2Xsd/ReadMe.txt b/Efi2Xsd/ReadMe.txt
new file mode 100644 (file)
index 0000000..4c1dd01
--- /dev/null
@@ -0,0 +1,7 @@
+Pyxb --> accas
+si simp on ne passe rien
+sinon un dictPyxb avec valeur dict des objets clef=nom 
+et un objpyxb dans objpyxb
+
+il faut mettre à jour la liste en cohérence avec l ordered content
+Attention aux blocs
diff --git a/Efi2Xsd/ReadmeFichiers.txt b/Efi2Xsd/ReadmeFichiers.txt
new file mode 100644 (file)
index 0000000..3294b36
--- /dev/null
@@ -0,0 +1,17 @@
+AccasXsd.py
+  contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue
+
+balises.py
+  contient les balises necessaires pour generer le xsd metier a partir du catalogue eficas (ou .py ou en .xsd)
+
+efficas.py
+  contient le modele genere par pyxb a partir du XSD eficas
+
+mapDesTypes.py
+  fait le lien bidirectionnel entre les types ACCAS et les types XSD 
+
+MCAccasXsd.py
+  contient les classes qui font le lien entre les classes objet Accas et les classes pyxb generees a partir du XSD genere a partir du catalogue
+
+readerEfiXsd.py
+  contient les classes qui font le lien entre les classes de definition Accas et les classes pyxb generees a partir du modele eficas XSD
diff --git a/Efi2Xsd/XMLSchema(1.1)_efv1.xsd b/Efi2Xsd/XMLSchema(1.1)_efv1.xsd
new file mode 100644 (file)
index 0000000..e451b84
--- /dev/null
@@ -0,0 +1,1901 @@
+<?xml version="1.0"?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XSD 1.1//EN" "XMLSchema.dtd" [
+       <!-- provide ID type information even for parsers which only read the
+     internal subset -->
+       <!ATTLIST xs:schema
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:complexType
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:complexContent
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:simpleContent
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:extension
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:element
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:group
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:all
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:choice
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:sequence
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:any
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:anyAttribute
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:attribute
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:attributeGroup
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:unique
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:key
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:keyref
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:selector
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:field
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:assert
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:include
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:import
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:redefine
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:override
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:notation
+               id ID #IMPLIED
+       >
+       <!--
+        Make sure that processors that do not read the external
+        subset will know about the various IDs we declare
+  -->
+       <!ATTLIST xs:simpleType
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:maxExclusive
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:minExclusive
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:maxInclusive
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:minInclusive
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:totalDigits
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:fractionDigits
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:length
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:minLength
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:maxLength
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:enumeration
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:pattern
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:assertion
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:explicitTimezone
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:appinfo
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:documentation
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:list
+               id ID #IMPLIED
+       >
+       <!ATTLIST xs:union
+               id ID #IMPLIED
+       >
+]>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0" xml:lang="EN" vc:minVersion="1.1">
+       <xs:annotation>
+               <xs:documentation>
+    Part 1 version: structures.xsd (rec-20120405)
+    Part 2 version: datatypes.xsd (rec-20120405)
+  </xs:documentation>
+       </xs:annotation>
+       <xs:annotation>
+               <xs:documentation source="../structures/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema Definition Language.  The documentation (within 'documentation' elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part.
+
+      See below (at the bottom of this document) for information about
+      the revision and namespace-versioning policy governing this
+      schema document.
+
+    </xs:documentation>
+       </xs:annotation>
+       <xs:annotation>
+               <xs:documentation>
+   The simpleType element and all of its members are defined
+   towards the end of this schema document.</xs:documentation>
+       </xs:annotation>
+       <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+               <xs:annotation>
+                       <xs:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xs:documentation>
+               </xs:annotation>
+       </xs:import>
+       <xs:complexType name="openAttrs">
+               <xs:annotation>
+                       <xs:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:restriction base="xs:anyType">
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="annotated">
+               <xs:annotation>
+                       <xs:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema> itself
+     </xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:extension base="xs:openAttrs">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="id" type="xs:ID"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:group name="composition">
+               <xs:choice>
+                       <xs:element ref="xs:include"/>
+                       <xs:element ref="xs:import"/>
+                       <xs:element ref="xs:redefine"/>
+                       <xs:element ref="xs:override"/>
+                       <xs:element ref="xs:annotation"/>
+               </xs:choice>
+       </xs:group>
+       <xs:group name="schemaTop">
+               <xs:annotation>
+                       <xs:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xs:documentation>
+               </xs:annotation>
+               <xs:choice>
+                       <xs:group ref="xs:redefinable"/>
+                       <xs:element ref="xs:element"/>
+                       <xs:element ref="xs:attribute"/>
+                       <xs:element ref="xs:notation"/>
+               </xs:choice>
+       </xs:group>
+       <xs:group name="redefinable">
+               <xs:annotation>
+                       <xs:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xs:documentation>
+               </xs:annotation>
+               <xs:choice>
+                       <xs:element ref="xs:simpleType"/>
+                       <xs:element ref="xs:complexType"/>
+                       <xs:element ref="xs:group"/>
+                       <xs:element ref="xs:attributeGroup"/>
+               </xs:choice>
+       </xs:group>
+       <xs:simpleType name="formChoice">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:NMTOKEN">
+                       <xs:enumeration value="qualified"/>
+                       <xs:enumeration value="unqualified"/>
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:simpleType name="reducedDerivationControl">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:derivationControl">
+                       <xs:enumeration value="extension"/>
+                       <xs:enumeration value="restriction"/>
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:simpleType name="derivationSet">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+                       <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+               </xs:annotation>
+               <xs:union>
+                       <xs:simpleType>
+                               <xs:restriction base="xs:token">
+                                       <xs:enumeration value="#all"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+                       <xs:simpleType>
+                               <xs:list itemType="xs:reducedDerivationControl"/>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:simpleType name="typeDerivationControl">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:derivationControl">
+                       <xs:enumeration value="extension"/>
+                       <xs:enumeration value="restriction"/>
+                       <xs:enumeration value="list"/>
+                       <xs:enumeration value="union"/>
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:simpleType name="fullDerivationSet">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+                       <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+               </xs:annotation>
+               <xs:union>
+                       <xs:simpleType>
+                               <xs:restriction base="xs:token">
+                                       <xs:enumeration value="#all"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+                       <xs:simpleType>
+                               <xs:list itemType="xs:typeDerivationControl"/>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:element name="schema" id="schema">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-schema"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:openAttrs">
+                                       <xs:sequence>
+                                               <xs:group ref="xs:composition" minOccurs="0" maxOccurs="unbounded"/>
+                                               <xs:sequence minOccurs="0">
+                                                       <xs:element ref="xs:defaultOpenContent"/>
+                                                       <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+                                               </xs:sequence>
+                                               <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                                                       <xs:group ref="xs:schemaTop"/>
+                                                       <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+                                               </xs:sequence>
+                                       </xs:sequence>
+                                       <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+                                       <xs:attribute name="version" type="xs:token"/>
+                                       <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+                                       <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+                                       <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+                                       <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+                                       <xs:attribute name="defaultAttributes" type="xs:QName"/>
+                                       <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace" use="optional" default="##local"/>
+                                       <xs:attribute name="id" type="xs:ID"/>
+                                       <xs:attribute ref="xml:lang"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+               <xs:key name="element">
+                       <xs:selector xpath="xs:element"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="attribute">
+                       <xs:selector xpath="xs:attribute"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="type">
+                       <xs:selector xpath="xs:complexType|xs:simpleType"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="group">
+                       <xs:selector xpath="xs:group"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="attributeGroup">
+                       <xs:selector xpath="xs:attributeGroup"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="notation">
+                       <xs:selector xpath="xs:notation"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+               <xs:key name="identityConstraint">
+                       <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+                       <xs:field xpath="@name"/>
+               </xs:key>
+       </xs:element>
+       <xs:simpleType name="allNNI">
+               <xs:annotation>
+                       <xs:documentation>
+   for maxOccurs</xs:documentation>
+               </xs:annotation>
+               <xs:union memberTypes="xs:nonNegativeInteger">
+                       <xs:simpleType>
+                               <xs:restriction base="xs:NMTOKEN">
+                                       <xs:enumeration value="unbounded"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:attributeGroup name="occurs">
+               <xs:annotation>
+                       <xs:documentation>
+   for all particles</xs:documentation>
+               </xs:annotation>
+               <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+               <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+       </xs:attributeGroup>
+       <xs:attributeGroup name="defRef">
+               <xs:annotation>
+                       <xs:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xs:documentation>
+               </xs:annotation>
+               <xs:attribute name="name" type="xs:NCName"/>
+               <xs:attribute name="ref" type="xs:QName"/>
+       </xs:attributeGroup>
+       <xs:group name="typeDefParticle">
+               <xs:annotation>
+                       <xs:documentation>
+   'complexType' uses this</xs:documentation>
+               </xs:annotation>
+               <xs:choice>
+                       <xs:element name="group" type="xs:groupRef"/>
+                       <xs:element ref="xs:all"/>
+                       <xs:element ref="xs:choice"/>
+                       <xs:element ref="xs:sequence"/>
+               </xs:choice>
+       </xs:group>
+       <xs:group name="nestedParticle">
+               <xs:choice>
+                       <xs:element name="element" type="xs:localElement"/>
+                       <xs:element name="group" type="xs:groupRef"/>
+                       <xs:element ref="xs:choice"/>
+                       <xs:element ref="xs:sequence"/>
+                       <xs:element ref="xs:any"/>
+               </xs:choice>
+       </xs:group>
+       <xs:group name="particle">
+               <xs:choice>
+                       <xs:element name="element" type="xs:localElement"/>
+                       <xs:element name="group" type="xs:groupRef"/>
+                       <xs:element ref="xs:all"/>
+                       <xs:element ref="xs:choice"/>
+                       <xs:element ref="xs:sequence"/>
+                       <xs:element ref="xs:any"/>
+               </xs:choice>
+       </xs:group>
+       <xs:complexType name="attribute">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:sequence>
+                                       <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attributeGroup ref="xs:defRef"/>
+                               <xs:attribute name="type" type="xs:QName"/>
+                               <xs:attribute name="use" use="optional" default="optional">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:NMTOKEN">
+                                                       <xs:enumeration value="prohibited"/>
+                                                       <xs:enumeration value="optional"/>
+                                                       <xs:enumeration value="required"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:attribute>
+                               <xs:attribute name="default" type="xs:string"/>
+                               <xs:attribute name="fixed" type="xs:string"/>
+                               <xs:attribute name="form" type="xs:formChoice"/>
+                               <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+                               <xs:attribute name="inheritable" type="xs:boolean"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="topLevelAttribute">
+               <xs:complexContent>
+                       <xs:restriction base="xs:attribute">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="ref" use="prohibited"/>
+                               <xs:attribute name="form" use="prohibited"/>
+                               <xs:attribute name="use" use="prohibited"/>
+                               <xs:attribute name="targetNamespace" use="prohibited"/>
+                               <xs:attribute name="name" type="xs:NCName" use="required"/>
+                               <xs:attribute name="inheritable" type="xs:boolean"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:group name="attrDecls">
+               <xs:sequence>
+                       <xs:choice minOccurs="0" maxOccurs="unbounded">
+                               <xs:element name="attribute" type="xs:attribute"/>
+                               <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+                       </xs:choice>
+                       <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+               </xs:sequence>
+       </xs:group>
+       <xs:element name="anyAttribute" id="anyAttribute">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-anyAttribute"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:wildcard">
+                                       <xs:attribute name="notQName" type="xs:qnameListA" use="optional"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:group name="assertions">
+               <xs:sequence>
+                       <xs:element name="assert" type="xs:assertion" minOccurs="0" maxOccurs="unbounded"/>
+               </xs:sequence>
+       </xs:group>
+       <xs:complexType name="assertion">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:attribute name="test" type="xs:string"/>
+                               <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:group name="complexTypeModel">
+               <xs:choice>
+                       <xs:element ref="xs:simpleContent"/>
+                       <xs:element ref="xs:complexContent"/>
+                       <xs:sequence>
+                               <xs:annotation>
+                                       <xs:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xs:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xs:documentation>
+                               </xs:annotation>
+                               <xs:element ref="xs:openContent" minOccurs="0"/>
+                               <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+                               <xs:group ref="xs:attrDecls"/>
+                               <xs:group ref="xs:assertions"/>
+                       </xs:sequence>
+               </xs:choice>
+       </xs:group>
+       <xs:complexType name="complexType" abstract="true">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:group ref="xs:complexTypeModel"/>
+                               <xs:attribute name="name" type="xs:NCName">
+                                       <xs:annotation>
+                                               <xs:documentation>
+      Will be restricted to required or prohibited</xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <xs:attribute name="mixed" type="xs:boolean" use="optional">
+                                       <xs:annotation>
+                                               <xs:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overridden by setting on complexContent child.</xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+                               <xs:attribute name="final" type="xs:derivationSet"/>
+                               <xs:attribute name="block" type="xs:derivationSet"/>
+                               <xs:attribute name="defaultAttributesApply" type="xs:boolean" use="optional" default="true"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="topLevelComplexType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:complexType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:complexTypeModel"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" type="xs:NCName" use="required"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="localComplexType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:complexType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:complexTypeModel"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" use="prohibited"/>
+                               <xs:attribute name="abstract" use="prohibited"/>
+                               <xs:attribute name="final" use="prohibited"/>
+                               <xs:attribute name="block" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="restrictionType">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:sequence>
+                                       <xs:choice minOccurs="0">
+                                               <xs:sequence>
+                                                       <xs:element ref="xs:openContent" minOccurs="0"/>
+                                                       <xs:group ref="xs:typeDefParticle"/>
+                                               </xs:sequence>
+                                               <xs:group ref="xs:simpleRestrictionModel"/>
+                                       </xs:choice>
+                                       <xs:group ref="xs:attrDecls"/>
+                                       <xs:group ref="xs:assertions"/>
+                               </xs:sequence>
+                               <xs:attribute name="base" type="xs:QName" use="required"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="complexRestrictionType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:restrictionType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="0">
+                                               <xs:annotation>
+                                                       <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+                                               </xs:annotation>
+                                               <xs:sequence>
+                                                       <xs:element ref="xs:openContent" minOccurs="0"/>
+                                                       <xs:group ref="xs:typeDefParticle"/>
+                                               </xs:sequence>
+                                       </xs:choice>
+                                       <xs:group ref="xs:attrDecls"/>
+                                       <xs:group ref="xs:assertions"/>
+                               </xs:sequence>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="extensionType">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:sequence>
+                                       <xs:element ref="xs:openContent" minOccurs="0"/>
+                                       <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+                                       <xs:group ref="xs:attrDecls"/>
+                                       <xs:group ref="xs:assertions"/>
+                               </xs:sequence>
+                               <xs:attribute name="base" type="xs:QName" use="required"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="complexContent" id="complexContent">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-complexContent"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:choice>
+                                               <xs:element name="restriction" type="xs:complexRestrictionType"/>
+                                               <xs:element name="extension" type="xs:extensionType"/>
+                                       </xs:choice>
+                                       <xs:attribute name="mixed" type="xs:boolean">
+                                               <xs:annotation>
+                                                       <xs:documentation>
+       Overrides any setting on complexType parent.</xs:documentation>
+                                               </xs:annotation>
+                                       </xs:attribute>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="openContent" id="openContent">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-openContent"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:sequence>
+                                               <xs:element name="any" type="xs:wildcard" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="mode" use="optional" default="interleave">
+                                               <xs:simpleType>
+                                                       <xs:restriction base="xs:NMTOKEN">
+                                                               <xs:enumeration value="none"/>
+                                                               <xs:enumeration value="interleave"/>
+                                                               <xs:enumeration value="suffix"/>
+                                                       </xs:restriction>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="defaultOpenContent" id="defaultOpenContent">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-defaultOpenContent"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:sequence>
+                                               <xs:element name="any" type="xs:wildcard"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="appliesToEmpty" type="xs:boolean" use="optional" default="false"/>
+                                       <xs:attribute name="mode" use="optional" default="interleave">
+                                               <xs:simpleType>
+                                                       <xs:restriction base="xs:NMTOKEN">
+                                                               <xs:enumeration value="interleave"/>
+                                                               <xs:enumeration value="suffix"/>
+                                                       </xs:restriction>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:complexType name="simpleRestrictionType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:restrictionType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="0">
+                                               <xs:annotation>
+                                                       <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+                                               </xs:annotation>
+                                               <xs:group ref="xs:simpleRestrictionModel"/>
+                                       </xs:choice>
+                                       <xs:group ref="xs:attrDecls"/>
+                                       <xs:group ref="xs:assertions"/>
+                               </xs:sequence>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="simpleExtensionType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:extensionType">
+                               <xs:sequence>
+                                       <xs:annotation>
+                                               <xs:documentation>
+      No typeDefParticle group reference</xs:documentation>
+                                       </xs:annotation>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:attrDecls"/>
+                                       <xs:group ref="xs:assertions"/>
+                               </xs:sequence>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="simpleContent" id="simpleContent">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-simpleContent"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:choice>
+                                               <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+                                               <xs:element name="extension" type="xs:simpleExtensionType"/>
+                                       </xs:choice>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-complexType"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:simpleType name="blockSet">
+               <xs:annotation>
+                       <xs:documentation>
+    A utility type, not for public use</xs:documentation>
+                       <xs:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xs:documentation>
+               </xs:annotation>
+               <xs:union>
+                       <xs:simpleType>
+                               <xs:restriction base="xs:token">
+                                       <xs:enumeration value="#all"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+                       <xs:simpleType>
+                               <xs:list>
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:derivationControl">
+                                                       <xs:enumeration value="extension"/>
+                                                       <xs:enumeration value="restriction"/>
+                                                       <xs:enumeration value="substitution"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:list>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:complexType name="element" abstract="true">
+               <xs:annotation>
+                       <xs:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:sequence>
+                                       <xs:choice minOccurs="0">
+                                               <xs:element name="simpleType" type="xs:localSimpleType"/>
+                                               <xs:element name="complexType" type="xs:localComplexType"/>
+                                       </xs:choice>
+                                       <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+                                       <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attributeGroup ref="xs:defRef"/>
+                               <xs:attribute name="type" type="xs:QName"/>
+                               <xs:attribute name="substitutionGroup">
+                                       <xs:simpleType>
+                                               <xs:list itemType="xs:QName"/>
+                                       </xs:simpleType>
+                               </xs:attribute>
+                               <xs:attributeGroup ref="xs:occurs"/>
+                               <xs:attribute name="default" type="xs:string"/>
+                               <xs:attribute name="fixed" type="xs:string"/>
+                               <xs:attribute name="nillable" type="xs:boolean" use="optional"/>
+                               <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+                               <xs:attribute name="final" type="xs:derivationSet"/>
+                               <xs:attribute name="block" type="xs:blockSet"/>
+                               <xs:attribute name="form" type="xs:formChoice"/>
+                               <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="topLevelElement">
+               <xs:complexContent>
+                       <xs:restriction base="xs:element">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="0">
+                                               <xs:element name="simpleType" type="xs:localSimpleType"/>
+                                               <xs:element name="complexType" type="xs:localComplexType"/>
+                                       </xs:choice>
+                                       <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+                                       <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attribute name="ref" use="prohibited"/>
+                               <xs:attribute name="form" use="prohibited"/>
+                               <xs:attribute name="targetNamespace" use="prohibited"/>
+                               <xs:attribute name="minOccurs" use="prohibited"/>
+                               <xs:attribute name="maxOccurs" use="prohibited"/>
+                               <xs:attribute name="name" type="xs:NCName" use="required"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="localElement">
+               <xs:complexContent>
+                       <xs:restriction base="xs:element">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="0">
+                                               <xs:element name="simpleType" type="xs:localSimpleType"/>
+                                               <xs:element name="complexType" type="xs:localComplexType"/>
+                                       </xs:choice>
+                                       <xs:element name="alternative" type="xs:altType" minOccurs="0" maxOccurs="unbounded"/>
+                                       <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attribute name="substitutionGroup" use="prohibited"/>
+                               <xs:attribute name="final" use="prohibited"/>
+                               <xs:attribute name="abstract" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="element" type="xs:topLevelElement" id="element">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-element"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:complexType name="altType">
+               <xs:annotation>
+                       <xs:documentation>
+        This type is used for 'alternative' elements.
+      </xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:choice minOccurs="0">
+                                       <xs:element name="simpleType" type="xs:localSimpleType"/>
+                                       <xs:element name="complexType" type="xs:localComplexType"/>
+                               </xs:choice>
+                               <xs:attribute name="test" type="xs:string" use="optional"/>
+                               <xs:attribute name="type" type="xs:QName" use="optional"/>
+                               <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="group" abstract="true">
+               <xs:annotation>
+                       <xs:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+                               <xs:attributeGroup ref="xs:defRef"/>
+                               <xs:attributeGroup ref="xs:occurs"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="realGroup">
+               <xs:complexContent>
+                       <xs:restriction base="xs:group">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="0" maxOccurs="1">
+                                               <xs:element ref="xs:all"/>
+                                               <xs:element ref="xs:choice"/>
+                                               <xs:element ref="xs:sequence"/>
+                                       </xs:choice>
+                               </xs:sequence>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="namedGroup">
+               <xs:complexContent>
+                       <xs:restriction base="xs:realGroup">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:choice minOccurs="1" maxOccurs="1">
+                                               <xs:element name="all">
+                                                       <xs:complexType>
+                                                               <xs:complexContent>
+                                                                       <xs:restriction base="xs:all">
+                                                                               <xs:group ref="xs:allModel"/>
+                                                                               <xs:attribute name="minOccurs" use="prohibited"/>
+                                                                               <xs:attribute name="maxOccurs" use="prohibited"/>
+                                                                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                                                                       </xs:restriction>
+                                                               </xs:complexContent>
+                                                       </xs:complexType>
+                                               </xs:element>
+                                               <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+                                               <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+                                       </xs:choice>
+                               </xs:sequence>
+                               <xs:attribute name="name" type="xs:NCName" use="required"/>
+                               <xs:attribute name="ref" use="prohibited"/>
+                               <xs:attribute name="minOccurs" use="prohibited"/>
+                               <xs:attribute name="maxOccurs" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="groupRef">
+               <xs:complexContent>
+                       <xs:restriction base="xs:realGroup">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="ref" type="xs:QName" use="required"/>
+                               <xs:attribute name="name" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="explicitGroup">
+               <xs:annotation>
+                       <xs:documentation>
+   group type for the three kinds of group</xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:restriction base="xs:group">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" use="prohibited"/>
+                               <xs:attribute name="ref" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="simpleExplicitGroup">
+               <xs:complexContent>
+                       <xs:restriction base="xs:explicitGroup">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attribute name="minOccurs" use="prohibited"/>
+                               <xs:attribute name="maxOccurs" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:group name="allModel">
+               <xs:sequence>
+                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                       <xs:choice minOccurs="0" maxOccurs="unbounded">
+                               <xs:annotation>
+                                       <xs:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xs:documentation>
+                               </xs:annotation>
+                               <xs:element name="element" type="xs:localElement"/>
+                               <xs:element ref="xs:any"/>
+                               <xs:element name="group">
+                                       <xs:complexType>
+                                               <xs:complexContent>
+                                                       <xs:restriction base="xs:groupRef">
+                                                               <xs:sequence>
+                                                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                                               </xs:sequence>
+                                                               <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" fixed="1"/>
+                                                               <xs:attribute name="maxOccurs" type="xs:nonNegativeInteger" fixed="1"/>
+                                                       </xs:restriction>
+                                               </xs:complexContent>
+                                       </xs:complexType>
+                               </xs:element>
+                       </xs:choice>
+               </xs:sequence>
+       </xs:group>
+       <xs:complexType name="all">
+               <xs:annotation>
+                       <xs:documentation>
+   Only elements allowed inside</xs:documentation>
+               </xs:annotation>
+               <xs:complexContent>
+                       <xs:restriction base="xs:explicitGroup">
+                               <xs:group ref="xs:allModel"/>
+                               <xs:attribute name="minOccurs" use="optional" default="1">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:nonNegativeInteger">
+                                                       <xs:enumeration value="0"/>
+                                                       <xs:enumeration value="1"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:attribute>
+                               <xs:attribute name="maxOccurs" use="optional" default="1">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:allNNI">
+                                                       <xs:enumeration value="0"/>
+                                                       <xs:enumeration value="1"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:attribute>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="all" type="xs:all" id="all">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-all"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="choice" type="xs:explicitGroup" id="choice">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-choice"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-sequence"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="group" type="xs:namedGroup" id="group">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-group"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:attributeGroup name="anyAttrGroup">
+               <xs:attribute name="namespace" type="xs:namespaceList" use="optional"/>
+               <xs:attribute name="notNamespace" use="optional">
+                       <xs:simpleType>
+                               <xs:restriction base="xs:basicNamespaceList">
+                                       <xs:minLength value="1"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+               </xs:attribute>
+               <xs:attribute name="processContents" use="optional" default="strict">
+                       <xs:simpleType>
+                               <xs:restriction base="xs:NMTOKEN">
+                                       <xs:enumeration value="skip"/>
+                                       <xs:enumeration value="lax"/>
+                                       <xs:enumeration value="strict"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+               </xs:attribute>
+       </xs:attributeGroup>
+       <xs:complexType name="wildcard">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:attributeGroup ref="xs:anyAttrGroup"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="any" id="any">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-any"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:wildcard">
+                                       <xs:attribute name="notQName" type="xs:qnameList" use="optional"/>
+                                       <xs:attributeGroup ref="xs:occurs"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:annotation>
+               <xs:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xs:documentation>
+       </xs:annotation>
+       <xs:annotation>
+               <xs:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xs:documentation>
+       </xs:annotation>
+       <xs:simpleType name="namespaceList">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:union memberTypes="xs:specialNamespaceList xs:basicNamespaceList"/>
+       </xs:simpleType>
+       <xs:simpleType name="basicNamespaceList">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:list>
+                       <xs:simpleType>
+                               <xs:union memberTypes="xs:anyURI">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:token">
+                                                       <xs:enumeration value="##targetNamespace"/>
+                                                       <xs:enumeration value="##local"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:union>
+                       </xs:simpleType>
+               </xs:list>
+       </xs:simpleType>
+       <xs:simpleType name="specialNamespaceList">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:token">
+                       <xs:enumeration value="##any"/>
+                       <xs:enumeration value="##other"/>
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:simpleType name="qnameList">
+               <xs:annotation>
+                       <xs:documentation>
+        A utility type, not for public use
+      </xs:documentation>
+               </xs:annotation>
+               <xs:list>
+                       <xs:simpleType>
+                               <xs:union memberTypes="xs:QName">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:token">
+                                                       <xs:enumeration value="##defined"/>
+                                                       <xs:enumeration value="##definedSibling"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:union>
+                       </xs:simpleType>
+               </xs:list>
+       </xs:simpleType>
+       <xs:simpleType name="qnameListA">
+               <xs:annotation>
+                       <xs:documentation>
+        A utility type, not for public use
+      </xs:documentation>
+               </xs:annotation>
+               <xs:list>
+                       <xs:simpleType>
+                               <xs:union memberTypes="xs:QName">
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:token">
+                                                       <xs:enumeration value="##defined"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:union>
+                       </xs:simpleType>
+               </xs:list>
+       </xs:simpleType>
+       <xs:simpleType name="xpathDefaultNamespace">
+               <xs:union memberTypes="xs:anyURI">
+                       <xs:simpleType>
+                               <xs:restriction base="xs:token">
+                                       <xs:enumeration value="##defaultNamespace"/>
+                                       <xs:enumeration value="##targetNamespace"/>
+                                       <xs:enumeration value="##local"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-attribute"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:complexType name="attributeGroup" abstract="true">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:group ref="xs:attrDecls"/>
+                               <xs:attributeGroup ref="xs:defRef"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="namedAttributeGroup">
+               <xs:complexContent>
+                       <xs:restriction base="xs:attributeGroup">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:attrDecls"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" type="xs:NCName" use="required"/>
+                               <xs:attribute name="ref" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="attributeGroupRef">
+               <xs:complexContent>
+                       <xs:restriction base="xs:attributeGroup">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="ref" type="xs:QName" use="required"/>
+                               <xs:attribute name="name" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-attributeGroup"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="include" id="include">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-include"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="redefine" id="redefine">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-redefine"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:openAttrs">
+                                       <xs:choice minOccurs="0" maxOccurs="unbounded">
+                                               <xs:element ref="xs:annotation"/>
+                                               <xs:group ref="xs:redefinable"/>
+                                       </xs:choice>
+                                       <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+                                       <xs:attribute name="id" type="xs:ID"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="override" id="override">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-override"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:openAttrs">
+                                       <xs:sequence>
+                                               <xs:element ref="xs:annotation" minOccurs="0"/>
+                                               <xs:group ref="xs:schemaTop" minOccurs="0" maxOccurs="unbounded"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+                                       <xs:attribute name="id" type="xs:ID"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="import" id="import">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-import"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:attribute name="namespace" type="xs:anyURI"/>
+                                       <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="selector" id="selector">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-selector"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:attribute name="xpath" use="required">
+                                               <xs:simpleType>
+                                                       <xs:annotation>
+                                                               <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+                                                               <xs:documentation>A utility type, not for public
+use</xs:documentation>
+                                                       </xs:annotation>
+                                                       <xs:restriction base="xs:token"/>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                                       <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="field" id="field">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-field"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:attribute name="xpath" use="required">
+                                               <xs:simpleType>
+                                                       <xs:annotation>
+                                                               <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+                                                               <xs:documentation>A utility type, not for public
+use</xs:documentation>
+                                                       </xs:annotation>
+                                                       <xs:restriction base="xs:token"/>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                                       <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:complexType name="keybase">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:sequence minOccurs="0">
+                                       <xs:element ref="xs:selector"/>
+                                       <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" type="xs:NCName"/>
+                               <xs:attribute name="ref" type="xs:QName"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:group name="identityConstraint">
+               <xs:annotation>
+                       <xs:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xs:documentation>
+               </xs:annotation>
+               <xs:choice>
+                       <xs:element ref="xs:unique"/>
+                       <xs:element ref="xs:key"/>
+                       <xs:element ref="xs:keyref"/>
+               </xs:choice>
+       </xs:group>
+       <xs:element name="unique" type="xs:keybase" id="unique">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-unique"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="key" type="xs:keybase" id="key">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-key"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="keyref" id="keyref">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-keyref"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:keybase">
+                                       <xs:attribute name="refer" type="xs:QName"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="notation" id="notation">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-notation"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:attribute name="name" type="xs:NCName" use="required"/>
+                                       <xs:attribute name="public" type="xs:public"/>
+                                       <xs:attribute name="system" type="xs:anyURI"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:simpleType name="public">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+                       <xs:documentation>
+   A public identifier, per ISO 8879</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:token"/>
+       </xs:simpleType>
+       <xs:element name="appinfo" id="appinfo">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-appinfo"/>
+               </xs:annotation>
+               <xs:complexType mixed="true">
+                       <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                               <xs:any processContents="lax"/>
+                       </xs:sequence>
+                       <xs:attribute name="source" type="xs:anyURI"/>
+                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="documentation" id="documentation">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-documentation"/>
+               </xs:annotation>
+               <xs:complexType mixed="true">
+                       <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                               <xs:any processContents="lax"/>
+                       </xs:sequence>
+                       <xs:attribute name="source" type="xs:anyURI"/>
+                       <xs:attribute ref="xml:lang"/>
+                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="annotation" id="annotation">
+               <xs:annotation>
+                       <xs:documentation source="../structures/structures.html#element-annotation"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:extension base="xs:openAttrs">
+                                       <xs:choice minOccurs="0" maxOccurs="unbounded">
+                                               <xs:element ref="xs:appinfo"/>
+                                               <xs:element ref="xs:documentation"/>
+                                       </xs:choice>
+                                       <xs:attribute name="id" type="xs:ID"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:annotation>
+               <xs:documentation>
+   notations for use within  schema documents</xs:documentation>
+       </xs:annotation>
+       <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+       <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+       <xs:complexType name="anyType" mixed="true">
+               <xs:annotation>
+                       <xs:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xs:documentation>
+               </xs:annotation>
+               <xs:sequence>
+                       <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+               </xs:sequence>
+               <xs:anyAttribute processContents="lax"/>
+       </xs:complexType>
+       <xs:annotation>
+               <xs:documentation>
+      In keeping with the XML Schema WG's standard versioning policy, 
+      the material in this schema document will persist at the URI
+      http://www.w3.org/2012/04/XMLSchema.xsd.
+
+      At the date of issue it can also be found at the URI
+      http://www.w3.org/2009/XMLSchema/XMLSchema.xsd.
+
+      The schema document at that URI may however change in the future, 
+      in order to remain compatible with the latest version of XSD 
+      and its namespace.  In other words, if XSD or the XML Schema 
+      namespace change, the version of this document at 
+      http://www.w3.org/2009/XMLSchema/XMLSchema.xsd will change accordingly; 
+      the version at http://www.w3.org/2012/04/XMLSchema.xsd will not change.
+
+      Previous dated (and unchanging) versions of this schema document 
+      include:
+
+       http://www.w3.org/2012/01/XMLSchema.xsd
+          (XSD 1.1 Proposed Recommendation)
+
+        http://www.w3.org/2011/07/XMLSchema.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2009/04/XMLSchema.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2004/10/XMLSchema.xsd
+          (XSD 1.0 Recommendation, Second Edition)
+
+        http://www.w3.org/2001/05/XMLSchema.xsd
+          (XSD 1.0 Recommendation, First Edition)
+
+
+    </xs:documentation>
+       </xs:annotation>
+       <xs:simpleType name="derivationControl">
+               <xs:annotation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:restriction base="xs:NMTOKEN">
+                       <xs:enumeration value="substitution"/>
+                       <xs:enumeration value="extension"/>
+                       <xs:enumeration value="restriction"/>
+                       <xs:enumeration value="list"/>
+                       <xs:enumeration value="union"/>
+               </xs:restriction>
+       </xs:simpleType>
+       <xs:group name="simpleDerivation">
+               <xs:choice>
+                       <xs:element ref="xs:restriction"/>
+                       <xs:element ref="xs:list"/>
+                       <xs:element ref="xs:union"/>
+               </xs:choice>
+       </xs:group>
+       <xs:simpleType name="simpleDerivationSet">
+               <xs:annotation>
+                       <xs:documentation>
+   #all or (possibly empty) subset of {restriction, extension, union, list}
+   </xs:documentation>
+                       <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+               </xs:annotation>
+               <xs:union>
+                       <xs:simpleType>
+                               <xs:restriction base="xs:token">
+                                       <xs:enumeration value="#all"/>
+                               </xs:restriction>
+                       </xs:simpleType>
+                       <xs:simpleType>
+                               <xs:list>
+                                       <xs:simpleType>
+                                               <xs:restriction base="xs:derivationControl">
+                                                       <xs:enumeration value="list"/>
+                                                       <xs:enumeration value="union"/>
+                                                       <xs:enumeration value="restriction"/>
+                                                       <xs:enumeration value="extension"/>
+                                               </xs:restriction>
+                                       </xs:simpleType>
+                               </xs:list>
+                       </xs:simpleType>
+               </xs:union>
+       </xs:simpleType>
+       <xs:complexType name="simpleType" abstract="true">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:group ref="xs:simpleDerivation"/>
+                               <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+                               <xs:attribute name="name" type="xs:NCName">
+                                       <xs:annotation>
+                                               <xs:documentation>
+              Can be restricted to required or forbidden
+            </xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="topLevelSimpleType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:simpleType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:simpleDerivation"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" type="xs:NCName" use="required">
+                                       <xs:annotation>
+                                               <xs:documentation>
+              Required at the top level
+            </xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="localSimpleType">
+               <xs:complexContent>
+                       <xs:restriction base="xs:simpleType">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       <xs:group ref="xs:simpleDerivation"/>
+                               </xs:sequence>
+                               <xs:attribute name="name" use="prohibited">
+                                       <xs:annotation>
+                                               <xs:documentation>
+              Forbidden when nested
+            </xs:documentation>
+                                       </xs:annotation>
+                               </xs:attribute>
+                               <xs:attribute name="final" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-simpleType"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="facet" abstract="true">
+               <xs:annotation>
+                       <xs:documentation>
+        An abstract element, representing facets in general.
+        The facets defined by this spec are substitutable for
+        this element, and implementation-defined facets should
+        also name this as a substitution-group head.
+      </xs:documentation>
+               </xs:annotation>
+       </xs:element>
+       <xs:group name="simpleRestrictionModel">
+               <xs:sequence>
+                       <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+                       <xs:choice minOccurs="0" maxOccurs="unbounded">
+                               <xs:element ref="xs:facet"/>
+                               <xs:any namespace="##other" processContents="lax"/>
+                       </xs:choice>
+               </xs:sequence>
+       </xs:group>
+       <xs:element name="restriction" id="restriction">
+               <xs:complexType>
+                       <xs:annotation>
+                               <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+                       </xs:annotation>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:group ref="xs:simpleRestrictionModel"/>
+                                       <xs:attribute name="base" type="xs:QName" use="optional"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="list" id="list">
+               <xs:complexType>
+                       <xs:annotation>
+                               <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+                       </xs:annotation>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:sequence>
+                                               <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="union" id="union">
+               <xs:complexType>
+                       <xs:annotation>
+                               <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xs:documentation>
+                       </xs:annotation>
+                       <xs:complexContent>
+                               <xs:extension base="xs:annotated">
+                                       <xs:sequence>
+                                               <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="memberTypes" use="optional">
+                                               <xs:simpleType>
+                                                       <xs:list itemType="xs:QName"/>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                               </xs:extension>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:complexType name="facet">
+               <xs:complexContent>
+                       <xs:extension base="xs:annotated">
+                               <xs:attribute name="value" use="required"/>
+                               <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+                       </xs:extension>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="noFixedFacet">
+               <xs:complexContent>
+                       <xs:restriction base="xs:facet">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="fixed" use="prohibited"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="minExclusive" type="xs:facet" substitutionGroup="xs:facet" id="minExclusive">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minExclusive"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="minInclusive" type="xs:facet" substitutionGroup="xs:facet" id="minInclusive">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minInclusive"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="maxExclusive" type="xs:facet" substitutionGroup="xs:facet" id="maxExclusive">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxExclusive"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="maxInclusive" type="xs:facet" substitutionGroup="xs:facet" id="maxInclusive">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxInclusive"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:complexType name="numFacet">
+               <xs:complexContent>
+                       <xs:restriction base="xs:facet">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:complexType name="intFacet">
+               <xs:complexContent>
+                       <xs:restriction base="xs:facet">
+                               <xs:sequence>
+                                       <xs:element ref="xs:annotation" minOccurs="0"/>
+                               </xs:sequence>
+                               <xs:attribute name="value" type="xs:integer" use="required"/>
+                               <xs:anyAttribute namespace="##other" processContents="lax"/>
+                       </xs:restriction>
+               </xs:complexContent>
+       </xs:complexType>
+       <xs:element name="totalDigits" substitutionGroup="xs:facet" id="totalDigits">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-totalDigits"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:restriction base="xs:numFacet">
+                                       <xs:sequence>
+                                               <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+                                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+                               </xs:restriction>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="fractionDigits" type="xs:numFacet" substitutionGroup="xs:facet" id="fractionDigits">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-fractionDigits"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="length" type="xs:numFacet" substitutionGroup="xs:facet" id="length">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-length"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="minLength" type="xs:numFacet" substitutionGroup="xs:facet" id="minLength">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-minLength"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="maxLength" type="xs:numFacet" substitutionGroup="xs:facet" id="maxLength">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-maxLength"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="enumeration" type="xs:noFixedFacet" substitutionGroup="xs:facet" id="enumeration">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-enumeration"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="whiteSpace" substitutionGroup="xs:facet" id="whiteSpace">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-whiteSpace"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:restriction base="xs:facet">
+                                       <xs:sequence>
+                                               <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="value" use="required">
+                                               <xs:simpleType>
+                                                       <xs:restriction base="xs:NMTOKEN">
+                                                               <xs:enumeration value="preserve"/>
+                                                               <xs:enumeration value="replace"/>
+                                                               <xs:enumeration value="collapse"/>
+                                                       </xs:restriction>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+                               </xs:restriction>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="pattern" substitutionGroup="xs:facet" id="pattern">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-pattern"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:restriction base="xs:noFixedFacet">
+                                       <xs:sequence>
+                                               <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="value" type="xs:string" use="required"/>
+                                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+                               </xs:restriction>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="assertion" type="xs:assertion" substitutionGroup="xs:facet" id="assertion">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-assertion"/>
+               </xs:annotation>
+       </xs:element>
+       <xs:element name="explicitTimezone" substitutionGroup="xs:facet" id="explicitTimezone">
+               <xs:annotation>
+                       <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-explicitTimezone"/>
+               </xs:annotation>
+               <xs:complexType>
+                       <xs:complexContent>
+                               <xs:restriction base="xs:facet">
+                                       <xs:sequence>
+                                               <xs:element ref="xs:annotation" minOccurs="0"/>
+                                       </xs:sequence>
+                                       <xs:attribute name="value" use="required">
+                                               <xs:simpleType>
+                                                       <xs:restriction base="xs:NMTOKEN">
+                                                               <xs:enumeration value="optional"/>
+                                                               <xs:enumeration value="required"/>
+                                                               <xs:enumeration value="prohibited"/>
+                                                       </xs:restriction>
+                                               </xs:simpleType>
+                                       </xs:attribute>
+                                       <xs:anyAttribute namespace="##other" processContents="lax"/>
+                               </xs:restriction>
+                       </xs:complexContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:annotation>
+               <xs:documentation>
+      In keeping with the XML Schema WG's standard versioning policy, 
+      this schema document will persist at the URI
+      http://www.w3.org/2012/04/datatypes.xsd.
+
+      At the date of issue it can also be found at the URI
+      http://www.w3.org/2009/XMLSchema/datatypes.xsd.
+
+      The schema document at that URI may however change in the future, 
+      in order to remain compatible with the latest version of XSD 
+      and its namespace.  In other words, if XSD or the XML Schema 
+      namespace change, the version of this document at 
+      http://www.w3.org/2009/XMLSchema/datatypes.xsd will change accordingly; 
+      the version at http://www.w3.org/2012/04/datatypes.xsd will not change.
+
+      Previous dated (and unchanging) versions of this schema document 
+      include:
+
+        http://www.w3.org/2012/01/datatypes.xsd
+          (XSD 1.1 Proposed Recommendation)
+
+        http://www.w3.org/2011/07/datatypes.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2009/04/datatypes.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2004/10/datatypes.xsd
+          (XSD 1.0 Recommendation, Second Edition)
+
+        http://www.w3.org/2001/05/datatypes.xsd
+          (XSD 1.0 Recommendation, First Edition)
+
+    </xs:documentation>
+       </xs:annotation>
+</xs:schema>
diff --git a/Efi2Xsd/XSL/Eficas2Xsd.xslt b/Efi2Xsd/XSL/Eficas2Xsd.xslt
new file mode 100755 (executable)
index 0000000..92a75f7
--- /dev/null
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+This file was generated by Altova MapForce 2018sp1\r
+\r
+YOU SHOULD NOT MODIFY THIS FILE, BECAUSE IT WILL BE\r
+OVERWRITTEN WHEN YOU RE-RUN CODE GENERATION.\r
+\r
+Refer to the Altova MapForce Documentation for further details.\r
+http://www.altova.com/mapforce\r
+-->\r
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://chercheurs.edf.com/logiciels/efficas" xmlns:user="http://www.altova.com/MapForce/UDF/user" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf" xmlns:grp="http://www.altova.com/Mapforce/grouping" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="ns0 user vmf grp xs fn">\r
+       <xsl:param name="Model_Efficas__1_1____XMLSchema__1_1__v7" select="'Model Efficas (1.1) + XMLSchema (1.1) v7.xml'"/>\r
+       <xsl:function name="grp:Fact_mapping_v2_var9_cur_of_nom">\r
+               <xsl:param name="var8_cur" as="node()"/>\r
+               <xsl:for-each select="$var8_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var39_cur_of_nom">\r
+               <xsl:param name="var38_cur" as="node()"/>\r
+               <xsl:for-each select="$var38_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var46_cur_of_nom">\r
+               <xsl:param name="var45_cur" as="node()"/>\r
+               <xsl:for-each select="$var45_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var48_cur_of_nom">\r
+               <xsl:param name="var47_cur" as="node()"/>\r
+               <xsl:for-each select="$var47_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var50_cur_of_nom">\r
+               <xsl:param name="var49_cur" as="node()"/>\r
+               <xsl:for-each select="$var49_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:template name="user:Fact_mapping_v2">\r
+               <xsl:param name="NameSpaceName" select="()"/>\r
+               <xsl:param name="efficasANDschema" select="()"/>\r
+               <xsl:variable name="var55_nom" as="node()?" select="$efficasANDschema/@ns0:nom"/>\r
+               <xsl:variable name="var56_SIMP" as="node()*" select="$efficasANDschema/ns0:SIMP"/>\r
+               <xsl:variable name="var57_FACT" as="node()*" select="$efficasANDschema/ns0:FACT"/>\r
+               <xsl:variable name="var54_test_resultof_logical_and" as="xs:string*">\r
+                       <xsl:choose>\r
+                               <xsl:when test="(fn:exists($var57_FACT) and xs:boolean(xs:decimal('0')))">\r
+                                       <xsl:for-each select="$var55_nom">\r
+                                               <xsl:variable name="var53_cur" as="node()" select="."/>\r
+                                               <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var46_cur_of_nom(.)">\r
+                                                       <xsl:variable name="var52_create_FACT" as="node()">\r
+                                                               <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                                       <xsl:for-each select="current-group()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:for-each>\r
+                                                               </FACT>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var48_cur_of_nom(.)">\r
+                                                               <xsl:variable name="var51_map_of_group_by" as="xs:string*">\r
+                                                                       <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var50_cur_of_nom(.)">\r
+                                                                               <xsl:for-each select="current-group()/@ns0:nom">\r
+                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                       </xsl:for-each-group>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:sequence select="fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat('T_', fn:string($var53_cur)), xs:string(fn:count($var52_create_FACT/ns0:FACT))), '.'), fn:string-join($var51_map_of_group_by, '.')), '.'), 'KEY:'), current-grouping-key()), '.GID:'), xs:string(xs:decimal('0')))"/>\r
+                                                       </xsl:for-each-group>\r
+                                               </xsl:for-each-group>\r
+                                       </xsl:for-each>\r
+                               </xsl:when>\r
+                               <xsl:otherwise>\r
+                                       <xsl:for-each select="$var55_nom">\r
+                                               <xsl:sequence select="fn:concat('T_', fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                               </xsl:otherwise>\r
+                       </xsl:choose>\r
+               </xsl:variable>\r
+               <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+                       <xsl:variable name="var3_resultof_filter" as="node()*">\r
+                               <xsl:for-each select="$var56_SIMP">\r
+                                       <xsl:variable name="var2_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                       <xsl:variable name="var1_resultof_vmf__inputtoresult" as="xs:boolean">\r
+                                                               <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="$var1_resultof_vmf__inputtoresult">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:if test="fn:exists($var2_resultof_filter)">\r
+                                               <xsl:sequence select="."/>\r
+                                       </xsl:if>\r
+                               </xsl:for-each>\r
+                       </xsl:variable>\r
+                       <xsl:for-each select="$var3_resultof_filter">\r
+                               <xsl:variable name="var7_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var6_resultof_any" as="xs:boolean" select="fn:exists((./@ns0:max_occurs)[(xs:integer(fn:string(.)) != xs:decimal('1'))])"/>\r
+                               <simpleType>\r
+                                       <xsl:for-each select="@ns0:nom">\r
+                                               <xsl:variable name="var5_attribut" as="node()?" select="$var7_cur/@attribut"/>\r
+                                               <xsl:variable name="var4_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="fn:exists($var5_attribut)">\r
+                                                                                       <xsl:sequence select="fn:string($var5_attribut)"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:with-param>\r
+                                                       </xsl:call-template>\r
+                                               </xsl:variable>\r
+                                               <xsl:attribute name="name" namespace="" select="fn:concat($var4_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                                       <xsl:if test="fn:not($var6_resultof_any)">\r
+                                               <restriction>\r
+                                                       <xsl:for-each select="ns0:typeAttendu">\r
+                                                               <xsl:attribute name="base" namespace="">\r
+                                                                       <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </restriction>\r
+                                       </xsl:if>\r
+                                       <xsl:if test="$var6_resultof_any">\r
+                                               <list>\r
+                                                       <xsl:for-each select="ns0:typeAttendu">\r
+                                                               <xsl:attribute name="itemType" namespace="">\r
+                                                                       <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </list>\r
+                                       </xsl:if>\r
+                               </simpleType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var57_FACT">\r
+                               <xsl:variable name="var14_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var13_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var9_cur_of_nom(.)">\r
+                                                                       <xsl:variable name="var12_nom" as="node()?" select="$var14_cur/@ns0:nom"/>\r
+                                                                       <xsl:variable name="var10_create_FACT" as="node()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="current-group()">\r
+                                                                                               <FACT>\r
+                                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                                       </xsl:for-each>\r
+                                                                                               </FACT>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:variable name="var11_test_resultof_greater" as="xs:string?">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="(fn:count($var10_create_FACT/ns0:FACT) &gt; xs:decimal('1'))">\r
+                                                                                               <xsl:for-each select="$var12_nom">\r
+                                                                                                       <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:for-each select="$var12_nom">\r
+                                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var11_test_resultof_greater">\r
+                                                                               <xsl:attribute name="ns0:nom" select="."/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each-group>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:min_occurs">\r
+                                                                       <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:regles">\r
+                                                                       <regles>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </regles>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:doc">\r
+                                                                       <doc>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </doc>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:BLOC">\r
+                                                                       <BLOC>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </BLOC>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var13_resultof_Fact_mapping_v_/xs:simpleType">\r
+                                       <simpleType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </simpleType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <complexType>\r
+                               <xsl:if test="fn:exists($var54_test_resultof_logical_and)">\r
+                                       <xsl:attribute name="name" namespace="" select="xs:string(fn:string-join(for $x in $var54_test_resultof_logical_and return xs:string($x), ' '))"/>\r
+                               </xsl:if>\r
+                               <sequence>\r
+                                       <xsl:variable name="var16_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="$var56_SIMP">\r
+                                                       <xsl:variable name="var15_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+                                                               <xsl:for-each select="@attribut">\r
+                                                                       <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="fn:not(fn:exists(($var15_vmf__inputtoresult_of_attribut)[.]))">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:for-each select="$var16_resultof_filter">\r
+                                               <xsl:variable name="var21_cur" as="node()" select="."/>\r
+                                               <xsl:variable name="var20_nom" as="node()?" select="@ns0:nom"/>\r
+                                               <element>\r
+                                                       <xsl:for-each select="$var20_nom">\r
+                                                               <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="$var20_nom">\r
+                                                               <xsl:variable name="var18_attribut" as="node()?" select="$var21_cur/@attribut"/>\r
+                                                               <xsl:variable name="var17_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                                       <xsl:choose>\r
+                                                                                               <xsl:when test="fn:exists($var18_attribut)">\r
+                                                                                                       <xsl:sequence select="fn:string($var18_attribut)"/>\r
+                                                                                               </xsl:when>\r
+                                                                                               <xsl:otherwise>\r
+                                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                                               </xsl:otherwise>\r
+                                                                                       </xsl:choose>\r
+                                                                               </xsl:with-param>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var17_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:statut">\r
+                                                               <xsl:variable name="var19_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                       <xsl:call-template name="vmf:vmf6_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:for-each select="$var19_resultof_vmf__inputtoresult">\r
+                                                                       <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:for-each>\r
+                                               </element>\r
+                                       </xsl:for-each>\r
+                                       <xsl:for-each select="$var57_FACT">\r
+                                               <xsl:variable name="var24_nom" as="node()?" select="@ns0:nom"/>\r
+                                               <element>\r
+                                                       <xsl:for-each select="$var24_nom">\r
+                                                               <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="$var24_nom">\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':T_'), fn:string(.)))"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:statut">\r
+                                                               <xsl:variable name="var22_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                       <xsl:call-template name="vmf:vmf7_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:for-each select="$var22_resultof_vmf__inputtoresult">\r
+                                                                       <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:max_occurs">\r
+                                                               <xsl:variable name="var23_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+                                                               <xsl:attribute name="maxOccurs" namespace="">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="($var23_cur_as_integer = xs:decimal('-1'))">\r
+                                                                                       <xsl:sequence select="'unbounded'"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="xs:string($var23_cur_as_integer)"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </element>\r
+                                       </xsl:for-each>\r
+                               </sequence>\r
+                               <xsl:variable name="var26_resultof_filter" as="node()*">\r
+                                       <xsl:for-each select="$var56_SIMP">\r
+                                               <xsl:variable name="var25_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+                                                       <xsl:for-each select="@attribut">\r
+                                                               <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:for-each>\r
+                                               </xsl:variable>\r
+                                               <xsl:if test="fn:exists(($var25_vmf__inputtoresult_of_attribut)[.])">\r
+                                                       <xsl:sequence select="."/>\r
+                                               </xsl:if>\r
+                                       </xsl:for-each>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var26_resultof_filter">\r
+                                       <xsl:variable name="var31_cur" as="node()" select="."/>\r
+                                       <xsl:variable name="var30_nom" as="node()?" select="@ns0:nom"/>\r
+                                       <attribute>\r
+                                               <xsl:for-each select="$var30_nom">\r
+                                                       <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                               </xsl:for-each>\r
+                                               <xsl:for-each select="$var30_nom">\r
+                                                       <xsl:variable name="var28_attribut" as="node()?" select="$var31_cur/@attribut"/>\r
+                                                       <xsl:variable name="var27_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                               <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                                       <xsl:with-param name="input" as="xs:string">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="fn:exists($var28_attribut)">\r
+                                                                                               <xsl:sequence select="fn:string($var28_attribut)"/>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:sequence select="'n'"/>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:with-param>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var27_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+                                               </xsl:for-each>\r
+                                               <xsl:for-each select="@ns0:statut">\r
+                                                       <xsl:variable name="var29_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                               <xsl:call-template name="vmf:vmf8_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:for-each select="$var29_resultof_vmf__inputtoresult">\r
+                                                               <xsl:attribute name="use" namespace="" select="."/>\r
+                                                       </xsl:for-each>\r
+                                               </xsl:for-each>\r
+                                       </attribute>\r
+                               </xsl:for-each>\r
+                       </complexType>\r
+                       <xsl:variable name="var34_resultof_filter" as="node()*">\r
+                               <xsl:for-each select="$var56_SIMP">\r
+                                       <xsl:variable name="var33_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                       <xsl:variable name="var32_resultof_vmf__inputtoresult" as="xs:boolean">\r
+                                                               <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="$var32_resultof_vmf__inputtoresult">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:if test="fn:not(fn:exists($var33_resultof_filter))">\r
+                                               <xsl:sequence select="."/>\r
+                                       </xsl:if>\r
+                               </xsl:for-each>\r
+                       </xsl:variable>\r
+                       <xsl:for-each select="$var34_resultof_filter">\r
+                               <xsl:variable name="var37_cur" as="node()" select="."/>\r
+                               <complexType>\r
+                                       <xsl:for-each select="@ns0:nom">\r
+                                               <xsl:variable name="var36_attribut" as="node()?" select="$var37_cur/@attribut"/>\r
+                                               <xsl:variable name="var35_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="fn:exists($var36_attribut)">\r
+                                                                                       <xsl:sequence select="fn:string($var36_attribut)"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:with-param>\r
+                                                       </xsl:call-template>\r
+                                               </xsl:variable>\r
+                                               <xsl:attribute name="name" namespace="" select="fn:concat($var35_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                               </complexType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var57_FACT">\r
+                               <xsl:variable name="var44_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var43_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var39_cur_of_nom(.)">\r
+                                                                       <xsl:variable name="var42_nom" as="node()?" select="$var44_cur/@ns0:nom"/>\r
+                                                                       <xsl:variable name="var40_create_FACT" as="node()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="current-group()">\r
+                                                                                               <FACT>\r
+                                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                                       </xsl:for-each>\r
+                                                                                               </FACT>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:variable name="var41_test_resultof_greater" as="xs:string?">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="(fn:count($var40_create_FACT/ns0:FACT) &gt; xs:decimal('1'))">\r
+                                                                                               <xsl:for-each select="$var42_nom">\r
+                                                                                                       <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:for-each select="$var42_nom">\r
+                                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var41_test_resultof_greater">\r
+                                                                               <xsl:attribute name="ns0:nom" select="."/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each-group>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:min_occurs">\r
+                                                                       <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:regles">\r
+                                                                       <regles>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </regles>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:doc">\r
+                                                                       <doc>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </doc>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:BLOC">\r
+                                                                       <BLOC>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </BLOC>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var43_resultof_Fact_mapping_v_/xs:complexType">\r
+                                       <complexType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </complexType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+               </schema>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf1_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf2_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='Fichier'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Repertoire'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='TXM'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='I'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='R'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='C'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Bool'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gma'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gmo'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='SalomeEntry'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="false()"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf3_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'AT_'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='n'">\r
+                               <xsl:copy-of select="'T_'"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="'T_'"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf4_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='TXM'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='I'">\r
+                               <xsl:copy-of select="fn:QName('', 'int')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='R'">\r
+                               <xsl:copy-of select="fn:QName('', 'double')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Bool'">\r
+                               <xsl:copy-of select="fn:QName('', 'boolean')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gma'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gmo'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="fn:QName('', 'false')"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf5_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='n'">\r
+                               <xsl:copy-of select="false()"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf6_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf7_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf8_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'optional'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'required'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:output method="xml" encoding="UTF-8" byte-order-mark="no" indent="yes"/>\r
+       <xsl:param name="UserNameSpace" as="xs:string" required="yes"/>\r
+       <xsl:param name="PrefixName" as="xs:string" required="yes"/>\r
+       <xsl:template match="/">\r
+               <xsl:variable name="var8_resultof_concat" as="xs:string" select="fn:concat($UserNameSpace, $PrefixName)"/>\r
+               <xsl:variable name="var7_cata" as="node()?" select="ns0:cata"/>\r
+               <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+                       <xsl:namespace name="{$PrefixName}">\r
+                               <xsl:sequence select="$var8_resultof_concat"/>\r
+                       </xsl:namespace>\r
+                       <xsl:attribute name="targetNamespace" namespace="" select="xs:string(xs:anyURI($var8_resultof_concat))"/>\r
+                       <xsl:attribute name="attributeFormDefault" namespace="" select="'qualified'"/>\r
+                       <xsl:attribute name="elementFormDefault" namespace="" select="'qualified'"/>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+                               <xsl:variable name="var1_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@attribut">\r
+                                                                                       <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                                                       <typeAttendu>\r
+                                                                                               <xsl:sequence select="fn:string(.)"/>\r
+                                                                                       </typeAttendu>\r
+                                                                               </xsl:for-each>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var1_resultof_Fact_mapping_v_/xs:simpleType">\r
+                                       <simpleType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </simpleType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+                               <complexType>\r
+                                       <xsl:attribute name="name" namespace="" select="fn:concat('T_', fn:string(@ns0:nom))"/>\r
+                                       <sequence>\r
+                                               <xsl:for-each select="ns0:FACT">\r
+                                                       <xsl:variable name="var4_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+                                                       <element>\r
+                                                               <xsl:attribute name="name" namespace="" select="$var4_nom_as_string"/>\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var4_nom_as_string))"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:variable name="var2_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                               <xsl:call-template name="vmf:vmf1_inputtoresult">\r
+                                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                               </xsl:call-template>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var2_resultof_vmf__inputtoresult">\r
+                                                                               <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:variable name="var3_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+                                                                       <xsl:attribute name="maxOccurs" namespace="">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="($var3_cur_as_integer = xs:decimal('-1'))">\r
+                                                                                               <xsl:sequence select="'unbounded'"/>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:sequence select="xs:string($var3_cur_as_integer)"/>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:attribute>\r
+                                                               </xsl:for-each>\r
+                                                       </element>\r
+                                               </xsl:for-each>\r
+                                       </sequence>\r
+                               </complexType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+                               <xsl:variable name="var5_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@attribut">\r
+                                                                                       <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                                                       <typeAttendu>\r
+                                                                                               <xsl:sequence select="fn:string(.)"/>\r
+                                                                                       </typeAttendu>\r
+                                                                               </xsl:for-each>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var5_resultof_Fact_mapping_v_/xs:complexType">\r
+                                       <complexType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </complexType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+                               <xsl:variable name="var6_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+                               <element>\r
+                                       <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var6_nom_as_string))"/>\r
+                                       <xsl:attribute name="name" namespace="" select="$var6_nom_as_string"/>\r
+                               </element>\r
+                       </xsl:for-each>\r
+               </schema>\r
+       </xsl:template>\r
+</xsl:stylesheet>\r
diff --git a/Efi2Xsd/XSL/MED_FAM_gen.xsd b/Efi2Xsd/XSL/MED_FAM_gen.xsd
new file mode 100644 (file)
index 0000000..4dc86bd
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:med="http://chercheurs.edf.com/logiciels/med"
+        targetNamespace="http://chercheurs.edf.com/logiciels/med"
+        attributeFormDefault="qualified"
+        elementFormDefault="qualified">
+   <simpleType name="AT_NAME">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="T_NAMEbis">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="T_NUM">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="T_NAME">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_DES">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="T_IDE">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="T_VAL">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="T_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_NOM">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="T_TEST2">
+      <restriction base="string"/>
+   </simpleType>
+   <complexType name="T_FAS">
+      <sequence>
+         <element name="FAMILY_MESH_NAME_REF" type="med:T_FAMILY_MESH_NAME_REF" minOccurs="1"
+                  maxOccurs="unbounded"/>
+         <element name="ELEM2" type="med:T_ELEM2"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_FAMILY_MESH_NAME_REF">
+      <sequence>
+         <element name="NAMEbis" type="med:T_NAMEbis" minOccurs="1"/>
+         <element name="ELEM" type="med:T_ELEM" minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="NAME" type="med:AT_NAME" use="required"/>
+   </complexType>
+   <complexType name="T_ELEM">
+      <sequence>
+         <element name="NUM" type="med:T_NUM" minOccurs="1"/>
+         <element name="NAME" type="med:T_NAME" minOccurs="1"/>
+         <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+         <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_ATT">
+      <sequence>
+         <element name="DES" type="med:T_DES" minOccurs="1"/>
+         <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+         <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <complexType name="T_GRO">
+      <sequence>
+         <element name="NBR" type="med:T_NBR" minOccurs="1"/>
+         <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_ELEM2">
+      <sequence>
+         <element name="TEST2" type="med:T_TEST2"/>
+      </sequence>
+   </complexType>
+   <element type="med:T_FAS" name="FAS"/>
+</schema>
\ No newline at end of file
diff --git a/Efi2Xsd/XSL/MED_FAM_v2_gen.xsd b/Efi2Xsd/XSL/MED_FAM_v2_gen.xsd
new file mode 100644 (file)
index 0000000..cce4d5b
--- /dev/null
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:med="http://chercheurs.edf.com/logiciels/med"
+        targetNamespace="http://chercheurs.edf.com/logiciels/med"
+        attributeFormDefault="qualified"
+        elementFormDefault="qualified">
+   <simpleType name="AT_NAME">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="AT_NUM">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="AT_NAME">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_DES">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="T_IDE">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="T_VAL">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_NOM">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="AT_NUM">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_DES">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="T_IDE">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="T_VAL">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="AT_NUM">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="AT_NAME">
+      <restriction base="string"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_DES">
+      <list itemType="string"/>
+   </simpleType>
+   <simpleType name="T_IDE">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="T_VAL">
+      <list itemType="int"/>
+   </simpleType>
+   <simpleType name="AT_NBR">
+      <restriction base="int"/>
+   </simpleType>
+   <simpleType name="T_NOM">
+      <list itemType="string"/>
+   </simpleType>
+   <complexType name="T_FAS">
+      <sequence>
+         <element name="FAMILY_MESH_NAME_REF" type="med:T_FAMILY_MESH_NAME_REF" minOccurs="1"
+                  maxOccurs="unbounded"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_FAMILY_MESH_NAME_REF">
+      <sequence>
+         <element name="ELEME" type="med:T_ELEME" minOccurs="0" maxOccurs="1"/>
+         <element name="FAMILLE_ZERO" type="med:T_FAMILLE_ZERO" minOccurs="1" maxOccurs="1"/>
+         <element name="NOEUD" type="med:T_NOEUD" minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="NAME" type="med:AT_NAME" use="required"/>
+   </complexType>
+   <complexType name="T_ELEME">
+      <sequence>
+         <element name="FAMILY_NAME_ELEM" type="med:T_FAMILY_NAME_ELEM" minOccurs="0"
+                  maxOccurs="unbounded"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_FAMILY_NAME_ELEM">
+      <sequence>
+         <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+         <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+      </sequence>
+      <attribute name="NUM" type="med:AT_NUM" use="required"/>
+      <attribute name="NAME" type="med:AT_NAME" use="required"/>
+   </complexType>
+   <complexType name="T_ATT">
+      <sequence>
+         <element name="DES" type="med:T_DES" minOccurs="1"/>
+         <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+         <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <complexType name="T_GRO">
+      <sequence>
+         <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <complexType name="T_FAMILLE_ZERO">
+      <sequence>
+         <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+      </sequence>
+      <attribute name="NUM" type="med:AT_NUM" use="required"/>
+   </complexType>
+   <complexType name="T_ATT">
+      <sequence>
+         <element name="DES" type="med:T_DES" minOccurs="1"/>
+         <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+         <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <complexType name="T_NOEUD">
+      <sequence>
+         <element name="FAMILY_NAME_NOE" type="med:T_FAMILY_NAME_NOE" minOccurs="0"
+                  maxOccurs="unbounded"/>
+      </sequence>
+   </complexType>
+   <complexType name="T_FAMILY_NAME_NOE">
+      <sequence>
+         <element name="ATT" type="med:T_ATT" minOccurs="0" maxOccurs="1"/>
+         <element name="GRO" type="med:T_GRO" minOccurs="0" maxOccurs="1"/>
+      </sequence>
+      <attribute name="NUM" type="med:AT_NUM" use="required"/>
+      <attribute name="NAME" type="med:AT_NAME" use="required"/>
+   </complexType>
+   <complexType name="T_ATT">
+      <sequence>
+         <element name="DES" type="med:T_DES" minOccurs="1"/>
+         <element name="IDE" type="med:T_IDE" minOccurs="1"/>
+         <element name="VAL" type="med:T_VAL" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <complexType name="T_GRO">
+      <sequence>
+         <element name="NOM" type="med:T_NOM" minOccurs="1"/>
+      </sequence>
+      <attribute name="NBR" type="med:AT_NBR" use="required"/>
+   </complexType>
+   <element type="med:T_FAS" name="FAS"/>
+</schema>
\ No newline at end of file
diff --git a/Efi2Xsd/XSL/MappingMapToXMLSchema_1_1__ef.xslt b/Efi2Xsd/XSL/MappingMapToXMLSchema_1_1__ef.xslt
new file mode 100755 (executable)
index 0000000..92a75f7
--- /dev/null
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+This file was generated by Altova MapForce 2018sp1\r
+\r
+YOU SHOULD NOT MODIFY THIS FILE, BECAUSE IT WILL BE\r
+OVERWRITTEN WHEN YOU RE-RUN CODE GENERATION.\r
+\r
+Refer to the Altova MapForce Documentation for further details.\r
+http://www.altova.com/mapforce\r
+-->\r
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://chercheurs.edf.com/logiciels/efficas" xmlns:user="http://www.altova.com/MapForce/UDF/user" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf" xmlns:grp="http://www.altova.com/Mapforce/grouping" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="ns0 user vmf grp xs fn">\r
+       <xsl:param name="Model_Efficas__1_1____XMLSchema__1_1__v7" select="'Model Efficas (1.1) + XMLSchema (1.1) v7.xml'"/>\r
+       <xsl:function name="grp:Fact_mapping_v2_var9_cur_of_nom">\r
+               <xsl:param name="var8_cur" as="node()"/>\r
+               <xsl:for-each select="$var8_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var39_cur_of_nom">\r
+               <xsl:param name="var38_cur" as="node()"/>\r
+               <xsl:for-each select="$var38_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var46_cur_of_nom">\r
+               <xsl:param name="var45_cur" as="node()"/>\r
+               <xsl:for-each select="$var45_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var48_cur_of_nom">\r
+               <xsl:param name="var47_cur" as="node()"/>\r
+               <xsl:for-each select="$var47_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:function name="grp:Fact_mapping_v2_var50_cur_of_nom">\r
+               <xsl:param name="var49_cur" as="node()"/>\r
+               <xsl:for-each select="$var49_cur/@ns0:nom">\r
+                       <xsl:sequence select="fn:string(.)"/>\r
+               </xsl:for-each>\r
+       </xsl:function>\r
+       <xsl:template name="user:Fact_mapping_v2">\r
+               <xsl:param name="NameSpaceName" select="()"/>\r
+               <xsl:param name="efficasANDschema" select="()"/>\r
+               <xsl:variable name="var55_nom" as="node()?" select="$efficasANDschema/@ns0:nom"/>\r
+               <xsl:variable name="var56_SIMP" as="node()*" select="$efficasANDschema/ns0:SIMP"/>\r
+               <xsl:variable name="var57_FACT" as="node()*" select="$efficasANDschema/ns0:FACT"/>\r
+               <xsl:variable name="var54_test_resultof_logical_and" as="xs:string*">\r
+                       <xsl:choose>\r
+                               <xsl:when test="(fn:exists($var57_FACT) and xs:boolean(xs:decimal('0')))">\r
+                                       <xsl:for-each select="$var55_nom">\r
+                                               <xsl:variable name="var53_cur" as="node()" select="."/>\r
+                                               <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var46_cur_of_nom(.)">\r
+                                                       <xsl:variable name="var52_create_FACT" as="node()">\r
+                                                               <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                                       <xsl:for-each select="current-group()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:for-each>\r
+                                                               </FACT>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var48_cur_of_nom(.)">\r
+                                                               <xsl:variable name="var51_map_of_group_by" as="xs:string*">\r
+                                                                       <xsl:for-each-group select="$var57_FACT" group-by="grp:Fact_mapping_v2_var50_cur_of_nom(.)">\r
+                                                                               <xsl:for-each select="current-group()/@ns0:nom">\r
+                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                       </xsl:for-each-group>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:sequence select="fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat(fn:concat('T_', fn:string($var53_cur)), xs:string(fn:count($var52_create_FACT/ns0:FACT))), '.'), fn:string-join($var51_map_of_group_by, '.')), '.'), 'KEY:'), current-grouping-key()), '.GID:'), xs:string(xs:decimal('0')))"/>\r
+                                                       </xsl:for-each-group>\r
+                                               </xsl:for-each-group>\r
+                                       </xsl:for-each>\r
+                               </xsl:when>\r
+                               <xsl:otherwise>\r
+                                       <xsl:for-each select="$var55_nom">\r
+                                               <xsl:sequence select="fn:concat('T_', fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                               </xsl:otherwise>\r
+                       </xsl:choose>\r
+               </xsl:variable>\r
+               <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+                       <xsl:variable name="var3_resultof_filter" as="node()*">\r
+                               <xsl:for-each select="$var56_SIMP">\r
+                                       <xsl:variable name="var2_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                       <xsl:variable name="var1_resultof_vmf__inputtoresult" as="xs:boolean">\r
+                                                               <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="$var1_resultof_vmf__inputtoresult">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:if test="fn:exists($var2_resultof_filter)">\r
+                                               <xsl:sequence select="."/>\r
+                                       </xsl:if>\r
+                               </xsl:for-each>\r
+                       </xsl:variable>\r
+                       <xsl:for-each select="$var3_resultof_filter">\r
+                               <xsl:variable name="var7_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var6_resultof_any" as="xs:boolean" select="fn:exists((./@ns0:max_occurs)[(xs:integer(fn:string(.)) != xs:decimal('1'))])"/>\r
+                               <simpleType>\r
+                                       <xsl:for-each select="@ns0:nom">\r
+                                               <xsl:variable name="var5_attribut" as="node()?" select="$var7_cur/@attribut"/>\r
+                                               <xsl:variable name="var4_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="fn:exists($var5_attribut)">\r
+                                                                                       <xsl:sequence select="fn:string($var5_attribut)"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:with-param>\r
+                                                       </xsl:call-template>\r
+                                               </xsl:variable>\r
+                                               <xsl:attribute name="name" namespace="" select="fn:concat($var4_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                                       <xsl:if test="fn:not($var6_resultof_any)">\r
+                                               <restriction>\r
+                                                       <xsl:for-each select="ns0:typeAttendu">\r
+                                                               <xsl:attribute name="base" namespace="">\r
+                                                                       <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </restriction>\r
+                                       </xsl:if>\r
+                                       <xsl:if test="$var6_resultof_any">\r
+                                               <list>\r
+                                                       <xsl:for-each select="ns0:typeAttendu">\r
+                                                               <xsl:attribute name="itemType" namespace="">\r
+                                                                       <xsl:call-template name="vmf:vmf4_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </list>\r
+                                       </xsl:if>\r
+                               </simpleType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var57_FACT">\r
+                               <xsl:variable name="var14_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var13_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var9_cur_of_nom(.)">\r
+                                                                       <xsl:variable name="var12_nom" as="node()?" select="$var14_cur/@ns0:nom"/>\r
+                                                                       <xsl:variable name="var10_create_FACT" as="node()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="current-group()">\r
+                                                                                               <FACT>\r
+                                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                                       </xsl:for-each>\r
+                                                                                               </FACT>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:variable name="var11_test_resultof_greater" as="xs:string?">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="(fn:count($var10_create_FACT/ns0:FACT) &gt; xs:decimal('1'))">\r
+                                                                                               <xsl:for-each select="$var12_nom">\r
+                                                                                                       <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:for-each select="$var12_nom">\r
+                                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var11_test_resultof_greater">\r
+                                                                               <xsl:attribute name="ns0:nom" select="."/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each-group>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:min_occurs">\r
+                                                                       <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:regles">\r
+                                                                       <regles>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </regles>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:doc">\r
+                                                                       <doc>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </doc>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:BLOC">\r
+                                                                       <BLOC>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </BLOC>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var13_resultof_Fact_mapping_v_/xs:simpleType">\r
+                                       <simpleType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </simpleType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <complexType>\r
+                               <xsl:if test="fn:exists($var54_test_resultof_logical_and)">\r
+                                       <xsl:attribute name="name" namespace="" select="xs:string(fn:string-join(for $x in $var54_test_resultof_logical_and return xs:string($x), ' '))"/>\r
+                               </xsl:if>\r
+                               <sequence>\r
+                                       <xsl:variable name="var16_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="$var56_SIMP">\r
+                                                       <xsl:variable name="var15_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+                                                               <xsl:for-each select="@attribut">\r
+                                                                       <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="fn:not(fn:exists(($var15_vmf__inputtoresult_of_attribut)[.]))">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:for-each select="$var16_resultof_filter">\r
+                                               <xsl:variable name="var21_cur" as="node()" select="."/>\r
+                                               <xsl:variable name="var20_nom" as="node()?" select="@ns0:nom"/>\r
+                                               <element>\r
+                                                       <xsl:for-each select="$var20_nom">\r
+                                                               <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="$var20_nom">\r
+                                                               <xsl:variable name="var18_attribut" as="node()?" select="$var21_cur/@attribut"/>\r
+                                                               <xsl:variable name="var17_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                                       <xsl:choose>\r
+                                                                                               <xsl:when test="fn:exists($var18_attribut)">\r
+                                                                                                       <xsl:sequence select="fn:string($var18_attribut)"/>\r
+                                                                                               </xsl:when>\r
+                                                                                               <xsl:otherwise>\r
+                                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                                               </xsl:otherwise>\r
+                                                                                       </xsl:choose>\r
+                                                                               </xsl:with-param>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var17_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:statut">\r
+                                                               <xsl:variable name="var19_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                       <xsl:call-template name="vmf:vmf6_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:for-each select="$var19_resultof_vmf__inputtoresult">\r
+                                                                       <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:for-each>\r
+                                               </element>\r
+                                       </xsl:for-each>\r
+                                       <xsl:for-each select="$var57_FACT">\r
+                                               <xsl:variable name="var24_nom" as="node()?" select="@ns0:nom"/>\r
+                                               <element>\r
+                                                       <xsl:for-each select="$var24_nom">\r
+                                                               <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="$var24_nom">\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':T_'), fn:string(.)))"/>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:statut">\r
+                                                               <xsl:variable name="var22_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                       <xsl:call-template name="vmf:vmf7_inputtoresult">\r
+                                                                               <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                       </xsl:call-template>\r
+                                                               </xsl:variable>\r
+                                                               <xsl:for-each select="$var22_resultof_vmf__inputtoresult">\r
+                                                                       <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                               </xsl:for-each>\r
+                                                       </xsl:for-each>\r
+                                                       <xsl:for-each select="@ns0:max_occurs">\r
+                                                               <xsl:variable name="var23_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+                                                               <xsl:attribute name="maxOccurs" namespace="">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="($var23_cur_as_integer = xs:decimal('-1'))">\r
+                                                                                       <xsl:sequence select="'unbounded'"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="xs:string($var23_cur_as_integer)"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:attribute>\r
+                                                       </xsl:for-each>\r
+                                               </element>\r
+                                       </xsl:for-each>\r
+                               </sequence>\r
+                               <xsl:variable name="var26_resultof_filter" as="node()*">\r
+                                       <xsl:for-each select="$var56_SIMP">\r
+                                               <xsl:variable name="var25_vmf__inputtoresult_of_attribut" as="xs:boolean?">\r
+                                                       <xsl:for-each select="@attribut">\r
+                                                               <xsl:call-template name="vmf:vmf5_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:for-each>\r
+                                               </xsl:variable>\r
+                                               <xsl:if test="fn:exists(($var25_vmf__inputtoresult_of_attribut)[.])">\r
+                                                       <xsl:sequence select="."/>\r
+                                               </xsl:if>\r
+                                       </xsl:for-each>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var26_resultof_filter">\r
+                                       <xsl:variable name="var31_cur" as="node()" select="."/>\r
+                                       <xsl:variable name="var30_nom" as="node()?" select="@ns0:nom"/>\r
+                                       <attribute>\r
+                                               <xsl:for-each select="$var30_nom">\r
+                                                       <xsl:attribute name="name" namespace="" select="fn:string(.)"/>\r
+                                               </xsl:for-each>\r
+                                               <xsl:for-each select="$var30_nom">\r
+                                                       <xsl:variable name="var28_attribut" as="node()?" select="$var31_cur/@attribut"/>\r
+                                                       <xsl:variable name="var27_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                               <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                                       <xsl:with-param name="input" as="xs:string">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="fn:exists($var28_attribut)">\r
+                                                                                               <xsl:sequence select="fn:string($var28_attribut)"/>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:sequence select="'n'"/>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:with-param>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($NameSpaceName, ':'), fn:concat($var27_resultof_vmf__inputtoresult, fn:string(.))))"/>\r
+                                               </xsl:for-each>\r
+                                               <xsl:for-each select="@ns0:statut">\r
+                                                       <xsl:variable name="var29_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                               <xsl:call-template name="vmf:vmf8_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:for-each select="$var29_resultof_vmf__inputtoresult">\r
+                                                               <xsl:attribute name="use" namespace="" select="."/>\r
+                                                       </xsl:for-each>\r
+                                               </xsl:for-each>\r
+                                       </attribute>\r
+                               </xsl:for-each>\r
+                       </complexType>\r
+                       <xsl:variable name="var34_resultof_filter" as="node()*">\r
+                               <xsl:for-each select="$var56_SIMP">\r
+                                       <xsl:variable name="var33_resultof_filter" as="node()*">\r
+                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                       <xsl:variable name="var32_resultof_vmf__inputtoresult" as="xs:boolean">\r
+                                                               <xsl:call-template name="vmf:vmf2_inputtoresult">\r
+                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                               </xsl:call-template>\r
+                                                       </xsl:variable>\r
+                                                       <xsl:if test="$var32_resultof_vmf__inputtoresult">\r
+                                                               <xsl:sequence select="."/>\r
+                                                       </xsl:if>\r
+                                               </xsl:for-each>\r
+                                       </xsl:variable>\r
+                                       <xsl:if test="fn:not(fn:exists($var33_resultof_filter))">\r
+                                               <xsl:sequence select="."/>\r
+                                       </xsl:if>\r
+                               </xsl:for-each>\r
+                       </xsl:variable>\r
+                       <xsl:for-each select="$var34_resultof_filter">\r
+                               <xsl:variable name="var37_cur" as="node()" select="."/>\r
+                               <complexType>\r
+                                       <xsl:for-each select="@ns0:nom">\r
+                                               <xsl:variable name="var36_attribut" as="node()?" select="$var37_cur/@attribut"/>\r
+                                               <xsl:variable name="var35_resultof_vmf__inputtoresult" as="xs:string">\r
+                                                       <xsl:call-template name="vmf:vmf3_inputtoresult">\r
+                                                               <xsl:with-param name="input" as="xs:string">\r
+                                                                       <xsl:choose>\r
+                                                                               <xsl:when test="fn:exists($var36_attribut)">\r
+                                                                                       <xsl:sequence select="fn:string($var36_attribut)"/>\r
+                                                                               </xsl:when>\r
+                                                                               <xsl:otherwise>\r
+                                                                                       <xsl:sequence select="'n'"/>\r
+                                                                               </xsl:otherwise>\r
+                                                                       </xsl:choose>\r
+                                                               </xsl:with-param>\r
+                                                       </xsl:call-template>\r
+                                               </xsl:variable>\r
+                                               <xsl:attribute name="name" namespace="" select="fn:concat($var35_resultof_vmf__inputtoresult, fn:string(.))"/>\r
+                                       </xsl:for-each>\r
+                               </complexType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var57_FACT">\r
+                               <xsl:variable name="var44_cur" as="node()" select="."/>\r
+                               <xsl:variable name="var43_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$NameSpaceName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:for-each-group select="." group-by="grp:Fact_mapping_v2_var39_cur_of_nom(.)">\r
+                                                                       <xsl:variable name="var42_nom" as="node()?" select="$var44_cur/@ns0:nom"/>\r
+                                                                       <xsl:variable name="var40_create_FACT" as="node()">\r
+                                                                               <FACT>\r
+                                                                                       <xsl:for-each select="current-group()">\r
+                                                                                               <FACT>\r
+                                                                                                       <xsl:for-each select="@ns0:nom">\r
+                                                                                                               <xsl:attribute name="ns0:nom" select="fn:string(.)"/>\r
+                                                                                                       </xsl:for-each>\r
+                                                                                               </FACT>\r
+                                                                                       </xsl:for-each>\r
+                                                                               </FACT>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:variable name="var41_test_resultof_greater" as="xs:string?">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="(fn:count($var40_create_FACT/ns0:FACT) &gt; xs:decimal('1'))">\r
+                                                                                               <xsl:for-each select="$var42_nom">\r
+                                                                                                       <xsl:sequence select="fn:concat(fn:concat(fn:string(.), '++'), xs:string(xs:decimal('0')))"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:for-each select="$var42_nom">\r
+                                                                                                       <xsl:sequence select="fn:string(.)"/>\r
+                                                                                               </xsl:for-each>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var41_test_resultof_greater">\r
+                                                                               <xsl:attribute name="ns0:nom" select="."/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each-group>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:min_occurs">\r
+                                                                       <xsl:attribute name="ns0:min_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:regles">\r
+                                                                       <regles>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </regles>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:doc">\r
+                                                                       <doc>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </doc>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:BLOC">\r
+                                                                       <BLOC>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </BLOC>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var43_resultof_Fact_mapping_v_/xs:complexType">\r
+                                       <complexType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </complexType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+               </schema>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf1_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf2_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='Fichier'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Repertoire'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='TXM'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='I'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='R'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='C'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Bool'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gma'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gmo'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='SalomeEntry'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="false()"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf3_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'AT_'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='n'">\r
+                               <xsl:copy-of select="'T_'"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="'T_'"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf4_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='TXM'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='I'">\r
+                               <xsl:copy-of select="fn:QName('', 'int')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='R'">\r
+                               <xsl:copy-of select="fn:QName('', 'double')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='Bool'">\r
+                               <xsl:copy-of select="fn:QName('', 'boolean')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gma'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='gmo'">\r
+                               <xsl:copy-of select="fn:QName('', 'string')"/>\r
+                       </xsl:when>\r
+                       <xsl:otherwise>\r
+                               <xsl:copy-of select="fn:QName('', 'false')"/>\r
+                       </xsl:otherwise>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf5_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="true()"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='n'">\r
+                               <xsl:copy-of select="false()"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf6_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf7_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'0'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'1'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:template name="vmf:vmf8_inputtoresult">\r
+               <xsl:param name="input" select="()"/>\r
+               <xsl:choose>\r
+                       <xsl:when test="$input='f'">\r
+                               <xsl:copy-of select="'optional'"/>\r
+                       </xsl:when>\r
+                       <xsl:when test="$input='o'">\r
+                               <xsl:copy-of select="'required'"/>\r
+                       </xsl:when>\r
+               </xsl:choose>\r
+       </xsl:template>\r
+       <xsl:output method="xml" encoding="UTF-8" byte-order-mark="no" indent="yes"/>\r
+       <xsl:param name="UserNameSpace" as="xs:string" required="yes"/>\r
+       <xsl:param name="PrefixName" as="xs:string" required="yes"/>\r
+       <xsl:template match="/">\r
+               <xsl:variable name="var8_resultof_concat" as="xs:string" select="fn:concat($UserNameSpace, $PrefixName)"/>\r
+               <xsl:variable name="var7_cata" as="node()?" select="ns0:cata"/>\r
+               <schema xmlns="http://www.w3.org/2001/XMLSchema">\r
+                       <xsl:namespace name="{$PrefixName}">\r
+                               <xsl:sequence select="$var8_resultof_concat"/>\r
+                       </xsl:namespace>\r
+                       <xsl:attribute name="targetNamespace" namespace="" select="xs:string(xs:anyURI($var8_resultof_concat))"/>\r
+                       <xsl:attribute name="attributeFormDefault" namespace="" select="'qualified'"/>\r
+                       <xsl:attribute name="elementFormDefault" namespace="" select="'qualified'"/>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+                               <xsl:variable name="var1_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@attribut">\r
+                                                                                       <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                                                       <typeAttendu>\r
+                                                                                               <xsl:sequence select="fn:string(.)"/>\r
+                                                                                       </typeAttendu>\r
+                                                                               </xsl:for-each>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var1_resultof_Fact_mapping_v_/xs:simpleType">\r
+                                       <simpleType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </simpleType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+                               <complexType>\r
+                                       <xsl:attribute name="name" namespace="" select="fn:concat('T_', fn:string(@ns0:nom))"/>\r
+                                       <sequence>\r
+                                               <xsl:for-each select="ns0:FACT">\r
+                                                       <xsl:variable name="var4_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+                                                       <element>\r
+                                                               <xsl:attribute name="name" namespace="" select="$var4_nom_as_string"/>\r
+                                                               <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var4_nom_as_string))"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:variable name="var2_resultof_vmf__inputtoresult" as="xs:string?">\r
+                                                                               <xsl:call-template name="vmf:vmf1_inputtoresult">\r
+                                                                                       <xsl:with-param name="input" select="fn:string(.)" as="xs:string"/>\r
+                                                                               </xsl:call-template>\r
+                                                                       </xsl:variable>\r
+                                                                       <xsl:for-each select="$var2_resultof_vmf__inputtoresult">\r
+                                                                               <xsl:attribute name="minOccurs" namespace="" select="xs:string(xs:integer(.))"/>\r
+                                                                       </xsl:for-each>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:variable name="var3_cur_as_integer" as="xs:integer" select="xs:integer(fn:string(.))"/>\r
+                                                                       <xsl:attribute name="maxOccurs" namespace="">\r
+                                                                               <xsl:choose>\r
+                                                                                       <xsl:when test="($var3_cur_as_integer = xs:decimal('-1'))">\r
+                                                                                               <xsl:sequence select="'unbounded'"/>\r
+                                                                                       </xsl:when>\r
+                                                                                       <xsl:otherwise>\r
+                                                                                               <xsl:sequence select="xs:string($var3_cur_as_integer)"/>\r
+                                                                                       </xsl:otherwise>\r
+                                                                               </xsl:choose>\r
+                                                                       </xsl:attribute>\r
+                                                               </xsl:for-each>\r
+                                                       </element>\r
+                                               </xsl:for-each>\r
+                                       </sequence>\r
+                               </complexType>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC/ns0:FACT">\r
+                               <xsl:variable name="var5_resultof_Fact_mapping_v_" as="node()?">\r
+                                       <xsl:call-template name="user:Fact_mapping_v2">\r
+                                               <xsl:with-param name="NameSpaceName" select="$PrefixName" as="xs:string"/>\r
+                                               <xsl:with-param name="efficasANDschema" as="node()">\r
+                                                       <FACT xmlns="http://chercheurs.edf.com/logiciels/efficas">\r
+                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:FACT">\r
+                                                                       <FACT>\r
+                                                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                                                       </FACT>\r
+                                                               </xsl:for-each>\r
+                                                               <xsl:for-each select="ns0:SIMP">\r
+                                                                       <SIMP>\r
+                                                                               <xsl:attribute name="ns0:nom" select="fn:string(@ns0:nom)"/>\r
+                                                                               <xsl:for-each select="@ns0:statut">\r
+                                                                                       <xsl:attribute name="ns0:statut" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@ns0:max_occurs">\r
+                                                                                       <xsl:attribute name="ns0:max_occurs" select="xs:string(xs:integer(fn:string(.)))"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="@attribut">\r
+                                                                                       <xsl:attribute name="attribut" namespace="" select="fn:string(.)"/>\r
+                                                                               </xsl:for-each>\r
+                                                                               <xsl:for-each select="ns0:typeAttendu">\r
+                                                                                       <typeAttendu>\r
+                                                                                               <xsl:sequence select="fn:string(.)"/>\r
+                                                                                       </typeAttendu>\r
+                                                                               </xsl:for-each>\r
+                                                                       </SIMP>\r
+                                                               </xsl:for-each>\r
+                                                       </FACT>\r
+                                               </xsl:with-param>\r
+                                       </xsl:call-template>\r
+                               </xsl:variable>\r
+                               <xsl:for-each select="$var5_resultof_Fact_mapping_v_/xs:complexType">\r
+                                       <complexType>\r
+                                               <xsl:sequence select="(./@node(), ./node())"/>\r
+                                       </complexType>\r
+                               </xsl:for-each>\r
+                       </xsl:for-each>\r
+                       <xsl:for-each select="$var7_cata/ns0:commandes/ns0:PROC">\r
+                               <xsl:variable name="var6_nom_as_string" as="xs:string" select="fn:string(@ns0:nom)"/>\r
+                               <element>\r
+                                       <xsl:attribute name="type" namespace="" select="fn:QName(' ', fn:concat(fn:concat($PrefixName, ':T_'), $var6_nom_as_string))"/>\r
+                                       <xsl:attribute name="name" namespace="" select="$var6_nom_as_string"/>\r
+                               </element>\r
+                       </xsl:for-each>\r
+               </schema>\r
+       </xsl:template>\r
+</xsl:stylesheet>\r
diff --git a/Efi2Xsd/XSL/Saxon.cmd b/Efi2Xsd/XSL/Saxon.cmd
new file mode 100644 (file)
index 0000000..5004870
--- /dev/null
@@ -0,0 +1 @@
+saxonb-xslt  -s:../Cata_MED_FAM.xml -xsl:MappingMapToXMLSchema_1_1__ef.xslt PrefixName=med UserNameSpace='http://chercheurs.edf.com/logiciels/'
diff --git a/Efi2Xsd/__init__.py b/Efi2Xsd/__init__.py
new file mode 100644 (file)
index 0000000..df53d55
--- /dev/null
@@ -0,0 +1,19 @@
+# -*- 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
+#
diff --git a/Efi2Xsd/balises.py b/Efi2Xsd/balises.py
new file mode 100644 (file)
index 0000000..4f2a463
--- /dev/null
@@ -0,0 +1,53 @@
+texteDebut='<?xml version="1.0" encoding="UTF-8"?>\n<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:{}="http://chercheurs.edf.com/logiciels/{}" targetNamespace="http://chercheurs.edf.com/logiciels/{}" elementFormDefault="qualified" attributeFormDefault="qualified"\n>'
+texteFin='</schema>'
+
+# SIMP
+typeSimple    = '\t<simpleType name="{}">\n\t\t<restriction base="{}"/>\n\t</simpleType>\n'
+debutTypeSimpleWithInto  = '\t<simpleType name="{}">\n\t\t<restriction base="{}">\n'
+typeSimpleWithInto       = '\t\t\t<enumeration value="{}"/>\n'
+finTypeSimpleWithInto    = '\t\t</restriction>\n\t</simpleType>\n'
+eltDsSequence = '\t\t\t<element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+
+# COMPO
+debutTypeCompo = '\t<complexType name="{}" >\n\t\t<sequence minOccurs="{}" maxOccurs="{}">\n'
+finTypeCompo   = '\t\t</sequence>\n\t</complexType>\n'
+eltCompoDsSequence = '\t\t\t<element name="{}" type="{}:{}" minOccurs="{}" maxOccurs="{}"/>\n'
+eltCompoDsSequenceSiProc = '\t\t\t<element name="{}" type="{}:{}" />\n'
+
+# BLOC
+debutTypeSubst = '\t<group name="{}">   \n\t\t<sequence>\n'
+finTypeSubst   = '\t\t</sequence>\n\t</group>\n'
+substDsSequence = '\t\t\t<group ref="{}:{}"  minOccurs="{}" maxOccurs="{}"/>\n'
+
+
+# CATA
+debutTypeCata = '\t<complexType name="{}">\n\t\t<choice minOccurs="0" maxOccurs="unbounded">\n'
+finTypeCata   = '\t\t</choice>\n\t</complexType> '
+eltCata = '\t<element name="{}" type="{}:{}"/>\n'
+
+
+if __name__ == '__main__' :
+   nomElt='Simple'
+   nomDuType='T_Simple'
+   nomDuTypeBase='int'
+   nomDuComplexe='T_Complexe'
+   nomDuCode='monCode'
+   minOccurs=1
+   maxOccurs=1
+
+   texteSimple=typeSimple.format(nomDuType, nomDuTypeBase)
+   texteElt=eltDsSequence.format(nomElt,nomDuCode,nomDuType,minOccurs,maxOccurs)
+
+   minOccurs=0
+   texteComplexe=debutTypeComplexe.format(nomDuComplexe)
+   texteComplexe+=texteElt
+   texteComplexe+=finTypeComplexe
+   texteEltComplexe=eltDsSequence.format(nomElt,nomDuCode,nomDuType,minOccurs,maxOccurs)
+
+   texteCata=debutTypeCata.format(nomDuCode)
+   texteCata+=texteEltComplexe
+   texteCata+=finTypeCata
+
+   eltRacine=eltCata.format(nomDuCode, 'T_'+nomDuCode)
+   print (texteSimple+texteComplexe+texteCata+eltRacine)
+
diff --git a/Efi2Xsd/cata.xml b/Efi2Xsd/cata.xml
new file mode 120000 (symlink)
index 0000000..e5ed3c8
--- /dev/null
@@ -0,0 +1 @@
+../CataTestXSD/Test_Catalogue_(1.1)_PyXB.xml
\ No newline at end of file
diff --git a/Efi2Xsd/efficas.py b/Efi2Xsd/efficas.py
new file mode 100644 (file)
index 0000000..3304e8a
--- /dev/null
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from raw.efficas import *
diff --git a/Efi2Xsd/introspect.py b/Efi2Xsd/introspect.py
new file mode 100644 (file)
index 0000000..cf099b1
--- /dev/null
@@ -0,0 +1,109 @@
+# Demonstrate alternatives for bindings customization
+import sys, os
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..")))
+
+# Introspection-based customization.
+#from raw.custom import *
+#import raw.custom as raw_custom
+from Atmo.raw.atmo_test3 import *
+import Atmo.raw.atmo_test3 as raw_custom
+
+#class ta04 (raw_custom.ta04):
+#    def xa04 (self):
+#        return 'extend ta04'
+#raw_custom.ta04._SetSupersedingClass(ta04)
+
+import inspect
+def creationAccasSimp(c):
+    print c 
+
+class toto
+def __init__(self,*args):
+    print dir(self)
+    mro = type(self).mro()
+    for next_class in mro[mro.index(ChildB) + 1:] :
+        if hasattr(next_class, '__init__'):
+           next_class.__init__(self,args)
+
+# Utility function to identify classes of interest
+def _isSupersedable (cls):
+    return inspect.isclass(cls) and issubclass(cls, pyxb.binding.basis._DynamicCreate_mixin)
+
+def _injectClasses ():
+    import sys
+    import pyxb.binding.basis
+    
+    # All PyXB complex type definitions in the original module
+    raw_classes = set([_o for (_, _o) in inspect.getmembers(raw_custom) if _isSupersedable(_o)])
+    raw_classes_compo=set()
+    raw_classes_simp=set()
+    for c in raw_classes :
+      if issubclass(c,pyxb.binding.basis.complexTypeDefinition) : raw_classes_compo.add(c)
+      else : raw_classes_simp.add(c)
+    #print 'Original classes complex type: %s' % (raw_classes_compo,)
+    print 'Original classes simple type: %s' % (raw_classes_simp,)
+    for c in raw_classes_simp:
+        setattr(c,'creationAccasSimp',creationAccasSimp)
+        oldInit=c.__init__
+        print c.__class__
+        #setattr(c,'__init__',__init__)
+        print c.__mro__
+    
+    # PyXB complex type definitions in this module that did not come
+    # from the original import *.
+    this_module = sys.modules[__name__]
+    this_classes = set([_o for (_, _o) in inspect.getmembers(this_module) if _isSupersedable(_o) and _o not in raw_classes])
+    this_classes_tuple = tuple(this_classes)
+    #print 'This classes: %s' % (this_classes,)
+    
+    # Raw classes superseded by something in this module
+    superseded_classes = set([ _o for _o in raw_classes if _o._SupersedingClass() in this_classes ])
+    superseded_classes_tuple = tuple(superseded_classes)
+    print 'Superseded classes: %s' % (superseded_classes,)
+
+    # Raw classes that are subclasses of something superseded by this
+    # module, but that are not themselves superseded by this module
+    need_supersedure_classes = set([_o for _o in raw_classes if issubclass(_o, superseded_classes_tuple) and _o not in superseded_classes])
+    print 'Need supersedure classes: %s' % (need_supersedure_classes,)
+
+    # Add local definitions to supersede classes all of whose
+    # ancestors have been superseded as necessary.
+    while need_supersedure_classes:
+        did_replacement = False
+        new_need_supersedure_classes = set()
+        for o in need_supersedure_classes:
+            candidate = True
+            # Build the new sequence of base classes while we check them.
+            new_mro = []
+            for super_o in o.__mro__:
+                if super_o == o:
+                    # Put the superseded class in its original position (probably first)
+                    new_mro.append(o)
+                    continue
+                if super_o in need_supersedure_classes:
+                    # Subclass of a class we haven't gotten to yet; put it off
+                    candidate = False
+                    break
+                # Append the replacement or the original, as needed
+                if super_o in superseded_classes:
+                    new_mro.append(super_o._SupersedingClass())
+                else:
+                    new_mro.append(super_o)
+            if not candidate:
+                new_need_supersedure_classes.add(o)
+                continue
+            # Create a new class that subclasses the replacements
+            name = o.__name__
+            new_o = type(name, tuple(new_mro), o.__dict__.copy())
+            # Install it in the module
+            setattr(this_module, name, new_o)
+            # Tell PyXB to use it as the superseding class
+            o._SetSupersedingClass(new_o)
+            # Record it so future passes will find it
+            superseded_classes.add(o)
+        assert need_supersedure_classes != new_need_supersedure_classes
+        need_supersedure_classes = new_need_supersedure_classes
+
+_injectClasses()
+m=T_Unit1(1)
+print m
diff --git a/Efi2Xsd/mapDesTypes.py b/Efi2Xsd/mapDesTypes.py
new file mode 100755 (executable)
index 0000000..d90cbc1
--- /dev/null
@@ -0,0 +1,122 @@
+class Tuple:
+  def __init__(self,ntuple):
+    self.ntuple=ntuple
+
+  def __convert__(self,valeur):
+    if type(valeur) == types.StringType:
+      return None
+    if len(valeur) != self.ntuple:
+      return None
+    return valeur
+
+  def info(self):
+    return "Tuple de %s elements" % self.ntuple
+
+  __repr__=info
+  __str__=info
+
+
+
+def inverseDico(dicoSource) :
+#---------------------------
+    dicoInverse = {}
+    for (clef,valeur) in dicoSource.items():
+        if not(type(valeur) is tuple):
+           dicoInverse[valeur]=clef
+           continue
+        (elt,att)=valeur
+        if elt not in dicoInverse : dicoInverse[elt]={}
+        dicoInverse[elt][att]=clef
+    return dicoInverse
+     
+dictSIMPEficasXML= { 'typ'        : 'nomTypeAttendu',
+                     'statut'     : 'statut', 
+                     'min'        : 'minOccurences',
+                     'max'        : 'maxOccurences', 
+                     'homo'       : 'homo'       , 
+                     'position'   : 'portee', 
+                     'validators' : 'validators' , 
+                     'sug'        : 'valeurSugg',
+                     'defaut'     : 'valeurDef' , 
+                     'into'       : ('plageValeur','into'), 
+                     'val_min'    : ('plageValeur','borneInf'), 
+                     'val_max'    : ('plageValeur','borneSup'),
+                     'ang'        : ('doc','ang'), 
+                     'fr'         : ('doc','fr',),
+                     'docu'       : ('doc','docu'),
+                   }
+
+dictSIMPXMLEficas= inverseDico(dictSIMPEficasXML)
+
+
+dictFACTEficasXML = { 'statut'     : 'statut', 
+                      'min'        : 'minOccurences',
+                      'max'        : 'maxOccurences', 
+                      'ang'        : ('doc','ang'), 
+                      'fr'         : ('doc','fr',),
+                      'docu'       : ('doc','docu'),
+                      'regles'     : 'regles',
+                      'validators' : 'validators' ,
+                    }
+
+dictFACTXMLEficas =  inverseDico(dictFACTEficasXML)
+
+dictBLOCEficasXML = { 'statut'     : 'statut', 
+                      'ang'        : ('doc','ang'), 
+                      'fr'         : ('doc','fr',),
+                      'regles'     : 'regles',
+                      'condition'  : 'condition' ,
+                    }
+
+dictBLOCXMLEficas =  inverseDico(dictBLOCEficasXML)
+
+dictPROCEficasXML =  { 'nom'        : 'nom',
+                       'regles'     : 'regles',
+                       'ang'        : ('doc','ang'), 
+                       'fr'         : ('doc','fr',),
+                       'docu'       : ('doc','docu'),
+                      }
+     #                  'UIinfo' : 'UIinfo'
+     #                  'reentrant'
+     #                  'repetable'
+     #                  'op_init'
+     #                  'fenetreIhm' : 'fenetreIhm'
+
+dictPROCXMLEficas = inverseDico(dictPROCEficasXML)
+
+dictOPEREficasXML = dictPROCEficasXML
+dictOPERXMLEficas = dictPROCXMLEficas
+
+dictPourCast                = { 'I' : int, 'R' : float, 'bool' : bool ,   }
+dictNomsDesTypes = { 'I' : 'int', 'R' : 'float', bool : 'boolean' , 'TXM' : 'string', 'Fichier' : 'string', 'Repertoire':'string', 'FichierNoAbs' : 'string', 'FichierOuRepertoire':'string'   }
+
+listeParamDeTypeTypeAttendu = ( 'defaut', 'sug', 'val_min', 'val_max', 'into', 'intoSug')
+listeParamDeTypeStr         = ('fr', 'docu', 'ang', 'nom' )
+
+listeParamTjsSequence        = ('into' , 'intoSug')
+listeParamSelonType           = ('defaut', 'sug', 'into', 'intoSug') 
+
+if __name__ == "__main__":
+   import pprint
+   pp=pprint.PrettyPrinter(indent=4)
+   print ('dictSIMPEficasXML')
+   pp.pprint(dictSIMPEficasXML)
+   print ('\n\n')
+   print ('dictSIMPXMLEficas')
+   pp.pprint(dictSIMPXMLEficas)
+   print ('\n\n')
+   print ('dictFACTEficasXML')
+   pp.pprint(dictFACTEficasXML)
+   print ('\n\n')
+   print ('dictFACTXMLEficas')
+   pp.pprint(dictFACTXMLEficas)
+   print ('\n\n')
+   print ('dictPROCEficasXML')
+   pp.pprint(dictPROCEficasXML)
+   print ('\n\n')
+   print ('dictPROCXMLEficas')
+   pp.pprint(dictPROCXMLEficas)
+   print ('\n\n')
+   print ('dictNomsDesTypes')
+   pp.pprint(dictNomsDesTypes )
diff --git a/Efi2Xsd/model.xsd b/Efi2Xsd/model.xsd
new file mode 120000 (symlink)
index 0000000..9b381ef
--- /dev/null
@@ -0,0 +1 @@
+ModeleEficas/Model Efficas (1.1)  v9.xsd
\ No newline at end of file
diff --git a/Efi2Xsd/readerEfiXsd.py b/Efi2Xsd/readerEfiXsd.py
new file mode 100755 (executable)
index 0000000..c98a16c
--- /dev/null
@@ -0,0 +1,310 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import sys,os
+import raw.efficas as efficas
+import types
+
+sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
+
+
+from Accas import *
+
+
+# ds l init du SIMP il manque siValide et fenetreIhm
+
+from mapDesTypes import dictSIMPEficasXML, dictSIMPXMLEficas
+from mapDesTypes import dictFACTEficasXML, dictFACTXMLEficas
+from mapDesTypes import dictPROCEficasXML, dictPROCXMLEficas
+from mapDesTypes import dictOPEREficasXML, dictOPERXMLEficas
+from mapDesTypes import dictBLOCEficasXML, dictBLOCXMLEficas
+from mapDesTypes import dictPourCast
+from mapDesTypes import listeParamDeTypeTypeAttendu, listeParamDeTypeStr, dictPourCast
+from mapDesTypes import listeParamTjsSequence, listeParamSelonType
+
+
+# ------------------------------
+class objetDefinitionAccas:
+# ------------------------------
+
+   def argumentXMLToEficas(self):
+   # ---------------------------
+      # Attention, pas de validation pour l instant
+      # il faut verifier la coherence entre les types contenus dans defaut, sug ... et le typeAttendu
+      # tout cela dans une fonction verifie pas faite -)
+
+      # Recuperation parametres
+      self.dictArgsEficas={}
+      for nomXMLArg in dir(self) :
+          if nomXMLArg in self.dictATraiter :
+              nomEficasArg=self.dictATraiter[nomXMLArg]
+              argu=getattr(self,nomXMLArg)
+              if argu==None : continue
+
+              if type(nomEficasArg) == types.DictionaryType:
+                 for nomXML in list(nomEficasArg.keys()):
+                      arguDecoupe=getattr(argu,nomXML)
+                      nomEficasDecoupe=nomEficasArg[nomXML]
+                      if arguDecoupe == None : continue
+                      self.dictArgsEficas[nomEficasDecoupe]=arguDecoupe
+              else :
+                self.dictArgsEficas[nomEficasArg] = argu
+                    
+      # Cast dans le bon type des parametres si necessaire
+      if 'min' in list(self.dictArgsEficas.keys()): 
+            self.dictArgsEficas['min']=int(self.dictArgsEficas['min'])
+
+      if 'max' in list(self.dictArgsEficas.keys()): 
+         if self.dictArgsEficas['max']== -1 :  self.dictArgsEficas['max']="**"
+         else  :  self.dictArgsEficas['max']=int(self.dictArgsEficas['max'])
+
+      for param in list(self.dictArgsEficas.keys()):
+          if param in listeParamDeTypeStr :
+             self.dictArgsEficas[param]=unicode(self.dictArgsEficas[param])
+      
+      # En 2.7 a revoir en 3 ? necessaire
+      self.nomObj=str(self.nom)
+     
+   def getAccasEquivalent(self):
+   # ---------------------------
+       return self.nomObj, self.objAccas
+#
+
+# ---------------------------------------------------------
+class objetComposeDefinitionAccas (objetDefinitionAccas):
+# ---------------------------------------------------------
+    def exploreArbre(self,cata):
+    # --------------------------
+      liste=[]
+      for obj in self.content(): liste.append(obj)
+      #liste.reverse()
+      # PNPNPN essayer de comprendre reverse ou non
+
+      for obj in liste: 
+          if  hasattr(obj,'explore') : obj.explore(cata)
+          if  hasattr(obj,'getAccasEquivalent') : 
+              nom,objetAccas=obj.getAccasEquivalent()
+              self.dictArgsEficas[nom]=objetAccas
+     
+# ----------------------------------------------------
+class monSIMP (efficas.T_SIMP,  objetDefinitionAccas):
+# ----------------------------------------------------
+
+   def explore(self,cata):
+   # --------------------
+      #print ("je passe dans  explore pour SIMP ", self.nom)
+      self.dictATraiter= dictSIMPXMLEficas
+      self.argumentXMLToEficas()
+      #print (self.dictArgsEficas)
+      
+
+      self.objAccas=A_SIMP.SIMP(**self.dictArgsEficas)
+      self.objAccas.nom=self.nomObj
+
+   def argumentXMLToEficas(self):
+   # ----------------------------
+      #print self.nom
+      objetDefinitionAccas.argumentXMLToEficas(self)
+
+      if self.attendTuple() :
+          #nbDElts=type(listeDElt[0]) 
+          print self.nomTypeAttendu
+
+
+      self.traiteLesSequences()
+      #self.convertitLesTypes()
+
+   def attendListe(self):
+   # ---------------
+      if 'max' in self.dictArgsEficas :
+        if self.dictArgsEficas['max'] > 1 : return True
+        if self.dictArgsEficas['max'] == "**"  : return True
+      return False
+
+   def attendTuple(self):
+   # -----------------
+       if self.dictArgsEficas['typ'] != 'tuple' : return False
+       return True
+  
+   def attendTXM(self):
+   # ----------------
+       if self.dictArgsEficas['typ'] == 'TXM' : return True
+       return False
+  
+
+   def traiteLesSequences(self):
+   # ---------------------------
+       listeDeListe=self.attendListe()
+       for param in listeParamTjsSequence :
+          if  param in self.dictArgsEficas :
+              if listeDeListe == False: 
+                #print ('________________________________')
+                listeDElt=[]
+                for i in range(len(self.dictArgsEficas[param])):
+                # ou typesimple ?
+                # ici on ne sait pas si on est un type simple ou complexe ?
+                    listeDElt.append(self.dictArgsEficas[param][i].content()[0])
+                listeRetour=self.convertitListeDsLeBonType(listeDElt)
+                #print (listeRetour)
+                #print ('________________________________')
+                self.dictArgsEficas[param]=listeRetour
+              else :
+                 listeResultat=[]
+                 # on transforme en liste pour traiter chaque elt de la liste
+                 for i in range(len(self.dictArgsEficas[param])):
+                     if self.dictArgsEficas[param][i].typesimple != None :
+                        lesElts=self.dictArgsEficas[param][i].typesimple
+                     else :
+                        lesElts=self.dictArgsEficas[param][i].content()
+                     if (not(isinstance(lesElts,list)) and not (isinstance(lesElts,tuple))):
+                        lesElts=(lesElts,)
+                        lesEltsTransformes=self.convertitListeDsLeBonType(lesElts)
+                     lesEltsTransformes=self.convertitListeDsLeBonType(lesElts)
+                     listeResultat.append(lesEltsTransformes)
+                 self.dictArgsEficas[param]=listeResultat
+              #print ('fin de traiteLesSequences pour', self.nom, ' param :', param, 'listeResultat',self.dictArgsEficas[param])
+
+
+   def convertitListeDsLeBonType(self,listeDElt):
+   # -------------------------------------------
+   # Cas des Tuples non traites
+       typeAttendu = self.dictArgsEficas['typ']
+       if typeAttendu in list(dictPourCast.keys()):
+          nouvelleListe=[]
+          castDsLeTypeAttendu=dictPourCast[typeAttendu]
+          for valeurACaster in listeDElt :
+              val=castDsLeTypeAttendu(valeurACaster)
+              nouvelleListe.append(val)
+          return nouvelleListe
+       elif self.attendTuple() :
+          nbDElts=type(listeDElt[0]).n
+         
+       else : return listeDElt
+        
+     
+
+   def convertitLesTypes(self):
+   # ------------------------
+   # Cas des Tuples non traites
+   # Cas des fonctions utilisateurs non traites
+
+       typeAttendu = self.dictArgsEficas['typ']
+       if typeAttendu in list(dictPourCast.keys()):
+          castDsLeTypeAttendu=dictPourCast[typeAttendu]
+          for param in listeParamDeTypeTypeAttendu :
+             if param in list(self.dictArgsEficas.keys()):
+                if param in listeParamEnListeSelonType or param in listeParamTjsEnListe : 
+                   print ('typeAttendu',typeAttendu)
+                   print (self.dictArgsEficas[param])
+                   print (self.dictArgsEficas[param].content())
+                   print (self.dictArgsEficas[param].content())
+                   return
+                valeurACaster=self.dictArgsEficas[param].typesimple
+                if not isinstance(valeurACaster, (list, tuple)) :
+                   val=castDsLeTypeAttendu(valeurACaster)
+                   self.dictArgsEficas[param]=val
+                else :
+                   liste=[]
+                   for val in valeurACaster : liste.append(castDsLeTypeAttendu(val))
+                   self.dictArgsEficas[param]=liste
+
+
+# -------------------------------------------------------
+class monFACT(efficas.T_FACT, objetComposeDefinitionAccas):
+# -------------------------------------------------------
+   def explore(self,cata):
+   # --------------------
+      #print "je passe dans  explore pour FACT ", self.nom
+
+      self.dictATraiter= dictFACTXMLEficas
+      self.argumentXMLToEficas()
+      self.exploreArbre(cata)
+      self.objAccas=A_FACT.FACT(**self.dictArgsEficas)
+
+
+# ---------------------------------------------------------
+class monPROC(efficas.T_PROC, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+   def explore(self,cata):
+   # --------------------
+      print "je passe dans  explore pour PROC ", self.nom
+      self.dictATraiter= dictPROCXMLEficas
+      self.argumentXMLToEficas()
+      self.exploreArbre(cata)
+      self.dictArgsEficas['op']=None
+
+      self.objAccas=A_PROC.PROC(**self.dictArgsEficas)
+      setattr(cata, self.nomObj,self.objAccas)
+      cata.contexteXML[self.nomObj]=self.objAccas
+
+# ---------------------------------------------------------
+class monOPER(efficas.T_OPER, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+   def explore(self,cata):
+# ------------------------
+      print "je passe dans  explore pour OPER", self.nom
+      self.cata=cata
+      self.dictATraiter= dictOPERXMLEficas
+      self.argumentXMLToEficas()
+      self.exploreArbre(cata)
+
+      textCreationClasse='class '+str(self.typeCree)+'(ASSD): pass\n'
+      exec(textCreationClasse,globals())
+      maClasseCreee=globals()[self.typeCree]
+      self.dictArgsEficas['sd_prod']  = maClasseCreee
+      cata.contexteXML[self.typeCree] = maClasseCreee
+      
+      self.dictArgsEficas['op'] = None
+      self.objAccas=A_OPER.OPER(**self.dictArgsEficas)
+      setattr(cata, self.nomObj,self.objAccas)
+      cata.contexteXML[self.nomObj] = self.objAccas
+
+# ---------------------------------------------------------
+class monBLOC(efficas.T_BLOC, objetComposeDefinitionAccas):
+# ---------------------------------------------------------
+   def explore(self,cata):
+# ------------------------
+      print ('je passe dans explore pour BLOC', self.nom)
+      self.cata=cata
+      self.dictATraiter= dictBLOCXMLEficas
+      self.argumentXMLToEficas()
+      self.exploreArbre(cata)
+      self.objAccas=A_BLOC.BLOC(**self.dictArgsEficas)
+      setattr(cata, self.nomObj,self.objAccas)
+      cata.contexteXML[self.nomObj] = self.objAccas
+
+# ------------------------------
+class monCata(efficas.T_cata):
+# ------------------------------
+   def exploreCata(self):
+      # PNPNPN --> il faut revoir ce mecanisme
+      self.modeleMetier = None
+   # On positionne le contexte ACCAS
+      self.JdC = JDC_CATA (code = 'Atmo', execmodul = None,)
+      self.contexteXML={}
+      objAExplorer=self.commandes[0]
+      for obj in objAExplorer.content(): 
+         if  hasattr(obj,'explore') : obj.explore(self)
+      #print dir(self.JdC)
+      
+     
+   #def dumpXSD(self):
+   #   for etape in self.contexteXML.values() :
+   #       etape.dumpXSD()
+
+efficas.T_SIMP._SetSupersedingClass(monSIMP)
+efficas.T_FACT._SetSupersedingClass(monFACT)
+efficas.T_PROC._SetSupersedingClass(monPROC)
+efficas.T_OPER._SetSupersedingClass(monOPER)
+efficas.T_BLOC._SetSupersedingClass(monBLOC)
+efficas.T_cata._SetSupersedingClass(monCata)
+
+if __name__ == "__main__":
+#   print dir(efficas)
+#   print dir(efficas.T_SIMP)
+
+   #xml = open('cata_test1.xml').read()
+   xml = open('cata.xml').read()
+   SchemaMed = efficas.CreateFromDocument(xml)
+   SchemaMed.exploreCata()
+   #SchemaMed.dumpXSD()
+
index 3fb9aebf8121f08690ed85691a3fb7c9ec01421b..31439d93405439d1186ed559dff6e507490c995c 100644 (file)
@@ -41,7 +41,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     def __init__(self,texte='',parent=None,reg='oui'):
         self.valeur = texte
         if not parent :
-            self.jdc = self.parent = CONTEXT.get_current_step()
+            self.jdc = self.parent = CONTEXT.getCurrentStep()
         else:
             self.jdc = self.parent = parent
         if hasattr(self.parent,'etape'):
@@ -53,10 +53,10 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         self.niveau = self.parent.niveau
         self.actif=1
         self.state="unchanged"
-        #self.appel = N_utils.callee_where(niveau=2)
+        #self.appel = N_utils.calleeWhere(niveau=2)
         if reg=='oui' : self.register()
             
-    def isvalid(self):
+    def isValid(self):
         return 1
 
     def report(self):
@@ -64,7 +64,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         Genere l'objet rapport (classe CR)
         """
         self.cr=CR()
-        if not self.isvalid(): self.cr.warn(tr("Objet commande commentarise invalide"))
+        if not self.isValid(): self.cr.warn(tr("Objet commande commentarise invalide"))
         return self.cr
 
     def copy(self):
@@ -74,18 +74,18 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         # XXX self.texte ne semble pas exister ???
         return COMMANDE_COMM(self.texte,parent = self.parent,reg='non')
 
-    def init_modif(self):
+    def initModif(self):
         self.state = 'modified'
-        self.parent.init_modif()    
+        self.parent.initModif()    
 
-    def set_valeur(self,new_valeur):
+    def setValeur(self,new_valeur):
         """
         Remplace la valeur de self(si elle existe) par new_valeur)
         """
         self.valeur = new_valeur
-        self.init_modif()
+        self.initModif()
 
-    def get_valeur(self) :
+    def getValeur(self) :
         """
         Retourne la valeur de self, cad le texte de la commande commentarisee
         """
@@ -98,7 +98,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         """
         self.parent.register(self)
 
-    def isoblig(self):
+    def isOblig(self):
         """
         Indique si self est obligatoire ou non : retourne toujours 0
         """
@@ -111,13 +111,13 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         """
         return self.nom
 
-    def isrepetable(self):
+    def isRepetable(self):
         """
         Indique si self est repetable ou non : retourne toujours 1
         """
         return 1        
 
-    def get_attribut(self,nom_attribut) :
+    def getAttribut(self,nom_attribut) :
         """
         Retourne l'attribut de nom nom_attribut de self (ou herite)
         """
@@ -126,7 +126,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         else :
           return None
 
-    def get_fr(self):
+    def getFr(self):
         """
         Retourne l'attribut fr de self.definition
         """
@@ -136,7 +136,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         except:
           return ''
 
-    def liste_mc_presents(self):
+    def listeMcPresents(self):
         return []
 
     def supprime(self):
@@ -153,26 +153,26 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         self.val = None
         self.appel = None
 
-    def supprime_sdprods(self):
+    def supprimeSdProds(self):
         pass
 
-    def update_context(self,d):
+    def updateContext(self,d):
         """
         Update le dictionnaire d avec les concepts ou objets produits par self
         --> ne fait rien pour une commande en  commentaire
         """
         pass
 
-    def delete_concept(self,sd):
+    def deleteConcept(self,sd):
         pass
 
-    def replace_concept (self,old_sd,sd):
+    def replaceConcept (self,old_sd,sd):
         pass
 
-    def get_sdprods(self,nom_sd):
+    def getSdprods(self,nom_sd):
         return None
 
-    def uncomment(self):
+    def unComment(self):
         """
         Cette methode a pour but de decommentariser l'objet courant,
         cad de retourner un tuple contenant :
@@ -180,10 +180,10 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
           - le nom de la sdprod eventuellement produite (sinon None)
         """
         # on recupere le contexte avant la commande commentarisee
-        context_ini = self.jdc.get_contexte_avant(self)
+        context_ini = self.jdc.getContexteAvant(self)
         try:
             # on essaie de creer un objet JDC...
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
             if re.search('Fin Commentaire',self.valeur) :
                self.valeur=self.valeur.replace('Fin Commentaire','')
             J=self.jdc.__class__(procedure=self.valeur,
@@ -213,12 +213,12 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         else:
             nom_sd = None
         #new_etape=new_etape.copy()
-        #print "uncomment",new_etape.sd
+        #print "unComment",new_etape.sd
 
         pos=self.parent.etapes.index(self)
-        # L'ordre d'appel est important : suppentite fait le menage des concepts dans les etapes suivantes
-        self.parent.addentite(new_etape,pos)
-        self.parent.suppentite(self)
+        # L'ordre d'appel est important : suppEntite fait le menage des concepts dans les etapes suivantes
+        self.parent.addEntite(new_etape,pos)
+        self.parent.suppEntite(self)
         return new_etape,nom_sd
 
     def active(self):
@@ -233,13 +233,13 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
         """
         self.actif = 0
 
-    def isactif(self):
+    def isActif(self):
         """
         Booleenne qui retourne 1 si self est valide, 0 sinon
         """
         return self.actif
     
-    def verif_condition_bloc(self):
+    def verifConditionBloc(self):
       """
           Evalue les conditions de tous les blocs fils possibles
           (en fonction du catalogue donc de la definition) de self et
@@ -249,7 +249,7 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
       """
       return [],[]
 
-    def verif_condition_regles(self,liste_presents):
+    def verifConditionRegles(self,liste_presents):
       """
           Retourne la liste des mots-cles a rajouter pour satisfaire les regles
           en fonction de la liste des mots-cles presents
@@ -261,10 +261,10 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
           Cette methode sert a reinitialiser la parente de l'objet
       """
       self.parent=parent
-      self.jdc=parent.get_jdc_root()
+      self.jdc=parent.getJdcRoot()
       self.etape=self
 
-    def verif_existence_sd(self):
+    def verifExistenceSd(self):
       """
          Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
          avant etape, sinon enleve la reference a ces concepts
@@ -272,13 +272,13 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
       """
       pass
         
-    def control_sdprods(self,d):
+    def controlSdprods(self,d):
       """sans objet pour les commandes commentarisees"""
       pass
 
     def close(self):
       pass
 
-    def reset_context(self):
+    def resetContext(self):
       pass
 
index 22af1192e74baf435db581b73e3b239fd5371608..5decbe1fba5612df74838c97875e6043ab8e147f 100644 (file)
@@ -39,7 +39,7 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     # parent est un objet de type OBJECT (ETAPE ou MC ou JDC...)
     self.valeur=valeur
     if not parent :
-      self.jdc = self.parent = CONTEXT.get_current_step()
+      self.jdc = self.parent = CONTEXT.getCurrentStep()
     else:
       self.jdc = self.parent = parent
     # La classe COMMENTAIRE n'a pas de definition. On utilise self
@@ -50,6 +50,7 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     self.actif=1
     self.state="unchanged"
     self.register()
+    self.fenetreIhm=None
 
   def register(self):
     """ 
@@ -65,18 +66,18 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     c=COMMENTAIRE(valeur=self.valeur,parent=self.jdc)
     return c
 
-  def isvalid(self):
+  def isValid(self):
     """
     Retourne 1 si self est valide, 0 sinon
     Retourne toujours 1 car un commentaire est toujours valide
     """
     return 1
 
-  def isoblig(self):
+  def isOblig(self):
     """ Indique si self est obligatoire ou non : retourne toujours 0 """
     return 0
 
-  def isrepetable(self):
+  def isRepetable(self):
     """ Indique si self est repetable ou non : retourne toujours 1 """
     return 1
 
@@ -93,7 +94,7 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
       """
       self.actif = 1
 
-  def isactif(self):
+  def isActif(self):
       """
       Booleenne qui retourne 1 si self est valide, 0 sinon
       """
@@ -109,32 +110,32 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
       self.definition = None
       self.niveau = None
 
-  def liste_mc_presents(self):
+  def listeMcPresents(self):
       return []
 
-  def get_valeur(self) :
+  def getValeur(self) :
     """ Retourne la valeur de self, cad le contenu du commentaire """
     try :
       return self.valeur
     except:
       return None
 
-  def set_valeur(self,new_valeur):
+  def setValeur(self,new_valeur):
     """ 
         Remplace la valeur de self(si elle existe) par new_valeur
     """
     self.valeur = new_valeur
-    self.init_modif()
+    self.initModif()
 
-  def init_modif(self):
+  def initModif(self):
     self.state = 'modified'
     if self.parent:
-      self.parent.init_modif()
+      self.parent.initModif()
 
-  def supprime_sdprods(self):
+  def supprimeSdProds(self):
     pass
 
-  def update_context(self,d):
+  def updateContext(self,d):
     """
         Update le dictionnaire d avec les concepts ou objets produits par self
         --> ne fait rien pour un commentaire
@@ -144,7 +145,7 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
   def report(self):
     """ Genere l'objet rapport (classe CR) """
     self.cr=CR()
-    if not self.isvalid(): self.cr.warn(tr("Objet commentaire non valorise"))
+    if not self.isValid(): self.cr.warn(tr("Objet commentaire non valorise"))
     return self.cr
 
   def ident(self):
@@ -153,13 +154,13 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     """
     return self.nom
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
     pass
 
-  def replace_concept (self,old_sd,sd):
+  def replaceConcept (self,old_sd,sd):
     pass
 
-  def verif_condition_bloc(self):
+  def verifConditionBloc(self):
     """
         Evalue les conditions de tous les blocs fils possibles
         (en fonction du catalogue donc de la definition) de self et
@@ -169,36 +170,36 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     """
     return [],[]
 
-  def verif_condition_regles(self,liste_presents):
+  def verifConditionRegles(self,liste_presents):
     """
         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
         en fonction de la liste des mots-cles presents
     """
     return []
 
-  def get_sdprods(self,nom_sd):
+  def getSdprods(self,nom_sd):
      """
          Retourne les concepts produits par la commande
      """
      return None
 
-  def verif_existence_sd(self):
+  def verifExistenceSd(self):
      pass
 
-  def get_fr(self):
+  def getFr(self):
     """
     Retourne le commentaire lui meme tronque a la 1ere ligne
     """
     return self.valeur.split('\n',1)[0]
 
-  def control_sdprods(self,d):
+  def controlSdprods(self,d):
       """sans objet """
       pass
 
   def close(self):
       pass
 
-  def reset_context(self):
+  def resetContext(self):
       pass
 
 
index 57a9fbd70bae19ab59bb9abf947fb0436ddc618b..b7a6f00348f66cdc3b2cc726be37046df64896ad 100644 (file)
@@ -30,7 +30,7 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
 
   def __init__(self,niveau,parent):
     self.parent = parent
-    self.jdc = self.parent.get_jdc_root()
+    self.jdc = self.parent.getJdcRoot()
     self.niveau = self
     self.definition = niveau
     self.etapes=[]
@@ -38,9 +38,9 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
     self.dict_niveaux={}
     self.editmode = 0
     self.state="undetermined"
-    self.build_niveaux()
+    self.buildNiveaux()
 
-  def build_niveaux(self):
+  def buildNiveaux(self):
     for niveau in self.definition.l_niveaux:
       etape_niveau = ETAPE_NIVEAU(niveau,self)
       self.etapes_niveaux.append(etape_niveau)
@@ -52,7 +52,7 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
           - si editmode = 0 : on est en mode relecture d'un fichier de commandes
           auquel cas on ajoute etape a la fin de la liste self.etapes
           - si editmode = 1 : on est en mode ajout d'etape depuis eficas auquel cas
-          cette methode ne fait rien, c'est addentite qui enregistre etape
+          cette methode ne fait rien, c'est addEntite qui enregistre etape
           a la bonne place dans self.etapes 
     """
     if self.editmode : return
@@ -67,14 +67,14 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
   def ident(self):
     return self.definition.label
 
-  def isactif(self):
+  def isActif(self):
     #print 'Niveau : ',self.definition.nom
     #print '\tactif =',self.definition.actif
     if self.definition.actif == 1 :
       return 1
     else :
       # self.actif est une condition a evaluer dans un certain contexte ...
-      d = self.cree_dict_valeurs()
+      d = self.creeDictValeurs()
       try:
         t=eval(self.definition.actif,d)
         return t
@@ -82,39 +82,39 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
         traceback.print_exc()
         return 0
 
-  def cree_dict_valeurs(self):
+  def creeDictValeurs(self):
     """
     Retourne le dictionnaire des freres aines de self compose des couples :
-    {nom_frere isvalid()}
+    {nom_frere isValid()}
     """
     d={}
     for niveau in self.parent.etapes_niveaux:
       if niveau is self : break
-      d[niveau.definition.nom]=niveau.isvalid()
+      d[niveau.definition.nom]=niveau.isValid()
     return d
 
-  def isvalid(self):
+  def isValid(self):
     """ Methode booleenne qui retourne 0 si le niveau est invalide, 1 sinon """
     if self.etapes_niveaux == []:
       if len(self.etapes) == 0:
         return self.definition.valide_vide
       else:
         for etape in self.etapes :
-          if not etape.isvalid() : return 0
+          if not etape.isValid() : return 0
         return 1
     else:
       for etape_niveau in self.etapes_niveaux :
-        if not etape_niveau.isvalid() : return 0
+        if not etape_niveau.isValid() : return 0
       return 1
 
   def accept(self,visitor):
     visitor.visitETAPE_NIVEAU(self)
 
-  def addentite(self,name,pos_rel):
+  def addEntite(self,name,pos_rel):
     self.editmode = 1
     try :
-      pos_abs=self.jdc.get_nb_etapes_avant(self)+pos_rel
-      cmd = self.jdc.addentite(name,pos_abs)
+      pos_abs=self.jdc.getNbEtapesAvant(self)+pos_rel
+      cmd = self.jdc.addEntite(name,pos_abs)
       self.etapes.insert(pos_rel,cmd)
       self.editmode = 0
       return cmd
@@ -123,14 +123,14 @@ class ETAPE_NIVEAU(N_OBJECT.OBJECT):
       self.editmode = 0
       return None
 
-  def suppentite(self,etape) :
+  def suppEntite(self,etape) :
     """ Classe ETAPE_NIVEAU
         Supprime une etape 
     """
-    self.jdc.suppentite(etape)
+    self.jdc.suppEntite(etape)
 
 
-  def get_fr(self):
+  def getFr(self):
      """
         Retourne le texte d'aide dans la langue choisie
      """
index 16d0b44295756d8c61af4090f82fcbb5bf08c3ee..9afdbaff56472a7348237d93ba356d7d78f41d3d 100644 (file)
@@ -94,11 +94,11 @@ class Interpreteur_Formule(object):
         self.parent = parent
         self.l_children = []
         if formule :
-            self.set_formule(formule)
+            self.setFormule(formule)
         if self.parent :
             self.parent.enregistre(self)
 
-    def set_formule(self,formule):
+    def setFormule(self,formule):
         """
         Stocke formule (tuple) dans l'attribut t_formule
         Methode externe
@@ -107,11 +107,11 @@ class Interpreteur_Formule(object):
         if type(formule) != types.tuple:
             raise InterpreteurException(tr("La formule passee a l'interpreteur doit etre sous forme de tuple"))
         self.t_formule = formule
-        #self.init_cr()
-        self.modify_listes()
-        self.ordonne_listes()
+        #self.initCr()
+        self.modifyListes()
+        self.ordonneListes()
 
-    def init_cr(self):
+    def initCr(self):
         """
         Initialise le cr,cad valorise les chaines debut et fin
         """
@@ -149,18 +149,18 @@ class Interpreteur_Formule(object):
         self.l_children.append(fils)
         self.cr.add(fils.cr)
         
-    def isvalid(self):
+    def isValid(self):
         """
         Booleenne qui retourne 1 si la formule est valide, 0 sinon
         Methode externe
         """
         self.l_operateurs = []
         self.cr.purge() # on vide le cr 
-        self.init_cr() # on initialise le cr
-        self.interprete_formule()
+        self.initCr() # on initialise le cr
+        self.interpreteFormule()
         return self.cr.estvide()
 
-    def interprete_formule(self):
+    def interpreteFormule(self):
         """
         Realise l'interpretation du corps de la formule
         """
@@ -173,11 +173,11 @@ class Interpreteur_Formule(object):
             # Enleve les espaces
             text_arg = text_arg.replace(' ','')
             try:
-                self.l_operateurs.append(self.split_operateurs(text_arg))
+                self.l_operateurs.append(self.splitOperateurs(text_arg))
             except InterpreteurException as e:
                 self.cr.fatal(e.__str__())
 
-    def modify_listes(self):
+    def modifyListes(self):
         """
         Modifie la liste des constantes en lui ajoutant le nom des parametres
         de la fonction a interpreter
@@ -202,11 +202,11 @@ class Interpreteur_Formule(object):
             self.l_constantes.append(cte)
         # on ajoute les fonctions unaires externes au dictionnaire des fonctions unaires
         for new_fonc in self.new_fonctions_unaires:
-            self.d_fonctions_unaires[new_fonc[0]] = self.get_nb_args(new_fonc)
+            self.d_fonctions_unaires[new_fonc[0]] = self.getNbArgs(new_fonc)
         #self.d_fonctions_unaires.update(self.new_fonctions_unaires)
         self.l_fonctions_unaires = list(self.d_fonctions_unaires.keys())
         
-    def ordonne_listes(self):
+    def ordonneListes(self):
         """
         Ordonne les listes de fonctions unaires et binaires
         """
@@ -215,7 +215,7 @@ class Interpreteur_Formule(object):
         self.l_constantes.sort(cmp_function)
         
 
-    def split_operateurs(self,texte):
+    def splitOperateurs(self,texte):
         """
         Splite le texte passe en argument en operateurs plus elementaires.
         N'analyse pas l'interieur des operateurs (ne fait qu'une passe)
@@ -224,29 +224,29 @@ class Interpreteur_Formule(object):
         texte = texte.strip()
         # on recherche un nombre en debut de texte
         try:
-            oper,reste = self.cherche_nombre(texte)
+            oper,reste = self.chercheNombre(texte)
         except InterpreteurException as e:
             raise InterpreteurException (e.__str__())
         if not oper :
             # on recherche une constante en debut de texte
             try:
-                oper,reste = self.cherche_constante(texte)
+                oper,reste = self.chercheConstante(texte)
             except InterpreteurException as e:
                 raise InterpreteurException (e.__str__())
             if not oper :
                 # on recherche une expression entre parentheses...
                 try:
-                    oper,reste = self.cherche_expression_entre_parentheses(texte)
+                    oper,reste = self.chercheExpressionEntreParentheses(texte)
                 except InterpreteurException as e:
                     raise InterpreteurException(e.__str__())
                 if not oper :
                     # on recherche le debut d'un operateur unaire en debut de texte
                     try:
-                        oper,reste = self.cherche_operateur_unaire(texte)
+                        oper,reste = self.chercheOperateurUnaire(texte)
                     except InterpreteurException as e:
                         raise InterpreteurException(e.__str__())
                     if not oper :
-                        type_objet,nom_objet = self.get_type(texte)
+                        type_objet,nom_objet = self.getType(texte)
                         if type_objet == 'constante':
                             raise InterpreteurException( "Constante %s inconnue" %nom_objet)
                         elif type_objet == 'fonction':
@@ -259,16 +259,16 @@ class Interpreteur_Formule(object):
         l_operateurs.append(oper)
         if reste :
             texte = reste.strip()
-            oper,reste = self.cherche_operateur_binaire(texte)
+            oper,reste = self.chercheOperateurBinaire(texte)
             if not oper :
                 # on a un reste et pas d'operateur binaire --> erreur
                 raise InterpreteurException("L'operateur %s doit etre suivi d'un operateur binaire" %l_operateurs[-1])
             else:
                 # on a bien trouve un operateur binaire:
                 l_operateurs.append(oper)
-                # il faut recommencer l'analyse du reste par split_operateurs ...
+                # il faut recommencer l'analyse du reste par splitOperateurs ...
                 try:
-                    l_op = self.split_operateurs(reste)
+                    l_op = self.splitOperateurs(reste)
                 except InterpreteurException as e:
                     raise InterpreteurException(e.__str__())
                 l_operateurs.extend(l_op)
@@ -277,7 +277,7 @@ class Interpreteur_Formule(object):
             # on a fini d'analyser texte
             return l_operateurs
 
-    def cherche_nombre(self,texte):
+    def chercheNombre(self,texte):
         """
         Cherche un nombre en debut de texte
         Retourne ce nombre et le reste ou None et le texte initial
@@ -318,7 +318,7 @@ class Interpreteur_Formule(object):
                 # on n'a pas trouve de nombre
                 return None,texte
         
-    def cherche_constante_old(self,texte):
+    def chercheConstanteOld(self,texte):
         """
         Recherche une constante en debut de texte parmi la liste des constantes.
         Retourne le texte representant la constante et le reste du texte ou
@@ -339,7 +339,7 @@ class Interpreteur_Formule(object):
             # aucune constante trouvee
             return None,texte
 
-    def cherche_constante(self,texte):
+    def chercheConstante(self,texte):
         """
         Recherche une constante en debut de texte parmi la liste des constantes.
         Retourne le texte representant la constante et le reste du texte ou
@@ -368,7 +368,7 @@ class Interpreteur_Formule(object):
             # aucune constante trouvee
             return None,texte
         
-    def cherche_args(self,texte):
+    def chercheArgs(self,texte):
         """
         Cherche au debut de texte une liste d'arguments entre parentheses
         """
@@ -392,7 +392,7 @@ class Interpreteur_Formule(object):
                 # on a fini d'analyser le texte : reste = None
                 return texte,None
                     
-    def cherche_operateur_unaire_old(self,texte):
+    def chercheOperateurUnaireOld(self,texte):
         """
         Cherche dans texte un operateur unaire
         """
@@ -409,7 +409,7 @@ class Interpreteur_Formule(object):
             operateur = txt
             texte = reste
             try:
-                args,reste = self.cherche_args(texte)
+                args,reste = self.chercheArgs(texte)
             except InterpreteurException as e:
                 raise InterpreteurException(e.__str__())
             if not args :
@@ -417,20 +417,20 @@ class Interpreteur_Formule(object):
                 raise InterpreteurException('operateur unaire  %s sans arguments' %operateur)
             else:
                 #operateur = operateur+args
-                args = self.split_args(txt,args,self.d_fonctions_unaires[operateur])
+                args = self.splitArgs(txt,args,self.d_fonctions_unaires[operateur])
                 formule_operateur = (txt,'',self.t_formule[2],args)
                 operateur = Interpreteur_Formule(formule = formule_operateur,
                                                  constantes = self.new_constantes,
                                                  fonctions_unaires = self.new_fonctions_unaires,
                                                  parent = self)
-                operateur.interprete_formule()
+                operateur.interpreteFormule()
                 texte = reste
                 return operateur,reste
         else:
             # aucun operateur unaire trouve
             return None,texte
 
-    def cherche_operateur_unaire(self,texte):
+    def chercheOperateurUnaire(self,texte):
         """
         Cherche dans texte un operateur unaire
         """
@@ -445,30 +445,30 @@ class Interpreteur_Formule(object):
             identificateur = l_groups[1].strip()
             reste = l_groups[2]
             try:
-                args,reste = self.cherche_args(reste)
+                args,reste = self.chercheArgs(reste)
             except InterpreteurException as e:
                 raise InterpreteurException (e.__str__())
             if not args :
                 # operateur unaire sans arguments
-                # en principe on ne doit jamais etre dans ce cas car il est deja trappe par cherche_constante ...
+                # en principe on ne doit jamais etre dans ce cas car il est deja trappe par chercheConstante ...
                 raise InterpreteurException ('Fonction %s sans arguments !' %identificateur)
             else:
                 # il faut encore verifier que l'on a bien a faire a une fonction connue
                 if identificateur not in self.l_fonctions_unaires:
                     raise InterpreteurException ('Fonction %s inconnue dans %s !' %(identificateur,texte))
-                args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
+                args = self.splitArgs(identificateur,args,self.d_fonctions_unaires[identificateur])
                 formule_operateur = (sgn+identificateur,'',self.t_formule[2],args)
                 operateur = Interpreteur_Formule(formule = formule_operateur,
                                                  constantes = self.new_constantes,
                                                  fonctions = self.new_fonctions_unaires,
                                                  parent = self)
-                operateur.interprete_formule()
+                operateur.interpreteFormule()
                 texte = reste
                 return operateur,reste
         elif texte[0] == '-':
             # Il faut pouvoir trapper les expressions du type exp(-(x+1)) ...
             try :
-               args,reste = self.cherche_args(texte[1:])
+               args,reste = self.chercheArgs(texte[1:])
             except InterpreteurException as e:
                 raise InterpreteurException (e.__str__())
             if not args :
@@ -476,19 +476,19 @@ class Interpreteur_Formule(object):
                return None,texte
             else:
                identificateur = '-'
-               args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
+               args = self.splitArgs(identificateur,args,self.d_fonctions_unaires[identificateur])
                formule_operateur = (identificateur,'',self.t_formule[2],args)
                operateur = Interpreteur_Formule(formule = formule_operateur,
                                                  constantes = self.new_constantes,
                                                  fonctions = self.new_fonctions_unaires,
                                                  parent = self)
-               operateur.interprete_formule()
+               operateur.interpreteFormule()
                texte = reste
                return operateur,reste
         else:
             return None,texte
             
-    def cherche_operateur_binaire(self,texte):
+    def chercheOperateurBinaire(self,texte):
         """
         Cherche dans texte un operateur unaire
         """
@@ -507,11 +507,11 @@ class Interpreteur_Formule(object):
             # aucun operateur unaire trouve
             return None,texte
 
-    def cherche_expression_entre_parentheses(self,texte):
+    def chercheExpressionEntreParentheses(self,texte):
         """
         Cherche en debut de texte une expression entre parentheses
         """
-        args,reste = self.cherche_args(texte.strip())
+        args,reste = self.chercheArgs(texte.strip())
         if not args :
             return None,texte
         else:
@@ -522,11 +522,11 @@ class Interpreteur_Formule(object):
                                              constantes = self.new_constantes,
                                              fonctions = self.new_fonctions_unaires,
                                              parent = self)
-            operateur.interprete_formule()
+            operateur.interpreteFormule()
             texte = reste
             return operateur,reste
             
-    def split_args(self,nom_fonction,args,nb_args):
+    def splitArgs(self,nom_fonction,args,nb_args):
         """
         Tente de partager args en nb_args elements
         Retourne une liste de chaines de caracteres (liste de longueur nb_args)
@@ -539,7 +539,7 @@ class Interpreteur_Formule(object):
         else:
             return l_args
 
-    def get_type(self,texte):
+    def getType(self,texte):
         """
         Retourne le type de l'objet defini dans texte, a savoir:
         - constante
@@ -555,7 +555,7 @@ class Interpreteur_Formule(object):
         nom_oper,args = texte.split('(',1)
         return 'fonction',nom_oper
 
-    def get_nb_args(self,formule):
+    def getNbArgs(self,formule):
         """
         Retourne le nombre d'arguments dans la definition de formule (sous forme de tuple)
         """
@@ -582,7 +582,7 @@ if __name__ == '__main__':
                                  fonctions = fonctions_unaires)
         txt = i.str()
         print(('\nformule %s = %s' %(str(formule),txt)))
-        #if i.isvalid() :
+        #if i.isValid() :
         #    print "\n\tPas d'erreur !"
         #else:
         #    print i.report()
index 41df571e1e96b1d0f727edce01fcc992195e4c50..e984c864ec73dda3223e1293ab6bbf67261e911e 100644 (file)
@@ -31,9 +31,9 @@ from . import etape_niveau
 class JDC(object):
   def __init__(self):
     self.dict_niveaux={}
-    self.build_niveaux()
+    self.buildNiveaux()
 
-  def build_niveaux(self):
+  def buildNiveaux(self):
     for niveau in self.definition.l_niveaux:
       etape_niv = etape_niveau.ETAPE_NIVEAU(niveau,self)
       self.etapes_niveaux.append(etape_niv)
index fff0ab9c53a781922ad14c01cdd9b84be109d473..b6fe4fe24cd0ec3fcc026cd81ff55346164f6ca7 100644 (file)
@@ -96,14 +96,14 @@ class JDC_POURSUITE(JDC):
 
       # On pourrait verifier que le jdc_pere apres l'etape etape_include
       # ne contient pas deja un concept de ce nom
-      #if self.jdc_pere.get_sd_apres_etape_avec_detruire(sdnom,etape=self.etape_include):
+      #if self.jdc_pere.getSdApresEtapeAvecDetruire(sdnom,etape=self.etape_include):
          # Il existe un concept apres self => impossible d'inserer
       #   raise AsException("Nom de concept deja defini : %s" % sdnom)
       # On a choisi de ne pas faire ce test ici mais de le faire en bloc
-      # si necessaire apres en appelant la methode verif_contexte
+      # si necessaire apres en appelant la methode verifContexte
 
       # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
-      # Ajoute a la creation (appel de reg_sd).
+      # Ajoute a la creation (appel de regSD).
       self.sds_dict[sdnom]=sd
       sd.nom=sdnom
 
@@ -111,27 +111,27 @@ class JDC_POURSUITE(JDC):
       if restrict == 'non':
          self.g_context[sdnom]=sd
 
-   def get_verif_contexte(self):
-      #print "get_verif_contexte"
-      j_context=self.get_contexte_avant(None)
-      self.verif_contexte(j_context)
+   def getVerifContexte(self):
+      #print "getVerifContexte"
+      j_context=self.getContexteAvant(None)
+      self.verifContexte(j_context)
       return j_context
 
-   def force_contexte(self,contexte):
+   def forceContexte(self,contexte):
       for nom_sd,sd in list(contexte.items()):
         if not isinstance(sd,ASSD):continue
-        autre_sd= self.jdc_pere.get_sd_apres_etape_avec_detruire(nom_sd,sd,
+        autre_sd= self.jdc_pere.getSdApresEtapeAvecDetruire(nom_sd,sd,
                                                        etape=self.etape_include)
         if autre_sd is None:continue
         if sd is not autre_sd:
            # Il existe un autre concept de meme nom produit par une etape apres self 
            # on detruit ce concept pour pouvoir inserer les etapes du jdc_include
            if sd.etape:
-              sd.etape.supprime_sdprod(sd)
+              sd.etape.supprimeSdprod(sd)
 
       return contexte
 
-   def verif_contexte(self,context):
+   def verifContexte(self,context):
       """
          Cette methode verifie si le contexte passe en argument (context)
          peut etre insere dans le jdc pere de l'include.
@@ -141,10 +141,10 @@ class JDC_POURSUITE(JDC):
          Si le contexte ne peut pas etre insere, la methode leve une
          exception sinon elle retourne le contexte inchange
       """
-      #print "verif_contexte"
+      #print "verifContexte"
       for nom_sd,sd in list(context.items()):
         if not isinstance(sd,ASSD):continue
-        autre_sd= self.jdc_pere.get_sd_apres_etape_avec_detruire(nom_sd,sd,
+        autre_sd= self.jdc_pere.getSdApresEtapeAvecDetruire(nom_sd,sd,
                                                        etape=self.etape_include)
         if autre_sd is None:continue
         if sd is not autre_sd:
@@ -155,47 +155,47 @@ class JDC_POURSUITE(JDC):
 
       return context
 
-   def get_liste_cmd(self):
+   def getListeCmd(self):
       """
           Retourne la liste des commandes du catalogue
       """
       if self.jdc_pere is None:
-         return JDC.get_liste_cmd(self)
-      return self.jdc_pere.get_liste_cmd()
+         return JDC.getListeCmd(self)
+      return self.jdc_pere.getListeCmd()
 
-   def get_groups(self):
+   def getGroups(self):
       """
           Retourne la liste des commandes du catalogue par groupes
       """
       if self.jdc_pere is None:
-         return JDC.get_groups(self)
-      return self.jdc_pere.get_groups()
+         return JDC.getGroups(self)
+      return self.jdc_pere.getGroups()
 
-   def init_modif(self):
+   def initModif(self):
       """
          Met l'etat de l'etape a : modifie
          Propage la modification au parent
 
-         Attention : init_modif doit etre appele avant de realiser une modification
+         Attention : initModif doit etre appele avant de realiser une modification
          La validite devra etre recalculee apres cette modification
-         mais par un appel a fin_modif pour preserver l'etat modified
+         mais par un appel a finModif pour preserver l'etat modified
          de tous les objets entre temps
       """
-      #print "jdc_include.init_modif",self,self.etape_include
+      #print "jdc_include.initModif",self,self.etape_include
       self.state = 'modified'
       if self.etape_include:
-         self.etape_include.init_modif()
+         self.etape_include.initModif()
 
-   def fin_modif(self):
+   def finModif(self):
       """
           Methode appelee une fois qu'une modification a ete faite afin de
           declencher d'eventuels traitements post-modification
           ex : INCLUDE et POURSUITE
       """
-      #print "jdc_include.fin_modif",self,self.etape_include
+      #print "jdc_include.finModif",self,self.etape_include
       CONNECTOR.Emit(self,"valid")
       if self.etape_include:
-         self.etape_include.fin_modif()
+         self.etape_include.finModif()
 
    def supprime(self):
       """
@@ -214,7 +214,7 @@ class JDC_POURSUITE(JDC):
    #   self.context_ini={}
    #   self.procedure=None
 
-   def get_contexte_avant(self,etape):
+   def getContexteAvant(self,etape):
       """
          Retourne le dictionnaire des concepts connus avant etape
          On tient compte des concepts produits par le jdc pere
@@ -223,33 +223,33 @@ class JDC_POURSUITE(JDC):
          comme DETRUIRE ou les macros
          Si etape == None, on retourne le contexte en fin de JDC
       """
-      #print "jdc_include.get_contexte_avant",etape,etape and etape.nom
+      #print "jdc_include.getContexteAvant",etape,etape and etape.nom
       if self.etape_include:
-         new_context=self.etape_include.parent.get_contexte_avant(self.etape_include).copy()
+         new_context=self.etape_include.parent.getContexteAvant(self.etape_include).copy()
          self.context_ini=new_context
-      d= JDC.get_contexte_avant(self,etape)
+      d= JDC.getContexteAvant(self,etape)
       return d
 
-   def reset_context(self):
-      #print "jdc_include.reset_context",self,self.nom
+   def resetContext(self):
+      #print "jdc_include.resetContext",self,self.nom
       if self.etape_include:
-         self.etape_include.parent.reset_context()
-         new_context=self.etape_include.parent.get_contexte_avant(self.etape_include).copy()
+         self.etape_include.parent.resetContext()
+         new_context=self.etape_include.parent.getContexteAvant(self.etape_include).copy()
          self.context_ini=new_context
-      JDC.reset_context(self)
+      JDC.resetContext(self)
 
-   def get_sd_apres_etape(self,nom_sd,etape,avec='non'):
+   def getSdApresEtape(self,nom_sd,etape,avec='non'):
       """
            Cette methode retourne la SD de nom nom_sd qui est eventuellement
            definie apres etape
            Si avec vaut 'non' exclut etape de la recherche
       """
       if self.etape_include:
-         sd=self.etape_include.parent.get_sd_apres_etape(nom_sd,self.etape_include,'non')
+         sd=self.etape_include.parent.getSdApresEtape(nom_sd,self.etape_include,'non')
          if sd:return sd
-      return JDC.get_sd_apres_etape(self,nom_sd,etape,avec)
+      return JDC.getSdApresEtape(self,nom_sd,etape,avec)
 
-   def get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec='non'):
+   def getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec='non'):
       """
            On veut savoir ce que devient le concept sd de nom nom_sd apres etape.
            Il peut etre detruit, remplace ou conserve
@@ -257,17 +257,17 @@ class JDC_POURSUITE(JDC):
            definie apres etape en tenant compte des concepts detruits
            Si avec vaut 'non' exclut etape de la recherche
       """
-      #print "jdc_include.get_sd_apres_etape_avec_detruire",nom_sd,sd,id(sd)
-      autre_sd=JDC.get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec)
+      #print "jdc_include.getSdApresEtapeAvecDetruire",nom_sd,sd,id(sd)
+      autre_sd=JDC.getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec)
       # si autre_sd vaut None le concept sd a ete detruit. On peut terminer
       # la recherche en retournant None
       # Si autre_sd ne vaut pas sd, le concept a ete redefini. On peut terminer
       # la recherche en retournant le concept nouvellement defini
       # Sinon, on poursuit la recherche dans les etapes du niveau superieur.
       if autre_sd is None or autre_sd is not sd :return autre_sd
-      return self.etape_include.parent.get_sd_apres_etape_avec_detruire(nom_sd,sd,self.etape_include,'non')
+      return self.etape_include.parent.getSdApresEtapeAvecDetruire(nom_sd,sd,self.etape_include,'non')
 
-   def delete_concept(self,sd):
+   def deleteConcept(self,sd):
       """
           Fonction : Mettre a jour les etapes du JDC suite a la disparition du
           concept sd
@@ -275,48 +275,48 @@ class JDC_POURSUITE(JDC):
           que de transmettre aux fils
       """
       # Nettoyage des etapes de l'include
-      JDC.delete_concept(self,sd)
+      JDC.deleteConcept(self,sd)
       # Nettoyage des etapes du parent
       if self.etape_include:
-         self.etape_include.parent.delete_concept_after_etape(self.etape_include,sd)
+         self.etape_include.parent.deleteConceptAfterEtape(self.etape_include,sd)
 
-   def delete_concept_after_etape(self,etape,sd):
+   def deleteConceptAfterEtape(self,etape,sd):
       """
           Fonction : Mettre a jour les etapes du JDC qui sont apres etape suite a
           la disparition du concept sd
       """
       # Nettoyage des etapes de l'include
-      JDC.delete_concept_after_etape(self,etape,sd)
+      JDC.deleteConceptAfterEtape(self,etape,sd)
       # Nettoyage des etapes du parent
       if self.etape_include:
-         self.etape_include.parent.delete_concept_after_etape(self.etape_include,sd)
+         self.etape_include.parent.deleteConceptAfterEtape(self.etape_include,sd)
 
-   def update_concept_after_etape(self,etape,sd):
+   def updateConceptAfterEtape(self,etape,sd):
       """
           Fonction : mettre a jour les etapes du JDC suite a une modification
           du concept sd (principalement renommage)
       """
-      JDC.update_concept_after_etape(self,etape,sd)
+      JDC.updateConceptAfterEtape(self,etape,sd)
       if self.etape_include:
-         self.etape_include.parent.update_concept_after_etape(self.etape_include,sd)
+         self.etape_include.parent.updateConceptAfterEtape(self.etape_include,sd)
 
-   def replace_concept_after_etape(self,etape,old_sd,sd):
+   def replaceConceptAfterEtape(self,etape,old_sd,sd):
       """
           Fonction : Mettre a jour les etapes du JDC qui sont apres etape suite au
           remplacement du concept old_sd par sd
       """
       # Nettoyage des etapes de l'include
-      JDC.replace_concept_after_etape(self,etape,old_sd,sd)
+      JDC.replaceConceptAfterEtape(self,etape,old_sd,sd)
       # Nettoyage des etapes du parent
       if self.etape_include:
-         self.etape_include.parent.replace_concept_after_etape(self.etape_include,old_sd,sd)
+         self.etape_include.parent.replaceConceptAfterEtape(self.etape_include,old_sd,sd)
 
-   def changefichier(self,fichier):
+   def changeFichier(self,fichier):
       if self.etape_include:
          self.etape_include.fichier_ini=fichier
-      self.fin_modif()
+      self.finModif()
 
-   def control_context_apres(self,etape):
+   def controlContextApres(self,etape):
       """
          Cette methode verifie que les etapes apres l'etape etape
          ont bien des concepts produits acceptables (pas de conflit de
@@ -325,24 +325,24 @@ class JDC_POURSUITE(JDC):
          Effectue les verifications sur les etapes du jdc mais aussi sur les
          jdc parents s'ils existent.
       """
-      #print "jdc_include.control_context_apres",self,etape
+      #print "jdc_include.controlContextApres",self,etape
       #Regularise les etapes du jdc apres l'etape etape
-      self.control_jdc_context_apres(etape)
+      self.controlJdcContextApres(etape)
       if self.etape_include:
          #print "CONTROL_INCLUDE:",self.etape_include,self.etape_include.nom
          # il existe un jdc pere. On propage la regularisation
-         self.etape_include.parent.control_context_apres(self.etape_include)
+         self.etape_include.parent.controlContextApres(self.etape_include)
 
 class JDC_INCLUDE(JDC_POURSUITE):
-   def get_liste_cmd(self):
+   def getListeCmd(self):
       """
           Retourne la liste des commandes du catalogue
       """
       if self.jdc_pere is None:
-         return JDC.get_liste_cmd(self)
-      return [e for e in self.jdc_pere.get_liste_cmd() if e not in ("DEBUT","POURSUITE","FIN") ]
+         return JDC.getListeCmd(self)
+      return [e for e in self.jdc_pere.getListeCmd() if e not in ("DEBUT","POURSUITE","FIN") ]
 
-   def active_etapes(self):
+   def activeEtapes(self):
       for e in self.etapes:
          e.active()
 
index 5ea45541fd45b6414ffe29ffd06d9411789ca661..e846fe1f6708eede151fb0e60d07dd91da696dac 100644 (file)
@@ -27,7 +27,7 @@ from PyQt5.QtCore import QTranslator
 code_translator = QTranslator()
 eficas_translator = QTranslator()
 
-def localise(application, locale=None,file=None,translatorFichier=None, debug=False ):
+def localise(application, locale=None,file=None,translatorFichier=None, debug=True ):
     """
     """
     from PyQt5.QtCore import QLibraryInfo
index ace02b6a7ba726b45ed77fbc15c7aa32680fb046..81e623d3af8a246e6bfbaa5f0037881f9bef9603 100644 (file)
@@ -57,16 +57,16 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
          self.etape = None
       self.state = 'undetermined'
       self.actif=1
-      self.mc_liste=self.build_mc()
+      self.mcListe=self.buildMc()
 
-   def build_mc(self):
+   def buildMc(self):
       """ 
           Construit la liste des sous-entites de MCNUPLET
           a partir de la liste des arguments (valeur)
       """
       args = self.valeur
       if args ==None : args =()
-      mc_liste=[]
+      mcListe=[]
 
       # on cree les sous entites du NUPLET a partir des valeurs initiales
       k=0
@@ -80,13 +80,13 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
           if objet.definition.position == 'global' :
             self.append_mc_global(objet)
           #XXX et global_jdc ??
-        mc_liste.append(objet)
+        mcListe.append(objet)
         k=k+1
       # Un nuplet n'a pas de mots inconnus
       self.reste_val={}
-      return mc_liste
+      return mcListe
 
-   def isvalid(self,cr='non'):
+   def isValid(self,cr='non'):
       """
           Indique si self (MCNUPLET) est un objet valide ou non : retourne 1 si oui, 0 sinon
       """
@@ -98,18 +98,18 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
           old_valid = self.valid
         else:
           old_valid = None
-        for child in self.mc_liste :
-          if not child.isvalid():
+        for child in self.mcListe :
+          if not child.isValid():
             valid = 0
             break
-        if len(self.mc_liste) != len(self.definition.entites):
+        if len(self.mcListe) != len(self.definition.entites):
           valid=0
           if cr == 'oui' :
             self.cr.fatal(''.join(("Nuplet : ",self.nom,tr("Longueur incorrecte"))))
         self.valid = valid
         self.state = 'unchanged'
         if old_valid:
-          if old_valid != self.valid : self.init_modif_up()
+          if old_valid != self.valid : self.initModifUp()
         return self.valid
 
    def __getitem__(self,key):
@@ -118,7 +118,7 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
       """
       # Un nuplet est toujours une liste de mots cles simples
       # On retourne donc la valeur
-      return self.mc_liste[key].valeur
+      return self.mcListe[key].valeur
 
    def __str__(self):
       """
@@ -126,7 +126,7 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
            de caracteres
       """
       s='('
-      for e in self.mc_liste:
+      for e in self.mcListe:
         s=s + str(e.valeur) + ','
       return s + ')'
 
@@ -136,17 +136,17 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
            de caracteres
       """
       s='('
-      for e in self.mc_liste:
+      for e in self.mcListe:
         s=s + str(e.valeur) + ','
       return s + ')'
 
-   def get_regles(self):
+   def getRegles(self):
       """
          Retourne la liste des regles attachees au nuplet
       """
       return []
 
-   def verif_condition_bloc(self):
+   def verifConditionBloc(self):
       """
           Verifie s'il y a des blocs sous le nuplet et retourne 
           les blocs en question
@@ -154,7 +154,7 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
       # Il n y a pas de BLOCs sous un NUPLET
       return [],[]
 
-   def isrepetable(self):
+   def isRepetable(self):
       """ 
           Indique si le NUPLET peut etre repete.
           Retourne 1 si c'est le cas.
@@ -169,33 +169,33 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
    def makeobjet(self):
       return self.definition(val = None, nom = self.nom,parent = self.parent)
 
-   def get_valeur(self):
+   def getValeur(self):
       """
           Cette methode doit retourner la valeur de l'objet. Elle est utilisee par 
-          cree_dict_valeurs pour construire un dictionnaire contenant les mots cles 
+          creeDictValeurs pour construire un dictionnaire contenant les mots cles 
           d'une etape.
           Dans le cas d'un nuplet, on retournera comme valeur une liste des valeurs
           des mots cle simples contenus.
       """
       l=[]
-      for v in self.mc_liste:
+      for v in self.mcListe:
          l.append(v.valeur)
       return l
 
-   def get_val(self):
+   def getVal(self):
       """
           Une autre methode qui retourne une "autre" valeur du mot cle facteur.
-          Elle est utilisee par la methode get_mocle
+          Elle est utilisee par la methode getMocle
       """
       l=[]
-      for v in self.mc_liste:
+      for v in self.mcListe:
          l.append(v.valeur)
       return l
 
-   def isoblig(self):
+   def isOblig(self):
       return self.definition.statut=='o'
 
-   def get_fr(self):
+   def getFr(self):
      """
         Retourne le texte d'aide dans la langue choisie
      """
@@ -204,11 +204,11 @@ class MCNUPLET(V_MCCOMPO.MCCOMPO,N_MCCOMPO.MCCOMPO):
      except:
         return ''
 
-   def cree_dict_valeurs(self,liste=[],condition=0):
+   def creeDictValeurs(self,liste=[],condition=0):
      dico={}
      return dico
 
-   def update_condition_bloc(self):
+   def updateConditionBloc(self):
      """
        Realise l'update des blocs conditionnels fils de self
        et propage au parent (rien a faire pour nuplet)
index 6cb979014ddf81f949de7124c082bbc32fcc3bc0..9ca012e92b51667ea85b1d06cd7a9262b7856f76 100644 (file)
@@ -47,7 +47,7 @@ class NIVEAU(object):
     self.entites.append(commande)
     self.l_noms_entites.append(commande.nom)
 
-  def get_liste_cmd(self):
+  def getListeCmd(self):
     self.l_noms_entites.sort()
     return self.l_noms_entites
 
index a12f0bffb3b29e67a7b6eaf17fa7046bd2ae2052..4d2a355cb61d2fef0286c9c6c039c02b14a16b85 100644 (file)
@@ -62,7 +62,7 @@ class NUPL(N_ENTITE.ENTITE,I_ENTITE.ENTITE):
       self.idracine="NUPLET"
       self.affecter_parente()
 
-   def verif_cata(self):
+   def verifCata(self):
       """
           Cette methode sert a valider les attributs de l'objet de definition
           de la classe NUPL
@@ -81,7 +81,7 @@ class NUPL(N_ENTITE.ENTITE,I_ENTITE.ENTITE):
         self.cr.fatal(tr("L'attribut 'statut' doit valoir 'o','f','c' ou 'd'"))
       if type(self.docu) != bytes :
         self.cr.fatal(tr("L'attribut 'docu' doit etre une chaine de caracteres"))
-      self.verif_cata_regles()
+      self.verifCataRegles()
 
    def __call__(self,val,nom,parent):
       """
@@ -105,7 +105,7 @@ class NUPL(N_ENTITE.ENTITE,I_ENTITE.ENTITE):
            Methode qui cree le rapport de verification du catalogue du nuplet 
       """
       self.cr = self.CR()
-      self.verif_cata()
+      self.verifCata()
       for v in self.entites :
         cr = v.report()
         cr.debut =tr("Debut ")+v.__class__.__name__+ ' : '
index 1e29fd53d96c5dd99c8b0c137fbb84eacadc8fd2..38e0f2f65c10902d8e4ff545617eab2e27f5ace6 100644 (file)
@@ -64,18 +64,18 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     # completude
     self.definition=self
     # parent ne peut etre qu'un objet de type JDC
-    self.jdc = self.parent = CONTEXT.get_current_step()
+    self.jdc = self.parent = CONTEXT.getCurrentStep()
     self.niveau=self.parent.niveau
     self.actif=1
     self.state='undetermined'
     self.register()
     self.dict_valeur=[]
-    #self.valeur = self.interprete_valeur(valeur)
+    #self.valeur = self.interpreteValeur(valeur)
     #self.val=valeur
     self.valeur = valeur
     self.val=repr(valeur)
 
-  def interprete_valeur(self,val):
+  def interpreteValeur(self,val):
     """
     Essaie d'interpreter val (chaine de caracteres)comme :
     - un entier
@@ -102,7 +102,7 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     if type(val) == bytes:
        # on tente l'evaluation dans un contexte fourni par le parent s'il existe
        if self.parent:
-          valeur=self.parent.eval_in_context(val,self)
+          valeur=self.parent.evalInContext(val,self)
        else:
           try :
               valeur = eval(val)
@@ -137,7 +137,7 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     # on retourne val comme une string car on n'a pas su l'interpreter
     return val
 
-  def get_valeurs(self):
+  def getValeurs(self):
     valeurretour=[]
     if self.dict_valeur != []:
        for val in self.dict_valeur:
@@ -146,35 +146,35 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
         valeurretour.append(self.valeur)
     return valeurretour
 
-  def set_valeur(self,new_valeur):
+  def setValeur(self,new_valeur):
     """
     Remplace la valeur de self par new_valeur interpretee
     """
-    self.valeur = self.interprete_valeur(new_valeur)
+    self.valeur = self.interpreteValeur(new_valeur)
     self.val=repr(self.valeur)
-    self.parent.update_concept_after_etape(self,self)
-    self.init_modif()
+    self.parent.updateConceptAfterEtape(self,self)
+    self.initModif()
 
-  def set_nom(self,new_nom):
+  def setNom(self,new_nom):
     """
     Change le nom du parametre
     """
-    self.init_modif()
+    self.initModif()
     self.nom=new_nom
-    self.fin_modif()
+    self.finModif()
 
-  def init_modif(self):
+  def initModif(self):
     """
     Methode qui declare l'objet courant comme modifie et propage
     cet etat modifie a ses ascendants
     """
     self.state = 'modified'
     if self.parent:
-      self.parent.init_modif()
+      self.parent.initModif()
 
-  def get_jdc_root(self):
+  def getJdcRoot(self):
     if self.parent:
-      return self.parent.get_jdc_root()
+      return self.parent.getJdcRoot()
     else:
       return self
 
@@ -182,10 +182,10 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     """
     Enregistre le parametre dans la liste des etapes de son parent (JDC)
     """
-    self.parent.register_parametre(self)
+    self.parent.registerParametre(self)
     self.parent.register(self)
 
-  def isvalid(self,cr='non'):
+  def isValid(self,cr='non'):
     """
     Retourne 1 si self est valide, 0 sinon
     Un parametre est considere comme valide si :
@@ -203,19 +203,19 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
             return 0
     return 1
 
-  def isoblig(self):
+  def isOblig(self):
     """
     Indique si self est obligatoire ou non : retourne toujours 0
     """
     return 0
 
-  def isrepetable(self):
+  def isRepetable(self):
     """
     Indique si self est repetable ou non : retourne toujours 1
     """
     return 1
 
-  def liste_mc_presents(self):
+  def listeMcPresents(self):
     return []
 
   def supprime(self):
@@ -235,7 +235,7 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     """
     self.actif = 1
     try:
-        self.jdc.append_param(self)
+        self.jdc.appendParam(self)
     except:
         pass
     CONNECTOR.Emit(self,"add",None)
@@ -247,34 +247,34 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     Il faut supprimer le parametre du contexte global du JDC
     """
     self.actif = 0
-    self.jdc.del_param(self)
-    self.jdc.delete_concept_after_etape(self,self)
+    self.jdc.delParam(self)
+    self.jdc.deleteConceptAfterEtape(self,self)
     CONNECTOR.Emit(self,"supp",None)
     CONNECTOR.Emit(self,"valid")
 
-  def isactif(self):
+  def isActif(self):
     """
     Booleenne qui retourne 1 si self est actif, 0 sinon
     """
     return self.actif
 
-  def set_attribut(self,nom_attr,new_valeur):
+  def setAttribut(self,nom_attr,new_valeur):
     """
     Remplace la valeur de self.nom_attr par new_valeur)
     """
     if hasattr(self,nom_attr):
       setattr(self,nom_attr,new_valeur)
-      self.init_modif()
+      self.initModif()
 
-  def supprime_sdprods(self):
+  def supprimeSdProds(self):
     """
     Il faut supprimer le parametre qui a ete entre dans la liste des
     parametres du JDC
     """
-    self.jdc.delete_param(self)
-    self.parent.delete_concept(self)
+    self.jdc.deleteParam(self)
+    self.parent.deleteConcept(self)
 
-  def update_context(self,d):
+  def updateContext(self,d):
     """
     Update le dictionnaire d avec le parametre que produit self
     """
@@ -308,7 +308,7 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     """
     return self.nom
 
-  def get_sdprods(self,nom_sd):
+  def getSdprods(self,nom_sd):
      """
          Retourne les concepts produits par la commande
      """
@@ -317,7 +317,7 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
   def report(self):
     """ Genere l'objet rapport (classe CR) """
     self.cr=CR()
-    self.isvalid(cr='oui')
+    self.isValid(cr='oui')
     return self.cr
 
   def ident(self):
@@ -327,13 +327,13 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     """
     return self.nom
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
     pass
 
-  def replace_concept(self,old_sd,sd):
+  def replaceConcept(self,old_sd,sd):
     pass
 
-  def verif_condition_bloc(self):
+  def verifConditionBloc(self):
     """
         Evalue les conditions de tous les blocs fils possibles
         (en fonction du catalogue donc de la definition) de self et
@@ -343,24 +343,24 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT,Formula) :
     """
     return [],[]
 
-  def verif_condition_regles(self,liste_presents):
+  def verifConditionRegles(self,liste_presents):
     """
         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
         en fonction de la liste des mots-cles presents
     """
     return []
 
-  def verif_existence_sd(self):
+  def verifExistenceSd(self):
      pass
 
-  def control_sdprods(self,d):
+  def controlSdprods(self,d):
       """sans objet """
       pass
 
   def close(self):
       pass
 
-  def reset_context(self):
+  def resetContext(self):
       pass
 
   def eval(self):
@@ -380,7 +380,7 @@ class COMBI_PARAMETRE(object) :
   def __repr__(self):
       return self.chainevaleur
 
-  def isvalid(self):
+  def isValid(self):
       if self.valeur and self.chainevaleur:
          return 1
 
@@ -394,14 +394,14 @@ class ITEM_PARAMETRE(object) :
     return self.param_pere.nom+'['+str(self.item)+']'
 
 
-  def isvalid(self):
-      isvalid = 1
+  def isValid(self):
+      isValid = 1
       if self.item < 0:
-         isvalid =  0
+         isValid =  0
       try:
          longueur= len(self.param_pere.dict_valeur) - 1
       except:
          longueur=0
       if self.item > longueur :
-         isvalid= 0
-      return isvalid
+         isValid= 0
+      return isValid
index 1f8e27698fe10677810d76a3a70fc5af132217b0..4bb03cd67b531d67363d9e57915afc5b09f5742c 100644 (file)
@@ -52,16 +52,16 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     # parent ne peut etre qu'un objet de type JDC
     import Accas
     self.Accas_EVAL=Accas.EVAL
-    self.valeur = self.interprete_valeur(valeur)
+    self.valeur = self.interpreteValeur(valeur)
     self.val    = valeur
     self.nom = nom
-    self.jdc = self.parent = CONTEXT.get_current_step()
+    self.jdc = self.parent = CONTEXT.getCurrentStep()
     self.definition=self
     self.niveau = self.parent.niveau
     self.actif=1
     self.state='undetermined'
     # Ceci est-il indispensable ???
-    #self.appel = N_utils.callee_where(niveau=2)
+    #self.appel = N_utils.calleeWhere(niveau=2)
     self.register()
 
   def __repr__(self):
@@ -76,7 +76,7 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     """
     return self.nom
 
-  def interprete_valeur(self,val):
+  def interpreteValeur(self,val):
     """
     Essaie d'interpreter val (chaine de caracteres ou None) comme :
     une instance de Accas.EVAL
@@ -95,21 +95,21 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
         print(("Le texte %s n'est pas celui d'un parametre evalue" %val))
         return None
 
-  def set_valeur(self,new_valeur):
+  def setValeur(self,new_valeur):
     """
     Remplace la valeur de self par new_valeur interpretee.
     """
-    self.valeur = self.interprete_valeur(new_valeur)
+    self.valeur = self.interpreteValeur(new_valeur)
     self.val = new_valeur
-    self.init_modif()
+    self.initModif()
 
-  def get_nom(self) :
+  def getNom(self) :
     """
     Retourne le nom du parametre
     """
     return self.nom
 
-  def get_valeur(self):
+  def getValeur(self):
     """
     Retourne la valeur de self, cad le texte de l'objet class_eval.EVAL
     """
@@ -118,7 +118,7 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     else:
         return ''
 
-  def verif_eval(self,exp_eval=None,cr='non'):
+  def verifEval(self,exp_eval=None,cr='non'):
     """
     Cette methode a pour but de verifier si l'expression EVAL
     est syntaxiquement correcte.
@@ -136,22 +136,22 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
         formule=(self.nom,'',None,exp_eval)
         # on recupere la liste des constantes et des autres fonctions predefinies
         # et qui peuvent etre utilisees dans le corps de la formule courante
-        l_ctes,l_form = self.jdc.get_parametres_fonctions_avant_etape(self)
+        l_ctes,l_form = self.jdc.getParametresFonctionsAvantEtape(self)
         # on cree un objet verificateur
         verificateur = interpreteur_formule.Interpreteur_Formule(formule=formule,
                                                                  constantes = l_ctes,
                                                                  fonctions = l_form)
         if cr == 'oui' :
           if not verificateur.cr.estvide():
-            self.cr.fatal(verificateur.cr.get_mess_fatal())
-        return verificateur.isvalid(),''.join(verificateur.cr.crfatal)
+            self.cr.fatal(verificateur.cr.getMessFatal())
+        return verificateur.isValid(),''.join(verificateur.cr.crfatal)
     else:
         # pas d'expression EVAL --> self non valide
         if cr == 'oui' : 
            self.cr.fatal(tr("Le parametre EVAL %s ne peut valoir None") , self.nom)
         return 0,tr("Le parametre EVAL ne peut valoir None")
 
-  def verif_nom(self,nom=None,cr='non'):
+  def verifNom(self,nom=None,cr='non'):
     """
     Verifie si le nom passe en argument (si aucun prend le nom courant)
     est un nom valide pour un parametre EVAL
@@ -167,13 +167,13 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     if len(nom) > 8 :
         if cr == 'oui' : self.cr.fatal(tr("Un nom de parametre ne peut depasser 8 caracteres"))
         return 0,"Un nom de parametre ne peut depasser 8 caracteres"
-    sd = self.parent.get_sd_autour_etape(nom,self)
+    sd = self.parent.getSdAutourEtape(nom,self)
     if sd :
         if cr == 'oui' : self.cr.fatal(tr("Un concept de nom %s existe deja !"), nom)
         return 0,"Un concept de nom %s existe deja !" %nom
     return 1,''
 
-  def verif_parametre_eval(self,param=None,cr='non'):
+  def verifParametreEval(self,param=None,cr='non'):
     """
     Verifie la validite du parametre EVAL passe en argument.
     Ce nouveau parametre est passe sous la forme d'un tuple : (nom,valeur)
@@ -187,8 +187,8 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
             param = (self.nom,self.valeur.valeur)
         else:
             param = (self.nom,None)
-    test_nom,erreur_nom   = self.verif_nom(param[0],cr=cr)
-    test_eval,erreur_eval = self.verif_eval(param[1],cr=cr)
+    test_nom,erreur_nom   = self.verifNom(param[0],cr=cr)
+    test_eval,erreur_eval = self.verifEval(param[1],cr=cr)
     # test global = produit des tests partiels
     test = test_nom*test_eval
     # message d'erreurs global = concatenation des messages partiels
@@ -205,18 +205,18 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     par les nouvelles valeurs passees dans le tuple formule.
     On stocke les valeurs SANS verifications.
     """
-    self.init_modif()
-    self.set_nom(param[0])
-    self.set_valeur('EVAL("""'+param[1]+'""")')
+    self.initModif()
+    self.setNom(param[0])
+    self.setValeur('EVAL("""'+param[1]+'""")')
 
-  def isvalid(self,cr='non'):
+  def isValid(self,cr='non'):
     """
     Retourne 1 si self est valide, 0 sinon
     Un parametre evalue est considere comme valide si :
       - il a un nom
       - il a une valeur qui est interpretable par l'interpreteur de FORMULEs
     """
-    resu,erreur= self.verif_parametre_eval(cr=cr)
+    resu,erreur= self.verifParametreEval(cr=cr)
     return resu
 
   def report(self):
@@ -224,10 +224,10 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
         Genere l'objet rapport (classe CR)
     """
     self.cr = CR()
-    self.isvalid(cr='oui')
+    self.isValid(cr='oui')
     return self.cr
 
-  def set_nom(self,new_nom):
+  def setNom(self,new_nom):
     """
     Remplace le nom de self par new_nom
     """
index 9d69dbc653a15e9de9093810723d20c5da7083f8..49b47bd9d1a5f19e4a0f56c12ba246aff16a6ee6 100644 (file)
@@ -33,9 +33,9 @@ class PluginLoader(UserDict):
    def __init__(self,module):
       UserDict.__init__(self)
       self.plugin_dir=module.__path__[0]
-      self.plugin_set_name=module.__name__
+      self.plugin_setName=module.__name__
       _module_list = glob.glob( os.path.join( self.plugin_dir,
-                              '%s*py' % self.plugin_set_name,
+                              '%s*py' % self.plugin_setName,
                                            )
                               )
       _module_list.sort()
@@ -43,7 +43,7 @@ class PluginLoader(UserDict):
       for _module_name in _module_list:
 
         _module_name = os.path.basename(_module_name)[:-3]
-        _import_name = '%s.%s' % ( self.plugin_set_name,
+        _import_name = '%s.%s' % ( self.plugin_setName,
                                    _module_name )
 
         try:
index 122220887bbcd1e221f425317b9e56e56f8262a9..e8116f5f4ed2707f2abef6fbeb6f8896626d53b8 100644 (file)
@@ -216,14 +216,14 @@ def _preprocess_atom(string):
     if isinstance(string, (six.text_type, int, float, complex)):
         return string
     elif isinstance(string, str):
-        return _str_to_unicode(string)
+        return _str_toUnicode(string)
     else:
         raise EficasException("TypeError: Expected number, string or\
                               Unicode object!")
 
-def _str_to_unicode(string):
+def _str_toUnicode(string):
     """
-    _str_to_unicode(string) -> unicode
+    _str_toUnicode(string) -> unicode
     Tries to create a Unicode object out of the input string; assumes 
     the string is UTF-8 encoded; if not, then assume the string is 
     Latin-9 encoded.
index a06e0f3a4719fcd3034fee2a83ed772ee56d7923..ba384b0ec569bd17fad618da33d87500457e405b 100644 (file)
@@ -28,11 +28,11 @@ from Noyau.N_VALIDATOR import ValError
 class ASSD:
    def __repr__(self):
       return tr("concept %(inst_name)s de type %(class_name)s", \
-                       {'inst_name': self.get_name(), \
+                       {'inst_name': self.getName(), \
                         'class_name': self.__class__.__name__})
 
    def __str__(self):
-      return self.get_name() or "<None>"
+      return self.getName() or "<None>"
 
    #def __del__(self):
    #   print "__del__",self
@@ -53,7 +53,7 @@ class geom(GEOM):
 class CO(ASSD):
    def __convert__(cls,valeur):
       if hasattr(valeur,'_etape') :
-         # valeur est un concept CO qui a ete transforme par type_sdprod
+         # valeur est un concept CO qui a ete transforme par typeSDProd
          if valeur.etape == valeur._etape:
              # le concept est bien produit par l'etape
              return valeur
index 49f7d2df68078aadc85b5073499eff2fd8caa9f5..c783cb38d1b5080dcaf02ae972d78aed00d86852 100644 (file)
@@ -67,7 +67,7 @@ class I_AVANT:
       return text,boolOK
 
 
-   def gettext(self):
+   def getText(self):
        text = "Regle de classement "' :\n'
        for mc in self.listeAvant : 
            text = text + mc + ', '
index 916ed823708702cd48f8d360c12e4db8a427ee15..aa46e11716d2921264baf71b3ca1d48a0b644f74 100644 (file)
@@ -26,7 +26,7 @@ from . import I_REGLE
 import six
 
 class A_CLASSER(I_REGLE.REGLE):
-  def gettext(self):
+  def getText(self):
     text = 'Regle ' + self.__class__.__name__+ ' :\n'
     t="  D'abord :\n"+' '*8
     for arg in self.args0:
index 669b63687ca4f428e86cd9a5fae58a8f999bd0a8..922f87966457d1f9cb4d1e3630efdd729b257a39 100644 (file)
@@ -22,7 +22,7 @@ import six
 _no=0
 
 import Accas
-def number_entite(entite):
+def numberEntite(entite):
    """
       Fonction qui attribue un numero unique a tous les objets du catalogue
       Ce numero permet de conserver l'ordre des objets
@@ -33,25 +33,25 @@ def number_entite(entite):
 
 class ENTITE:
   def __init__(self):
-     number_entite(self)
+     numberEntite(self)
     
-  def get_docu(self):
+  def getDocu(self):
     if hasattr(self,'docu') :
       if self.docu != "" : return self.docu
       else:
         if hasattr(self,'pere'):
-          return self.pere.get_docu()
+          return self.pere.getDocu()
         else:
           return None
     else:
       return None
 
-  def get_sug(self):
+  def getSug(self):
     if hasattr(self,'sug') :
       if self.sug != "" : return self.sug
     return None
 
-  def check_definition(self, parent):
+  def checkDefinition(self, parent):
       """Verifie la definition d'un objet composite (commande, fact, bloc)."""
       args = self.entites.copy()
       mcs = set()
@@ -62,7 +62,7 @@ class ENTITE:
             #if val.max != 1 and val.type == 'TXM':
                 #print "#CMD", parent, nom
          elif val.label == 'FACT':
-            val.check_definition(parent)
+            val.checkDefinition(parent)
             #PNPNPN surcharge
             # CALC_SPEC !
             #assert self.label != 'FACT', \
@@ -74,7 +74,7 @@ class ENTITE:
       # seuls les blocs peuvent entrer en conflit avec les mcs du plus haut niveau
       for nom, val in args.items():
          if val.label == 'BLOC':
-            mcbloc = val.check_definition(parent)
+            mcbloc = val.checkDefinition(parent)
             #XXX
             #print "#BLOC", parent, re.sub('\s+', ' ', val.condition)
             #assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \
@@ -98,17 +98,17 @@ class ENTITE:
              regle.enregistreXML(moi,catalogueXml)
          catalogueXml.reglesUtilisees.append(self.regles)
 
-      if ((self.get_docu() !="" and self.get_docu() !=None) or  \
+      if ((self.getDocu() !="" and self.getDocu() !=None) or  \
           (self.fr != "" and self.fr != None) or \
           (self.ang != "" and self.ang != None) ):
                 dico={}
-                if self.get_docu() !=None : dico["docu"]=self.get_docu()
+                if self.getDocu() !=None : dico["docu"]=self.getDocu()
                 if self.fr != None        : dico["fr"]=six.text_type(self.fr,"iso-8859-1")
                 if self.ang != None       : dico["ang"]=self.ang
                 doc=ET.SubElement(moi,'doc')
                 doc.attrib=dico
 
-      if ((self.get_sug() !=None) or  \
+      if ((self.getSug() !=None) or  \
           (hasattr(self,'defaut') and (self.defaut != None) and (self.defaut != 'None'))) :
                 # il faut ajouter des sug dans le catalogue
                 # les attributs sont  toujours du texte 
@@ -116,9 +116,9 @@ class ENTITE:
                 if (self.defaut != None) and (self.defaut != 'None') :
                     if isinstance(self.defaut,str ) : dico["defaut"]=six.text_type(self.defaut,"iso-8859-1")
                     else :dico["defaut"]=str(self.defaut)
-                if self.get_sug() !=None:
-                    if isinstance(self.get_sug(),str ) : dico["sug"]=six.text_type(self.get_sug(),"iso-8859-1")
-                    else :dico["sug"]=str(self.get_sug())
+                if self.getSug() !=None:
+                    if isinstance(self.getSug(),str ) : dico["sug"]=six.text_type(self.getSug(),"iso-8859-1")
+                    else :dico["sug"]=str(self.getSug())
                 
                 doc=ET.SubElement(moi,'ValeurDef')
                 doc.attrib=dico
index 444bdde94349d9f8d7eb186ade3c992a8240fb73..43bbbb8f2b9cd954f3a61c072c86abf782a083d6 100644 (file)
@@ -32,7 +32,7 @@ from Extensions.eficas_exception import EficasException
 # Objet re pour controler les identificateurs Python
 concept_re=re.compile(r'[a-zA-Z_]\w*$')
 
-# import rajoute suite a l'ajout de Build_sd --> a resorber
+# import rajoute suite a l'ajout de buildSd --> a resorber
 import traceback
 import Noyau
 from Noyau import N_Exception
@@ -50,41 +50,41 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
    def ident(self):
       return self.nom
 
-   def get_sdname(self):
-      #print "SDNAME ",self.reuse,self.sd,self.sd.get_name()
+   def getSdname(self):
+      #print "SDNAME ",self.reuse,self.sd,self.sd.getName()
       if CONTEXT.debug : 
-          print(("SDNAME ",  self.reuse,  self.sd,  self.sd.get_name()))
+          print(("SDNAME ",  self.reuse,  self.sd,  self.sd.getName()))
       sdname=''
       if self.reuse != None:
-        sdname= self.reuse.get_name()
+        sdname= self.reuse.getName()
       else:
-        if self.sd:sdname=self.sd.get_name()
+        if self.sd:sdname=self.sd.getName()
       if sdname.find('sansnom') != -1 or sdname.find('SD_') != -1:
         # dans le cas ou la SD est 'sansnom' ou 'SD_' on retourne la chaine vide
         return ''
       return sdname
 
-   def is_reentrant(self):
+   def isReentrant(self):
       """ 
           Indique si la commande est reentrante
       """
       return self.definition.reentrant == 'o' 
 
-   def init_modif(self):
+   def initModif(self):
       """
          Met l'etat de l'etape a : modifie
          Propage la modification au parent
       """
-      # init_modif doit etre appele avant de realiser une modification
+      # initModif doit etre appele avant de realiser une modification
       # La validite devra etre recalculee apres cette modification
-      # mais dans l'appel a fin_modif pour preserver l'etat modified
+      # mais dans l'appel a finModif pour preserver l'etat modified
       # de tous les objets entre temps
-      #print "init_modif",self,self.parent
+      #print "initModif",self,self.parent
       self.state = 'modified'
       if self.parent:
-        self.parent.init_modif()
+        self.parent.initModif()
 
-   def fin_modif(self):
+   def finModif(self):
       """
           Methode appelee une fois qu'une modification a ete faite afin de 
           declencher d'eventuels traitements post-modification
@@ -93,9 +93,9 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       """
       CONNECTOR.Emit(self,"valid")
       if self.parent:
-        self.parent.fin_modif()
+        self.parent.finModif()
 
-   def nomme_sd(self,nom) :
+   def nommeSd(self,nom) :
       """
           Cette methode a pour fonction de donner un nom (nom) au concept 
           produit par l'etape (self).
@@ -109,22 +109,26 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       if not concept_re.match(nom):
          return 0, tr("Un nom de concept doit etre un identificateur Python")
 
+      # pour eviter que le nom du concept soit le nom de la classe --> souci pour utiliser le concept
+      if (nom == self.definition.nom) : return  (0, tr("un concept de type ")+ nom + tr(" ne peut pas se nommer ") +  nom)
+      if ( nom in dir(self.jdc.cata)) : return (0, nom + tr("est un not reserve"))
+      #if (not isinstance(nom,str)) : return (0, tr("Le nom ") + nom + tr(" est un mot reserve"))
       #if len(nom) > 8 and self.jdc.definition.code == 'ASTER':
       #  return 0, tr("Nom de concept trop long (maxi 8 caracteres)")
 
-      self.init_modif()
+      self.initModif()
       #
       # On verifie d'abord si les mots cles sont valides
       #
-      if not self.isvalid(sd='non') : return 0,"Nommage du concept refuse : l'operateur n'est pas valide"
+      if not self.isValid(sd='non') : return 0,"Nommage du concept refuse : l'operateur n'est pas valide"
       #
       # Cas particulier des operateurs obligatoirement reentrants
       #
       if self.definition.reentrant == 'o':
-        self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self)
+        self.sd = self.reuse = self.jdc.getSdAvantEtape(nom,self)
         if self.sd != None :
           self.sdnom=self.sd.nom
-          self.fin_modif()
+          self.finModif()
           return 1, tr("Concept existant")
         else:
           return 0, tr("Operateur reentrant mais concept non existant")
@@ -133,12 +137,12 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       #
       old_reuse=None
       if self.definition.reentrant == 'f' :
-        sd = self.jdc.get_sd_avant_etape(nom,self)
+        sd = self.jdc.getSdAvantEtape(nom,self)
         if sd != None :
-          if isinstance(sd,self.get_type_produit()) :
+          if isinstance(sd,self.getType_produit()) :
              self.sd = self.reuse = sd
              self.sdnom = sd.nom
-             self.fin_modif()
+             self.finModif()
              return 1, tr("Operateur reentrant et concept existant trouve")
           else:
              return 0, tr("Concept deja existant et de mauvais type")
@@ -155,7 +159,7 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       #
       if self.sd == None :
           #Pas de concept produit preexistant
-          if self.parent.get_sd_autour_etape(nom,self):
+          if self.parent.getSdAutourEtape(nom,self):
             # Un concept de ce nom existe dans le voisinage de l'etape courante
             # On retablit l'ancien concept reentrant s'il existait
             if old_reuse:
@@ -167,12 +171,12 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
             # On peut donc creer le concept retourne
             # Il est cree sans nom mais enregistre dans la liste des concepts existants
             try:
-               self.get_sd_prod()
+               self.getSdProd()
                # Renommage du concept : Il suffit de changer son attribut nom pour le nommer
                self.sd.nom = nom
                self.sdnom=nom
-               self.parent.update_concept_after_etape(self,self.sd)
-               self.fin_modif()
+               self.parent.updateConceptAfterEtape(self,self.sd)
+               self.finModif()
                return 1, tr("Nommage du concept effectue")
             except:
                return 0, tr("Nommage impossible %s", str(sys.exc_info()[1]))
@@ -180,36 +184,36 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
           #Un concept produit preexiste
           old_nom=self.sd.nom
           if old_nom.find('sansnom') :
-            # Dans le cas ou old_nom == sansnom, isvalid retourne 0 alors que ...
+            # Dans le cas ou old_nom == sansnom, isValid retourne 0 alors que ...
             # par contre si le concept existe et qu'il s'appelle sansnom c'est que l'etape est valide
             # on peut donc le nommer sans test prealable
-            if self.parent.get_sd_autour_etape(nom,self):
+            if self.parent.getSdAutourEtape(nom,self):
               return 0, tr("Nommage du concept refuse : un concept de meme nom existe deja")
             else:
               # Renommage du concept : Il suffit de changer son attribut nom pour le nommer
               self.sd.nom=nom
               self.sdnom=nom
-              self.parent.update_concept_after_etape(self,self.sd)
-              self.fin_modif()
+              self.parent.updateConceptAfterEtape(self,self.sd)
+              self.finModif()
               return 1, tr("Nommage du concept effectue")
-          if self.isvalid() :
-            # Normalement l appel de isvalid a mis a jour le concept produit (son type)
+          if self.isValid() :
+            # Normalement l appel de isValid a mis a jour le concept produit (son type)
             # Il suffit de specifier l attribut nom de sd pour le nommer si le nom n est pas
             # deja attribue
-            if self.parent.get_sd_autour_etape(nom,self):
+            if self.parent.getSdAutourEtape(nom,self):
               return 0, tr("Nommage du concept refuse : un concept de meme nom existe deja")
             else:
               # Renommage du concept : Il suffit de changer son attribut nom pour le nommer
               self.sd.nom=nom
               self.sdnom=nom
-              self.parent.update_concept_after_etape(self,self.sd)
-              self.fin_modif()
+              self.parent.updateConceptAfterEtape(self,self.sd)
+              self.finModif()
               return 1, tr("Nommage du concept effectue")
           else:
             # Normalement on ne devrait pas passer ici
             return 0, 'Normalement on ne devrait pas passer ici'
 
-   def get_sdprods(self,nom_sd):
+   def getSdprods(self,nom_sd):
       """ 
          Fonction : retourne le concept produit par l etape de nom nom_sd
          s il existe sinon None
@@ -225,10 +229,10 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       """
       if self.actif:return
       self.actif = 1
-      self.init_modif()
+      self.initModif()
       if self.sd :
         try:
-          self.jdc.append_sdprod(self.sd)
+          self.jdc.appendSdProd(self.sd)
         except:
           pass
       CONNECTOR.Emit(self,"add",None)
@@ -241,20 +245,20 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
           et de la liste des sd
       """
       self.actif = 0
-      self.init_modif()
+      self.initModif()
       if self.sd :
-         self.jdc.del_sdprod(self.sd)
-         self.jdc.delete_concept_after_etape(self,self.sd)
+         self.jdc.delSdprod(self.sd)
+         self.jdc.deleteConceptAfterEtape(self,self.sd)
       CONNECTOR.Emit(self,"supp",None)
       CONNECTOR.Emit(self,"valid")
 
-   def control_sdprods(self,d):
+   def controlSdprods(self,d):
       """
           Cette methode doit verifier que ses concepts produits ne sont pas
           deja definis dans le contexte
           Si c'est le cas, les concepts produits doivent etre supprimes
       """
-      #print "control_sdprods",d.keys(),self.sd and self.sd.nom,self.nom
+      #print "controlSdprods",d.keys(),self.sd and self.sd.nom,self.nom
       if self.sd:
         if self.sd.nom in d :
            # Le concept est deja defini
@@ -265,26 +269,26 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
               # Redefinition du concept, on l'annule
               #XXX on pourrait simplement annuler son nom pour conserver les objets
               # l'utilisateur n'aurait alors qu'a renommer le concept (faisable??)
-              self.init_modif()
+              self.initModif()
               sd=self.sd
               self.sd=self.reuse=self.sdnom=None
               #supprime les references a sd dans les etapes suivantes
-              self.parent.delete_concept_after_etape(self,sd)
-              self.fin_modif()
+              self.parent.deleteConceptAfterEtape(self,sd)
+              self.finModif()
 
-   def supprime_sdprod(self,sd):
+   def supprimeSdprod(self,sd):
       """
          Supprime le concept produit sd s'il est produit par l'etape
       """
       if sd is not self.sd:return
       if self.sd != None :
-         self.init_modif()
-         self.parent.del_sdprod(sd)
+         self.initModif()
+         self.parent.delSdprod(sd)
          self.sd=None
-         self.fin_modif()
-         self.parent.delete_concept(sd)
+         self.finModif()
+         self.parent.deleteConcept(sd)
 
-   def supprime_sdprods(self):
+   def supprimeSdProds(self):
       """ 
             Fonction:
             Lors d'une destruction d'etape, detruit tous les concepts produits
@@ -292,23 +296,23 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
             Une procedure n'en a aucun
             Une macro en a en general plus d'un
       """
-      #print "supprime_sdprods",self
+      #print "supprimeSdProds",self
       if self.reuse is self.sd :return
       # l'etape n'est pas reentrante
       # le concept retourne par l'etape est a supprimer car il etait 
       # cree par l'etape
       if self.sd != None :
-         self.parent.del_sdprod(self.sd)
-         self.parent.delete_concept(self.sd)
+         self.parent.delSdprod(self.sd)
+         self.parent.deleteConcept(self.sd)
 
    def close(self):
       return
 
-   def update_concept(self,sd):
-      for child in self.mc_liste :
-          child.update_concept(sd)
+   def updateConcept(self,sd):
+      for child in self.mcListe :
+          child.updateConcept(sd)
 
-   def delete_concept(self,sd):
+   def deleteConcept(self,sd):
       """ 
           Inputs :
              - sd=concept detruit
@@ -321,11 +325,11 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       """
       if self.reuse and self.reuse == sd:
         self.sd=self.reuse=None
-        self.init_modif()
-      for child in self.mc_liste :
-        child.delete_concept(sd)
+        self.initModif()
+      for child in self.mcListe :
+        child.deleteConcept(sd)
 
-   def replace_concept(self,old_sd,sd):
+   def replaceConcept(self,old_sd,sd):
       """
           Inputs :
              - old_sd=concept remplace
@@ -337,22 +341,22 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       """
       if self.reuse and self.reuse == old_sd:
         self.sd=self.reuse=sd
-        self.init_modif()
-      for child in self.mc_liste :
-        child.replace_concept(old_sd,sd)
+        self.initModif()
+      for child in self.mcListe :
+        child.replaceConcept(old_sd,sd)
 
-   def reset_context(self):
+   def resetContext(self):
       pass
 
-   def get_noms_sd_oper_reentrant(self):
+   def getNomsSdOperReentrant(self):
       """ 
           Retourne la liste des noms de concepts utilisesa l'interieur de la commande
           qui sont du type que peut retourner cette commande 
       """
-      liste_sd = self.get_sd_utilisees()
+      liste_sd = self.getSd_utilisees()
       l_noms = []
       if type(self.definition.sd_prod) == types.FunctionType:
-        d=self.cree_dict_valeurs(self.mc_liste)
+        d=self.creeDictValeurs(self.mcListe)
         try:
           classe_sd_prod = self.definition.sd_prod(*(), **d)
         except:
@@ -364,26 +368,26 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       l_noms.sort()
       return l_noms
 
-   def get_genealogie_precise(self):
+   def getGenealogiePrecise(self):
       return [self.nom]
 
-   def get_genealogie(self):
+   def getGenealogie(self):
       """ 
           Retourne la liste des noms des ascendants de l'objet self
           en s'arretant a la premiere ETAPE rencontree
       """
       return [self.nom]
 
-   def verif_existence_sd(self):
+   def verifExistenceSd(self):
      """
         Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
         avant etape, sinon enleve la referea ces concepts
      """
-     #print "verif_existence_sd",self.sd
-     for motcle in self.mc_liste :
-         motcle.verif_existence_sd()
+     #print "verifExistenceSd",self.sd
+     for motcle in self.mcListe :
+         motcle.verifExistenceSd()
 
-   def update_mc_global(self):
+   def updateMcGlobal(self):
      """
         Met a jour les mots cles globaux enregistres dans l'etape
         et dans le jdc parent.
@@ -392,15 +396,15 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
         des mots cles globaux.
      """
      self.mc_globaux={}
-     I_MCCOMPO.MCCOMPO.update_mc_global(self)
+     I_MCCOMPO.MCCOMPO.updateMcGlobal(self)
 
-   def update_condition_bloc(self):
+   def updateConditionBloc(self):
      """
         Realise l'update des blocs conditionnels fils de self
      """
-     self._update_condition_bloc()
+     self._updateConditionBloc()
 
-   def get_objet_commentarise(self,format):
+   def getObjetCommentarise(self,format):
       """
           Cette methode retourne un objet commande commentarisee
           representant la commande self
@@ -419,26 +423,26 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       commande_comment = commande_comm.COMMANDE_COMM(texte=texte_commande,
                                                      reg='non',
                                                      parent=parent)
-      self.parent.suppentite(self)
-      parent.addentite(commande_comment,pos)
+      self.parent.suppEntite(self)
+      parent.addEntite(commande_comment,pos)
 
       return commande_comment
 
    def modified(self):
       """Le contenu de l'etape (mots cles, ...) a ete modifie"""
       if self.nom=="DETRUIRE":
-        self.parent.control_context_apres(self)
+        self.parent.controlContextApres(self)
 
 
      
 #ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau
-   def Build_sd(self,nom):
+   def buildSd(self,nom):
       """
            Methode de Noyau surchargee pour poursuivre malgre tout
            si une erreur se produit pendant la creation du concept produit
       """
       try:
-         sd=Noyau.N_ETAPE.ETAPE.Build_sd(self,nom)
+         sd=Noyau.N_ETAPE.ETAPE.buildSd(self,nom)
       except AsException as e :
          # Une erreur s'est produite lors de la construction du concept
          # Comme on est dans EFICAS, on essaie de poursuivre quand meme
@@ -454,15 +458,15 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       return self.sd
 
 #ATTENTION SURCHARGE: cette methode doit etre gardee en synchronisation avec Noyau
-   def make_register(self):
+   def makeRegister(self):
       """
          Initialise les attributs jdc, id, niveau et realise les
          enregistrements necessaires
          Pour EFICAS, on tient compte des niveaux
-         Surcharge la methode make_register du package Noyau
+         Surcharge la methode makeRegister du package Noyau
       """
       if self.parent :
-         self.jdc = self.parent.get_jdc_root()
+         self.jdc = self.parent.getJdcRoot()
          self.id=   self.parent.register(self)
          self.UserError=self.jdc.UserError
          if self.definition.niveau :
@@ -484,8 +488,8 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
    def report(self):
      cr= Validation.V_ETAPE.ETAPE.report(self)
      #rafraichisst de la validite de l'etape (probleme avec l'ordre dans les macros : etape puis mots cles)
-     self.isvalid()
-     if not self.isvalid() and self.nom == "INCLUDE" :
+     self.isValid()
+     if not self.isValid() and self.nom == "INCLUDE" :
         self.cr.fatal(('Etape : %s ligne : %r  %s'),
         self.nom, self.appel[0],  tr("\n   Include Invalide. \n  ne sera pas pris en compte"))
      return cr
index 87b35957d19a78d0015234f1385a9676be8e8dc0..d1ddee603807f4263f40cdaaa974818cbd6951f6 100644 (file)
@@ -24,9 +24,9 @@ from __future__ import absolute_import
 from . import I_REGLE
 
 class EXCLUS(I_REGLE.REGLE):
-  def purge_liste(self,liste_a_purger,liste_mc_presents):
+  def purgeListe(self,liste_a_purger,listeMcPresents):
      regle_active=0
-     for mc_present in liste_mc_presents:
+     for mc_present in listeMcPresents:
         if mc_present in self.mcs:
            regle_active=1
            break
@@ -34,7 +34,7 @@ class EXCLUS(I_REGLE.REGLE):
 
      for mc in self.mcs:
         # Il ne faut pas purger un mot cle present. Sa cardinalite est verifiee par ailleurs
-        if mc in liste_a_purger and mc not in liste_mc_presents:
+        if mc in liste_a_purger and mc not in listeMcPresents:
            liste_a_purger.remove(mc)
      return liste_a_purger
 
index 3efa4f470089a9bb23d9bef4af3c4f7f74d8b407..9efb621b84085057c0d957c31b3f47725a62fec7 100644 (file)
@@ -26,16 +26,16 @@ from Extensions.eficas_exception import EficasException
 class FONCTION(ASSD):
   def __init__(self,etape=None,sd=None,reg='oui'):
     if reg=='oui':
-      self.jdc.register_fonction(self)
+      self.jdc.registerFonction(self)
 
-  def get_formule(self):
+  def getFormule(self):
     """
     Retourne une formule decrivant self sous la forme d'un tuple :
     (nom,type_retourne,arguments,corps)
     """
-    if hasattr(self.etape,'get_formule'):
+    if hasattr(self.etape,'getFormule'):
       # on est dans le cas d'une formule Aster
-      return self.etape.get_formule()
+      return self.etape.getFormule()
     else:
       # on est dans le cas d'une fonction
       return (self.nom,'REEL','(REEL:x)','''bidon''')
@@ -50,9 +50,9 @@ class formule(FONCTION) :
    def __call__(self,*val):
       if len(val) != len(self.nompar):
          raise TypeError(" %s() takes exactly %d argument (%d given)" % (self.nom,len(self.nompar),len(val)))
-      return param2.Unop2(self.nom,self.real_call,val)
+      return param2.Unop2(self.nom,self.realCall,val)
 
-   def real_call(self,*val):
+   def realCall(self,*val):
       if hasattr(self.parent,'contexte_fichier_init'):
                         context=self.parent.contexte_fichier_init
       else            : context={}
index 55e38e6ffdaa85e7003fb444eac773da862866cf..b97ac8f8cfd7b9b56f5e50aa7dfe0fa0648fafb3 100644 (file)
@@ -36,17 +36,17 @@ class FORM_ETAPE(MACRO_ETAPE):
 
     interpreteur = interpreteur_formule.Interpreteur_Formule
 
-    def McBuild(self):
-        self.mc_liste=self.build_mc()
+    def MCBuild(self):
+        self.mcListe=self.buildMc()
         # on cree la liste des types autorises (liste des noms de mots-cles
         # simples dans le catalogue de FORMULE)
         self.l_types_autorises = list(self.definition.entites.keys())
         # en plus de la construction traditionnelle des fils de self
         # il faut pour les FORMULE decortiquer l'expression ...
-        self.type_retourne,self.arguments,self.corps = self.analyse_formule()
+        self.type_retourne,self.arguments,self.corps = self.analyseFormule()
 
 
-    def analyse_formule(self):
+    def analyseFormule(self):
         """
         Cette methode decortique l'expression de la FORMULE.
         Elle retourne 3 valeurs:
@@ -54,42 +54,42 @@ class FORM_ETAPE(MACRO_ETAPE):
             - les arguments de la FORMULE
             - le corps de la FORMULE, cad son expression
         """
-        if len(self.mc_liste) == 0:
+        if len(self.mcListe) == 0:
             # pas de fils pour self --> la FORMULE est incomplete
             return None,None,None
         type_retourne="REEL"
-        if len(self.mc_liste) > 0:
-           child = self.mc_liste[0] # child est un MCSIMP 
-           corps = child.getval()
+        if len(self.mcListe) > 0:
+           child = self.mcListe[0] # child est un MCSIMP 
+           corps = child.getVal()
         else:
            corps = None
-        if len(self.mc_liste) > 1:
-           child = self.mc_liste[1]
-           l_args= child.getval()
+        if len(self.mcListe) > 1:
+           child = self.mcListe[1]
+           l_args= child.getVal()
         else :
            l_args=None
         return type_retourne,l_args,corps
 
-    def get_nom(self):
+    def getNom(self):
         """
         Retourne le nom de la FORMULE, cad le nom de la SD si elle existe,
         la string vide sinon
         """
         if self.sd :
-            return self.sd.get_name()
+            return self.sd.getName()
         else:
             return ''
 
-    def get_formule(self):
+    def getFormule(self):
         """
         Retourne un tuple decrivant la formule :
         (nom,type_retourne,arguments,corps)
         """
-        t,a,c = self.analyse_formule()
-        n = self.get_nom()
+        t,a,c = self.analyseFormule()
+        n = self.getNom()
         return (n,t,a,c)
 
-    def verif_arguments(self,arguments = None):
+    def verifArguments(self,arguments = None):
         """
         Verifie si les arguments passes en argument (si aucun prend les arguments courants)
         sont des arguments valide pour une FORMULE.
@@ -117,7 +117,7 @@ class FORM_ETAPE(MACRO_ETAPE):
             if not re.match(identifier,str(a)) : return 0, str(a)+" n est pas un identifiant"
         return test,erreur
 
-    def verif_corps(self,corps=None,arguments=None):
+    def verifCorps(self,corps=None,arguments=None):
         """
         Cette methode a pour but de verifier si le corps de la FORMULE
         est syntaxiquement correct.
@@ -129,10 +129,10 @@ class FORM_ETAPE(MACRO_ETAPE):
             corps = self.corps
         if not arguments :
             arguments = self.arguments
-        formule=(self.get_nom(),self.type_retourne,arguments,corps)
+        formule=(self.getNom(),self.type_retourne,arguments,corps)
         # on recupere la liste des constantes et des autres fonctions predefinies
         # et qui peuvent etre utilisees dans le corps de la formule courante
-        l_ctes,l_form = self.jdc.get_parametres_fonctions_avant_etape(self)
+        l_ctes,l_form = self.jdc.getParametresFonctionsAvantEtape(self)
         # on cree un objet verificateur
         try:
             verificateur = self.interpreteur(formule=formule,
@@ -141,9 +141,9 @@ class FORM_ETAPE(MACRO_ETAPE):
         except :
             traceback.print_exc()
             return 0,tr("Impossible de realiser la verification de la formule")
-        return verificateur.isvalid(),verificateur.report()
+        return verificateur.isValid(),verificateur.report()
 
-    def verif_nom(self,nom=None):
+    def verifNom(self,nom=None):
         """
         Verifie si le nom passe en argument (si aucun prend le nom courant)
         est un nom valide pour une FORMULE.
@@ -152,19 +152,19 @@ class FORM_ETAPE(MACRO_ETAPE):
             - un message d'erreurs ('' si illicite)
         """
         if not nom :
-            nom = self.get_nom()
+            nom = self.getNom()
         if nom == "" :
             return 0,tr("Pas de nom donne a la FORMULE")
         if len(nom) > 8 :
             return 0,tr("Un nom de FORMULE ne peut depasser 8 caracteres")
         if nom[0] > "0" and nom[0] < "9" :
             return 0,tr("Un nom de FORMULE ne peut pas commencer par un chiffre")
-        sd = self.parent.get_sd_autour_etape(nom,self)
+        sd = self.parent.getSdAutourEtape(nom,self)
         if sd :
             return 0,tr("Un concept de nom %s existe deja !" %nom)
         return 1,''
 
-    def verif_type(self,type=None):
+    def verifType(self,type=None):
         """
         Verifie si le type passe en argument (si aucun prend le type courant)
         est un type valide pour une FORMULE.
@@ -180,7 +180,7 @@ class FORM_ETAPE(MACRO_ETAPE):
             return 0,tr("Une formule ne peut retourner une valeur de type : %s" %type)
         return 1,''
 
-    def verif_formule(self,formule=None):
+    def verifFormule(self,formule=None):
         """
         Verifie la validite de la formule passee en argument.
         Cette nouvelle formule est passee sous la forme d'un tuple : (nom,type_retourne,arguments,corps)
@@ -191,14 +191,14 @@ class FORM_ETAPE(MACRO_ETAPE):
         """
         if not formule :
             formule = (None,None,None,None)
-        test_nom,erreur_nom = self.verif_nom(formule[0])
-        test_type,erreur_type = self.verif_type(formule[1])
+        test_nom,erreur_nom = self.verifNom(formule[0])
+        test_type,erreur_type = self.verifType(formule[1])
         if formule[2]:
             args = '('+formule[2]+')'
         else:
             args = None
-        test_arguments,erreur_arguments = self.verif_arguments(args)
-        test_corps,erreur_corps = self.verif_corps(corps = formule[3], arguments = args)
+        test_arguments,erreur_arguments = self.verifArguments(args)
+        test_corps,erreur_corps = self.verifCorps(corps = formule[3], arguments = args)
         # test global = produit des tests partiels
         test = test_nom*test_type*test_arguments*test_corps
         # message d'erreurs global = concatenation des messages partiels
@@ -208,7 +208,7 @@ class FORM_ETAPE(MACRO_ETAPE):
                 erreur = erreur+(len(mess) > 0)*'\n'+mess
         return test,erreur
 
-    def verif_formule_python(self,formule=None):
+    def verifFormule_python(self,formule=None):
         """
         Pour l instant ne fait qu un compile python
         il serait possible d ajouter des tests sur les arguments
@@ -216,12 +216,12 @@ class FORM_ETAPE(MACRO_ETAPE):
         """
         if not formule :
             formule = (None,None,None,None)
-        test_nom,erreur_nom = self.verif_nom(formule[0])
+        test_nom,erreur_nom = self.verifNom(formule[0])
         if formule[2]:
             args = '('+formule[2]+')'
         else:
             args = None
-        test_arguments,erreur_arguments = self.verif_arguments(args)
+        test_arguments,erreur_arguments = self.verifArguments(args)
         corps=formule[3]
         erreur_formule= ''
         test_formule=1
@@ -248,13 +248,13 @@ class FORM_ETAPE(MACRO_ETAPE):
         self.type_retourne = formule[1]
         self.arguments = '('+formule[2]+')'
         self.corps = formule[3]
-        # il faut ajouter le mot-cle simple correspondant dans mc_liste
-        # pour cela on utilise la methode generale build_mc
+        # il faut ajouter le mot-cle simple correspondant dans mcListe
+        # pour cela on utilise la methode generale buildMc
         # du coup on est oblige de modifier le dictionnaire valeur de self ...
         self.valeur = {}
         self.valeur[self.type_retourne] = self.arguments+' = ' + self.corps
-        self.McBuild()
-        sd = self.get_sd_prod()
+        self.MCBuild()
+        sd = self.getSdProd()
         if sd:
             sd.nom = formule[0]
 
@@ -265,9 +265,9 @@ class FORM_ETAPE(MACRO_ETAPE):
     # parametres
     # corps de la fonction
     # il faut aussi que les arguments soient sous forme de tuple
-    def update_formule_python(self,formule):
-        self.build_mc()
-        self.mc_liste=[]
+    def updateFormulePython(self,formule):
+        self.buildMc()
+        self.mcListe=[]
         if len(formule) < 4 :
            return 0
         arguments=formule[3]
@@ -288,14 +288,14 @@ class FORM_ETAPE(MACRO_ETAPE):
             child=self.definition.entites[k](None,nom=k,parent=self)
             child.valeur=mocles[k]
             child.state = 'modified'
-            self.mc_liste.append(child)
+            self.mcListe.append(child)
            
         self.corps = formule[2]
         self.type_retourne = formule[1]
-        sd = self.get_sd_prod()
+        sd = self.getSdProd()
         if sd:
             sd.nom = formule[0]
-        self.init_modif()
+        self.initModif()
         return 1
 
     def active(self):
@@ -304,11 +304,11 @@ class FORM_ETAPE(MACRO_ETAPE):
         Il faut ajouter la formule au contexte global du JDC
         """
         self.actif = 1
-        self.init_modif()
-        nom = self.get_nom()
+        self.initModif()
+        nom = self.getNom()
         if nom == '' : return
         try:
-            self.jdc.append_fonction(self.sd)
+            self.jdc.appendFonction(self.sd)
         except:
             pass
 
@@ -318,14 +318,14 @@ class FORM_ETAPE(MACRO_ETAPE):
         Il faut supprimer la formule du contexte global du JDC
         """
         self.actif = 0
-        self.init_modif()
+        self.initModif()
         if not self.sd : return
-        self.jdc.del_fonction(self.sd)
+        self.jdc.delFonction(self.sd)
 
-    def update_concept(self,sd):
+    def updateConcept(self,sd):
         return
 
-    def delete_concept(self,sd):
+    def deleteConcept(self,sd):
         """ 
          Inputs :
            - sd=concept detruit
@@ -336,9 +336,9 @@ class FORM_ETAPE(MACRO_ETAPE):
          sauf les objets FORM_ETAPE qui doivent verifier que le concept detruit n'est pas 
          utilise dans le corps de la fonction
         """
-        self.init_modif()
+        self.initModif()
          
-    def replace_concept(self,old_sd,sd):
+    def replaceConcept(self,old_sd,sd):
         """
          Inputs :
            - old_sd=concept remplace
@@ -347,5 +347,5 @@ class FORM_ETAPE(MACRO_ETAPE):
          Les objets FORM_ETAPE devraient verifier que le concept remplace n'est pas
          utilise dans le corps de la fonction
         """
-        self.init_modif()
+        self.initModif()
 
index cb4e4e0540bc7ad9c47aece868eaf064a377c149..995895682d1419a349806e9cb44ba5ce860d8995 100644 (file)
@@ -56,17 +56,17 @@ class JDC(I_OBJECT.OBJECT):
       self.old_recorded_units={}
  
 
-   def get_index(self,objet):
+   def getIndex(self,objet):
       """
         Retourne la position d'objet dans la liste self
       """
       return self.etapes.index(objet)
 
-   def get_sd_avant_du_bon_type(self,etape,types_permis):
+   def getSdAvantDuBonType(self,etape,types_permis):
       """
           Retourne la liste des concepts avant etape d'un type acceptable
       """
-      d=self.get_contexte_avant(etape)
+      d=self.getContexteAvant(etape)
       
       
       l=[]
@@ -75,24 +75,24 @@ class JDC(I_OBJECT.OBJECT):
         # On considere que seul assd indique un type quelconque pas CO
         elif self.assd in types_permis :
            if v.etape.sdnom != "sansnom" : l.append(k)
-        elif self.est_permis(v,types_permis):
+        elif self.estPermis(v,types_permis):
            if v.etape.sdnom != "sansnom" : l.append(k)
       l.sort()
       return l
 
-   def get_variables(self,etape):
+   def getVariables(self,etape):
       etapeStop=etape
       l=[]
       for etapeTraitee in self.etapes :
           if etapeTraitee==etapeStop:
              break
           if etapeTraitee.nom == 'VARIABLE' :
-             variable=etapeTraitee.get_mocle('ModelVariable')
+             variable=etapeTraitee.getMocle('ModelVariable')
              if variable != None :
                 l.append(variable.nom)
       return l
 
-   def get_distributions(self,etape):
+   def getDistributions(self,etape):
       etapeStop=etape
       l=[]
       for etapeTraitee in self.etapes :
@@ -104,68 +104,68 @@ class JDC(I_OBJECT.OBJECT):
    #def set_Copules_recalcule_etat(self):
    #   for etapeTraitee in self.etapes :
    #       if etapeTraitee.nom == 'CORRELATION' :
-             #Matrix=etapeTraitee.get_child('Matrix')
+             #Matrix=etapeTraitee.getChild('Matrix')
              #if Matrix !=None :
-   #             Correlation=etapeTraitee.get_child('CorrelationMatrix')
+   #             Correlation=etapeTraitee.getChild('CorrelationMatrix')
    #             if Correlation !=None : Correlation.state='arecalculer'
              #   Matrix.state='arecalculer'
      
-   #def recalcule_etat_correlation(self):
+   #def recalculeEtatCorrelation(self):
    #   for etapeTraitee in self.etapes :
    #       if etapeTraitee.nom == 'CORRELATION' :
-             #Matrix=etapeTraitee.get_child('Matrix')
+             #Matrix=etapeTraitee.getChild('Matrix')
              #if Matrix !=None :
    #             Matrix.state='arecalculer'
-   #             Correlation=Matrix.get_child('CorrelationMatrix')
+   #             Correlation=Matrix.getChild('CorrelationMatrix')
    #             if Correlation !=None : Correlation.state='arecalculer'
-   #                Correlation.isvalid()
-   #             Matrix.isvalid()
+   #                Correlation.isValid()
+   #             Matrix.isValid()
    #             etapeTraitee.state='arecalculer'
-   #          if etapeTraitee.state=='arecalculer': etapeTraitee.isvalid()
+   #          if etapeTraitee.state=='arecalculer': etapeTraitee.isValid()
                 
-   def recalcule_etat_correlation(self):
+   def recalculeEtatCorrelation(self):
       for etapeTraitee in self.etapes :
           if etapeTraitee.nom == 'CORRELATION' :
-             Correlation=etapeTraitee.get_child('CorrelationMatrix')
+             Correlation=etapeTraitee.getChild('CorrelationMatrix')
              if Correlation !=None : 
                   Correlation.state='arecalculer'
-                  Correlation.isvalid()
-             etapeTraitee.isvalid()
+                  Correlation.isValid()
+             etapeTraitee.isValid()
 
-   def recalcule_validite_apres_changement_global_jdc(self):
-        #print "je passe dans recalcule_validite_apres_changement_global_jdc"
+   def recalculeValiditeApresChangementGlobalJdc(self):
+        #print "je passe dans recalculeValiditeApresChangementGlobalJdc"
         try :
-          liste=self.get_jdc_root().cata[0].liste_condition
+          liste=self.getJdcRoot().cata.liste_condition
         except :
           liste=()
         for etapeTraitee in self.etapes :
            if etapeTraitee.nom not in liste: continue
            self.forceRecalculBloc(etapeTraitee)
            etapeTraitee.state='arecalculer'
-           etapeTraitee.isvalid()
+           etapeTraitee.isValid()
 
         
    def forceRecalculBloc(self,objet):
        # Attention : certains objets deviennent None quand on recalcule 
        # les conditions d existence des blocs
        if objet != None:  objet.state='arecalculer'
-       if hasattr(objet,'liste_mc_presents'):
-          for childNom in objet.liste_mc_presents():
-              child=objet.get_child(childNom)
-              if hasattr(objet,'_update_condition_bloc'):objet._update_condition_bloc()
+       if hasattr(objet,'listeMcPresents'):
+          for childNom in objet.listeMcPresents():
+              child=objet.getChild(childNom)
+              if hasattr(objet,'_updateConditionBloc'):objet._updateConditionBloc()
               self.forceRecalculBloc(child)
        
    
-   def get_sd_avant_du_bon_type_pour_type_de_base(self,etape,type):
+   def getSdAvantDuBonTypePourTypeDeBase(self,etape,type):
       """
           Retourne la liste des concepts avant etape d'1 type de base acceptable
           Attention different de la routine precedente : 1 seul type passe en parametre
           Teste sur issubclass et par sur le type permis
       """
-      d=self.get_contexte_avant(etape)
+      d=self.getContexteAvant(etape)
       l=[]
       try :
-         typeverif=self.cata[0].__dict__[type]
+         typeverif=self.cata.__dict__[type]
       except :
          return l
       for k,v in d.items():
@@ -174,8 +174,8 @@ class JDC(I_OBJECT.OBJECT):
       l.sort()
       return l
 
-   def cherche_list_avant(self,etape,valeur):
-       d=self.get_contexte_avant(etape)
+   def chercheListAvant(self,etape,valeur):
+       d=self.getContexteAvant(etape)
        for k,v in d.items():
           if issubclass(v.__class__,LASSD):
              if k == valeur :
@@ -185,7 +185,7 @@ class JDC(I_OBJECT.OBJECT):
                 return v
        return None
 
-   def est_permis(self,v,types_permis):
+   def estPermis(self,v,types_permis):
       for type_ok in types_permis:
           if type_ok in ('R','I','C','TXM') and v in self.params : 
              return 1
@@ -203,19 +203,19 @@ class JDC(I_OBJECT.OBJECT):
              return 1
       return 0
 
-   def addentite(self,name,pos):
+   def addEntite(self,name,pos):
       """
           Ajoute une entite :
           Si name est le nom d une commande ou un commentaire ajoute 
           une etape au JDC
           Sinon remonte une erreur
       """
-      self.init_modif()
+      self.initModif()
       self.editmode=1
       if name == "COMMENTAIRE" :
         from Extensions import commentaire
         # ajout d'un commentaire
-        self.set_current_step()
+        self.setCurrentStep()
         ind = 1
         for child in self.etapes :
           if isinstance(child,commentaire.COMMENTAIRE):
@@ -224,37 +224,37 @@ class JDC(I_OBJECT.OBJECT):
         objet.nom = "_comm_"+repr(ind)
         if pos == None : pos = 0
         self.etapes.insert(pos,objet)
-        self.reset_context()
+        self.resetContext()
         self.editmode=0
-        self.active_etapes()
+        self.activeEtapes()
         CONNECTOR.Emit(self,"add",objet)
-        self.fin_modif()
+        self.finModif()
         return objet
       elif name == "PARAMETRE":
         # ajout d'un parametre
-        self.set_current_step()
+        self.setCurrentStep()
         nom_param = '_param_'+str(len(self.params)+1)
         objet = parametre.PARAMETRE(nom=nom_param)
         if pos == None : pos = 0
         self.etapes.insert(pos,objet)
-        self.reset_context()
+        self.resetContext()
         self.editmode=0
-        self.active_etapes()
+        self.activeEtapes()
         CONNECTOR.Emit(self,"add",objet)
-        self.fin_modif()
+        self.finModif()
         return objet
       elif name == "PARAMETRE_EVAL":
         # ajout d'un parametre EVAL
-        self.set_current_step()
+        self.setCurrentStep()
         nom_param = '_param_'+str(len(self.params)+1)
         objet = parametre_eval.PARAMETRE_EVAL(nom=nom_param)
         if pos == None : pos = 0
         self.etapes.insert(pos,objet)
-        self.reset_context()
+        self.resetContext()
         self.editmode=0
-        self.active_etapes()
+        self.activeEtapes()
         CONNECTOR.Emit(self,"add",objet)
-        self.fin_modif()
+        self.finModif()
         return objet
       elif not( isinstance(name, basestring)):
       #elif type(name)==types.InstanceType:
@@ -267,7 +267,7 @@ class JDC(I_OBJECT.OBJECT):
         from Extensions import commentaire
         if not( isinstance (objet,commentaire.COMMENTAIRE)):
            objet.reparent(self)
-        self.set_current_step()
+        self.setCurrentStep()
         if isinstance(objet,ETAPE):
           if objet.nom_niveau_definition == 'JDC':
             # l'objet depend directement du JDC
@@ -278,43 +278,43 @@ class JDC(I_OBJECT.OBJECT):
             objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet)
             objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition]
         self.etapes.insert(pos,objet)
-        self.reset_context()
+        self.resetContext()
         # il faut verifier que les concepts utilises par objet existent bien
         # a ce niveau d'arborescence
-        objet.verif_existence_sd()
-        objet.update_mc_global()
+        objet.verifExistenceSd()
+        objet.updateMcGlobal()
         self.editmode=0
-        self.active_etapes()
+        self.activeEtapes()
         CONNECTOR.Emit(self,"add",objet)
-        self.fin_modif()
+        self.finModif()
         return objet
       else :
         # On veut ajouter une nouvelle commande
         try:
-          self.set_current_step()
-          cmd=self.get_cmd(name)
+          self.setCurrentStep()
+          cmd=self.getCmd(name)
           # L'appel a make_objet n'a pas pour effet d'enregistrer l'etape
           # aupres du step courant car editmode vaut 1
-          # Par contre elle a le bon parent grace a set_current_step
+          # Par contre elle a le bon parent grace a setCurrentStep
           e=cmd.make_objet()
           if pos == None : pos = 0
           self.etapes.insert(pos,e)
-          self.reset_current_step()
-          self.reset_context()
+          self.resetCurrentStep()
+          self.resetContext()
           self.editmode=0
-          self.active_etapes()
+          self.activeEtapes()
           CONNECTOR.Emit(self,"add",e)
-          self.fin_modif()
+          self.finModif()
           return e
         except AsException as e:
           traceback.print_exc()
-          self.reset_current_step()
+          self.resetCurrentStep()
           self.editmode=0
           raise AsException(tr("Impossible d'ajouter la commande")+name + '\n')
         except:
         #else :
           traceback.print_exc()
-          self.reset_current_step()
+          self.resetCurrentStep()
           self.editmode=0
           raise AsException(tr("Impossible d ajouter la commande")+name)
 
@@ -324,32 +324,32 @@ class JDC(I_OBJECT.OBJECT):
           if hasattr(etape,"close"):etape.close()
       CONNECTOR.Emit(self,"close")
 
-   def set_current_step(self):
-      CONTEXT.unset_current_step()
-      CONTEXT.set_current_step(self)
+   def setCurrentStep(self):
+      CONTEXT.unsetCurrentStep()
+      CONTEXT.setCurrentStep(self)
 
-   def reset_current_step(self):
-      CONTEXT.unset_current_step()
+   def resetCurrentStep(self):
+      CONTEXT.unsetCurrentStep()
 
-   def liste_mc_presents(self):
+   def listeMcPresents(self):
       return []
 
-   def get_sd_avant_etape(self,nom_sd,etape):
-      return self.get_contexte_avant(etape).get(nom_sd,None)
+   def getSdAvantEtape(self,nom_sd,etape):
+      return self.getContexteAvant(etape).get(nom_sd,None)
 
-   def get_sd_apres_etape_avec_detruire(self,nom_sd,sd,etape,avec='non'):
+   def getSdApresEtapeAvecDetruire(self,nom_sd,sd,etape,avec='non'):
       """ 
            Cette methode retourne la SD sd de nom nom_sd qui est eventuellement
            definie apres etape en tenant compte des concepts detruits
            Si avec vaut 'non' exclut etape de la recherche
       """
-      #print "JDC.get_sd_apres_etape_avec_detruire",nom_sd,sd
+      #print "JDC.getSdApresEtapeAvecDetruire",nom_sd,sd
       ietap=self.etapes.index(etape)
       if avec == 'non':ietap=ietap+1
       d={nom_sd:sd}
       for e in self.etapes[ietap:]:
-         if e.isactif():
-            e.update_context(d)
+         if e.isActif():
+            e.updateContext(d)
             autre_sd=d.get(nom_sd,None)
             if autre_sd is None:
               # Le concept a ete detruit. On interrompt la recherche car il n'y a
@@ -374,7 +374,7 @@ class JDC(I_OBJECT.OBJECT):
       # concept initial
       return sd
 
-   def get_sd_apres_etape(self,nom_sd,etape,avec='non'):
+   def getSdApresEtape(self,nom_sd,etape,avec='non'):
       """ 
            Cette methode retourne la SD de nom nom_sd qui est eventuellement
            definie apres etape 
@@ -383,14 +383,14 @@ class JDC(I_OBJECT.OBJECT):
       ietap=self.etapes.index(etape)
       if avec == 'non':ietap=ietap+1
       for e in self.etapes[ietap:]:
-        sd=e.get_sdprods(nom_sd)
+        sd=e.getSdprods(nom_sd)
         if sd:
           if hasattr(e,'reuse'):
             if e.reuse != sd:
               return sd
       return None
 
-   def get_sd_autour_etape(self,nom_sd,etape,avec='non'):
+   def getSdAutourEtape(self,nom_sd,etape,avec='non'):
       """
            Fonction: retourne la SD de nom nom_sd qui est eventuellement
            definie avant ou apres etape
@@ -398,46 +398,46 @@ class JDC(I_OBJECT.OBJECT):
            d'une etape
            Si avec vaut 'non' exclut etape de la recherche
       """
-      sd=self.get_sd_avant_etape(nom_sd,etape)
+      sd=self.getSdAvantEtape(nom_sd,etape)
       if sd:return sd
-      return self.get_sd_apres_etape(nom_sd,etape,avec)
+      return self.getSdApresEtape(nom_sd,etape,avec)
 
-   def get_contexte_apres(self,etape):
+   def getContexte_apres(self,etape):
       """
          Retourne le dictionnaire des concepts connus apres etape
          On tient compte des commandes qui modifient le contexte
          comme DETRUIRE ou les macros
          Si etape == None, on retourne le contexte en fin de JDC
       """
-      if not etape: return self.get_contexte_avant(etape)
+      if not etape: return self.getContexteAvant(etape)
 
-      d=self.get_contexte_avant(etape)
-      if etape.isactif():etape.update_context(d)
+      d=self.getContexteAvant(etape)
+      if etape.isActif():etape.updateContext(d)
       self.index_etape_courante=self.index_etape_courante+1
       return d
 
-   def active_etapes(self):
+   def activeEtapes(self):
       """
           Cette methode a pour fonction de desactiver les etapes qui doivent
           l'etre cad, dans le cas d'ASTER, les etapes qui ne sont pas 
           comprises entre le premier DEBUT/POURSUITE et le premier FIN 
           et rendre actives les autres
       """
-      if self.definition.code == 'ASTER' :
+      #if self.definition.code == 'ASTER' :
          # Seulement pour ASTER :
          # Avant DEBUT actif vaut 0
          # Apres DEBUT et avant le 1er FIN actif vaut 1
          # Apres le 1er FIN actif vaut -1
-         actif=0
-      else:
-         actif=1
+      #   actif=0
+      #actif=1
       for etape in self.etapes:
-        if actif == 0 and etape.nom in ['DEBUT','POURSUITE']:actif=1
-        if actif == 1:
+        #if actif == 0 and etape.nom in ['DEBUT','POURSUITE']:actif=1
+        #if actif == 1:
            etape.active()
-        else:
-           etape.inactive()
-        if etape.nom == 'FIN':actif=-1
+           self.enregistreEtapePyxb(etape)
+        #else:
+        #   etape.inactive()
+        #if etape.nom == 'FIN':actif=-1
 
    def deplaceEntite(self,indexNoeudACopier,indexNoeudOuColler,pos):
       """
@@ -457,15 +457,15 @@ class JDC(I_OBJECT.OBJECT):
          self.etapes2=self.etapes[0:indexNoeudOuColler+1]+[etapeACopier,]+self.etapes[indexNoeudOuColler+1:indexNoeudACopier]+self.etapes[indexNoeudACopier+1:]
       self.etapes=self.etapes2
       if indexNoeudACopier < indexNoeudOuColler :
-        self.delete_concept_entre_etapes(indexNoeudACopier,indexNoeudOuColler,sd)
-      self.reset_context()
+        self.deleteConceptEntreEtapes(indexNoeudACopier,indexNoeudOuColler,sd)
+      self.resetContext()
       for e in self.etapes :
          e.state = 'modified'
-      self.control_context_apres(None)
+      self.controlContextApres(None)
       return 1
 
 
-   def suppentite(self,etape) :
+   def suppEntite(self,etape) :
       """  
           Cette methode a pour fonction de supprimer une etape dans 
           un jeu de commandes
@@ -475,9 +475,10 @@ class JDC(I_OBJECT.OBJECT):
       #PN correction de bugs 
       if etape not in self.etapes: return 0
 
-      self.init_modif()
+      self.initModif()
       index_etape=self.etapes.index(etape)
 
+      etape.deletePyxbObject()
       self.etapes.remove(etape)
 
       if etape.niveau is not self:
@@ -485,10 +486,10 @@ class JDC(I_OBJECT.OBJECT):
         # Il faut la desenregistrer
         etape.niveau.unregister(etape)
 
-      etape.supprime_sdprods()
+      etape.supprimeSdProds()
       etape.close()
       etape.supprime()
-      self.active_etapes()
+      self.activeEtapes()
 
       # Apres suppression de l'etape il faut controler que les etapes
       # suivantes ne produisent pas des concepts DETRUITS dans op_init de etape
@@ -497,14 +498,14 @@ class JDC(I_OBJECT.OBJECT):
          etape=self.etapes[index_etape]
       else:
          etape=None
-      self.control_context_apres(etape)
+      self.controlContextApres(etape)
      
-      self.reset_context()
+      self.resetContext()
       CONNECTOR.Emit(self,"supp",etape)
-      self.fin_modif()
+      self.finModif()
       return 1
 
-   def control_context_apres(self,etape):
+   def controlContextApres(self,etape):
       """
          Cette methode verifie que les etapes apres l'etape etape
          ont bien des concepts produits acceptables (pas de conflit de 
@@ -513,16 +514,16 @@ class JDC(I_OBJECT.OBJECT):
          Effectue les verifications sur les etapes du jdc mais aussi sur les
          jdc parents s'ils existent.
       """
-      #print "control_context_apres",self,etape
+      #print "controlContextApres",self,etape
       #Regularise les etapes du jdc apres l'etape etape
-      self.control_jdc_context_apres(etape)
+      self.controlJdcContextApres(etape)
 
-   def control_jdc_context_apres(self,etape):
+   def controlJdcContextApres(self,etape):
       """
-          Methode semblable a control_context_apres mais ne travaille
+          Methode semblable a controlContextApres mais ne travaille
           que sur les etapes et sous etapes du jdc
       """
-      #print "control_jdc_context_apres",self,etape
+      #print "controlJdcContextApres",self,etape
       if etape is None:
          # on demarre de la premiere etape
          index_etape=0
@@ -535,31 +536,38 @@ class JDC(I_OBJECT.OBJECT):
          #derniere etape du jdc : rien a faire
          return
 
-      context=self.get_contexte_avant(etape)
+      context=self.getContexteAvant(etape)
 
       for e in self.etapes[index_etape:]:
-          e.control_sdprods(context)
-          e.update_context(context)
+          e.controlSdprods(context)
+          e.updateContext(context)
 
    def analyse(self):
-      self.compile()
-      if not self.cr.estvide():return
-      self.exec_compile()
-      self.active_etapes()
-
-   def register_parametre(self,param):
+      if self.editor.format == 'xml' :
+         # il ne faut pas le faire quand le jeu de donnees est vide
+         self.setCurrentContext()
+         self.analyseFromXML()
+         #print ('stop demande'); exit()
+         #self.execCompileFromXML()
+      else :    
+         self.compile()
+         self.execCompile()
+         if not self.cr.estvide():return
+         self.activeEtapes()
+
+   def registerParametre(self,param):
       """
           Cette methode sert a ajouter un parametre dans la liste des parametres
       """
       self.params.append(param)
 
-   def register_fonction(self,fonction):
+   def registerFonction(self,fonction):
       """
           Cette methode sert a ajouter une fonction dans la liste des fonctions
       """
       self.fonctions.append(fonction)
 
-   def delete_param(self,param):
+   def deleteParam(self,param):
       """
           Supprime le parametre param de la liste des parametres
           et du contexte gobal
@@ -567,7 +575,7 @@ class JDC(I_OBJECT.OBJECT):
       if param in self.params : self.params.remove(param)
       if param.nom in self.g_context : del self.g_context[param.nom]
 
-   def get_parametres_fonctions_avant_etape(self,etape):
+   def getParametresFonctionsAvantEtape(self,etape):
       """
           Retourne deux elements :
           - une liste contenant les noms des parametres (constantes ou EVAL) 
@@ -578,7 +586,7 @@ class JDC(I_OBJECT.OBJECT):
       l_fonctions = []
       # on recupere le contexte avant etape
       # on ne peut mettre dans les deux listes que des elements de ce contexte
-      d=self.get_contexte_avant(etape)
+      d=self.getContexteAvant(etape)
       # construction de l_constantes
       for param in self.params:
         nom = param.nom
@@ -588,7 +596,7 @@ class JDC(I_OBJECT.OBJECT):
       for form in self.fonctions:
         nom = form.nom
         if not nom : continue
-        if nom in d: l_fonctions.append(form.get_formule())
+        if nom in d: l_fonctions.append(form.getFormule())
 
       # on ajoute les concepts produits par DEFI_VALEUR
       # XXX On pourrait peut etre faire plutot le test sur le type
@@ -600,7 +608,7 @@ class JDC(I_OBJECT.OBJECT):
       # on retourne les deux listes
       return l_constantes,l_fonctions
 
-   def get_nb_etapes_avant(self,niveau):
+   def getNbEtapesAvant(self,niveau):
       """ 
           Retourne le nombre d etapes avant le debut de niveau
       """
@@ -610,78 +618,78 @@ class JDC(I_OBJECT.OBJECT):
         nb=nb+len(niv.etapes)
       return nb
 
-   def init_modif(self):
+   def initModif(self):
       """
       Methode appelee au moment ou une modification va etre faite afin de 
       declencher d'eventuels traitements pre-modification
       """
-      #print "init_modif",self
+      #print "initModif",self
       self.state = 'modified'
 
-   def fin_modif(self):
-      #print "fin_modif",self
+   def finModif(self):
+      #print "finModif",self
       CONNECTOR.Emit(self,"valid")
-      self.isvalid()
+      self.isValid()
       pass
 
-   def deep_update_condition_bloc(self):
+   def deepUpdateConditionBloc(self):
       # pour le moment, on ne fait rien
-      self.get_jdc_root().recalcule_validite_apres_changement_global_jdc()
+      self.getJdcRoot().recalculeValiditeApresChangementGlobalJdc()
       #raise EficasException(tr("Pas implemente"))
 
-   def update_condition_bloc(self):
+   def updateConditionBloc(self):
       # pour le moment, on ne fait rien
       raise EficasException(tr("Pas implemente"))
 
-   def get_liste_mc_inconnus(self):
+   def getListeMcInconnus(self):
      """
      Retourne une liste contenant les mots-cles inconnus a la relecture du JDC
      """
      # cette liste a le format suivant : [etape,(bloc,mcfact,...),nom_mc,valeur_mc]
      l_mc = []
      for etape in self.etapes :
-         if etape.isactif() :
-            if not etape.isvalid() :
-               l = etape.get_liste_mc_inconnus()
+         if etape.isActif() :
+            if not etape.isValid() :
+               l = etape.getListeMcInconnus()
                if l : l_mc.extend(l)
      return l_mc    
 
-   def get_genealogie_precise(self):
+   def getGenealogiePrecise(self):
       return []
 
-   def get_genealogie(self):
+   def getGenealogie(self):
       """
           Retourne la liste des noms des ascendants de l'objet self
           jusqu'a la premiere ETAPE parent.
       """
       return []
 
-   def get_liste_cmd(self):
+   def getListeCmd(self):
       """
           Retourne la liste des commandes du catalogue
       """
-      return self.niveau.definition.get_liste_cmd()
+      return self.niveau.definition.getListeCmd()
 
-   def get_groups(self):
+   def getGroups(self):
       """
           Retourne la liste des groupes
       """
       return self.niveau.definition.liste_groupes,self.niveau.definition.dict_groupes
 
-   def set_etape_context(self,etape):
+   def setEtapeContext(self,etape):
       """
           Positionne l'etape qui sera utilisee dans NommerSdProd pour
           decider si le concept passe pourra etre  nomme
       """
       self._etape_context=etape
 
-   def reset_context(self):
+   def resetContext(self):
       """ 
           Cette methode reinitialise le contexte glissant pour pouvoir
           tenir compte des modifications de l'utilisateur : craation
           de commandes, nommage de concepts, etc.
       """
-      #print "reset_context",self,self.nom
+      #print "resetContext",self,self.nom
       self.current_context={}
       self.index_etape_courante=0
       ind={}
@@ -690,21 +698,21 @@ class JDC(I_OBJECT.OBJECT):
       self.index_etapes=ind
 
    #   for etape in self.etapes:
-   #       etape.reset_context()
+   #       etape.resetContext()
 
-   def del_sdprod(self,sd):
+   def delSdprod(self,sd):
       """
           Supprime la SD sd de la liste des sd et des dictionnaires de contexte
       """
-      #print "del_sdprod",self,sd
-      #print "del_sdprod",self.sds
-      #print "del_sdprod",self.g_context
-      #print "del_sdprod",self.sds_dict
+      #print "delSdprod",self,sd
+      #print "delSdprod",self.sds
+      #print "delSdprod",self.g_context
+      #print "delSdprod",self.sds_dict
       #if sd in self.sds : self.sds.remove(sd)
       if sd.nom in self.g_context : del self.g_context[sd.nom]
       if sd.nom in self.sds_dict : del self.sds_dict[sd.nom]
 
-   def del_param(self,param):
+   def delParam(self,param):
       """
           Supprime le parametre param de la liste des paramatres
           et du contexte gobal
@@ -712,7 +720,7 @@ class JDC(I_OBJECT.OBJECT):
       if param in self.params : self.params.remove(param)
       if param.nom in self.g_context : del self.g_context[param.nom]
 
-   def del_fonction(self,fonction):
+   def delFonction(self,fonction):
       """
           Supprime la fonction fonction de la liste des fonctions
           et du contexte gobal
@@ -720,7 +728,7 @@ class JDC(I_OBJECT.OBJECT):
       if fonction in self.fonctions : self.fonctions.remove(fonction)
       if fonction.nom in self.g_context: del self.g_context[fonction.nom]
 
-   def append_sdprod(self,sd):
+   def appendSdProd(self,sd):
       """
           Ajoute la SD sd a la liste des sd en verifiant au prealable qu'une SD de
           meme nom n'existe pas deja
@@ -734,7 +742,7 @@ class JDC(I_OBJECT.OBJECT):
       self.g_context[sd.nom] = sd
       #if sd not in self.sds : self.sds.append(sd)
 
-   def append_param(self,param):
+   def appendParam(self,param):
       """
           Ajoute le parametre param a la liste des params
           et au contexte global
@@ -743,7 +751,7 @@ class JDC(I_OBJECT.OBJECT):
       if param not in self.params : self.params.append(param)
       self.g_context[param.nom]=param
 
-   def append_fonction(self,fonction):
+   def appendFonction(self,fonction):
       """
           Ajoute la fonction fonction a la liste des fonctions
           et au contexte global
@@ -752,7 +760,7 @@ class JDC(I_OBJECT.OBJECT):
       if fonction not in self.fonctions : self.fonctions.append(fonction)
       self.g_context[fonction.nom]=fonction
 
-   def delete_concept(self,sd):
+   def deleteConcept(self,sd):
       """
           Inputs :
              - sd=concept detruit
@@ -763,11 +771,11 @@ class JDC(I_OBJECT.OBJECT):
           que de transmettre aux fils
       """
       for etape in self.etapes :
-        etape.delete_concept(sd)
+        etape.deleteConcept(sd)
         #PN PN PN pour les matrices ????
-        #self.get_variables_avant(etape)
+        #self.getVariables_avant(etape)
 
-   def replace_concept_after_etape(self,etape,old_sd,sd):
+   def replaceConceptAfterEtape(self,etape,old_sd,sd):
       """
           Met a jour les etapes du JDC qui sont apres etape en fonction
           du remplacement du concept sd
@@ -776,9 +784,9 @@ class JDC(I_OBJECT.OBJECT):
       if index == len(self.etapes) :
          return # etape est la derniere etape du jdc ...on ne fait rien !
       for child in self.etapes[index:]:
-        child.replace_concept(old_sd,sd)
+        child.replaceConcept(old_sd,sd)
 
-   def update_concept_after_etape(self,etape,sd):
+   def updateConceptAfterEtape(self,etape,sd):
       """
           Met a jour les etapes du JDC qui sont apres etape en fonction
           de la modification (principalement nommage) du concept sd
@@ -791,22 +799,22 @@ class JDC(I_OBJECT.OBJECT):
       if index == len(self.etapes) :
          return # etape est la derniere etape du jdc ...on ne fait rien !
       for child in self.etapes[index:]:
-        child.update_concept(sd)
+        child.updateConcept(sd)
 
-   def dump_state(self):
+   def dumpState(self):
       print(("JDC.state: ",self.state))
       for etape in self.etapes :
          print((etape.nom+".state: ",etape.state))
       
-   def change_unit(self,unit,etape,old_unit):
-      #print "change_unit",unit,etape,old_unit
+   def changeUnit(self,unit,etape,old_unit):
+      #print "changeUnit",unit,etape,old_unit
       #print id(self.recorded_units),self.recorded_units
       #if self.recorded_units.has_key(old_unit):del self.recorded_units[old_unit]
-      self.record_unit(unit,etape)
+      self.recordUnit(unit,etape)
 
-   def record_unit(self,unit,etape):
+   def recordUnit(self,unit,etape):
       """Enregistre les unites logiques incluses et les infos relatives a l'etape"""
-      #print "record_unit",unit,etape
+      #print "recordUnit",unit,etape
       if unit is None:
          # Cas de POURSUITE
          self.recorded_units[None]=(etape.fichier_ini ,etape.fichier_text,etape.recorded_units)
@@ -816,17 +824,17 @@ class JDC(I_OBJECT.OBJECT):
       #print self.recorded_units.get(None,(None,"",{}))[2]
       #print self.recorded_units.get(None,(None,"",{}))[2].get(None,(None,"",{}))
 
-   def changefichier(self,fichier):
-       self.fin_modif()
+   def changeFichier(self,fichier):
+       self.finModif()
 
-   def eval_in_context(self,valeur,etape):
+   def evalInContext(self,valeur,etape):
       """ Tente d'evaluer valeur dans le contexte courant de etape
           Retourne le parametre valeur inchange si l'evaluation est impossible
       """
       #contexte initial du jdc
       context=self.condition_context.copy()
       #contexte courant des concepts. Il contient les parametres
-      context.update(self.get_contexte_avant(etape))
+      context.update(self.getContexteAvant(etape))
       try :
          objet = eval(valeur,context)
          return objet
@@ -859,13 +867,13 @@ class JDC(I_OBJECT.OBJECT):
       """
            Cette methode ajoute  etape dans la liste
            des etapes self.etapes et retourne l identificateur d'etape
-           fourni par l appel a g_register
+           fourni par l appel a gRegister
 
            A quoi sert editmode ?
               - Si editmode vaut 1, on est en mode edition de JDC. On cherche
                 a enregistrer une etape que l'on a creee avec eficas (en passant
-                par addentite) auquel cas on ne veut recuperer que son numero
-                d'enregistrement et c'est addentite qui l'enregistre dans
+                par addEntite) auquel cas on ne veut recuperer que son numero
+                d'enregistrement et c'est addEntite qui l'enregistre dans
                 self.etapes a la bonne place...
               - Si editmode vaut 0, on est en mode relecture d'un fichier de
                 commandes et on doit enregistrer l'etape a la fin de self.etapes
@@ -877,7 +885,7 @@ class JDC(I_OBJECT.OBJECT):
          self.index_etapes[etape] = len(self.etapes) - 1
       else:
          pass
-      return self.g_register(etape)
+      return self.gRegister(etape)
 
 #ATTENTION SURCHARGE : cette methode doit etre gardee en synchronisation avec celle de Noyau
    def NommerSdprod(self,sd,sdnom,restrict='non'):
@@ -890,15 +898,15 @@ class JDC(I_OBJECT.OBJECT):
       # XXX En mode editeur dans EFICAS, le nommage doit etre gere differemment
       # Le dictionnaire g_context ne represente pas le contexte
       # effectif avant une etape.
-      # Il faut utiliser get_contexte_avant avec indication de l'etape
+      # Il faut utiliser getContexteAvant avec indication de l'etape
       # traitee.
       # Cette etape est indiquee par l'attribut _etape_context qui a ete
-      # positionne prealablement par un appel a set_etape_context
+      # positionne prealablement par un appel a setEtapeContext
 
       if CONTEXT.debug : print(("JDC.NommerSdprod ",sd,sdnom))
 
       if self._etape_context:
-         o=self.get_contexte_avant(self._etape_context).get(sdnom,None)
+         o=self.getContexteAvant(self._etape_context).get(sdnom,None)
       else:
          o=self.sds_dict.get(sdnom,None)
 
@@ -906,7 +914,7 @@ class JDC(I_OBJECT.OBJECT):
          raise AsException(tr(" Nom de concept deja  defini : "+ sdnom))
 
       # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
-      # Ajoute a la creation (appel de reg_sd).
+      # Ajoute a la creation (appel de regSD).
       self.sds_dict[sdnom]=sd
       sd.nom=sdnom
 
@@ -914,12 +922,12 @@ class JDC(I_OBJECT.OBJECT):
       if restrict == 'non':
          self.g_context[sdnom]=sd
 
-   def delete_concept_entre_etapes(self,index1,index2,sd):
+   def deleteConceptEntreEtapes(self,index1,index2,sd):
       if index2 <= index1 :return
       for child in self.etapes[index1:index2]:
-        child.delete_concept(sd)
+        child.deleteConcept(sd)
 
-   def delete_concept_after_etape(self,etape,sd):
+   def deleteConceptAfterEtape(self,etape,sd):
       """
           Met a jour les etapes du JDC qui sont apres etape en fonction
           de la disparition du concept sd
@@ -928,18 +936,18 @@ class JDC(I_OBJECT.OBJECT):
       if index == len(self.etapes) :
          return # etape est la derniere etape du jdc ...on ne fait rien !
       for child in self.etapes[index:]:
-        child.delete_concept(sd)
+        child.deleteConcept(sd)
 
 #ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes de Noyau et Validation : a reintegrer
 
-   def get_file(self,unite=None,fic_origine=''):
+   def getFile(self,unite=None,fic_origine=''):
       """
           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.get_file(unite,fic_origine)
+         file,text= self.appli.getFile(unite,fic_origine)
       else:
          file = None
          if unite != None:
@@ -958,15 +966,15 @@ class JDC(I_OBJECT.OBJECT):
          linecache.cache[file]=0,0,text.split('\n'),file
       return file,text
 
-   def isvalid(self,cr='non'):
+   def isValid(self,cr='non'):
      if hasattr(self,'valid'): old_valid=self.valid
      else:old_valid=0
-     valid=Validation.V_JDC.JDC.isvalid(self,cr)
+     valid=Validation.V_JDC.JDC.isValid(self,cr)
      if valid != old_valid:
        CONNECTOR.Emit(self,"valid")
      return valid
 
-   def get_l_noms_etapes(self):
+   def getLNomsEtapes(self):
       """ 
           Retourne la liste des noms des etapes de self 
       """
index 861b7360c93283e3a9464fcda9aa1e49f8337b98..b8de9558563fddac8e89789bad8f4172606f5189 100644 (file)
@@ -24,11 +24,11 @@ class JDC_CATA:
   def __init__(self):
     self.l_noms_entites=[]
 
-  def get_liste_cmd(self):
+  def getListeCmd(self):
     self.l_noms_entites.sort()
     return self.l_noms_entites
 
-  def get_docu(self):
+  def getDocu(self):
     return
 
 
index 4b10322c423b190c1dd9265733fe7cd2c6508068..bdeba37108c80bf21235b01f2050c7a8db5d9813 100644 (file)
@@ -20,4 +20,4 @@
 
 class LASSD:
    def __repr__(self):
-       return self.get_name()
+       return self.getName()
index 82f2eb4c51a313c19df826fd0f2b5cb5b4bb6ead..0de991d84b1c09f00783e4d9730a36d340e6a7ab 100644 (file)
@@ -29,16 +29,15 @@ import traceback,types
 # Modules Eficas
 from Extensions.i18n import tr
 from Extensions.eficas_exception import EficasException
-from . import I_ETAPE
-from . import I_ENTITE
-from . import I_OBJECT
+from Ihm  import I_ETAPE
+from Ihm import I_ENTITE
+from Ihm import I_OBJECT
 import Noyau
 from Noyau.N_ASSD import ASSD
 from Noyau import N__F
-import convert
 from Extensions import param2
 
-# import rajoutes suite a l'ajout de Build_sd --> a resorber
+# import rajoutes suite a l'ajout de buildSd --> a resorber
 import Noyau, Validation.V_MACRO_ETAPE
 from Noyau import N_Exception
 from Noyau.N_Exception import AsException
@@ -57,7 +56,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       self.text_error=""
       self.recorded_units={}
 
-  def get_sdprods(self,nom_sd):
+  def getSdprods(self,nom_sd):
     """ 
          Fonction : retourne le concept produit par l etape de nom nom_sd
          s il existe sinon None
@@ -71,7 +70,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       return d.get(nom_sd,None)
     return None
 
-  def get_contexte_jdc(self,fichier,text):
+  def getContexteJdc(self,fichier,text,doitEtreValide=1):
     """ 
          Interprete text comme un texte de jdc et retourne le contexte final.
 
@@ -80,20 +79,19 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          ou leve une exception
          --> utilisee par ops.POURSUITE et INCLUDE
     """
-    #print ("get_contexte_jdc",self,self.nom)
+    #print ("getContexteJdc",self,self.nom, text)
     # On recupere l'etape courante
-    step=CONTEXT.get_current_step()
-    try:
-    #if 1 :
+    step=CONTEXT.getCurrentStep()
+    #try:
+    if 1 :
        # on essaie de creer un objet JDC auxiliaire avec un contexte initial
-       # Attention get_contexte_avant retourne un dictionnaire qui contient
+       # Attention getContexteAvant retourne un dictionnaire qui contient
        # le contexte courant. Ce dictionnaire est reactualise regulierement.
        # Si on veut garder l'etat du contexte fige, il faut en faire une copie.
-       context_ini = self.parent.get_contexte_avant(self).copy()
-       #print "get_contexte_jdc",context_ini.keys()
+       context_ini = self.parent.getContexteAvant(self).copy()
 
        # Indispensable avant de creer un nouveau JDC
-       CONTEXT.unset_current_step()
+       CONTEXT.unsetCurrentStep()
        args=self.jdc.args
        prefix_include=None
        if hasattr(self,'prefix'):
@@ -117,12 +115,10 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.text_converted=0
        self.text_error=""
        if self.nom != "INCLUDE_MATERIAU":
-          if self.parent.appli.ihm == "QT" :
-              format=self.parent.appli.appliEficas.format_fichier
-          else :
-              format=self.jdc.appli.format_fichier.get()
+          format=self.parent.appli.appliEficas.format_fichier
           #on force a python pour Carmel
           if format=="CARMEL3D" : format="python"
+          import convert
           if format in convert.plugins :
               # Le convertisseur existe on l'utilise
               p=convert.plugins[format]()
@@ -137,6 +133,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
                   self.text_converted=1
 
 
+       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,
                                 cata=self.jdc.cata,
@@ -153,46 +150,49 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.jdc_aux=j
        self.jdc.jdcDict=self.jdc_aux
 
-    except:
-    #else :
+    #except:
+    else :
        traceback.print_exc()
        # On retablit l'etape courante step
-       CONTEXT.unset_current_step()
-       CONTEXT.set_current_step(step)
+       CONTEXT.unsetCurrentStep()
+       CONTEXT.setCurrentStep(step)
        return None
 
-    if not j.cr.estvide():
+     
+    if not j.cr.estvide() and doitEtreValide:
        # Erreurs dans l'INCLUDE. On garde la memoire du fichier 
        # mais on n'insere pas les concepts
        # On retablit l'etape courante step
-       #print j.cr
-       #print j.isvalid()
-       CONTEXT.unset_current_step()
-       CONTEXT.set_current_step(step)
+       #print (j.cr)
+       #print ("valid ",j.isValid())
+       CONTEXT.unsetCurrentStep()
+       CONTEXT.setCurrentStep(step)
        raise EficasException(tr("Impossible de relire le fichier %s \n ")+ six.text_type(j.cr))
 
 
-    if not j.isvalid():
+    if not j.isValid() and doitEtreValide:
        # L'INCLUDE n'est pas valide.
        # on produit un rapport d'erreurs
        cr=j.report()
+       #print ('cr', cr)
        # On retablit l'etape courante step
-       CONTEXT.unset_current_step()
-       CONTEXT.set_current_step(step)
+       CONTEXT.unsetCurrentStep()
+       CONTEXT.setCurrentStep(step)
        self.jdc.cr.fatal("Le fichier include contient des erreurs ")
        raise EficasException(tr("Le fichier include contient des erreurs "))
 
 
     # Si aucune erreur rencontree
+    # ou qu on accepte un jdc incomplet
     # On recupere le contexte de l'include verifie
     try:
-       j_context=j.get_verif_contexte()
+       j_context=j.getVerifContexte()
        #print j_context.keys()
        #print j.g_context.keys()
     except:
        # On retablit l'etape courante step
-       CONTEXT.unset_current_step()
-       CONTEXT.set_current_step(step)
+       CONTEXT.unsetCurrentStep()
+       CONTEXT.setCurrentStep(step)
        raise EficasException(" ")
 
     # Si on est arrive ici, le texte du fichier inclus (INCLUDE, POURSUITE, ...)
@@ -230,24 +230,24 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.jdc_aux=j
 
     # On retablit l'etape courante step
-    CONTEXT.unset_current_step()
-    CONTEXT.set_current_step(step)
+    CONTEXT.unsetCurrentStep()
+    CONTEXT.setCurrentStep(step)
 
     return j_context
 
-  def reevalue_sd_jdc(self):
+  def reevalueSdJdc(self):
      """
          Avec la liste des SD qui ont ete supprimees, propage la 
          disparition de ces SD dans toutes les etapes et descendants
      """
-     #print "reevalue_sd_jdc"
-     l_sd_supp,l_sd_repl = self.diff_contextes()
+     #print "reevalueSdJdc"
+     l_sd_supp,l_sd_repl = self.diffContextes()
      for sd in l_sd_supp:
-        self.parent.delete_concept_after_etape(self,sd)
+        self.parent.deleteConceptAfterEtape(self,sd)
      for old_sd,sd in l_sd_repl:
-        self.parent.replace_concept_after_etape(self,old_sd,sd)
+        self.parent.replaceConceptAfterEtape(self,old_sd,sd)
 
-  def diff_contextes(self):
+  def diffContextes(self):
      """ 
          Realise la difference entre les 2 contextes 
          old_contexte_fichier_init et contexte_fichier_init
@@ -272,15 +272,15 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
                l_sd_replaced.append((self.old_contexte_fichier_init[old_key],self.contexte_fichier_init[old_key]))
      return l_sd_suppressed,l_sd_replaced
       
-  def control_sdprods(self,d):
+  def controlSdprods(self,d):
       """
           Cette methode doit verifier que les concepts produits par la 
           commande ne sont pas incompatibles avec le contexte fourni (d).
           Si c'est le cas, le concept produit doit etre supprime
           Si la macro a elle meme des etapes, elle doit propager
-          le traitement (voir methode control_jdc_context_apres de I_JDC)
+          le traitement (voir methode controlJdcContextApres de I_JDC)
       """
-      #print ("I_MACRO_ETAPE.control_sdprods",d.keys(),self,self.nom,self.sd and self.sd.nom)
+      #print ("I_MACRO_ETAPE.controlSdprods",d.keys(),self,self.nom,self.sd and self.sd.nom)
       if self.sd:
         if self.sd.nom in d:
            # Le concept est deja defini
@@ -291,74 +291,74 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
               # Redefinition du concept, on l'annule
               #XXX on pourrait simplement annuler son nom pour conserver les objets
               # l'utilisateur n'aurait alors qu'a renommer le concept (faisable??)
-              self.init_modif()
+              self.initModif()
               sd=self.sd
               self.sd=self.reuse=self.sdnom=None
-              self.parent.delete_concept_after_etape(self,sd)
-              self.fin_modif()
+              self.parent.deleteConceptAfterEtape(self,sd)
+              self.finModif()
 
       # On verifie les concepts a droite du signe =
-      self.init_modif()
+      self.initModif()
       sdprods=self.sdprods[:]
       self.sdprods=[]
       for co in sdprods:
         if co.nom in d and co is not d[co.nom] :
            #nettoie les mots cles de l'etape qui ont comme valeur co
-           self.delete_concept(co)
+           self.deleteConcept(co)
            #supprime les references a co dans les etapes suivantes
-           self.parent.delete_concept_after_etape(self,co)
+           self.parent.deleteConceptAfterEtape(self,co)
         else:
            self.sdprods.append(co)
-      self.fin_modif()
+      self.finModif()
        
       for e in self.etapes:
-          e.control_sdprods(d)
-          e.update_context(d)
+          e.controlSdprods(d)
+          e.updateContext(d)
 
-  def supprime_sdprod(self,sd):
+  def supprimeSdprod(self,sd):
       """
          Supprime le concept produit sd s'il est produit par l'etape
       """
       if sd in self.sdprods:
-         self.init_modif()
-         self.parent.del_sdprod(sd)
+         self.initModif()
+         self.parent.delSdprod(sd)
          self.sdprods.remove(sd)
-         self.fin_modif()
-         self.parent.delete_concept(sd)
+         self.finModif()
+         self.parent.deleteConcept(sd)
          return
 
       if sd is not self.sd :return
       if self.sd is not None :
-         self.init_modif()
-         self.parent.del_sdprod(sd)
+         self.initModif()
+         self.parent.delSdprod(sd)
          self.sd=None
-         self.fin_modif()
-         self.parent.delete_concept(sd)
+         self.finModif()
+         self.parent.deleteConcept(sd)
 
-  def supprime_sdprods(self):
+  def supprimeSdProds(self):
       """
           Fonction: Lors de la destruction de la macro-etape, detruit tous les concepts produits
           Un operateur n a qu un concept produit
           Une procedure n'en a aucun
           Une macro en a en general plus d'un
       """
-      #print "supprime_sdprods"
+      #print "supprimeSdProds"
       if self.reuse is not self.sd :
          # l'etape n'est pas reentrante
          # le concept retourne par l'etape est a supprimer car il etait
          # cree par l'etape
          if self.sd != None :
-            self.parent.del_sdprod(self.sd)
-            self.parent.delete_concept(self.sd)
+            self.parent.delSdprod(self.sd)
+            self.parent.deleteConcept(self.sd)
       # On detruit les concepts a droite du signe =
       for co in self.sdprods:
-         self.parent.del_sdprod(co)
-         self.parent.delete_concept(co)
+         self.parent.delSdprod(co)
+         self.parent.deleteConcept(co)
       # Si la macro a des etapes et des concepts inclus, on les detruit
       for nom_sd,co in self.g_context.items():
          if not isinstance(co,ASSD):continue
-         self.parent.del_sdprod(co)
-         self.parent.delete_concept(co)
+         self.parent.delSdprod(co)
+         self.parent.deleteConcept(co)
       # On met g_context a blanc
       self.g_context={}
 
@@ -368,39 +368,39 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          # La macro a un jdc auxiliaire inclus. On demande sa fermeture
          self.jdc_aux.close()
 
-  def reset_context(self):
+  def resetContext(self):
       if hasattr(self,"jdc_aux") and self.jdc_aux:
          # La macro a un jdc auxiliaire inclus. On demande la reinitialisation du contexte
-         self.jdc_aux.reset_context()
+         self.jdc_aux.resetContext()
 
-  def update_concept(self,sd):
-      I_ETAPE.ETAPE.update_concept(self,sd)
+  def updateConcept(self,sd):
+      I_ETAPE.ETAPE.updateConcept(self,sd)
       for etape in self.etapes:
-          etape.update_concept(sd)
+          etape.updateConcept(sd)
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
       """
           Fonction : Mettre a jour les mots cles de l etape et eventuellement
           le concept produit si reuse suite a la disparition du concept sd
           Seuls les mots cles simples MCSIMP font un traitement autre
           que de transmettre aux fils
       """
-      #print "delete_concept",sd
-      I_ETAPE.ETAPE.delete_concept(self,sd)
+      #print "deleteConcept",sd
+      I_ETAPE.ETAPE.deleteConcept(self,sd)
       for etape in self.etapes:
-         etape.delete_concept(sd)
+         etape.deleteConcept(sd)
 
-  def replace_concept(self,old_sd,sd):
+  def replaceConcept(self,old_sd,sd):
       """
           Fonction : Mettre a jour les mots cles de l etape et le concept produit si reuse 
           suite au remplacement  du concept old_sd par sd
       """
-      #print "replace_concept",old_sd,sd
-      I_ETAPE.ETAPE.replace_concept(self,old_sd,sd)
+      #print "replaceConcept",old_sd,sd
+      I_ETAPE.ETAPE.replaceConcept(self,old_sd,sd)
       for etape in self.etapes:
-         etape.replace_concept(old_sd,sd)
+         etape.replaceConcept(old_sd,sd)
          
-  def change_fichier_init(self,new_fic,text):
+  def changeFichierInit(self,new_fic,text):
     """
        Tente de changer le fichier include. Le precedent include est conserve
        dans old_xxx
@@ -428,7 +428,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.fichier_text=text
 
     try:
-       self.make_contexte_include(new_fic,text)
+       self.makeContexteInclude(new_fic,text)
     except:
        l=traceback.format_exception_only(tr("Fichier invalide %s", sys.exc_info()[1]))
        self.fichier_err=''.join(l)
@@ -436,23 +436,23 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
     # L'evaluation de text dans un JDC auxiliaire s'est bien passe
     # on peut poursuivre le traitement
-    self.init_modif()
+    self.initModif()
     self.state="undetermined"
     self.fichier_err=None
     # On enregistre la modification de fichier
-    self.record_unite()
+    self.recordUnite()
     # Le contexte du parent doit etre reinitialise car les concepts produits ont change
-    self.parent.reset_context()
+    self.parent.resetContext()
 
     # Si des concepts ont disparu lors du changement de fichier, on demande leur suppression
     self.old_contexte_fichier_init=self.old_context
-    self.reevalue_sd_jdc()
+    self.reevalueSdJdc()
 
-    self.fin_modif()
+    self.finModif()
     if self.old_jdc_aux:
        self.old_jdc_aux.close()
 
-  def restore_fichier_init(self):
+  def restoreFichierInit(self):
     """
        Restaure le fichier init enregistre dans old_xxx
     """
@@ -464,7 +464,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.etapes=self.old_etapes
     self.jdc_aux=self.old_jdc_aux
 
-  def force_fichier_init(self):
+  def forceFichierInit(self):
     """
        Force le remplacement du fichier init meme si le remplacant est en erreur
     """
@@ -475,7 +475,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     # On ajoute egalement le concept produit dans le sds_dict du parent
     # sans verification car on est sur (verification integree) que
     # le nommage est possible
-    j_context=self.jdc_aux.get_contexte_avant(None)
+    j_context=self.jdc_aux.getContexteAvant(None)
     self.g_context.clear()
     context_ini=self.jdc_aux.context_ini
     for k,v in j_context.items():
@@ -489,79 +489,79 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.fichier_err = None
 
     # On enregistre la modification de fichier
-    self.init_modif()
+    self.initModif()
     self.state="undetermined"
-    self.record_unite()
+    self.recordUnite()
     # Le contexte du parent doit etre reinitialise car les concepts produits ont change
-    self.parent.reset_context()
+    self.parent.resetContext()
 
     # On remplace les anciens concepts par les nouveaux (y compris ajouts 
     # et suppression) et on propage les modifications aux etapes precedentes et suivantes
-    # reevalue_sd_jdc construit la liste des differences entre les contextes contexte_fichier_init
+    # reevalueSdJdc construit la liste des differences entre les contextes contexte_fichier_init
     # et old_contexte_fichier_init et effectue les destructions et remplacements de concept
     # necessaires
     self.old_contexte_fichier_init=self.old_context
-    self.reevalue_sd_jdc()
-    self.fin_modif()
+    self.reevalueSdJdc()
+    self.finModif()
     if self.old_jdc_aux:
        self.old_jdc_aux.close()
 
-    self.jdc_aux.force_contexte(self.g_context)
+    self.jdc_aux.forceContexte(self.g_context)
 
-  def build_include(self,fichier,text):
+  def buildInclude(self,fichier,text):
     import Extensions.jdc_include
     self.JdC_aux=Extensions.jdc_include.JdC_include
     # un include partage la table des unites avec son parent (jdc)
     self.recorded_units=self.parent.recorded_units
-    self.build_jdcaux(fichier,text)
+    self.buildJdcaux(fichier,text)
 
-  def build_poursuite(self,fichier,text):
+  def buildPoursuite(self,fichier,text):
     import Extensions.jdc_include
     self.JdC_aux=Extensions.jdc_include.JdC_poursuite
     # une poursuite a sa propre table d'unites
     self.recorded_units={}
-    self.build_jdcaux(fichier,text)
+    self.buildJdcaux(fichier,text)
        
 
-  def build_includeInclude(self,text):
+  def buildIncludeInclude(self,text):
     import Extensions.jdc_include
     self.JdC_aux=Extensions.jdc_include.JdC_include
     # un include partage la table des unites avec son parent (jdc)
-    self.build_jdcauxInclude(text)
-
 
 
-  def build_includeEtape(self,text):
+  def buildIncludeEtape(self,text,doitEtreValide = 0):
     import Extensions.jdc_include
     self.JdC_aux=Extensions.jdc_include.JdC_include
     # un include partage la table des unites avec son parent (jdc)
-    #self.build_jdcauxInclude(text)
+    #self.buildJdcauxInclude(text)
     # Attention fonctionne pour import_Zone de MT
     # a adapter eventuellement
     try :
-       contexte = self.get_contexte_jdc(None,text)
+    #if 1 :
+       contexte = self.getContexteJdc(None,text,doitEtreValide)
     except EficasException: 
        return 0
      
     for e in self.etapes: 
         e.niveau=self.niveau
         e.parent=self.parent
+        e.state='change'
 
     index=self.jdc.etapes.index(self)
     self.jdc.etapes=self.jdc.etapes[:index+1]+self.etapes+self.jdc.etapes[index+1:]
 
     self.g_context={}
     self.etapes=[]
-    self.jdc.reset_context()
+    self.jdc.resetContext()
     self.jdc_aux=None
-    CONTEXT.unset_current_step()
+    CONTEXT.unsetCurrentStep()
     return 1
 
 
-  def build_jdcauxInclude(self,text):
+  def buildJdcauxInclude(self,text):
        
        try :
-         contexte = self.get_contexte_jdc(None,text)
+         contexte = self.getContexteJdc(None,text)
        except EficasException:
          pass
        index=self.jdc.etapes.index(self)
@@ -571,9 +571,9 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.g_context={}
        self.etapes=[]
        self.jdc_aux=None
-       CONTEXT.unset_current_step()
+       CONTEXT.unsetCurrentStep()
 
-  def build_jdcaux(self,fichier,text):
+  def buildJdcaux(self,fichier,text):
     """
          Cree un jdc auxiliaire initialise avec text. 
          Initialise le nom du fichier associe avec fichier
@@ -584,7 +584,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
     self.fichier_unite=None
     self.fichier_err = None
     try:
-       contexte = self.get_contexte_jdc(fichier,text)
+       contexte = self.getContexteJdc(fichier,text)
        if contexte is None :
           # Impossible de construire le jdc auxiliaire (sortie par None)
           # On simule une sortie par exception
@@ -592,13 +592,13 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        else:
           # La construction du jdc auxiliaire est allee au bout
           self.contexte_fichier_init = contexte
-       self.init_modif()
-       self.fin_modif()
+       self.initModif()
+       self.finModif()
     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.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+          self.jdc.appli.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={}
@@ -606,18 +606,17 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        self.jdc_aux=None
        self.fichier_err = ''.join(l)
        self.contexte_fichier_init={}
-       self.init_modif()
-       self.fin_modif()
+       self.initModif()
+       self.finModif()
        raise EficasException(" ")
 
-  def make_contexte_include(self,fichier,text):
+  def makeContexteInclude(self,fichier,text):
     """
         Cette methode sert a craer un contexte en interpratant un texte source Python.
     """
-    print ("make_contexte_include",fichier)
+    #print ("makeContexteInclude",fichier)
     # on recupere le contexte d'un nouveau jdc dans lequel on interprete text
-    contexte = self.get_contexte_jdc(fichier,text)
-    print ("make_contexte_include",fichier)
+    contexte = self.getContexteJdc(fichier,text)
     if contexte == None :
       raise EficasException("Impossible de construire le jeu de commandes correspondant au fichier")
     else:
@@ -625,18 +624,18 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       # l'attribut g_context est un dictionnaire qui contient les concepts produits par inclusion
       # l'attribut contexte_fichier_init est un dictionnaire qui contient les concepts produits
       # en sortie de macro. g_context est obtenu en retirant de contexte_fichier_init les concepts
-      # existants en debut de macro contenus dans context_ini (dans get_contexte_jdc)
+      # existants en debut de macro contenus dans context_ini (dans getContexteJdc)
       # g_context est utilise pour avoir les concepts produits par la macro
       # contexte_fichier_init est utilise pour avoir les concepts supprimes par la macro
       self.contexte_fichier_init = contexte
-    print ("fin make_contexte_include",fichier)
+    #print ("fin makeContexteInclude",fichier)
 
-  def reevalue_fichier_init_OBSOLETE(self):
+  def reevalueFichierInitObsolete(self):
       """Recalcule les concepts produits par le fichier enregistre"""
       #print "reevalue_fichier_init"
       old_context=self.contexte_fichier_init
       try:
-         self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+         self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
       except:
          l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
          self.fichier_err = ''.join(l)
@@ -645,67 +644,67 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          self.jdc_aux=None
          self.old_contexte_fichier_init=old_context
          self.contexte_fichier_init={}
-         self.reevalue_sd_jdc()
+         self.reevalueSdJdc()
          return
 
       # L'evaluation s'est bien passee
       self.fichier_err = None
       self.old_contexte_fichier_init=old_context
-      self.reevalue_sd_jdc()
+      self.reevalueSdJdc()
 
-  def update_fichier_init(self,unite):
+  def updateFichierInit(self,unite):
       """Reevalue le fichier init sans demander (dans la mesure du possible) a l'utilisateur 
          les noms des fichiers
          Ceci suppose que les relations entre unites et noms ont ete memorisees prealablement
          L'include a ete initialise precedemment. Le jdc auxiliaire existe.
       """
-      #print "update_fichier_init",unite,self.fichier_unite 
+      #print "updateFichierInit",unite,self.fichier_unite 
       self.old_contexte_fichier_init=self.contexte_fichier_init
       old_fichier_ini=self.fichier_ini
       if not hasattr(self,"jdc_aux"):self.jdc_aux=None
       old_jdc_aux=self.jdc_aux
 
-      #print "update_fichier_init",self,self.parent,self.parent.recorded_units
+      #print "updateFichierInit",self,self.parent,self.parent.recorded_units
 
       if self.fichier_unite is None:
          # L'unite n'etait pas definie precedemment. On ne change que l'unite
-         #print "update_fichier_init","pas de changement dans include"
+         #print "updateFichierInit","pas de changement dans include"
          self.fichier_unite=unite
          return
       elif unite == self.fichier_unite :
          # L'unite n'a pas change
-         #print "update_fichier_init","pas de changement dans include 3"
+         #print "updateFichierInit","pas de changement dans include 3"
          return
       elif unite != self.fichier_unite :
          # L'unite etait definie precedemment. On remplace l'include 
          #
-         f,text=self.get_file_memo(unite=unite,fic_origine=self.parent.nom)
+         f,text=self.getFileMemo(unite=unite,fic_origine=self.parent.nom)
          if f is None:
             # Le fichier associe n'a pas pu etre defini
             # on change l'unite associee mais pas l'include
-            #print "update_fichier_init","pas de changement dans include 2"
+            #print "updateFichierInit","pas de changement dans include 2"
             self.fichier_unite=unite
             return
          else:
             self.fichier_ini = f
             self.fichier_text=text
             self.fichier_unite=unite
-         #print "update_fichier_init",self.recorded_units
+         #print "updateFichierInit",self.recorded_units
 
-      #print "update_fichier_init",self.fichier_ini,self.fichier_text,self.fichier_unite
+      #print "updateFichierInit",self.fichier_ini,self.fichier_text,self.fichier_unite
 
       if old_fichier_ini == self.fichier_ini:
          # Le fichier inclus n'a pas change. On ne recree pas le contexte
          # mais on enregistre le changement d'association unite <-> fichier
-         #print "update_fichier_init.fichier inchange",self.jdc_aux.context_ini
-         self.parent.record_unit(unite,self)
+         #print "updateFichierInit.fichier inchange",self.jdc_aux.context_ini
+         self.parent.recordUnit(unite,self)
          return
 
       try:
         self.fichier_err=None
-        self.make_contexte_include(self.fichier_ini,self.fichier_text)
+        self.makeContexteInclude(self.fichier_ini,self.fichier_text)
         # Les 3 attributs fichier_ini fichier_text recorded_units doivent etre corrects
-        # avant d'appeler change_unit
+        # avant d'appeler changeUnit
       except:
         # Erreurs lors de l'evaluation de text dans un JDC auxiliaire
         l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
@@ -720,28 +719,28 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
       if old_jdc_aux:
          old_jdc_aux.close()
-      self.parent.record_unit(unite,self)
+      self.parent.recordUnit(unite,self)
       # Le contexte du parent doit etre reinitialise car les concepts 
       # produits ont change
-      self.parent.reset_context()
+      self.parent.resetContext()
       # Si des concepts ont disparu lors du changement de fichier, on 
       # demande leur suppression
-      self.reevalue_sd_jdc()
-      #print "update_fichier_init",self.jdc_aux.context_ini.keys()
+      self.reevalueSdJdc()
+      #print "updateFichierInit",self.jdc_aux.context_ini.keys()
 
-  def record_unite(self):
-      #print "record_unite",self.nom
+  def recordUnite(self):
+      #print "recordUnite",self.nom
       if self.nom == "POURSUITE":
-         self.parent.record_unit(None,self)
+         self.parent.recordUnit(None,self)
       else:
          if hasattr(self,'fichier_unite') : 
-            self.parent.record_unit(self.fichier_unite,self)
+            self.parent.recordUnit(self.fichier_unite,self)
 
-  def get_file_memo(self, unite=None, fname=None, fic_origine=''):
+  def getFileMemo(self, unite=None, fname=None, fic_origine=''):
       """Retourne le nom du fichier et le source correspondant a l'unite unite
          Initialise en plus recorded_units
       """
-      #print "get_file_memo",unite,fic_origine,self,self.parent
+      #print "getFileMemo",unite,fic_origine,self,self.parent
       #print self.parent.recorded_units
       if unite is None:
          # On est dans le cas d'une poursuite. On ne reutilise aucune unite de parent
@@ -759,38 +758,38 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
              f = fname
              text = open(fname, 'r').read()
          else:
-             f,text=self.jdc.get_file(unite=unite, fic_origine=fic_origine)
+             f,text=self.jdc.getFile(unite=unite, fic_origine=fic_origine)
       else:
          f,text=None,None
 
       self.recorded_units=units
       if f is None and self.jdc.appli:
-         self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+         self.jdc.appli.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
 
-  def update_context(self,d):
+  def updateContext(self,d):
       """
          Met a jour le contexte contenu dans le dictionnaire d
          Une MACRO_ETAPE peut ajouter plusieurs concepts dans le contexte
          Une fonction enregistree dans op_init peut egalement modifier le contexte
       """
-      #print ("update_context",self,self.nom,d.keys())
+      #print ("updateContext",self,self.nom,d.keys())
       if hasattr(self,"jdc_aux") and self.jdc_aux:
-            #ATTENTION: update_context NE DOIT PAS appeler reset_context
-            # car il appelle directement ou indirectement update_context
-            # equivalent a reset_context. Evite les recursions
+            #ATTENTION: updateContext NE DOIT PAS appeler resetContext
+            # car il appelle directement ou indirectement updateContext
+            # equivalent a resetContext. Evite les recursions
             self.jdc_aux.context_ini=d.copy()
             self.jdc_aux.current_context={}
             self.jdc_aux.index_etape_courante=0
-            #ATTENTION: il ne faut pas utiliser self.jdc_aux.get_contexte_avant
+            #ATTENTION: il ne faut pas utiliser self.jdc_aux.getContexteAvant
             #car cet appel conduit a des remontees multiples incoherentes dans le
             # ou les parents. 
-            #get_context_avant appelle update_context qui NE DOIT PAS appeler get_contexte_avant
+            #get_context_avant appelle updateContext qui NE DOIT PAS appeler getContexteAvant
             #On n'a besoin que d'un update local connaissant
             # le contexte amont : d qui sert a reinitialiser self.context_ini
             for e in self.etapes:
-                e.update_context(d)
+                e.updateContext(d)
             return
 
       if type(self.definition.op_init) == types.FunctionType:
@@ -798,7 +797,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       if self.sd != None :d[self.sd.nom]=self.sd
       for co in self.sdprods:
         d[co.nom]=co
-      #print "update_context.fin",d.keys()
+      #print "updateContext.fin",d.keys()
 
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
   def copy(self):
@@ -817,21 +816,21 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       Noyau.N_MACRO_ETAPE.MACRO_ETAPE.supprime(self)
 
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
-  def get_file(self,unite=None,fic_origine=''):
+  def getFile(self,unite=None,fic_origine=''):
       """Retourne le nom du fichier et le source correspondant a l'unite unite
       """
       if self.jdc :
-         f,text=self.jdc.get_file(unite=unite,fic_origine=fic_origine)
+         f,text=self.jdc.getFile(unite=unite,fic_origine=fic_origine)
       else:
          f,text=None,None
       return f,text
 
 
-  def make_include3(self,fichier=None):
-      self.make_includeCarmel(fichier)
+  def makeInclude3(self,fichier=None):
+      self.makeIncludeCarmel(fichier)
 
 
-  def make_includeCND(self,fichier=None):
+  def makeIncludeCND(self,fichier=None):
       unite=999
       if fichier==None : return
       if hasattr(self,'fichier_ini') : print((self.fichier_ini))
@@ -852,30 +851,30 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
           if groupe[0:5]=='VCUT_':    texteVcut    +='V_'+groupe[5:]+"=VCUT();\n"
       texte=texteSources+texteCond+texteNoCond+texteVcut
       #print (texte)
-      self.build_includeInclude(texte)
-      if CONTEXT.get_current_step()==None : CONTEXT.set_current_step(self)
+      self.buildIncludeInclude(texte)
+      if CONTEXT.getCurrentStep()==None : CONTEXT.setCurrentStep(self)
       reevalue=0
 
-  def make_includeCarmel(self,fichier=None):
+  def makeIncludeCarmel(self,fichier=None):
   # Pour Carmel
-      #print "je suis dans make_includeCarmel"
+      #print "je suis dans makeIncludeCarmel"
       unite=999
       if hasattr(self,'fichier_ini') : return
       reevalue=0
       if hasattr(self,'old_context_fichier_init' ):
          reevalue=1
          for concept in self.old_context_fichier_init.values():
-             self.jdc.delete_concept(concept)
+             self.jdc.deleteConcept(concept)
       if fichier == None :
-         fichier=str(self.jdc.appli.get_file_dictDonnees())
+         fichier=str(self.jdc.appli.getFile_dictDonnees())
          if fichier  == str("") : 
            self.fichier_ini="badfile"
            self.fichier_text=""
            self.fichier_err=tr("Le fichier n est pas defini")
-           self.parent.record_unit(999,self)
+           self.parent.recordUnit(999,self)
            try :
-              MCFils=self.get_child('FileName')
-              MCFils.set_valeur(None)
+              MCFils=self.getChild('FileName')
+              MCFils.setValeur(None)
            except :
               pass
            raise EficasException(self.fichier_err)
@@ -895,18 +894,18 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       except:
       #else:
          traceback.print_exc()
-         self.make_incl2_except()
+         self.makeIncl2Except()
          raise EficasException(" ")
 
       try:
       #if 1 :
-         self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+         self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
          self.old_context_fichier_init=self.contexte_fichier_init
-         self.parent.record_unit(unite,self)
+         self.parent.recordUnit(unite,self)
          try :
-            MCFils=self.get_child('FileName')
-            #MCFils.set_valeur(fichier)
-            #on appelle pas set_valeur qui modifie le contexte ce qui fout le bazar
+            MCFils=self.getChild('FileName')
+            #MCFils.setValeur(fichier)
+            #on appelle pas setValeur qui modifie le contexte ce qui fout le bazar
             #pas de modification de bloc
             MCFils.valeur=fichier
             MCFils.val=fichier
@@ -914,12 +913,12 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
             pass
       except:
       #else:
-         self.make_incl2_except()
+         self.makeIncl2Except()
       # Cette P*** de ligne suivante ne fonctionne que pour Aster
       # si quelqu un a une idee merci de m en parler
-      #CONTEXT.set_current_step(self)
+      #CONTEXT.setCurrentStep(self)
 
-  def make_include2(self,fichier=None):
+  def makeInclude2(self,fichier=None):
   # Pour OT
       # gestion de l unicite SVP
       unite=999
@@ -929,18 +928,18 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       if hasattr(self,'old_context_fichier_init' ):
          reevalue=1
          for concept in self.old_context_fichier_init.values():
-             self.jdc.delete_concept(concept)
+             self.jdc.deleteConcept(concept)
 
       if fichier == None :
-         fichier=str(self.jdc.appli.get_file_variable())
+         fichier=str(self.jdc.appli.getFileVariable())
          if fichier  == str("") : 
            self.fichier_ini="badfile"
            self.fichier_text=""
            self.fichier_err=tr("Le fichier n est pas defini")
-           self.parent.record_unit(999,self)
+           self.parent.recordUnit(999,self)
            try :
-              MCFils=self.get_child('FileName')
-              MCFils.set_valeur(None)
+              MCFils=self.getChild('FileName')
+              MCFils.setValeur(None)
            except :
               pass
            raise EficasException(self.fichier_err)
@@ -968,12 +967,12 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
                ligneTexte="%s=DETERMINISTICVARIABLE(N='%s',T='in',R=%d);\n" % (nom, nom, i)
              self.fichier_text = self.fichier_text + ligneTexte
       except:
-         self.make_incl2_except()
+         self.makeIncl2Except()
          raise EficasException(" ")
 
       if nbVariableOut != 1 :
          print((nbVariableOut ,"nbVariableOut"))
-         self.make_incl2_except(mess=tr("le fichier doit contenir une unique variable de sortie"))
+         self.makeIncl2Except(mess=tr("le fichier doit contenir une unique variable de sortie"))
          raise EficasException(" ")
 
       try:
@@ -981,21 +980,21 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          self.JdC_aux=Extensions.jdc_include.JdC_include
       except:
          traceback.print_exc()
-         self.make_incl2_except()
+         self.makeIncl2Except()
          raise EficasException(" ")
       
       try:
          print((self.fichier_ini ,self.fichier_text))
-         self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+         self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
          self.old_context_fichier_init=self.contexte_fichier_init
-         self.parent.record_unit(unite,self)
+         self.parent.recordUnit(unite,self)
          try :
-            MCFils=self.get_child('FileName')
-            MCFils.set_valeur(fichier)
+            MCFils=self.getChild('FileName')
+            MCFils.setValeur(fichier)
          except :
             pass
       except:
-         self.make_incl2_except()
+         self.makeIncl2Except()
 
       # recalcul validite pour la matrice eventuelle
       if reevalue :
@@ -1003,47 +1002,47 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
            if e.nom == "VARIABLE" :
               e.state="modified"
               try :
-                 mc=e.get_child('ModelVariable') 
+                 mc=e.getChild('ModelVariable') 
                  mc.state="modified"
               except :
                  pass
            if e.nom == "CORRELATION" :
               e.state="modified"
               try :
-                 mc=e.get_child('Matrix') 
+                 mc=e.getChild('Matrix') 
                  mc.state="modified"
-                 mcFeuille=mc.get_child('CorrelationMatrix')
+                 mcFeuille=mc.getChild('CorrelationMatrix')
                  mcFeuille.state="modified"
               except :
                  pass
-              e.isvalid()
+              e.isValid()
 
-  def make_incl2_except(self,mess=None):
+  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 mess == None :
-                     self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+                     self.jdc.appli.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.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+                     self.jdc.appli.afficheAlerte(tr("Erreur lors de l'evaluation du fichier inclus"),
                                             message=tr(mess))
-         #self.parent.record_unit(unite,self)
+         #self.parent.recordUnit(unite,self)
          self.g_context={}
          self.etapes=[]
          self.jdc_aux=None
          self.fichier_err = ''.join(l)
          self.contexte_fichier_init={}
          try :
-            MCFils=self.get_child('FileName')
-            MCFils.set_valeur(None)
+            MCFils=self.getChild('FileName')
+            MCFils.setValeur(None)
          except :
             pass
 
 
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
-  def make_include(self, unite=None, fname=None):
+  def makeInclude(self, unite=None, fname=None):
       """
           Inclut un fichier dont l'unite logique est unite
           Cette methode est appelee par la fonction sd_prod de la macro INCLUDE
@@ -1051,7 +1050,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
           Sinon on retourne None. Les concepts produits par l'INCLUDE sont
           pris en compte par le JDC parent lors du calcul du contexte (appel de ???)
       """
-      #print "make_include",unite
+      #print "makeInclude",unite
       # On supprime l'attribut unite qui bloque l'evaluation du source de l'INCLUDE
       # car on ne s'appuie pas sur lui dans EFICAS mais sur l'attribut fichier_ini
       # Si unite n'a pas de valeur, l'etape est forcement invalide. On peut retourner None
@@ -1060,7 +1059,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
 
       if not hasattr(self,'fichier_ini') : 
          # Si le fichier n'est pas defini on le demande
-         f,text=self.get_file_memo(unite=unite, fname=fname, fic_origine=self.parent.nom)
+         f,text=self.getFileMemo(unite=unite, fname=fname, fic_origine=self.parent.nom)
          # On memorise le fichier retourne
          self.fichier_ini  = f
          self.fichier_text = text
@@ -1074,21 +1073,21 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
            raise EficasException("pb import Extensions")
          self.JdC_aux=Extensions.jdc_include.JdC_include
 
-         #print "make_include",self.fichier_ini,self.fichier_text 
+         #print "makeInclude",self.fichier_ini,self.fichier_text 
          if f is None and not text:
              self.fichier_err=tr("Le fichier INCLUDE n est pas defini")
-             self.parent.record_unit(unite,self)
+             self.parent.recordUnit(unite,self)
              raise EficasException(self.fichier_err)
 
          try:
-           self.make_contexte_include(self.fichier_ini ,self.fichier_text)
-           self.parent.record_unit(unite,self)
+           self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
+           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.affiche_alerte(tr("Erreur lors de l'evaluation du fichier inclus"),
+              self.jdc.appli.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.record_unit(unite,self)
+           self.parent.recordUnit(unite,self)
            self.g_context={}
            self.etapes=[]
            self.jdc_aux=None
@@ -1099,19 +1098,19 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       else:
          # Si le fichier est deja defini on ne reevalue pas le fichier
          # et on leve une exception si une erreur a ete enregistree
-         self.update_fichier_init(unite)
+         self.updateFichierInit(unite)
          self.fichier_unite=unite
          if self.fichier_err is not None: raise EficasException(self.fichier_err)
         
 
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
-  def make_contexte(self,fichier,text):
+  def makeContexte(self,fichier,text):
     """
         Cette methode sert a creer un contexte pour INCLUDE_MATERIAU
         en interpretant un texte source Python
         Elle est appelee par la fonction sd_prod d'INCLUDE_MATERIAU
     """
-    #print "make_contexte",fichier
+    #print "makeContexte",fichier
     # On supprime l'attribut mat qui bloque l'evaluation du source de l'INCLUDE_MATERIAU
     # car on ne s'appuie pas sur lui dans EFICAS mais sur l'attribut fichier_ini
     if hasattr(self,'mat'):del self.mat
@@ -1130,7 +1129,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        except:
          raise EficasException(" ")
        try:
-          self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+          self.makeContexteInclude(self.fichier_ini ,self.fichier_text)
           if not self.nom_mater in self.g_context :
              #Pour permettre de lire un jeu de commandes avec des INCLUDE_MATERIAU errones
              self.g_context[self.nom_mater]=None
@@ -1154,25 +1153,25 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
        if self.fichier_err is not None: raise EficasException(self.fichier_err)
 
 #ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
-  def update_sdprod(self,cr='non'):
+  def updateSdprod(self,cr='non'):
      # Cette methode peut etre appelee dans EFICAS avec des mots cles de 
      # la commande modifies. Ceci peut conduire a la construction ou
      # a la reconstruction d'etapes dans le cas d'INCLUDE ou d'INCLUDE_MATERIAU
      # Il faut donc positionner le current_step avant l'appel
-     CONTEXT.unset_current_step()
-     CONTEXT.set_current_step(self)
-     valid=Validation.V_MACRO_ETAPE.MACRO_ETAPE.update_sdprod(self,cr=cr)
-     CONTEXT.unset_current_step()
+     CONTEXT.unsetCurrentStep()
+     CONTEXT.setCurrentStep(self)
+     valid=Validation.V_MACRO_ETAPE.MACRO_ETAPE.updateSdprod(self,cr=cr)
+     CONTEXT.unsetCurrentStep()
      return valid
 
 #ATTENTION SURCHARGE: cette methode surcharge celle de Noyau a garder en synchro 
-  def Build_sd(self,nom):
+  def buildSd(self,nom):
       """
            Methode de Noyau surchargee pour poursuivre malgre tout
            si une erreur se produit pendant la creation du concept produit
       """
       try:
-         sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.Build_sd(self,nom)
+         sd=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.buildSd(self,nom)
       except :
       #   return None
       #except AsException,e:
@@ -1191,13 +1190,13 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       return self.sd
 
 #ATTENTION SURCHARGE: cette methode surcharge celle de Noyau a garder en synchro 
-  def make_poursuite(self):
+  def makePoursuite(self):
       """ Cette methode est appelee par la fonction sd_prod de la macro POURSUITE
       """
-      #print "make_poursuite"
+      #print "makePoursuite"
       if not hasattr(self,'fichier_ini') :
          # Si le fichier n'est pas defini on le demande
-         f,text=self.get_file_memo(fic_origine=self.parent.nom)
+         f,text=self.getFileMemo(fic_origine=self.parent.nom)
          # On memorise le fichier retourne
          self.fichier_ini = f
          self.fichier_unite = None
@@ -1210,23 +1209,23 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
            raise EficasException(" ")
          self.JdC_aux=Extensions.jdc_include.JdC_poursuite
          self.contexte_fichier_init={}
-         #print "make_poursuite",self.fichier_ini,self.fichier_text
+         #print "makePoursuite",self.fichier_ini,self.fichier_text
 
          if f is None:
              self.fichier_err="Le fichier POURSUITE n'est pas defini"
              self.jdc_aux=None
-             self.parent.record_unit(None,self)
+             self.parent.recordUnit(None,self)
              raise EficasException(self.fichier_err)
 
          try:
-           self.make_contexte_include(self.fichier_ini,self.fichier_text)
-           self.parent.record_unit(None,self)
+           self.makeContexteInclude(self.fichier_ini,self.fichier_text)
+           self.parent.recordUnit(None,self)
          except:
            l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
            if self.jdc.appli:
-              self.jdc.appli.affiche_alerte(tr("Erreur lors de l'evaluation du fichier poursuite"),
+              self.jdc.appli.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.record_unit(None,self)
+           self.parent.recordUnit(None,self)
            self.g_context={}
            self.etapes=[]
            self.jdc_aux=None
@@ -1237,5 +1236,5 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       else:
          # Si le fichier est deja defini on ne reevalue pas le fichier
          # et on leve une exception si une erreur a ete enregistree
-         self.update_fichier_init(None)
+         self.updateFichierInit(None)
          if self.fichier_err is not None: raise EficasException(self.fichier_err)
index a071c8ebef4bceba1ee09577ce1e98e727e7076b..e8079a7c9be270addffe9c2bc172df27df8247b4 100644 (file)
@@ -36,14 +36,14 @@ from . import I_OBJECT
 from . import CONNECTOR
 
 class MCCOMPO(I_OBJECT.OBJECT):
-  def getlabeltext(self):
+  def getLabelText(self):
     """ 
        Retourne le label de self 
        utilise pour l'affichage dans l'arbre
     """
     return self.nom
 
-  def get_liste_mc_ordonnee(self,liste,dico):
+  def getListeMcOrdonnee(self,liste,dico):
     """
        Retourne la liste ordonnee (suivant le catalogue) des mots-cles
        d'une entite composee dont le chemin complet est donne sous forme
@@ -51,9 +51,9 @@ class MCCOMPO(I_OBJECT.OBJECT):
        il faut encore rearranger cette liste (certains mots-cles deja
        presents ne doivent plus etre proposes, regles ...)
     """
-    return self.filtre_liste_mc(self.get_liste_mc_ordonnee_brute(liste,dico))
+    return self.filtreListeMc(self.getListeMcOrdonneeBrute(liste,dico))
 
-  def get_liste_mc_ordonnee_brute(self,liste,dico):
+  def getListeMcOrdonneeBrute(self,liste,dico):
     """
        Retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
        d'une entite composee dont le chemin complet est donne sous forme
@@ -72,7 +72,7 @@ class MCCOMPO(I_OBJECT.OBJECT):
         if specifique == 1 : return l    
     return objet_cata.ordre_mc
 
-  def filtre_liste_mc(self,liste_brute):
+  def filtreListeMc(self,liste_brute):
     """ 
        Cette methode est appelee par EFICAS afin de presenter a 
        l'utilisateur la liste des enfants possibles de self actualisee 
@@ -82,17 +82,17 @@ class MCCOMPO(I_OBJECT.OBJECT):
        etre repetes
     """
     liste = copy(liste_brute)
-    liste_mc_presents = self.liste_mc_presents()
+    listeMcPresents = self.listeMcPresents()
     # on enleve les mots-cles non permis par les regles
     for regle in self.definition.regles:
-       # la methode purge_liste est a developper pour chaque regle qui
+       # la methode purgeListe est a developper pour chaque regle qui
        # influe sur la liste de choix a proposer a l'utilisateur
        # --> EXCLUS,UN_PARMI,PRESENT_ABSENT
-       liste = regle.purge_liste(liste,liste_mc_presents)
+       liste = regle.purgeListe(liste,listeMcPresents)
     # on enleve les mots-cles dont l'occurrence est deja atteinte
     liste_copy = copy(liste)
     for k in liste_copy:
-      objet = self.get_child(k,restreint = 'oui')
+      objet = self.getChild(k,restreint = 'oui')
       if objet != None :
         # l'objet est deja present : il faut distinguer plusieurs cas
         if isinstance(objet,MCSIMP):
@@ -121,12 +121,12 @@ class MCCOMPO(I_OBJECT.OBJECT):
           liste.remove(k)
         if self.definition.entites[k].label=='BLOC':
           liste.remove(k)
-    # Pour corriger les exces qui pourraient etre commis dans la methode purge_liste
+    # Pour corriger les exces qui pourraient etre commis dans la methode purgeListe
     # des regles, on essaie de compenser comme suit :
     # on ajoute les mots cles facteurs presents dont l'occurence n'est pas atteinte
-    for k in liste_mc_presents:
+    for k in listeMcPresents:
       if k in liste:continue
-      objet = self.get_child(k,restreint = 'oui')
+      objet = self.getChild(k,restreint = 'oui')
       if isinstance(objet,MCFACT):
           # un mot-cle facteur ne peut pas etre repete plus de self.max fois
           if objet.definition.max > 1:
@@ -137,25 +137,25 @@ class MCCOMPO(I_OBJECT.OBJECT):
               liste.append(k)
     return liste
 
-  def liste_mc_presents(self):
+  def listeMcPresents(self):
     """ 
        Retourne la liste des noms des mots-cles fils de self presents construite
-       a partir de self.mc_liste 
+       a partir de self.mcListe 
     """
     l=[]
-    for v in self.mc_liste:
+    for v in self.mcListe:
       k=v.nom
       l.append(k)
     return l
 
-  def get_index_child(self,nom_fils):
+  def getIndexChild(self,nom_fils):
       """
         Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
         Permet de savoir a quelle position il faut ajouter un nouveau mot-cle
       """
       cata_ordonne = self.jdc.cata_ordonne_dico
-      liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(self.get_genealogie(),cata_ordonne)
-      liste_noms_mc_presents = self.liste_mc_presents()
+      liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(self.getGenealogie(),cata_ordonne)
+      liste_noms_mc_presents = self.listeMcPresents()
       index=0
       for nom in liste_noms_mc_ordonnee:
           if nom == nom_fils:break
@@ -163,15 +163,27 @@ class MCCOMPO(I_OBJECT.OBJECT):
           index=index+1
       return index
           
-  def ordonne_liste_mc(self,liste_mc_a_ordonner,liste_noms_mc_ordonnee):
+  def findRangObjetDsArbre(self,objet) :
+  # uniquement pour Pyxb
+  # parcourt les Blocs
+      leRang=0
+      pos=self.mcListe.index(objet)
+      i=0
+      while (i+1) < pos :
+        leRang= leRang + self.mcListe[i].longueurDsArbre()
+        i=i+1
+      return leRang
+
+  def ordonneListeMc(self,listeMc_a_ordonner,liste_noms_mc_ordonnee):
     """
-        Retourne liste_mc_a_ordonner ordonnee suivant l'ordre 
+        Retourne listeMc_a_ordonner ordonnee suivant l'ordre 
         donne par liste_noms_mc_ordonnee
     """
     liste = []
     # on transforme liste_a_ordonner en un dictionnaire (plus facile a consulter)
     d_mc = {}
-    for mc in liste_mc_a_ordonner:
+    for mc in listeMc_a_ordonner:
       d_mc[mc.nom]=mc
     # on construit la liste des objets ordonnes
     for nom_mc in liste_noms_mc_ordonnee:
@@ -180,35 +192,36 @@ class MCCOMPO(I_OBJECT.OBJECT):
     # on la retourne
     return liste
 
-  def suppentite(self,objet) :
+  def suppEntite(self,objet) :
     """ 
         Supprime le fils 'objet' de self : 
         Retourne 1 si la suppression a pu etre effectuee,
         Retourne 0 dans le cas contraire
     """
-    if not objet in self.mc_liste:
-       # Impossible de supprimer objet. Il n'est pas dans mc_liste
+    if not objet in self.mcListe:
+       # Impossible de supprimer objet. Il n'est pas dans mcListe
        return 0
 
-    self.init_modif()
-    self.mc_liste.remove(objet)
+    self.initModif()
+    objet.deletePyxbObject()
+    self.mcListe.remove(objet)
     CONNECTOR.Emit(self,"supp",objet)
-    objet.delete_mc_global()
-    objet.update_condition_bloc()
+    objet.deleteMcGlobal()
+    objet.updateConditionBloc()
     objet.supprime()
     self.etape.modified()
-    self.fin_modif()
+    self.finModif()
     return 1
 
-  def isoblig(self):
+  def isOblig(self):
       return 0
 
-  def addentite(self,name,pos=None):
+  def addEntite(self,name,pos=None):
       """ 
           Ajoute le mot-cle name a la liste des mots-cles de
           l'objet MCCOMPOSE
       """
-      self.init_modif()
+      self.initModif()
       if type(name)==bytes :
         # on est en mode creation d'un motcle 
         if self.ispermis(name) == 0 : return 0
@@ -219,46 +232,47 @@ class MCCOMPO(I_OBJECT.OBJECT):
         # Appel de la methode qui fait le menage dans les references
         # sur les concepts produits (verification que les concepts existent
         # dans le contexte de la commande courante).
-        objet.verif_existence_sd()
+        objet.verifExistenceSd()
 
       # On verifie que l'ajout d'objet est autorise
       if self.ispermis(objet) == 0:
-        self.jdc.appli.affiche_alerte(tr("Erreur"),
+        self.jdc.appli.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.fin_modif()
+        self.finModif()
         return 0
 
       # On cherche s'il existe deja un mot cle de meme nom
-      old_obj = self.get_child(objet.nom,restreint = 'oui')
+      old_obj = self.getChild(objet.nom,restreint = 'oui')
       if not old_obj :
          # on normalize l'objet
          objet=objet.normalize()
          # Le mot cle n'existe pas encore. On l'ajoute a la position
          # demandee (pos)
          if pos == None :
-           self.mc_liste.append(objet)
+           self.mcListe.append(objet)
          else :
-           self.mc_liste.insert(pos,objet)
+           self.mcListe.insert(pos,objet)
          # Il ne faut pas oublier de reaffecter le parent d'obj (si copie)
          objet.reparent(self)
+         objet.addPyxbObject(self.findRangObjetDsArbre(objet))
          CONNECTOR.Emit(self,"add",objet)
-         objet.update_mc_global()
-         objet.update_condition_bloc()
-         self.fin_modif()
+         objet.updateMcGlobal()
+         objet.updateConditionBloc()
+         self.finModif()
          return objet
       else:
          # Le mot cle existe deja. Si le mot cle est repetable,
          # on cree une liste d'objets. Dans le cas contraire,
          # on emet un message d'erreur.
-         if not old_obj.isrepetable():
-            self.jdc.appli.affiche_alerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
-            self.fin_modif()
+         if not old_obj.isRepetable():
+            self.jdc.appli.afficheAlerte(tr("Erreur"),tr("L'objet %s ne peut pas etre repete", objet.nom))
+            self.finModif()
             return 0
          else:
             # une liste d'objets de meme type existe deja
-            old_obj.addentite(objet)
-            self.fin_modif()
+            old_obj.addEntite(objet)
+            self.finModif()
             return old_obj
 
   def ispermis(self,fils):
@@ -287,11 +301,11 @@ class MCCOMPO(I_OBJECT.OBJECT):
         if fils.parent.nom != self.nom : return 0
       return 1
 
-  def update_concept(self,sd):
-    for child in self.mc_liste :
-        child.update_concept(sd)
+  def updateConcept(self,sd):
+    for child in self.mcListe :
+        child.updateConcept(sd)
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
     """ 
         Inputs :
            - sd=concept detruit
@@ -301,10 +315,10 @@ class MCCOMPO(I_OBJECT.OBJECT):
         Seuls les mots cles simples MCSIMP font un traitement autre que 
         de transmettre aux fils
     """
-    for child in self.mc_liste :
-      child.delete_concept(sd)
+    for child in self.mcListe :
+      child.deleteConcept(sd)
 
-  def replace_concept(self,old_sd,sd):
+  def replaceConcept(self,old_sd,sd):
     """
         Inputs :
            - old_sd=concept remplace
@@ -313,10 +327,10 @@ class MCCOMPO(I_OBJECT.OBJECT):
         Mettre a jour les fils de l objet suite au remplacement  du
         concept old_sd
     """
-    for child in self.mc_liste :
-      child.replace_concept(old_sd,sd)
+    for child in self.mcListe :
+      child.replaceConcept(old_sd,sd)
 
-  def get_liste_mc_inconnus(self):
+  def getListeMcInconnus(self):
      """
      Retourne la liste des mots-cles inconnus dans self
      """
@@ -324,56 +338,56 @@ class MCCOMPO(I_OBJECT.OBJECT):
      if self.reste_val != {}:
         for k,v in self.reste_val.items() :
             l_mc.append([self,k,v])
-     for child in self.mc_liste :
-        if child.isvalid() : continue
-        l_child = child.get_liste_mc_inconnus()
+     for child in self.mcListe :
+        if child.isValid() : continue
+        l_child = child.getListeMcInconnus()
         for mc in l_child:
            l = [self]
            l.extend(mc)
            l_mc.append(l)
      return l_mc
 
-  def deep_update_condition_bloc(self):
+  def deepUpdateConditionBloc(self):
      """
         Parcourt l'arborescence des mcobject et realise l'update 
-        des blocs conditionnels par appel de la methode update_condition_bloc
+        des blocs conditionnels par appel de la methode updateConditionBloc
      """
-     self._update_condition_bloc()
-     for mcobj in self.mc_liste:
-        if hasattr(mcobj,"deep_update_condition_bloc"):
-           mcobj.deep_update_condition_bloc()
+     self._updateConditionBloc()
+     for mcobj in self.mcListe:
+        if hasattr(mcobj,"deepUpdateConditionBloc"):
+           mcobj.deepUpdateConditionBloc()
 
-  def update_condition_bloc(self):
+  def updateConditionBloc(self):
      """
         Realise l'update des blocs conditionnels fils de self
         et propage au parent
      """
-     self._update_condition_bloc()
-     if self.parent:self.parent.update_condition_bloc()
+     self._updateConditionBloc()
+     if self.parent:self.parent.updateConditionBloc()
 
-  def _update_condition_bloc(self):
+  def _updateConditionBloc(self):
      """
         Realise l'update des blocs conditionnels fils de self
      """
-     dict = self.cree_dict_condition(self.mc_liste,condition=1)
+     dict = self.creeDictCondition(self.mcListe,condition=1)
      for k,v in self.definition.entites.items():
         if v.label != 'BLOC' :continue
         globs= self.jdc and self.jdc.condition_context or {}
-        bloc=self.get_child(k,restreint = 'oui')
-        presence=v.verif_presence(dict,globs)
+        bloc=self.getChild(k,restreint = 'oui')
+        presence=v.verifPresence(dict,globs)
         if presence and not bloc:
            # le bloc doit etre present
            # mais le bloc n'est pas present et il doit etre cree
            #print "AJOUT BLOC",k
-           pos=self.get_index_child(k)
-           self.addentite(k,pos)
+           pos=self.getIndexChild(k)
+           self.addEntite(k,pos)
         if not presence and bloc:
            # le bloc devrait etre absent
            # le bloc est present : il faut l'enlever
            #print "SUPPRESSION BLOC",k,bloc
-           self.suppentite(bloc)
+           self.suppEntite(bloc)
 
-  def verif_condition_bloc(self):
+  def verifConditionBloc(self):
     """ 
         Evalue les conditions de tous les blocs fils possibles 
         (en fonction du catalogue donc de la definition) de self
@@ -383,49 +397,49 @@ class MCCOMPO(I_OBJECT.OBJECT):
     """
     liste_ajouts = []
     liste_retraits = []
-    dict = self.cree_dict_condition(self.mc_liste,condition=1)
+    dict = self.creeDictCondition(self.mcListe,condition=1)
     for k,v in self.definition.entites.items():
       if v.label=='BLOC' :
         globs= self.jdc and self.jdc.condition_context or {}
-        if v.verif_presence(dict,globs):
+        if v.verifPresence(dict,globs):
           # le bloc doit etre present
-          if not self.get_child(k,restreint = 'oui'):
+          if not self.getChild(k,restreint = 'oui'):
             # le bloc n'est pas present et il doit etre cree
             liste_ajouts.append(k)
         else :
           # le bloc doit etre absent
-          if self.get_child(k,restreint = 'oui'):
+          if self.getChild(k,restreint = 'oui'):
             # le bloc est present : il faut l'enlever
             liste_retraits.append(k)
     return liste_ajouts,liste_retraits
 
-  def verif_existence_sd(self):
+  def verifExistenceSd(self):
      """
         Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
         avant etape, sinon enleve la reference a ces concepts
      """
-     for motcle in self.mc_liste :
-         motcle.verif_existence_sd()
+     for motcle in self.mcListe :
+         motcle.verifExistenceSd()
 
-  def update_mc_global(self):
+  def updateMcGlobal(self):
      """
         Met a jour les mots cles globaux enregistres dans l'etape parente 
         et dans le jdc parent.
         Un mot cle compose ne peut pas etre global. Il se contente de passer
         la requete a ses fils.
      """
-     for motcle in self.mc_liste :
-         motcle.update_mc_global()
+     for motcle in self.mcListe :
+         motcle.updateMcGlobal()
 
-  def delete_mc_global(self):
-     for motcle in self.mc_liste :
-         motcle.delete_mc_global()
+  def deleteMcGlobal(self):
+     for motcle in self.mcListe :
+         motcle.deleteMcGlobal()
      try :
-         motcle.update_mc_global()
+         motcle.updateMcGlobal()
      except :
          pass
 
-  def init_modif_up(self):
-    Validation.V_MCCOMPO.MCCOMPO.init_modif_up(self)
+  def initModifUp(self):
+    Validation.V_MCCOMPO.MCCOMPO.initModifUp(self)
     CONNECTOR.Emit(self,"valid")
 
index ed62b6b3a6c4ca74b8eb81ad03c3d747f486e573..6e30cc1ea01345f56c964d56affa6e86eed32669 100644 (file)
@@ -24,7 +24,7 @@ from . import I_MCCOMPO
 import Noyau
 
 class MCFACT(I_MCCOMPO.MCCOMPO):
-  def isrepetable(self):
+  def isRepetable(self):
      """ 
          Indique si l'objet est repetable.
          Retourne 1 si le mot-cle facteur self peut etre repete
@@ -36,44 +36,51 @@ class MCFACT(I_MCCOMPO.MCCOMPO):
      else :
        return 0
 
-  def isoblig(self):
+  def isOblig(self):
     if self.definition.statut != 'o' : return 0
-    objet = self.parent.get_child(self.nom)
+    objet = self.parent.getChild(self.nom)
     if len(objet) > 1 : return 0
     else : return 1
 
-  def getlabeltext(self):
+  def getMinMax(self):
+     """
+     Retourne les valeurs min et max admissibles pour la valeur de self
+     """
+     return self.definition.min,self.definition.max
+
+
+  def getLabelText(self):
     """
        Retourne le label de self suivant qu'il s'agit d'un MCFACT
        isole ou d'un MCFACT appartenant a une MCList :
        utilisee pour l'affichage dans l'arbre
     """
-    objet = self.parent.get_child(self.nom)
+    objet = self.parent.getChild(self.nom)
     # objet peut-etre self ou une MCList qui contient self ...
     if objet is None or objet is self:
      return tr("Erreur - mclist inexistante : %s", self.nom)
 
     try:
       if len(objet) > 1 :
-        index = objet.get_index(self)+1 # + 1 a cause de la numerotation qui commence a 0
+        index = objet.getIndex(self)+1 # + 1 a cause de la numerotation qui commence a 0
         return self.nom +'_'+repr(index)+':'
       else:
         return self.nom
     except:
       return tr("Erreur - mot cle facteur de nom : %s", self.nom)
 
-  def get_genealogie_precise(self):
-    nom=self.getlabeltext() 
+  def getGenealogiePrecise(self):
+    nom=self.getLabelText() 
     if nom[-1]==':' : nom=nom[0:-1]
     if self.parent:
-       l=self.parent.get_genealogie_precise()
+       l=self.parent.getGenealogiePrecise()
        l.append(nom.strip())
        return l
     else:
        return [nom.strip()]
 
 
-  def init_modif(self):
+  def initModif(self):
     """
        Met l'etat de l'objet a modified et propage au parent
        qui vaut None s'il n'existe pas
@@ -81,20 +88,20 @@ class MCFACT(I_MCCOMPO.MCCOMPO):
     self.state = 'modified'
     parent= hasattr(self,"alt_parent") and self.alt_parent or self.parent
     if parent:
-       parent.init_modif()
+       parent.initModif()
 
-  def fin_modif(self):
+  def finModif(self):
     """
       Methode appelee apres qu'une modification a ete faite afin de declencher
       d'eventuels traitements post-modification
     """
-    #print "fin_modif",self
+    #print "finModif",self
     # pour les objets autres que les commandes, aucun traitement specifique
     # on remonte l'info de fin de modif au parent
     CONNECTOR.Emit(self,"valid")
     parent= hasattr(self,"alt_parent") and self.alt_parent or self.parent
     if parent:
-       parent.fin_modif()
+       parent.finModif()
 
   def normalize(self):
     """ Retourne le MCFACT normalise. Pour un MCFACT isole, l'objet normalise
index 219195fa34379a24fb171ff457a2eb2728d94642..15e80c99cacc5747dca270759ab499052f171cbd 100644 (file)
@@ -31,13 +31,13 @@ class MCList:
     """
     return 1
 
-  def get_index(self,objet):
+  def getIndex(self,objet):
     """
         Retourne la position d'objet dans la liste self
     """
     return self.data.index(objet)
 
-  def ajout_possible(self):
+  def ajoutPossible(self):
     """ 
         Methode booleenne qui retourne 1 si on peut encore ajouter une occurrence
         de l'element que contient self, 0 sinon 
@@ -51,7 +51,7 @@ class MCList:
       else:
         return 0
 
-  def isrepetable(self):
+  def isRepetable(self):
     """
        Indique si l'objet est repetable.
        Retourne 1 si le mot-cle facteur self peut etre repete
@@ -63,29 +63,30 @@ class MCList:
     else :
        return 0
 
-  def isoblig(self):
+  def isOblig(self):
      """
      Une MCList n'est jamais obligatoire (meme si le MCFACT qu'elle represente l'est
      """
      return self.data[0].definition.statut=='o'
   
-  def suppentite(self,obj):
+  def suppEntite(self,obj):
       """
         Supprime le mot cle facteur obj de la MCLIST
       """
       if obj not in self:
          return 0
 
-      self.init_modif()
+      self.initModif()
       self.remove(obj)
       CONNECTOR.Emit(self,"supp",obj)
-      self.update_condition_bloc()
+      self.updateConditionBloc()
+      obj.deletePyxbObject()
       obj.supprime()
       self.etape.modified()
-      self.fin_modif()
+      self.finModif()
       return 1
 
-  def addentite(self,obj,pos=None):
+  def addEntite(self,obj,pos=None):
       """
         Ajoute le mot cle facteur obj a la MCLIST a la position pos
         Retourne None si l'ajout est impossible
@@ -94,8 +95,8 @@ class MCList:
          # on est en mode creation d'un motcle
                   raise EficasException(tr("traitement non-prevu"))
 
-      if not self.ajout_possible():
-         self.jdc.appli.affiche_alerte(tr("Erreur"),
+      if not self.ajoutPossible():
+         self.jdc.appli.afficheAlerte(tr("Erreur"),
                                        tr("L'objet %s ne peut pas etre ajoute", obj.nom))
          return None
 
@@ -105,28 +106,28 @@ class MCList:
       if obj.isMCList():
          obj=obj.data[0]
 
-      # Traitement du copier coller seulement 
+      # traitement du copier coller seulement 
       # Les autres cas d'ajout sont traites dans MCFACT
-      self.init_modif()
-      obj.verif_existence_sd()
+      self.initModif()
+      obj.verifExistenceSd()
       obj.reparent(self.parent)
       if pos is None:
          self.append(obj)
       else:
          self.insert(pos,obj)
       CONNECTOR.Emit(self,"add",obj)
-      self.fin_modif()
-      self.update_condition_bloc()
+      self.finModif()
+      self.updateConditionBloc()
       return obj
 
-  def liste_mc_presents(self):
+  def listeMcPresents(self):
     return []
 
-  def update_concept(self,sd):
+  def updateConcept(self,sd):
     for child in self.data :
-        child.update_concept(sd)
+        child.updateConcept(sd)
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
     """ 
         Inputs :
            - sd=concept detruit
@@ -136,9 +137,9 @@ class MCList:
         que de transmettre aux fils
     """
     for child in self.data :
-      child.delete_concept(sd)
+      child.deleteConcept(sd)
 
-  def replace_concept(self,old_sd,sd):
+  def replaceConcept(self,old_sd,sd):
     """
         Inputs :
            - old_sd=concept remplace
@@ -147,26 +148,26 @@ class MCList:
         du concept old_sd
     """
     for child in self.data :
-      child.replace_concept(old_sd,sd)
+      child.replaceConcept(old_sd,sd)
 
-  def get_docu(self):
-    return self.data[0].definition.get_docu()
+  def getDocu(self):
+    return self.data[0].definition.getDocu()
 
-  def get_liste_mc_inconnus(self):
+  def getListeMcInconnus(self):
      """
      Retourne la liste des mots-cles inconnus dans self
      """
      l_mc = []
      for mcfact in self.data :
-        if mcfact.isvalid() : continue
-        l_child = mcfact.get_liste_mc_inconnus()
+        if mcfact.isValid() : continue
+        l_child = mcfact.getListeMcInconnus()
         for mc in l_child:
            l = [self]
            l.extend(mc)
            l_mc.append(l)
      return l_mc
 
-  def verif_condition_regles(self,liste_presents):
+  def verifConditionRegles(self,liste_presents):
     """
         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
         en fonction de la liste des mots-cles presents
@@ -174,23 +175,23 @@ class MCList:
     # Sans objet pour une liste de mots cles facteurs
     return []
 
-  def deep_update_condition_bloc(self):
+  def deepUpdateConditionBloc(self):
      """
         Parcourt l'arborescence des mcobject et realise l'update
-        des blocs conditionnels par appel de la methode update_condition_bloc
+        des blocs conditionnels par appel de la methode updateConditionBloc
      """
-     #print "deep_update_condition_bloc",self
+     #print "deepUpdateConditionBloc",self
      for mcfact in self.data :
-         mcfact.deep_update_condition_bloc()
+         mcfact.deepUpdateConditionBloc()
 
-  def update_condition_bloc(self):
+  def updateConditionBloc(self):
      """
         Propage la mise a jour des conditions au parent.
         Une liste ne fait pas de traitement sur les conditions
      """
-     if self.parent: self.parent.update_condition_bloc()
+     if self.parent: self.parent.updateConditionBloc()
 
-  def verif_condition_bloc(self):
+  def verifConditionBloc(self):
     """ 
         Evalue les conditions de tous les blocs fils possibles 
         (en fonction du catalogue donc de la definition) de self et 
@@ -201,43 +202,43 @@ class MCList:
     # Sans objet pour une liste de mots cles facteurs (a voir !!!)
     return [],[]
 
-  def init_modif(self):
+  def initModif(self):
     """
        Met l'etat de l'objet a modified et propage au parent
        qui vaut None s'il n'existe pas
     """
     self.state = 'modified'
     if self.parent:
-      self.parent.init_modif()
+      self.parent.initModif()
 
-  def fin_modif(self):
+  def finModif(self):
     """
       Methode appelee apres qu'une modification a ete faite afin de declencher
       d'eventuels traitements post-modification
     """
-    #print "fin_modif",self
+    #print "finModif",self
     CONNECTOR.Emit(self,"valid")
     if self.parent:
-      self.parent.fin_modif()
+      self.parent.finModif()
 
-  def get_genealogie_precise(self):
+  def getGenealogiePrecise(self):
      if self.parent: 
-        return self.parent.get_genealogie_precise()
+        return self.parent.getGenealogiePrecise()
      else:
         return []
 
-  def get_genealogie(self):
+  def getGenealogie(self):
      """
          Retourne la liste des noms des ascendants.
          Un objet MCList n'est pas enregistre dans la genealogie.
          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
      """
      if self.parent: 
-        return self.parent.get_genealogie()
+        return self.parent.getGenealogie()
      else:
         return []
 
-  def get_liste_mc_ordonnee_brute(self,liste,dico):
+  def getListeMcOrdonneeBrute(self,liste,dico):
      """
          Retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
          d'une entite composee dont le chemin complet est donne sous forme
@@ -248,21 +249,21 @@ class MCList:
         dico=objet_cata.entites
      return objet_cata.ordre_mc
 
-  def verif_existence_sd(self):
+  def verifExistenceSd(self):
      """
         Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
         avant etape, sinon enleve la reference a ces concepts
      """
      for motcle in self.data :
-         motcle.verif_existence_sd()
+         motcle.verifExistenceSd()
 
-  def get_fr(self):
+  def getFr(self):
      """
          Retourne la chaine d'aide contenue dans le catalogue
          en tenant compte de la langue
      """
      try :
-        return self.data[0].get_fr()
+        return self.data[0].getFr()
      except:
         return ''
 
@@ -272,7 +273,7 @@ class MCList:
      """
      return self
 
-  def update_mc_global(self):
+  def updateMcGlobal(self):
      """
         Met a jour les mots cles globaux enregistres dans l'etape parente
         et dans le jdc parent.
@@ -280,11 +281,11 @@ class MCList:
         la requete a ses fils.
      """
      for motcle in self.data :
-         motcle.update_mc_global()
+         motcle.updateMcGlobal()
 
-  def delete_mc_global(self):
+  def deleteMcGlobal(self):
      for motcle in self.data :
-         motcle.delete_mc_global()
+         motcle.deleteMcGlobal()
 
   #def __del__(self):
   #   print "__del__",self
index ef6955502586d1c9dd6a062babcf4b10d20a128b..13888db54a2dc2d7ae5082e2d7d112bf450d2915 100644 (file)
@@ -57,33 +57,34 @@ from .I_VALIDATOR import ValError,listProto
 class MCSIMP(I_OBJECT.OBJECT):
 
 
-  def isvalid(self,cr='non'):
+  def isValid(self,cr='non'):
       if self.state == 'unchanged':
         return self.valid
       for type_permis in self.definition.type:
           if hasattr(type_permis, "__class__") and type_permis.__class__.__name__ == 'Matrice':
              self.monType=type_permis
              return self.valideMatrice(cr=cr)
-      if self.definition.siValide != None :
+      validite=Validation.V_MCSIMP.MCSIMP.isValid(self,cr=cr)
+      if self.definition.siValide != None and validite:
             self.definition.siValide(self)
-      return Validation.V_MCSIMP.MCSIMP.isvalid(self,cr=cr)
+      return validite 
 
-  def GetNomConcept(self):
+  def getNomConcept(self):
       p=self
       while p.parent :
          try :
-            nomconcept=p.get_sdname()
+            nomconcept=p.getSdname()
             return nomconcept
          except:
             try :
-               nomconcept= p.object.get_sdname()
+               nomconcept= p.object.getSdname()
                return nomconcept
             except :
                pass
          p=p.parent
       return ""
 
-  def GetText(self):
+  def getText(self):
     """
         Retourne le texte a afficher dans l'arbre representant la valeur de l'objet
         pointe par self
@@ -92,20 +93,20 @@ class MCSIMP(I_OBJECT.OBJECT):
     if self.valeur == None : 
       return None
     elif type(self.valeur) == float : 
-      # Traitement d'un flottant isole
+      # traitement d'un flottant isole
       txt = str(self.valeur)
-      clefobj=self.GetNomConcept()
+      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]
     elif type(self.valeur) in (list,tuple) :
       if self.valeur==[] or self.valeur == (): return str(self.valeur)
-      # Traitement des listes
+      # traitement des listes
       txt='('
       sep=''
       for val in self.valeur:
         if type(val) == float : 
-           clefobj=self.GetNomConcept()
+           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]
@@ -134,7 +135,7 @@ class MCSIMP(I_OBJECT.OBJECT):
       if isinstance(val,tuple) and len(self.valeur) == 1 : txt=txt+','
       txt=txt+')'
     else:
-      # Traitement des autres cas
+      # traitement des autres cas
       txt = str(self.valeur)
 
     # txt peut etre une longue chaine sur plusieurs lignes.
@@ -144,19 +145,19 @@ class MCSIMP(I_OBJECT.OBJECT):
     # Pour le moment on retourne la chaine telle que
     return txt
 
-  def getval(self):
+  def getVal(self):
     """ 
        Retourne une chaine de caractere representant la valeur de self 
     """
     val=self.valeur
     if type(val) == float : 
-      clefobj=self.GetNomConcept()
+      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 type(val) != tuple :
       try:
-        return val.get_name()
+        return val.getName()
       except:
         return val
     else :
@@ -164,13 +165,13 @@ class MCSIMP(I_OBJECT.OBJECT):
       s='( '
       for item in val :
         try :
-          s=s+item.get_name()+','
+          s=s+item.getName()+','
         except:
           s=s+repr(item)+','
       s=s+' )'
       return s
 
-  def wait_bool(self):
+  def waitBool(self):
       for typ in self.definition.type:
           try :
             if typ == bool: return True
@@ -178,7 +179,7 @@ class MCSIMP(I_OBJECT.OBJECT):
             pass
       return False
 
-  def wait_co(self):
+  def waitCo(self):
     """
         Methode booleenne qui retourne 1 si l'objet attend un objet ASSD 
         qui n'existe pas encore (type CO()), 0 sinon
@@ -189,7 +190,7 @@ class MCSIMP(I_OBJECT.OBJECT):
            return 1
     return 0
 
-  def wait_assd(self):
+  def waitAssd(self):
     """ 
         Methode booleenne qui retourne 1 si le MCS attend un objet de type ASSD 
         ou derive, 0 sinon
@@ -200,7 +201,7 @@ class MCSIMP(I_OBJECT.OBJECT):
           return 1
     return 0
 
-  def wait_assd_or_geom(self):
+  def waitAssdOrGeom(self):
     """ 
          Retourne 1 si le mot-cle simple attend un objet de type
          assd, ASSD, geom ou GEOM
@@ -212,7 +213,7 @@ class MCSIMP(I_OBJECT.OBJECT):
           return 1
     return 0
 
-  def wait_geom(self):
+  def waitGeom(self):
     """ 
          Retourne 1 si le mot-cle simple attend un objet de type GEOM
          Retourne 0 dans le cas contraire
@@ -223,7 +224,7 @@ class MCSIMP(I_OBJECT.OBJECT):
     return 0
 
 
-  def wait_TXM(self):
+  def waitTxm(self):
     """ 
          Retourne 1 si le mot-cle simple attend un objet de type TXM
          Retourne 0 dans le cas contraire
@@ -232,7 +233,14 @@ class MCSIMP(I_OBJECT.OBJECT):
       if typ == 'TXM' :return 1
     return 0
 
-  def get_liste_valeurs(self):
+  def waitTuple(self):
+    for ss_type in self.definition.type:
+        if repr(ss_type).find('Tuple') != -1 :
+          return 1
+    return 0
+
+
+  def getListeValeurs(self):
     """
     """
     if self.valeur == None:
@@ -244,7 +252,7 @@ class MCSIMP(I_OBJECT.OBJECT):
     else:
       return [self.valeur]
 
-  def isoblig(self):
+  def isOblig(self):
     return self.definition.statut=='o'
 
   def isImmuable(self):
@@ -255,7 +263,7 @@ class MCSIMP(I_OBJECT.OBJECT):
 
 
 
-  def valid_val(self,valeur):
+  def validVal(self,valeur):
       """
         Verifie que la valeur passee en argument (valeur) est valide
         sans modifier la valeur courante 
@@ -278,15 +286,15 @@ class MCSIMP(I_OBJECT.OBJECT):
             valid=0
       return valid,mess
 
-  def valid_valeur(self,new_valeur):
+  def validValeur(self,new_valeur):
       """
         Verifie que la valeur passee en argument (new_valeur) est valide
-        sans modifier la valeur courante (evite d'utiliser set_valeur et est plus performant)
+        sans modifier la valeur courante (evite d'utiliser setValeur et est plus performant)
       """
-      validite,mess=self.valid_val(new_valeur)
+      validite,mess=self.validVal(new_valeur)
       return validite
 
-  def valid_valeur_partielle(self,new_valeur):
+  def validValeurPartielle(self,new_valeur):
       """
         Verifie que la valeur passee en argument (new_valeur) est une liste partiellement valide
         sans modifier la valeur courante du mot cle
@@ -298,43 +306,44 @@ class MCSIMP(I_OBJECT.OBJECT):
               self.intoProto.adapt(val)
               #on ne verifie pas la cardinalite
               if self.definition.validators:
-                  validite=self.definition.validators.valide_liste_partielle(new_valeur)
+                  validite=self.definition.validators.valideListePartielle(new_valeur)
       except ValError as e:
           validite=0
 
       return validite
 
-  def update_condition_bloc(self):
+  def updateConditionBloc(self):
       """ Met a jour les blocs conditionnels dependant du mot cle simple self
       """
       if self.definition.position == 'global' : 
-         self.etape.deep_update_condition_bloc()
+         self.etape.deepUpdateConditionBloc()
       elif self.definition.position == 'global_jdc' :
-         self.jdc.deep_update_condition_bloc()
+         self.jdc.deepUpdateConditionBloc()
       else:
-         self.parent.update_condition_bloc()
+         self.parent.updateConditionBloc()
 
-  def set_valeur(self,new_valeur,evaluation='oui'):
-        #print "set_valeur",new_valeur
-        self.init_modif()
+  def setValeur(self,new_valeur,evaluation='oui'):
+        print ("setValeur Ihm/IMCSIMP ",new_valeur)
+        self.initModif()
         self.valeur = new_valeur
         self.val = new_valeur
-        self.update_condition_bloc()
+        self.setValeurObjPyxb(new_valeur)
+        self.updateConditionBloc()
         self.etape.modified()
-        self.fin_modif()
+        self.finModif()
         return 1
 
-  def eval_valeur(self,new_valeur):
+  def evalValeur(self,new_valeur):
     """
         Essaie d'evaluer new_valeur comme une SD, une declaration Python 
         ou un EVAL: Retourne la valeur evaluee (ou None) et le test de reussite (1 ou 0)
     """
-    sd = self.jdc.get_sd_avant_etape(new_valeur,self.etape)
-    #sd = self.jdc.get_contexte_avant(self.etape).get(new_valeur,None)
+    sd = self.jdc.getSdAvantEtape(new_valeur,self.etape)
+    #sd = self.jdc.getContexteAvant(self.etape).get(new_valeur,None)
     #print sd
     if sd is not None:
       return sd,1
-    lsd = self.jdc.cherche_list_avant(self.etape,new_valeur) 
+    lsd = self.jdc.chercheListAvant(self.etape,new_valeur) 
     if lsd :
       return lsd,1
     else:
@@ -345,7 +354,7 @@ class MCSIMP(I_OBJECT.OBJECT):
         objet = eval(new_valeur,d)
         return objet,1
       except Exception:
-        itparam=self.cherche_item_parametre(new_valeur)
+        itparam=self.chercheItemParametre(new_valeur)
         if itparam:
              return itparam,1
         try :
@@ -355,33 +364,33 @@ class MCSIMP(I_OBJECT.OBJECT):
         if CONTEXT.debug : traceback.print_exc()
         return None,0
 
-  def eval_val(self,new_valeur):
+  def evalVal(self,new_valeur):
     """
-       Tente d'evaluer new_valeur comme un objet du jdc (par appel a eval_val_item)
+       Tente d'evaluer new_valeur comme un objet du jdc (par appel a evalValItem)
        ou comme une liste de ces memes objets
        Si new_valeur contient au moins un separateur (,), tente l'evaluation sur
        la chaine splittee
     """
     if new_valeur in ('True','False') and 'TXM' in self.definition.type  :
-       valeur=self.eval_val_item(str(new_valeur))
+       valeur=self.evalValItem(str(new_valeur))
        return new_valeur
     if type(new_valeur) in (list,tuple):
        valeurretour=[]
        for item in new_valeur :
-          valeurretour.append(self.eval_val_item(item))
+          valeurretour.append(self.evalValItem(item))
        return valeurretour
     else:
-       valeur=self.eval_val_item(new_valeur)
+       valeur=self.evalValItem(new_valeur)
        return valeur
 
-  def eval_val_item(self,new_valeur):
+  def evalValItem(self,new_valeur):
     """
        Tente d'evaluer new_valeur comme un concept, un parametre, un objet Python
        Si c'est impossible retourne new_valeur inchange
        argument new_valeur : string (nom de concept, de parametre, expression ou simple chaine)
     """
     if self.etape and self.etape.parent:
-       valeur=self.etape.parent.eval_in_context(new_valeur,self.etape)
+       valeur=self.etape.parent.evalInContext(new_valeur,self.etape)
        return valeur
     else:
        try :
@@ -392,30 +401,30 @@ class MCSIMP(I_OBJECT.OBJECT):
            return new_valeur
            pass
 
-  def cherche_item_parametre (self,new_valeur):
+  def chercheItemParametre (self,new_valeur):
         try:
           nomparam=new_valeur[0:new_valeur.find("[")]
           indice=new_valeur[new_valeur.find(u"[")+1:new_valeur.find(u"]")]
           for p in self.jdc.params:
              if p.nom == nomparam :
-                if int(indice) < len(p.get_valeurs()):
+                if int(indice) < len(p.getValeurs()):
                    itparam=parametre.ITEM_PARAMETRE(p,int(indice))
                    return itparam
           return None
         except:
           return None
 
-  def update_concept(self,sd):
+  def updateConcept(self,sd):
     if type(self.valeur) in (list,tuple) :
        if sd in self.valeur:
-         self.init_modif()
-         self.fin_modif()
+         self.initModif()
+         self.finModif()
     else:
        if sd == self.valeur:
-         self.init_modif()
-         self.fin_modif()
+         self.initModif()
+         self.finModif()
 
-  def delete_concept(self,sd):
+  def deleteConcept(self,sd):
     """ 
         Inputs :
            - sd=concept detruit
@@ -426,21 +435,21 @@ class MCSIMP(I_OBJECT.OBJECT):
     """
     if type(self.valeur) == tuple :
       if sd in self.valeur:
-        self.init_modif()
+        self.initModif()
         self.valeur=list(self.valeur)
         self.valeur.remove(sd)
-        self.fin_modif()
+        self.finModif()
     elif type(self.valeur) == list:
       if sd in self.valeur:
-        self.init_modif()
+        self.initModif()
         self.valeur.remove(sd)
-        self.fin_modif()
+        self.finModif()
     else:
       if self.valeur == sd:
-        self.init_modif()
+        self.initModif()
         self.valeur=None
         self.val=None
-        self.fin_modif()
+        self.finModif()
     # Glut Horrible pour les matrices ???
     if sd.__class__.__name__== "variable":
        for type_permis in self.definition.type:
@@ -448,10 +457,10 @@ class MCSIMP(I_OBJECT.OBJECT):
             # a voir en python 3
                if type_permis.__class__.__name__ == 'Matrice' :
                    self.state="changed"
-                   self.isvalid()
+                   self.isValid()
                   
 
-  def replace_concept(self,old_sd,sd):
+  def replaceConcept(self,old_sd,sd):
     """
         Inputs :
            - old_sd=concept remplace
@@ -460,39 +469,39 @@ class MCSIMP(I_OBJECT.OBJECT):
         Met a jour la valeur du mot cle simple suite au remplacement 
         du concept old_sd
     """
-    #print "replace_concept",old_sd,sd
+    #print "replaceConcept",old_sd,sd
     if type(self.valeur) == tuple :
       if old_sd in self.valeur:
-        self.init_modif()
+        self.initModif()
         self.valeur=list(self.valeur)
         i=self.valeur.index(old_sd)
         self.valeur[i]=sd
-        self.fin_modif()
+        self.finModif()
     elif type(self.valeur) == list:
       if old_sd in self.valeur:
-        self.init_modif()
+        self.initModif()
         i=self.valeur.index(old_sd)
         self.valeur[i]=sd
-        self.fin_modif()
+        self.finModif()
     else:
       if self.valeur == old_sd:
-        self.init_modif()
+        self.initModif()
         self.valeur=sd
         self.val=sd
-        self.fin_modif()
+        self.finModif()
 
-  def set_valeur_co(self,nom_co):
+  def setValeurCo(self,nom_co):
       """
           Affecte a self l'objet de type CO et de nom nom_co
       """
-      #print "set_valeur_co",nom_co
+      #print "setValeurCo",nom_co
       step=self.etape.parent
       if nom_co == None or nom_co == '':
          new_objet=None
       else:
          # Avant de creer un concept il faut s'assurer du contexte : step 
          # courant
-         sd= step.get_sd_autour_etape(nom_co,self.etape,avec='oui')
+         sd= step.getSdAutourEtape(nom_co,self.etape,avec='oui')
          if sd:
             # Si un concept du meme nom existe deja dans la portee de l'etape
             # on ne cree pas le concept
@@ -502,84 +511,84 @@ class MCSIMP(I_OBJECT.OBJECT):
          # contextes en mode editeur
          # Normalement la methode  du Noyau doit etre surchargee
          # On declare l'etape du mot cle comme etape courante pour NommerSdprod
-         cs= CONTEXT.get_current_step()
-         CONTEXT.unset_current_step()
-         CONTEXT.set_current_step(step)
-         step.set_etape_context(self.etape)
+         cs= CONTEXT.getCurrentStep()
+         CONTEXT.unsetCurrentStep()
+         CONTEXT.setCurrentStep(step)
+         step.setEtapeContext(self.etape)
          new_objet = Accas.CO(nom_co)
-         CONTEXT.unset_current_step()
-         CONTEXT.set_current_step(cs)
-      self.init_modif()
+         CONTEXT.unsetCurrentStep()
+         CONTEXT.setCurrentStep(cs)
+      self.initModif()
       self.valeur = new_objet
       self.val = new_objet
       # On force l'enregistrement de new_objet en tant que concept produit 
-      # de la macro en appelant get_type_produit avec force=1
-      self.etape.get_type_produit(force=1)
-      self.fin_modif()
-      step.reset_context()
-      #print "set_valeur_co",new_objet
+      # de la macro en appelant getType_produit avec force=1
+      self.etape.getType_produit(force=1)
+      self.finModif()
+      step.resetContext()
+      #print "setValeurCo",new_objet
       return 1,tr("Concept cree")
         
-  def verif_existence_sd(self):
+  def verifExistenceSd(self):
      """
         Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
         avant etape, sinon enleve la referea ces concepts
      """
-     #print "verif_existence_sd"
+     #print "verifExistenceSd"
      # Attention : possible probleme avec include
      # A priori il n'y a pas de raison de retirer les concepts non existants
      # avant etape. En fait il s'agit uniquement eventuellement de ceux crees par une macro
-     l_sd_avant_etape = list(self.jdc.get_contexte_avant(self.etape).values())  
+     l_sd_avant_etape = list(self.jdc.getContexteAvant(self.etape).values())  
      if type(self.valeur) in (tuple,list) :
        l=[]
        for sd in self.valeur:
          if isinstance(sd,ASSD) :
-            if sd in l_sd_avant_etape or self.etape.get_sdprods(sd.nom) is sd:
+            if sd in l_sd_avant_etape or self.etape.getSdprods(sd.nom) is sd:
                l.append(sd)
          else:
             l.append(sd)
        if len(l) < len(self.valeur):
-          self.init_modif()
+          self.initModif()
           self.valeur=tuple(l)
-          self.fin_modif()
+          self.finModif()
      else:
        if isinstance(self.valeur,ASSD) :
-          if self.valeur not in l_sd_avant_etape and self.etape.get_sdprods(self.valeur.nom) is None:
-             self.init_modif()
+          if self.valeur not in l_sd_avant_etape and self.etape.getSdprods(self.valeur.nom) is None:
+             self.initModif()
              self.valeur = None
-             self.fin_modif()
+             self.finModif()
  
-  def get_min_max(self):
+  def getMinMax(self):
      """
      Retourne les valeurs min et max admissibles pour la valeur de self
      """
      return self.definition.min,self.definition.max
 
 
-  def get_type(self):
+  def getType(self):
      """
      Retourne le type attendu par le mot-cle simple
      """
      return self.definition.type
 
-  def delete_mc_global(self):
+  def deleteMcGlobal(self):
       """ Retire self des declarations globales
       """
       if self.definition.position == 'global' : 
-         etape = self.get_etape()
+         etape = self.getEtape()
          if etape :
             del etape.mc_globaux[self.nom]
       elif self.definition.position == 'global_jdc' :
          del self.jdc.mc_globaux[self.nom]
 
-  def update_mc_global(self):
+  def updateMcGlobal(self):
      """
         Met a jour les mots cles globaux enregistres dans l'etape parente
         et dans le jdc parent.
         Un mot cle simple peut etre global. 
      """
      if self.definition.position == 'global' :
-        etape = self.get_etape()
+        etape = self.getEtape()
         if etape :
            etape.mc_globaux[self.nom]=self
      elif self.definition.position == 'global_jdc' :
@@ -587,12 +596,12 @@ class MCSIMP(I_OBJECT.OBJECT):
            self.jdc.mc_globaux[self.nom]=self
 
   def nbrColonnes(self):
-     genea = self.get_genealogie()
+     genea = self.getGenealogie()
      if "VALE_C" in genea and "DEFI_FONCTION" in genea : return 3
      if "VALE" in genea and "DEFI_FONCTION" in genea : return 2
      return 0
 
-  def valide_item(self,item):
+  def valideItem(self,item):
       """Valide un item isole. Cet item est candidata l'ajout a la liste existante"""
       valid=1
       try:
@@ -602,13 +611,13 @@ class MCSIMP(I_OBJECT.OBJECT):
           self.intoProto.adapt(item)
           #on ne verifie pas la cardinalite
           if self.definition.validators:
-              valid=self.definition.validators.verif_item(item)
+              valid=self.definition.validators.verifItem(item)
       except ValError as e:
           #traceback.print_exc()
           valid=0
       return valid
 
-  def verif_type(self,item):
+  def verifType(self,item):
       """Verifie le type d'un item de liste"""
       try:
           #on verifie le type
@@ -617,7 +626,7 @@ class MCSIMP(I_OBJECT.OBJECT):
           self.intoProto.adapt(item)
           #on ne verifie pas la cardinalite mais on verifie les validateurs
           if self.definition.validators:
-              valid=self.definition.validators.verif_item(item)
+              valid=self.definition.validators.verifItem(item)
           comment=""
           valid=1
       except ValError as e:
@@ -629,7 +638,7 @@ class MCSIMP(I_OBJECT.OBJECT):
   def valideMatrice(self,cr):
        #Attention, la matrice contient comme dernier tuple l ordre des variables
        if self.valideEnteteMatrice()==False :
-           self.set_valid(0)
+           self.setValid(0)
            if cr == "oui" : self.cr.fatal(tr("La matrice n'a pas le bon entete"))
            return 0
        if self.monType.methodeCalculTaille != None :
@@ -643,7 +652,7 @@ class MCSIMP(I_OBJECT.OBJECT):
                   if len(self.valeur[i])!= self.monType.nbCols:
                      ok=0
            if ok: 
-              self.set_valid(1)
+              self.setValid(1)
               return 1 
        except :
        #else :
@@ -651,29 +660,29 @@ class MCSIMP(I_OBJECT.OBJECT):
        if cr == 'oui' :
              self.cr.fatal(tr("La matrice n'est pas une matrice %(n_lign)d sur %(n_col)d", \
              {'n_lign': self.monType.nbLigs, 'n_col': self.monType.nbCols}))
-       self.set_valid(0)
+       self.setValid(0)
        return 0
 
 
-  def NbDeVariables(self):
-       listeVariables=self.jdc.get_variables(self.etape)
+  def nbDeVariables(self):
+       listeVariables=self.jdc.getVariables(self.etape)
        self.monType.nbLigs=len(listeVariables)
        self.monType.nbCols=len(listeVariables)
       
   def valideEnteteMatrice(self):
-      if self.jdc.get_distributions(self.etape) == () or self.valeur == None : return 0
-      if self.jdc.get_distributions(self.etape) != self.valeur[0] : return 0
+      if self.jdc.getDistributions(self.etape) == () or self.valeur == None : return 0
+      if self.jdc.getDistributions(self.etape) != self.valeur[0] : return 0
       return 1
      
   def changeEnteteMatrice(self):
-      a=[self.jdc.get_distributions(self.etape),]
+      a=[self.jdc.getDistributions(self.etape),]
       for t in self.valeur[1:]:
          a.append(t)
       self.valeur=a
 
 
-  def NbDeDistributions(self):
-       listeVariables=self.jdc.get_distributions(self.etape)
+  def nNbDeDistributions(self):
+       listeVariables=self.jdc.getDistributions(self.etape)
        self.monType.nbLigs=len(listeVariables)
        self.monType.nbCols=len(listeVariables)
       
@@ -683,21 +692,21 @@ class MCSIMP(I_OBJECT.OBJECT):
 # Elles doivent etre reintegrees des que possible
 
 
-  def verif_typeihm(self,val,cr='non'):
+  def verifTypeIhm(self,val,cr='non'):
       try :
          val.eval()
          return 1
       except :
          traceback.print_exc()
          pass
-      return self.verif_type(val,cr)
+      return self.verifType(val,cr)
 
-  def verif_typeliste(self,val,cr='non') :
+  def verifTypeliste(self,val,cr='non') :
       verif=0
       for v in val :
-        verif=verif+self.verif_typeihm(v,cr)
+        verif=verif+self.verifTypeIhm(v,cr)
       return verif
 
-  def init_modif_up(self):
-    Validation.V_MCSIMP.MCSIMP.init_modif_up(self)
+  def initModifUp(self):
+    Validation.V_MCSIMP.MCSIMP.initModifUp(self)
     CONNECTOR.Emit(self,"valid")
index 37605b3a2621d9e40e7375455e78f1608c9d1996..1013aaf3c39b7d1eba1474fd79a51b57f8704b42 100644 (file)
@@ -34,7 +34,7 @@ class OBJECT:
     """
     return 0
 
-  def get_regles(self):
+  def getRegles(self):
     """ 
        Retourne les regles de self 
     """
@@ -45,59 +45,59 @@ class OBJECT:
     else :
       return []
 
-  def init_modif(self):
+  def initModif(self):
     """
        Met l'etat de l'objet a modified et propage au parent
        qui vaut None s'il n'existe pas
     """
     self.state = 'modified'
     if self.parent:
-      self.parent.init_modif()
+      self.parent.initModif()
 
-  def fin_modif(self):
+  def finModif(self):
       """
       Methode appelee apres qu'une modification a ete faite afin de declencher
       d'eventuels traitements post-modification
       """
-      #print "fin_modif",self
+      #print "finModif",self
       # pour les objets autres que les commandes, aucun traitement specifique 
       # on remonte l'info de fin de modif au parent
       CONNECTOR.Emit(self,"valid")
       if self.parent:
-        self.parent.fin_modif()
+        self.parent.finModif()
 
-  def isrepetable(self):
+  def isRepetable(self):
     """
          Indique si l'objet est repetable
     """
     return 0
 
-  def liste_mc_presents(self):
+  def listeMcPresents(self):
     """
          Retourne la liste des noms des mots cles presents
     """
     return []
 
-  def get_docu(self):
-    return self.definition.get_docu()
+  def getDocu(self):
+    return self.definition.getDocu()
 
-  def get_liste_mc_inconnus(self):
+  def getListeMcInconnus(self):
      """
      Retourne la liste des mots-cles inconnus dans self
      """
      return []
 
-  def verif_condition_regles(self,liste_presents):
+  def verifConditionRegles(self,liste_presents):
     """ 
         Retourne la liste des mots-cles a rajouter pour satisfaire les regles
         en fonction de la liste des mots-cles presents 
     """
     liste=[]
     for regle in self.definition.regles:
-        liste=regle.verif_condition_regle(liste,liste_presents)
+        liste=regle.verifConditionRegle(liste,liste_presents)
     return liste
 
-  def verif_condition_bloc(self):
+  def verifConditionBloc(self):
     """ 
         Evalue les conditions de tous les blocs fils possibles 
         (en fonction du catalogue donc de la definition) de self et
@@ -107,27 +107,27 @@ class OBJECT:
     """
     return [],[]
 
-  def get_genealogie_precise(self):
+  def getGenealogiePrecise(self):
     if self.parent:
-       l=self.parent.get_genealogie_precise()
+       l=self.parent.getGenealogiePrecise()
        l.append(self.nom.strip())
        return l
     else:
        return [self.nom.strip()]
 
-  def get_genealogie(self):
+  def getGenealogie(self):
     """ 
         Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC
         ou ETAPE) de self jusqu'au premier objet etape rencontre
     """
     if self.parent:
-       l=self.parent.get_genealogie()
+       l=self.parent.getGenealogie()
        l.append(self.nom.strip())
        return l
     else:
        return [self.nom.strip()]
 
-  def get_fr(self):
+  def getFr(self):
      """
          Retourne la chaine d'aide contenue dans le catalogue
          en tenant compte de la langue
@@ -144,7 +144,7 @@ class OBJECT:
         except :
             return ''
 
-  def update_concept(self,sd):
+  def updateConcept(self,sd):
      pass
 
   def normalize(self):
@@ -154,10 +154,10 @@ class OBJECT:
      """
      return self
 
-  def delete_mc_global(self):
+  def deleteMcGlobal(self):
      return
 
-  def update_mc_global(self):
+  def updateMcGlobal(self):
      return
 
   #def __del__(self):
index 36824d553f2575b5cf59c993b7e89f6643fbe1fe..b4a43e469e2bea0ed11925dfb20d7ce5695d9e4f 100644 (file)
@@ -24,9 +24,9 @@ from __future__ import absolute_import
 from . import I_REGLE
 
 class PRESENT_ABSENT(I_REGLE.REGLE):
-  def purge_liste(self,liste_a_purger,liste_mc_presents):
+  def purgeListe(self,liste_a_purger,listeMcPresents):
      regle_active=0
-     if self.mcs[0] in liste_mc_presents:regle_active=1
+     if self.mcs[0] in listeMcPresents:regle_active=1
      if not regle_active : return liste_a_purger
 
      # Il ne faut pas purger le mot cle present
index 606d00e376e32d4694ca79f6286928b1e4ba7587..a6f1ba06cf1ed8a35165ee4ee6ebbf738263feb8 100644 (file)
@@ -24,7 +24,7 @@ from __future__ import absolute_import
 from . import I_REGLE
 
 class PRESENT_PRESENT(I_REGLE.REGLE):
-  def verif_condition_regle(self,liste,l_mc_presents):
+  def verifConditionRegle(self,liste,l_mc_presents):
     mc0=self.mcs[0]
     for mc_present in l_mc_presents:
       if mc_present == mc0 :
index 7751f103822d09e7578187d798b7b0033ec1f0e1..4b46b5921159600f29b87cd4718f005aff02b55c 100644 (file)
@@ -21,7 +21,7 @@ from __future__ import absolute_import
 from . import I_ETAPE
 
 
-# import rajoutes suite a l'ajout de Build_sd --> a resorber
+# import rajoutes suite a l'ajout de buildSd --> a resorber
 import sys
 import traceback,types
 import Noyau
@@ -30,10 +30,10 @@ from Noyau.N_Exception import AsException
 from Extensions.eficas_exception import EficasException
 
 class PROC_ETAPE(I_ETAPE.ETAPE):
-   def get_sdname(self):
+   def getSdname(self):
       return ""
 
-   def get_sdprods(self,nom_sd):
+   def getSdprods(self,nom_sd):
       """ 
          Fonction : retourne le concept produit par l etape de nom nom_sd
          s il existe sinon None
@@ -41,14 +41,14 @@ class PROC_ETAPE(I_ETAPE.ETAPE):
       """
       return None
 
-   def supprime_sdprods(self):
+   def supprimeSdProds(self):
       """
          Fonction: Lors d'une destruction d'etape, detruit tous les concepts produits
          Une procedure n'en a aucun
       """
       return
 
-   def delete_concept(self,sd):
+   def deleteConcept(self,sd):
       """
           Fonction : Mettre a jour les mots cles de l etape 
           suite a la disparition du concept sd
@@ -58,10 +58,10 @@ class PROC_ETAPE(I_ETAPE.ETAPE):
           Inputs :
              - sd=concept detruit
       """
-      for child in self.mc_liste :
-        child.delete_concept(sd)
+      for child in self.mcListe :
+        child.deleteConcept(sd)
 
-   def replace_concept(self,old_sd,sd):
+   def replaceConcept(self,old_sd,sd):
       """
           Fonction : Mettre a jour les mots cles de l etape
           suite au remplacement du concept old_sd
@@ -70,17 +70,17 @@ class PROC_ETAPE(I_ETAPE.ETAPE):
              - old_sd=concept remplace
              - sd=nouveau concept
       """
-      for child in self.mc_liste :
-        child.replace_concept(old_sd,sd)
+      for child in self.mcListe :
+        child.replaceConcept(old_sd,sd)
 
 #ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau
-   def Build_sd(self):
+   def buildSd(self):
       """
            Methode de Noyau surchargee pour poursuivre malgre tout
            si une erreur se produit pendant la creation du concept produit
       """
       try:
-         sd=Noyau.N_PROC_ETAPE.PROC_ETAPE.Build_sd(self)
+         sd=Noyau.N_PROC_ETAPE.PROC_ETAPE.buildSd(self)
       except AsException  :
          # Une erreur s'est produite lors de la construction du concept
          # Comme on est dans EFICAS, on essaie de poursuivre quand meme
index 4bb4161dcd4f03497e89b403d4a20f29557f505b..56e1febfd2c9bc2b327495e1f89a4e333e209fdc 100644 (file)
@@ -23,13 +23,13 @@ from __future__ import absolute_import
 
 class REGLE:
 
-  def gettext(self):
+  def getText(self):
     text = self.__class__.__name__+ ' :\n'
     for mc in self.mcs :
       text = text + '\t' + mc.strip() + '\n'
     return text
 
-  def purge_liste(self,liste_a_purger,liste_mc_presents):
+  def purgeListe(self,liste_a_purger,listeMcPresents):
     """
          Cette methode doit retirer de la liste liste_a_purger
          les elements qui ne doivent plus apparaitre en fonction du contexte
@@ -37,13 +37,13 @@ class REGLE:
     # Dans le cas general on ne touche pas a la liste
     return liste_a_purger
 
-  def has_operande(self,nom):
+  def hasOperande(self,nom):
     # On peut faire aussi try:self.mcs.index(nom);return 1;except:return 0
     for mc in self.mcs:
       if mc==nom : return 1
     return 0
 
-  def verif_condition_regle(self,liste,l_mc_presents):
+  def verifConditionRegle(self,liste,l_mc_presents):
     return []
 
 
@@ -51,7 +51,7 @@ class REGLE:
       import xml.etree.ElementTree as ET
       regleXml=ET.SubElement(root,'regles')
       txt=""
-      for mot in self.gettext().split('\n'):
+      for mot in self.getText().split('\n'):
           mot.replace(' ','') 
           txt=txt + mot + " "
       regleXml.text= txt
index 3698a0df212315243426bacf35cf8e30fd10599f..6581261943e97846da870fa4bbc34e5c61ef47e7 100644 (file)
@@ -25,9 +25,9 @@ from . import I_REGLE
 
 class UN_PARMI(I_REGLE.REGLE):
 
-  def purge_liste(self,liste_a_purger,liste_mc_presents):
+  def purgeListe(self,liste_a_purger,listeMcPresents):
      regle_active=0
-     for mc_present in liste_mc_presents:
+     for mc_present in listeMcPresents:
         if mc_present in self.mcs:
            regle_active=1
            break
@@ -36,7 +36,7 @@ class UN_PARMI(I_REGLE.REGLE):
      # Si un des mots cles est present, on les enleve tous
      # sauf celui ci
      for mc in self.mcs:
-        if mc in liste_a_purger and mc not in liste_mc_presents:
+        if mc in liste_a_purger and mc not in listeMcPresents:
            liste_a_purger.remove(mc)
      return liste_a_purger
 
index 594c037047939ff4daa0a211418632a1cb09d6a4..604feffcba0254105de3dcd1085f830bf8781885 100644 (file)
@@ -22,13 +22,13 @@ from __future__ import absolute_import
 from Noyau.N_VALIDATOR import *
 
 class Compulsory(Compulsory):
-      def has_into(self):
+      def hasInto(self):
           return 0
-      def valide_liste_partielle(self,liste_courante=None):
+      def valideListePartielle(self,liste_courante=None):
           return 1
 
 class OrdList(OrdList):
-      def valide_liste_partielle(self,liste_courante=None):
+      def valideListePartielle(self,liste_courante=None):
           """
            Methode de validation de liste partielle pour le validateur OrdList
           """
diff --git a/InterfaceQT4/aiemonWidgetPlusieursBase.py b/InterfaceQT4/aiemonWidgetPlusieursBase.py
new file mode 100644 (file)
index 0000000..0e79487
--- /dev/null
@@ -0,0 +1,300 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import range
+   from builtins import object
+except : pass
+
+import types,os,sys
+
+from six.moves import range
+from PyQt5.QtGui     import QIcon 
+from PyQt5.QtWidgets import QApplication, QMessageBox
+from PyQt5.QtCore    import QTimer, QSize, Qt
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from InterfaceQT4.feuille                import Feuille
+from UiQT5.desWidgetPlusieursBase        import Ui_WidgetPlusieursBase 
+from InterfaceQT4.politiquesValidation   import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie               import SaisieValeur
+from InterfaceQT4.gereListe              import GereListe
+from InterfaceQT4.gereListe              import GerePlie
+from InterfaceQT4.gereListe              import LECustom
+
+dicoLongueur={2:95,3:125,4:154,5:183,6:210,float('inf'):210}
+hauteurMax=253
+
+class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie):
+
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        #print "MonWidgetPlusieursBase", nom
+        self.inFocusOutEvent=False
+        self.nomLine="lineEditVal"
+        self.inInit=True
+        self.indexDernierLabel=0
+        self.numLineEditEnCours=0
+        self.listeAffichageWidget=[]
+        Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        GereListe.__init__(self)
+        self.gereIconePlier()
+        self.BSelectFichier.clicked.connect(self.selectInFile)
+
+        if sys.platform[0:5]!="linux":
+          repIcon=self.node.editor.appliEficas.repIcon
+          fichier=os.path.join(repIcon, 'arrow_up.png')
+          icon = QIcon(fichier)
+          self.RBHaut.setIcon(icon)
+          self.RBHaut.setIconSize(QSize(32, 32))
+          fichier2=os.path.join(repIcon, 'arrow_down.png')
+          icon2 = QIcon(fichier2)
+          self.RBBas.setIcon(icon2)
+          fichier3=os.path.join(repIcon, 'file-explorer.png')
+          icon3 = QIcon(fichier2)
+          self.BSelectFichier.setIcon(icon3)
+          self.BSelectFichier.setIconSize(QSize(32, 32))
+        icon=QIcon(self.repIcon+"/MoinsBleu.png")
+        self.RBMoins.setIcon(icon)
+        icon=QIcon(self.repIcon+"/PlusBleu.png")
+        self.RBPlus.setIcon(icon)
+        icon=QIcon(self.repIcon+"/verre-loupe-icone-6087-64.png")
+        self.RBVoisListe.setIcon(icon)
+
+
+        self.listeValeursCourantes=self.node.item.getListeValeurs()
+        if self.monSimpDef.max != "**"  and self.monSimpDef.max < 7: 
+           hauteurMax=dicoLongueur[self.monSimpDef.max]
+        else :
+           hauteurMax=220
+        #   if self.monSimpDef.max == self.monSimpDef.min : self.setMaximumHeight(hauteur)
+        self.resize(self.width(),hauteurMax)
+        self.setMinimumHeight(hauteurMax)
+        self.finCommentaireListe()
+        self.parentQt.commandesLayout.insertWidget(-1,self)
+        self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        self.AAfficher=self.lineEditVal1
+        self.inInit=False
+        # PNPN a completer __ si tuple le type des tuples sinon le tuple
+        self.monCommentaireLabel.setText(self.finCommentaireListe())
+
+
+  def setValeurs(self):
+       self.vScrollBar = self.scrollArea.verticalScrollBar()
+       self.politique=PolitiquePlusieurs(self.node,self.editor)
+       # construction du min de valeur a entrer
+       if self.monSimpDef.max == "**"  : aConstruire=7
+       elif self.monSimpDef.max == float('inf'): aConstruire=7
+       else                            : aConstruire=self.monSimpDef.max
+
+       for i in range(1,aConstruire):
+           self.ajoutLineEdit()
+       QApplication.processEvents()
+       self.scrollArea.ensureWidgetVisible(self.lineEditVal1)
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
+       index=1
+       for valeur in self.listeValeursCourantes :
+           val=self.politique.getValeurTexte(valeur)
+           nomLineEdit="lineEditVal"+str(index)
+           if hasattr(self,nomLineEdit) : 
+              courant=getattr(self,nomLineEdit)
+              if 'R' in self.objSimp.definition.type and str(val) != repr(val) :  courant.setText(repr(val))
+              else                     :  courant.setText(str(val))
+           else :
+              self.ajoutLineEdit(val)
+           index=index+1
+       # ajout d'une ligne vide ou affichage commentaire
+       if self.indexDernierLabel < self.monSimpDef.max  : self.ajoutLineEdit()
+       else : self.scrollArea.setToolTip('nb max de valeurs atteint')
+       #self.adjustSize()
+       #self.vScrollBar.triggerAction(QScrollBar.SliderToMinimum)
+       
+
+  def ajoutLineEdit(self,valeur=None,):
+      self.indexDernierLabel=self.indexDernierLabel+1
+      nomLineEdit="lineEditVal"+str(self.indexDernierLabel)
+      if hasattr(self,nomLineEdit) : 
+         self.indexDernierLabel=self.indexDernierLabel-1
+         return
+      nouveauLE = LECustom(self.scrollArea,self,self.indexDernierLabel)
+      self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+      nouveauLE.setText("")
+      if self.indexDernierLabel % 2 == 1 : nouveauLE.setStyleSheet("background:rgb(210,210,210)")
+      else :                              nouveauLE.setStyleSheet("background:rgb(235,235,235)")
+      nouveauLE.setFrame(False)
+      nouveauLE.returnPressed.connect(self.changeValeur)
+
+      setattr(self,nomLineEdit,nouveauLE)
+      self.listeAffichageWidget.append(nouveauLE)
+      self.etablitOrdre()
+      if valeur != None : nouveauLE.setText(str(valeur))
+      # deux lignes pour que le ensureVisible fonctionne
+      self.estVisible=nouveauLE
+      if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
+
+  def etablitOrdre(self):
+      i=0
+      while(i +1 < len(self.listeAffichageWidget)):
+         self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
+         self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+         i=i+1
+      # si on boucle on perd l'ordre
+
+
+  def rendVisibleLigne(self):
+      QApplication.processEvents()
+      self.estVisible.setFocus()
+      self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
+      
+
+  def finCommentaire(self):
+      return self.finCommentaireListe()
+
+  def ajout1Valeur(self,valeur=None):
+        if valeur == None : return
+        liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
+        if validite == 0 : return
+        if liste ==[]    : return
+        listeVal=[]
+        for valeur in self.listeValeursCourantes : listeVal.append(valeur)
+        validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
+        if (comm2 != "" and comm != None) : return comm2
+        if validite : 
+           self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
+           if len(self.listeValeursCourantes) > self.monSimpDef.min :
+              self.node.item.setValeur(self.listeValeursCourantes)
+              self.reaffiche()
+           return None
+        else :
+           return(comm2+" "+comm)
+        
+  def reaffiche(self):
+      # A priori, on ne fait rien
+      pass
+
+                
+  def ajoutNValeur(self,liste):
+  #----------------------------
+  # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+  # car alors le temps de verification devient prohibitif  reconstructu=ion et verification a 
+  # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+           
+        listeFormatee=list(liste)
+
+        min,max=self.node.item.getMinMax()
+        if self.objSimp.valeur == None : listeComplete=listeFormatee
+        else : listeComplete =self.objSimp.valeur + listeFormatee
+
+        if len(listeComplete) > max : 
+           texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+           self.editor.afficheInfos(texte,Qt.red)
+           return
+
+        validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+        if not validite : 
+           self.editor.affiche_infos(texte,Qt.red)
+           return
+
+        # on calcule le dernier lineedit rempli avant de changer la valeur
+        if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+        else : indexDernierRempli=0
+
+        self.politique.recordValeur(listeComplete)
+
+        indexDernierRempli=0
+        while ( indexDernierRempli < len(liste) ) :
+         texte=liste[indexDernierRempli]
+         if indexDernierRempli < self.indexDernierLabel:
+            nomLineEdit="lineEditVal"+str(indexDernierRempli+1)
+            courant=getattr(self,nomLineEdit)
+            courant.setText(str(texte))
+         else : 
+            self.ajoutLineEdit(texte)
+         indexDernierRempli = indexDernierRempli + 1
+        
+
+  def changeValeur(self,changeDePlace=True,oblige=False):
+      donneFocus=None
+      derniereValeur=None
+      self.listeValeursCourantes = []
+      fin=self.indexDernierLabel
+      for i in range (1, fin):
+          nomLineEdit="lineEditVal"+str(i)
+          courant=getattr(self,nomLineEdit)
+          valeur=courant.text()
+          lval=valeur.split(',')
+          if len (lval) > 1 : 
+             msgBox=QMessageBox()
+             msgBox.setText("separator ',' ")
+             msgBox.setInformativeText("Do you want to enter " + str (lval) + "?")
+             msgBox.setStandardButtons( QMessageBox.Ok | QMessageBox.Cancel)
+             msgBox.setDefaultButton(QMessageBox.Ok)
+             ret = msgBox.exec_()
+             if ret != 1024 : 
+                courant.setText("") 
+                return
+             courant.setText(lval[0])
+             self.ajoutNValeur(lval[1:])
+             self.listeValeursCourantes = []
+
+      for i in range (1, self.indexDernierLabel+1):
+          nomLineEdit="lineEditVal"+str(i)
+          courant=getattr(self,nomLineEdit)
+          valeur=courant.text()
+          if valeur != None and valeur != "" : 
+             commentaire=self.ajout1Valeur(valeur)
+             if (commentaire != None ):
+                 self.editor.afficheInfos(commentaire,Qt.red)
+                 courant.setText("")
+                 donneFocus=courant
+                 self.reaffiche()
+                 return
+             else :
+                 self.editor.afficheInfos("")
+          elif donneFocus==None : donneFocus=courant
+
+      nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel)
+      dernier=getattr(self,nomDernierLineEdit)
+      derniereValeur=dernier.text()
+      if changeDePlace:
+         if donneFocus != None : 
+           donneFocus.setFocus()
+           self.scrollArea.ensureWidgetVisible(donneFocus)
+         elif self.indexDernierLabel < self.monSimpDef.max  : 
+           self.ajoutLineEdit()
+      if self.listeValeursCourantes == [] : return
+      min,max = self.node.item.getMinMax()
+      if len(self.listeValeursCourantes) < self.monSimpDef.min  :
+        self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
+      if len(self.listeValeursCourantes) < min and oblige==True: return
+      if len(self.listeValeursCourantes) > max : return
+      self.node.item.setValeur(self.listeValeursCourantes)
+      if len(self.listeValeursCourantes) == self.monSimpDef.max  :
+        self.editor.afficheInfos(tr('nb max de valeurs atteint'))
+      self.setValide()
+      self.reaffiche()
+
+          
+
+# Avertissement quand on quitte le widget
diff --git a/InterfaceQT4/bizarreEditorDu5aout.py b/InterfaceQT4/bizarreEditorDu5aout.py
new file mode 100644 (file)
index 0000000..bdcbcec
--- /dev/null
@@ -0,0 +1,982 @@
+# -*- 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 range
+except : pass
+
+import re
+import types,sys,os
+import traceback
+from . import typeNode
+
+import six
+from six.moves import range
+
+from PyQt5.QtWidgets import QTreeWidget , QTreeWidgetItem, QApplication, QMessageBox
+from PyQt5.QtGui import QIcon
+from PyQt5.QtCore  import Qt
+from Extensions.i18n import tr
+from .gereRegles import GereRegles
+from .monChoixCommande import MonChoixCommande
+
+#------------------------------------------
+class JDCTree( QTreeWidget,GereRegles ):
+#------------------------------------------
+
+    def __init__( self, jdc_item, QWParent):        
+        #if hasattr(QWParent,'widgetTree') : 
+        self.editor       = QWParent
+        self.plie=False
+        if self.editor.widgetTree !=None  :
+           QTreeWidget.__init__(self, self.editor.widgetTree ) 
+           self.editor.verticalLayout_2.addWidget(self)
+           if self.editor.enteteQTree=='complet':
+                 self.headerItem().setText(0,  "Commande   ")
+                 self.headerItem().setText(1, "Concept/Valeur")
+           else :
+                 self.headerItem().setText(0,  "Commande   ")
+           self.setColumnWidth(0,200)
+           self.setExpandsOnDoubleClick(False)
+           self.setSelectionMode(3)
+        else :
+           QTreeWidget.__init__(self, None ) 
+        self.item          = jdc_item
+        self.tree          = self        
+        self.appliEficas   = self.editor.appliEficas
+        self.childrenComplete=[]
+        self.racine=self.item.itemNode(self,self.item)
+        self.itemCourant=None
+
+        self.itemClicked.connect(self.handleOnItem)
+        self.itemCollapsed.connect(self.handleCollapsedItem)
+        self.itemExpanded.connect(self.handleExpandedItem)
+
+        #PNPNPN verifier dans quel cas on se trouve : affiche l arbre ou la commande
+        self.node_selected=self.racine
+        self.inhibeExpand=True
+        self.expandItem(self.racine)
+        self.inhibeExpand=False
+        #print ("self.editor.maConfiguration.afficheCommandesPliees", self.editor.maConfiguration.afficheCommandesPliees)
+        if self.racine.children !=[] :  
+           #self.editor.initSplitterSizes(3)
+           if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
+           else : self.racine.children[0].deplieToutEtReaffiche()
+           self.racine.children[0].fenetre.donnePremier()
+        else : 
+          #self.editor.initSplitterSizes(2)
+          self.racine.affichePanneau()
+          #print self.editor.splitter.sizes()
+        #PNPNPN
+        #pdb.set_trace()
+
+    def contextMenuEvent(self,event) :
+        #print "contextMenuEvent"
+        coord=event.globalPos()
+        item= self.currentItem()
+        self.handleContextMenu(item,coord)
+
+    def handleContextMenu(self,item,coord):
+        """
+        Private slot to show the context menu of the listview.
+        
+        @param itm the selected listview item (QListWidgetItem)
+        @param coord the position of the mouse pointer (QPoint)
+        Attention : existeMenu permet de savoir si un menu est associe a cet item
+        """
+        #print "handleContextMenu"
+        if item == None : return
+        self.itemCourant=item
+        if item.existeMenu == 0 : return
+        if item.menu == None:
+           item.createPopUpMenu()
+        if item.menu != None:
+           if item.item.getNom() == "DISTRIBUTION" and item.item.isValid() :
+              item.Graphe.setEnabled(1)
+           item.menu.exec_(coord)            
+            
+
+    def handleCollapsedItem(self,item):
+        #print "dans CollapsedItem", self.inhibeExpand  
+        if self.inhibeExpand == True : return
+        self.itemCourant=item
+        # On traite le cas de l item non selectionne
+        itemParent=item
+        while not (hasattr (itemParent,'getPanel')) : 
+           itemParent=itemParent.treeParent 
+        if self.tree.node_selected != itemParent : 
+             item.setExpanded(False)
+             return
+
+        itemParent=item
+        item.setPlie()
+        item.plieToutEtReaffiche()
+        item.select()
+
+    def handleExpandedItem(self,item):
+        #print ("handleExpandedItem pour ", item.item.nom, self.inhibeExpand)
+        #import traceback
+        #traceback.print_stack()
+        if self.inhibeExpand == True : return
+        self.itemCourant=item
+        self.inhibeExpand = True 
+        itemParent=item
+        while not (hasattr (itemParent,'getPanel')) : 
+           if itemParent.plie==True : itemParent.setDeplie()
+           itemParent=itemParent.treeParent 
+        if self.tree.node_selected != itemParent : 
+             item.setExpanded(True)
+             self.inhibeExpand = False 
+             return
+        item.deplieToutEtReaffiche()
+        self.inhibeExpand = False 
+
+
+    def handleOnItem(self,item,int):
+        #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText())
+        
+        from InterfaceQT4 import composimp
+        self.inhibeExpand = True 
+        self.itemCourant=item
+        itemParent=item
+
+        while not (hasattr (itemParent,'getPanel')) : 
+           if itemParent.plie==True : itemParent.setDeplie()
+           itemParent=itemParent.treeParent 
+
+        if itemParent.fenetre != self.editor.fenetreCentraleAffichee : 
+            estUneFeuille=(isinstance(item,composimp.Node))
+             # il faut afficher le parent
+            if estUneFeuille                        : itemParent.affichePanneau()
+            elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
+            else                                    : itemParent.affichePanneau()
+
+
+        elif (isinstance(item,composimp.Node)) and item.fenetre : item.fenetre.rendVisible()
+        elif itemParent!=item:
+             self.tree.handleExpandedItem(item)
+             #item.fenetre.donnePremier()
+             #item.fenetre.rendActif()
+             #print 'il faut afficher le 1er'
+
+        try :
+           fr = item.item.getFr()
+           chaineDecoupee= fr.split('\n')
+           if len(chaineDecoupee) > 3 :
+              txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget'
+           else : txt=fr
+
+           if self.editor: 
+              self.editor.afficheCommentaire(six.text_type(txt))
+        except:
+            pass
+        item.select()
+        self.inhibeExpand = False 
+        #print "je mets inhibeExpand a false handleOnItem"
+
+
+    def choisitPremier(self,name):
+        self.editor.layoutJDCCHOIX.removeWidget(self.racine.fenetre)
+        self.racine.fenetre.close()
+        new_node=self.racine.appendBrother(name,'after')
+# type de noeud
+COMMENT     = "COMMENTAIRE"
+PARAMETERS  = "PARAMETRE"
+#------------------------------------------
+class JDCNode(QTreeWidgetItem,GereRegles):
+#------------------------------------------
+    def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
+        #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, self)
+        #self.a=0
+
+
+        self.item        = item
+        self.vraiParent  = treeParent
+        self.treeParent  = treeParent
+        self.tree        = self.treeParent.tree
+        self.editor     = self.treeParent.editor
+        self.appliEficas = treeParent.appliEficas
+        self.JESUISOFF=0
+        self.childrenComplete=[]
+
+                        
+        from InterfaceQT4 import compocomm
+        from InterfaceQT4 import compoparam
+        from InterfaceQT4 import composimp
+        if   (isinstance(self.item,compocomm.COMMTreeItem)) : name=tr("Commentaire")
+        elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.getLabelText()[0]))
+        #else:   name  = tr(str(tr(item.getLabelText()[0]))+" :")
+        else:   name  = tr(item.getLabelText()[0])
+        if item.nom != tr(item.nom) : name = str(tr(item.nom)+" :")
+        value = tr(str( item.getText() ) )
+       
+        # si specialisation de la fenetre
+        if self.item.object.definition == None : self.fenetreIhm = None
+           # Cas des listes de mots_clefs 
+        else : self.fenetreIhm = self.item.object.definition.fenetreIhm
+        if self.editor.enteteQTree=='complet':mesColonnes=(name,value)
+        else : mesColonnes=(name,)
+
+        if self.treeParent.plie==True :
+            self.plie        = True
+            self.appartientAUnNoeudPlie=True
+            if self.treeParent.item.isMCList() : self.appartientAUnNoeudPlie =  self.treeParent.appartientAUnNoeudPlie
+        else :
+            self.plie        = False
+            self.appartientAUnNoeudPlie = False
+
+        #if item.nom == "POUTRE" :print "creation d'un noeud : ", item, " ",item.nom,"", self.treeParent, self.appartientAUnNoeudPlie , self.plie
+
+        if ancien and itemExpand     : self.plie = False
+        if ancien and not itemExpand : self.plie = True 
+        if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False
+
+        from InterfaceQT4 import compobloc
+        from InterfaceQT4 import compomclist
+
+        ajoutAuParentduNoeud=0
+        self.treeParent=treeParent
+        while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) : 
+              self.treeParent.childrenComplete.append(self)
+              self.treeParent=self.treeParent.vraiParent
+        self.treeParent.childrenComplete.append(self)
+
+
+        if (isinstance(self,compobloc.Node) or (isinstance(self,compomclist.Node) and self.item.isMCList()) or ( hasattr(self.item.parent,'inhibeValidator') and isinstance(self,compomclist.Node) and self.item.parent.inhibeValidator)) : 
+        # Le dernier or ne sert que lorsqu'on est en train de creer une liste par les validator
+           QTreeWidgetItem.__init__(self,None,mesColonnes)
+        else :
+           QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
+
+        self.setToolTip(0,self.item.getFr())
+        self.setToolTip(1,self.item.getFr())
+        repIcon=self.appliEficas.repIcon
+
+        couleur=self.item.getIconName()
+        monIcone = QIcon(repIcon+"/" + couleur + ".png")
+
+        self.setIcon(0,monIcone)
+
+        self.children = []
+        self.buildChildren()
+        self.menu=None
+        self.existeMenu=1
+
+        self.item.connect("valid",self.onValid,())
+        self.item.connect("supp" ,self.onSupp,())
+        self.item.connect("add"  ,self.onAdd,())
+
+        self.state=""
+        self.fenetre=None
+        try :
+          if self.item.getObject().isBLOC() : 
+                self.setExpanded(True) 
+                self.plie=False
+        except :
+          pass
+
+
+    def buildChildren(self,posInsertion=10000):
+        """ Construit la liste des enfants de self """
+        """ Se charge de remettre les noeuds Expanded dans le meme etat """
+        #print ("*********** buildChildren ",self,self.item, self.item.nom)
+        #print (poum)
+        
+        self.listeItemExpanded=[]
+        self.listeItemPlie=[]
+
+        for enfant in self.childrenComplete :
+            if enfant.plie : self.listeItemPlie.append(enfant.item)
+            else : self.listeItemExpanded.append(enfant.item)
+
+        for enfant in self.childrenComplete :
+            parent=enfant.treeParent
+            parent.removeChild(enfant)
+            enfant.JESUISOFF=1
+         
+        
+        self.children = []
+        self.childrenComplete = []
+        sublist = self.item._getSubList()
+        ind=0
+        
+        for item in sublist :
+            itemExpand=False
+            ancien=False
+            if item in self.listeItemExpanded : itemExpand=True;  ancien=True
+            if item in self.listeItemPlie     : itemExpand=False; ancien=True
+            nouvelItem=item.itemNode(self,item,itemExpand,ancien)
+            self.children.append(nouvelItem)
+
+        #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
+
+        
+    def chercheNoeudCorrespondant(self,objSimp):
+        sublist = self.item._getSubList()
+        for node in self.childrenComplete:
+            if node.item.object==objSimp : return node
+        return None
+
+
+    def afficheCeNiveau(self):
+        #print ('afficheCeNiveau pour ', self.item.nom, self.item.getLabelText())
+        for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+            widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+            self.editor.widgetCentraleLayout.removeItem(widget)
+        if self.editor.fenetreCentraleAffichee != None :
+            self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+            self.editor.fenetreCentraleAffichee.setParent(None)
+            self.editor.fenetreCentraleAffichee.close()
+            self.editor.fenetreCentraleAffichee.deleteLater()
+
+        from monWidgetNiveauFact import MonWidgetNiveauFact, MonWidgetNiveauFactTableau
+        maDefinition=self.item.get_definition()
+        monObjet=self.item.object
+        if maDefinition.fenetreIhm=='Tableau' : self.maFenetreCadre=MonWidgetNiveauFactTableau(self,self.editor,maDefinition,monObjet)
+        else : self.maFenetreCadre=MonWidgetNiveauFact(self,self.editor,maDefinition,monObjet)
+        self.fenetre=self.maFenetreCadre
+        self.editor.widgetCentraleLayout.addWidget(self.maFenetreCadre)
+        self.editor.fenetreCentraleAffichee=self.maFenetreCadre
+        self.select()
+        #print ('fin afficheCeNiveau pour ', self.item.nom)
+        
+   
+    def getPanelModifie(self):
+       
+        if self.fenetreIhm == None : return None
+        if self.fenetreIhm=='deplie1Niveau':
+           from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau
+           return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object)
+        return None
+        
+
+    def affichePanneau(self) :
+        #if self.editor.code == 'ASTER' and not(self.item.isActif()) : 
+        # posera des pb si un code decide d appeler FIN un mot clef
+        # on resoudera a ce moment la
+        # pour l pas de poussiere sous le tapis
+        #print ('_________________ds affichePanneau pour', self.item.nom)
+        if  not(self.item.isActif()) : 
+            from .monWidgetInactif import MonWidgetInactif
+            self.fenetre = MonWidgetInactif(self,self.editor)
+        else:
+           itemParent=self
+           while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent 
+           if itemParent!=self : 
+              #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom)
+              itemParent.affichePanneau()
+              #print ('fin _________________ds affichePanneau pour', self.item.nom)
+              return
+           self.fenetre=self.getPanelModifie()
+           if self.fenetre == None : self.fenetre=self.getPanel()
+           self.editor.restoreSplitterSizes()
+         
+        for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+            widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+            self.editor.widgetCentraleLayout.removeItem(widget)
+        # ceinture et bretelle
+        #print 'old fenetre = ',self.editor.fenetreCentraleAffichee
+        if self.editor.fenetreCentraleAffichee != None : 
+            self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+            self.editor.fenetreCentraleAffichee.setParent(None)
+            self.editor.fenetreCentraleAffichee.close()
+            self.editor.fenetreCentraleAffichee.deleteLater()
+
+        self.editor.widgetCentraleLayout.addWidget(self.fenetre)
+        #print ("j ajoute ", self.fenetre, self.fenetre.node.item.nom)
+        self.editor.fenetreCentraleAffichee=self.fenetre
+        self.tree.node_selected= self
+
+        if self.editor.first :
+           if not(isinstance(self.fenetre,MonChoixCommande)): self.editor.first=False
+        self.tree.inhibeExpand=True
+        self.tree.expandItem(self)
+        self.tree.inhibeExpand=False
+        #print( '_________________fin affichePanneau pour', self.item.nom)
+          
+
+    def createPopUpMenu(self):
+        #implemente dans les noeuds derives si necessaire
+        self.existeMenu = 0
+
+    def commentIt(self):
+        """
+        Cette methode a pour but de commentariser la commande pointee par self
+        """
+        # On traite par une exception le cas ou l'utilisateur final cherche a desactiver
+        # (commentariser) un commentaire.
+        try :
+            pos=self.treeParent.children.index(self)
+            commande_comment = self.item.getObjetCommentarise()
+            # On signale a l editeur du panel (le JDCDisplay) une modification
+            self.editor.initModif()
+            self.treeParent.buildChildren()
+            self.treeParent.children[pos].select()
+            self.treeParent.children[pos].affichePanneau()
+        except Exception as e:
+            traceback.print_exc()
+            QMessageBox.critical( self.editor, "TOO BAD",str(e))
+        
+    def unCommentIt(self):
+        """
+        Realise la decommentarisation de self
+        """
+        try :
+            pos=self.treeParent.children.index(self)
+            commande,nom = self.item.unComment()
+            self.editor.initModif()
+            self.treeParent.buildChildren()
+            self.treeParent.children[pos].select()
+            self.treeParent.children[pos].affichePanneau()
+        except Exception as e:
+            QMessageBox.critical( self.editor, "Erreur !",str(e))
+        
+    def addComment( self, after=True ):
+        """
+        Ajoute un commentaire a l'interieur du JDC :
+        """
+        self.editor.initModif()
+        if after:
+            pos = 'after'
+        else:
+            pos = 'before'
+        return self.appendBrother( COMMENT, pos )
+                
+    def addParameters( self, after=True ):
+        """
+        Ajoute un parametre a l'interieur du JDC :
+        """
+        self.editor.initModif()
+        if after: pos = 'after'
+        else: pos = 'before'
+        child=self.appendBrother( PARAMETERS, pos )
+        return  child
+    
+    
+    def select( self ):
+        """
+        Rend le noeud courant (self) selectionne et deselectionne
+        tous les autres
+        """        
+        #print "select pour", self.item.nom
+        for item in self.tree.selectedItems() :
+            item.setSelected(0)
+        self.tree.setCurrentItem( self )    
+                               
+    #------------------------------------------------------------------
+    # Methodes de creation et destruction de noeuds
+    # Certaines de ces methodes peuvent etre appelees depuis l'externe
+    #------------------------------------------------------------------
+    def appendBrother(self,name,pos='after',plier=False):
+        """
+        Permet d'ajouter un objet frere a l'objet associe au noeud self
+        par defaut on l'ajoute immediatement apres 
+        Methode externe
+        """
+        self.editor.initModif()
+
+        from InterfaceQT4 import compojdc
+        if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos)  : return 0
+        
+        if self.treeParent != self.vraiParent :
+          index = self.vraiParent.children.index(self)
+          if   pos == 'before': index = index
+          elif pos == 'after': index = index +1
+          return self.vraiParent.appendChild(name,pos=index,plier=plier)
+        else :
+          index = self.treeParent.children.index(self)
+          if   pos == 'before': index = index
+          elif pos == 'after': index = index +1
+          else:
+              print(six.text_type(pos), tr("  n'est pas un index valide pour appendBrother"))
+              return 0
+          return self.treeParent.appendChild(name,pos=index,plier=plier)
+
+    def verifiePosition(self,name,pos,aLaRacine=False):
+        if name not in self.editor.readercata.Classement_Commandes_Ds_Arbre : return True
+        indexName=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(name)
+
+        etapes=self.item.getJdc().etapes
+        if etapes == [] : return True
+
+        if aLaRacine == False :indexOu=etapes.index(self.item.object)
+        else : indexOu=0
+
+        if pos=="after" : indexOu = indexOu+1
+        for e in etapes[:indexOu] :
+            nom=e.nom
+            if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+            indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
+            if indexEtape > indexName :
+               comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
+               QMessageBox.information( None,tr('insertion impossible'),comment, )
+               return False
+        for e in etapes[indexOu:] :
+            nom=e.nom
+            if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+            indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
+            if indexEtape < indexName :
+               comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
+               QMessageBox.information( None,tr('insertion impossible'),comment, )
+               return False
+        return True
+
+    def appendChild(self,name,pos=None,plier=False):
+        """
+           Methode pour ajouter un objet fils a l'objet associe au noeud self.
+           On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
+           ou en position intermediaire.
+           Si pos vaut None, on le place a la position du catalogue.
+        """
+        #print ("************** appendChild ",self.item.getLabelText(), pos, plier)
+        #import traceback
+        #traceback.print_stack()
+
+         
+        self.editor.initModif()
+        if pos == 'first':
+            index = 0
+        elif pos == 'last':
+            index = len(self.children)
+        elif type(pos) == int :
+            # position fixee
+            index = pos
+        elif type(pos) == types.InstanceType:
+            # pos est un item. Il faut inserer name apres pos
+            index = self.item.getIndex(pos) +1
+        elif type(name) == types.InstanceType:
+            index = self.item.getIndexChild(name.nom)
+        else:
+            index = self.item.getIndexChild(name)
+
+        # si on essaye d inserer a la racine
+        if (isinstance(self.treeParent,JDCTree) and index==0) :
+           verifiePosition=self.verifiePosition(name,'first',aLaRacine=True)
+           if not verifiePosition : return 0
+
+        self.tree.inhibeExpand=True
+        obj=self.item.addItem(name,index) # emet le signal 'add'
+        if obj is None:obj=0
+        if obj == 0:return 0
+        try :
+        #if 1 :
+           child=self.children[index]
+           if plier == True : child.setPlie()
+           else             : child.setDeplie() 
+        except :
+           child=self.children[index]
+        try : 
+           if len(obj) > 1 : self.buildChildren()
+        except : pass
+        self.tree.inhibeExpand=False
+        #print (" fin append child")
+        return child
+
+    def deplace(self):
+        self.editor.initModif()
+        index = self.treeParent.children.index(self) - 1 
+        if index < 0 : index =0
+        ret=self.treeParent.item.deplaceEntite(self.item.getObject())
+
+    def delete(self):
+        """ 
+            Methode externe pour la destruction de l'objet associe au noeud
+        """
+        self.editor.initModif()
+        index = self.vraiParent.children.index(self) - 1 
+        if index < 0 : index =0
+        recalcule=0
+        if self.item.nom == "VARIABLE" :
+           recalcule=1
+           jdc=self.item.jdc
+        ret,commentaire=self.vraiParent.item.suppItem(self.item)
+        if ret==0 :
+          self.editor.afficheInfos(commentaire,Qt.red)
+        else :
+          self.editor.afficheInfos(commentaire)
+        self.treeParent.buildChildren()
+        if self.treeParent.childrenComplete : toselect=self.treeParent.childrenComplete[index]
+        else: toselect=self.treeParent
+        if recalcule : jdc.recalculeEtatCorrelation()
+        if ret==0 :
+            if self.treeParent.childrenComplete :
+                notdeleted=self.treeParent.childrenComplete[index+1]
+                notdeleted.select()
+        else :
+            toselect.select()
+        from InterfaceQT4 import compojdc
+        # cas ou on detruit dans l arbre sans affichage
+        if isinstance(self.treeParent,compojdc.Node) : 
+           toselect.affichePanneau()
+        else :
+           if self.treeParent.fenetre== None : return
+           #print "J appelle reaffiche de browser apres delete"
+           self.treeParent.fenetre.reaffiche(toselect)
+
+    def deleteMultiple(self,liste=()):
+        """ 
+            Methode externe pour la destruction d une liste de noeud
+        """
+        from InterfaceQT4 import compojdc 
+        self.editor.initModif()
+        index=9999
+        recalcule=0
+        jdc=self.treeParent
+        parentPosition=jdc
+        while not(isinstance(jdc,compojdc.Node)):
+              jdc=jdc.treeParent
+        for noeud in liste :
+            if not( isinstance(noeud.treeParent, compojdc.Node)): continue
+            if noeud.item.nom == "VARIABLE" : recalcule=1
+            if noeud.treeParent.children.index(noeud) < index : index=noeud.treeParent.children.index(noeud)
+        if index < 0 : index =0
+
+        # Cas ou on detruit dans une ETape
+        if index == 9999 : 
+              parentPosition=self.treeParent
+              while not(isinstance(parentPosition, compojdc.Node)):
+                 index=parentPosition.treeParent.children.index(parentPosition)
+                 parentPosition=parentPosition.treeParent
+
+        for noeud in liste:
+            noeud.treeParent.item.suppItem(noeud.item)
+
+        jdc.buildChildren()
+        if recalcule : jdc.recalculeEtatCorrelation()
+        try    : toselect=parentPosition.children[index]
+        except : toselect=jdc
+        toselect.select()
+        toselect.affichePanneau()
+#        
+#    #------------------------------------------------------------------
+    def onValid(self):        
+
+        #print ("onValid pour ", self.item.nom)
+        if self.JESUISOFF==1 : return
+        if hasattr(self,'fenetre') and self.fenetre: 
+           try :
+             self.fenetre.setValide()
+           except :
+            # print "onValid pour ", self.item.nom, self,'pb'
+            pass
+
+        if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isValid():
+           self.item.jdc.recalculeEtatCorrelation()
+        if hasattr(self.item,'forceRecalcul'):
+           self.forceRecalculChildren(self.item.forceRecalcul)
+        self.editor.initModif()
+        
+        self.updateNodeValid()
+        self.updateNodeLabel()
+        self.updateNodeTexte()
+
+    def onAdd(self,object):
+        if self.JESUISOFF==1 : return
+        #print "onAdd pour ", self.item.nom, object.nom
+        self.editor.initModif()
+        self.updateNodes()
+        # PN -- non necessaire si item=jdc
+        if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
+    def onSupp(self,object):
+        if self.JESUISOFF==1 : return
+        #print "onSup pour ", self.item.nom, object.nom
+        self.editor.initModif()
+        self.updateNodes()
+        # PN -- non necessaire si item=jdc
+        if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
+         
+
+
+    def updateNodeValid(self):
+        """Cette methode remet a jour la validite du noeud (icone)
+           Elle appelle isValid
+        """
+        repIcon=self.appliEficas.repIcon
+        couleur=self.item.getIconName()
+        monIcone = QIcon(repIcon+"/" + couleur + ".png")
+        self.setIcon(0,monIcone)
+
+
+
+    def updateNodeLabel(self):
+        """ Met a jour le label du noeud """
+        #print "NODE updateNodeLabel", self.item.getLabelText()
+        labeltext,fonte,couleur = self.item.getLabelText()
+        # PNPN a reflechir
+        self.setText(0, labeltext)        
+    
+    def updateNodeLabelInBlack(self):
+        if hasattr(self.appliEficas,'noeudColore'): 
+            self.appliEficas.noeudColore.setForeground(0,Qt.black)
+            self.appliEficas.noeudColore.updateNodeLabel
+    
+    def updateNodeLabelInBlue(self):
+        if hasattr(self.appliEficas,'noeudColore'): self.appliEficas.noeudColore.setForeground(0,Qt.black)
+        self.setForeground(0,Qt.blue)
+        labeltext,fonte,couleur = self.item.getLabelText()
+        self.setText(0, labeltext)        
+        self.appliEficas.noeudColore=self
+
+    def updatePlusieursNodeLabelInBlue(self,liste):
+        if hasattr(self.appliEficas,'listeNoeudsColores'):
+           for noeud in self.appliEficas.listeNoeudsColores:
+               noeud.setTextColor( 0,Qt.black)
+               noeud.updateNodeLabel()
+        self.appliEficas.listeNoeudsColores=[]
+        for noeud in liste :
+            noeud.setTextColor( 0,Qt.blue )
+            labeltext,fonte,couleur = noeud.item.getLabelText()
+            noeud.setText(0, labeltext)        
+            self.appliEficas.listeNoeudsColores.append(noeud)
+
+    def updateNodeTexteInBlack(self):
+        """ Met a jour les noms des SD et valeurs des mots-cles """
+        self.setTextColor( 1,Qt.black )
+        value = self.item.getText()
+        self.setText(1, value)
+
+    def updateNodeTexte(self):
+        """ Met a jour les noms des SD et valeurs des mots-cles """
+        value = self.item.getText()
+        self.setText(1, value)
+        
+
+    def updateNodeTexteInBlue(self):
+        self.setTextColor( 1,Qt.blue )
+        value = self.item.getText()
+        self.setText(1, value)
+
+    def updateNodes(self):
+        #print 'NODE updateNodes', self.item.getLabelText()
+        self.buildChildren()
+
+    def updateValid(self) :
+        """Cette methode a pour but de mettre a jour la validite du noeud
+           et de propager la demande de mise a jour a son parent
+        """
+        #print "NODE updateValid", self.item.getLabelText()
+        self.updateNodeValid()
+        try :
+          self.treeParent.updateValid()
+        except:
+          pass
+            
+    def updateTexte(self):
+        """ Met a jour les noms des SD et valeurs des mots-cles """
+        #print "NODE updateTexte", self.item.getLabelText()
+        self.updateNodeVexte()
+        if self.isExpanded() :
+            for child in self.children:
+                if child.isHidden() == false : child.updateTexte()
+
+
+    def forceRecalculChildren(self,niveau):
+        if self.state=='recalcule' : 
+           self.state=""
+           return
+        self.state='recalcule'
+        if hasattr(self.item,'object'):
+           self.item.object.state="modified"
+        for child in self.children:
+           if niveau > 0 : child.forceRecalculChildren(niveau - 1)
+              
+        
+
+    def doPaste(self,node_selected,pos='after'):
+        """
+            Declenche la copie de l'objet item avec pour cible
+            l'objet passe en argument : node_selected
+        """
+        objet_a_copier = self.item.getCopieObjet()
+        child=node_selected.doPasteCommande(objet_a_copier,pos)
+        if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
+        self.updateNodeLabelInBlack()
+        return child
+
+    def doPasteCommande(self,objet_a_copier,pos='after'):
+        """
+          Realise la copie de l'objet passe en argument qui est necessairement
+          un onjet
+        """
+        child=None
+        try :
+        #if 1 :
+          child = self.appendBrother(objet_a_copier,pos)
+        except :
+           pass
+        return child
+
+    def doPastePremier(self,objet_a_copier):
+        """
+           Realise la copie de l'objet passe en argument (objet_a_copier)
+        """
+        objet = objet_a_copier.item.getCopieObjet()
+        child = self.appendChild(objet,pos='first')
+        return child
+
+    def plieToutEtReafficheSaufItem(self, itemADeplier):
+        self.inhibeExpand=True
+        from InterfaceQT4 import compojdc
+        if (isinstance(self, compojdc.Node)) :
+            self.affichePanneau()
+            self.inhibeExpand=False
+            return 
+        self.editor.deplier = False
+        for item in self.children :
+            # il ne faut pas plier les blocs 
+            from InterfaceQT4 import compobloc
+            if (isinstance(item,compobloc.Node)) : continue
+            item.setPlie()
+            if item==itemADeplier : 
+                  itemADeplier.setDeplie()
+        self.affichePanneau()
+        self.inhibeExpand=False
+
+    def plieToutEtReaffiche(self):
+        #print ('plieToutEtReaffiche', self.item.getNom())
+        from InterfaceQT4 import compojdc
+        if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return 
+        self.inhibeExpand=True
+        self.editor.deplier = False
+        for item in self.children :
+            # il ne faut pas plier les blocs 
+            from InterfaceQT4 import compobloc
+            if (isinstance(item,compobloc.Node)) : continue
+            item.setPlie()
+        self.affichePanneau()
+        #print ("fin plieToutEtReaffiche", self.item.getNom())
+
+    def deplieToutEtReaffiche(self):
+        self.editor.deplier = True
+        for item in self.children :
+            item.setDeplie()
+        self.affichePanneau()
+
+    def setPlie(self):
+        #print "je mets inhibeExpand a true dans setPlie"
+        #print ("je suis dans plieTout", self.item.getNom())
+        from . import compojdc
+        if self.fenetre == self.editor.fenetreCentraleAffichee  and isinstance(self.treeParent,compojdc.Node): 
+           return
+        self.tree.inhibeExpand=True
+        self.tree.collapseItem(self)
+        self.setPlieChildren()
+        self.tree.inhibeExpand=False
+        #print "je mets inhibeExpand a false dans setPlie"
+
+
+        # on ne plie pas au niveau 1
+        #   self.plie=False
+        #   for item in self.children :
+        #       item.appartientAUnNoeudPlie=False
+
+    def setPlieChildren(self):
+        self.plie=True
+        from InterfaceQT4 import composimp
+        if isinstance(self,composimp.Node) : return
+        for c in self.children :
+            c.setPlieChildren()
+            #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0]
+            c.appartientAUnNoeudPlie=True
+            c.plie=True
+            #print "dans setPlieChildren plie", c.item.nom
+            #  01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire
+            #if not (isinstance(c,composimp.Node)) :c.setExpanded(False)
+
+        # Pour les blocs et les motcles list
+        # on affiche un niveau de plus
+        from InterfaceQT4 import compobloc
+        from InterfaceQT4 import compomclist
+        if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) : 
+            niveauPere=self.treeParent
+            while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) : 
+               niveauPere=niveauPere.treeParent
+            for c in self.children :
+                c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
+                #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie)
+                c.setExpanded(False)
+
+
+    def setDeplie(self):
+        #print "dans setPlieChildren pour", self.item.nom
+        #print "je mets inhibeExpand a true dans setDeplie"
+        self.tree.inhibeExpand=True
+        self.plie=False
+        self.tree.expandItem(self)
+        self.setDeplieChildren()
+        self.tree.inhibeExpand=False
+        #print "je mets inhibeExpand a false dans setDePlie"
+
+    def setDeplieChildren(self):
+        #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.getLabelText()
+        for c in self.children :
+            c.setDeplieChildren()
+            #print "dans setDeplieChildren ", c.item.nom
+            c.appartientAUnNoeudPlie=False
+            c.setExpanded(True)
+            c.plie=False
+       
+    def selectAvant(self):
+        i=self.item.jdc.etapes.index(self.item.object)
+        try :
+           cherche=self.item.jdc.etapes[i-1]
+        except :
+           cherche=self.item.jdc.etapes[-1]
+        node=None
+        for i in self.tree.racine.children :
+            if i.item.object== cherche  : 
+               node=i
+               break
+        if node : 
+          node.affichePanneau()
+          node.select()
+
+    def selectApres(self):
+        i=self.item.jdc.etapes.index(self.item.object)
+        try :
+           cherche=self.item.jdc.etapes[i+1]
+        except :
+           cherche=self.item.jdc.etapes[0]
+        node=None
+        for i in self.tree.racine.children :
+            if i.item.object== cherche  : 
+               node=i
+               break
+        if node : 
+           node.affichePanneau()
+           node.select()
+
+    def ouvreLesNoeudsDsLArbre(self):
+        return
+        self.inhibeExpand = True 
+        for i in range(self.childCount()):
+            self.child(i).inhibeExpand=True
+            self.child(i).setExpanded(True)
+            self.child(i).ouvreLesNoeudsDsLArbre()
+            self.child(i).inhibeExpand=False
+        self.inhibeExpand = False 
index 760b6cc7fa965779bb382bb389b0ae6911320704..a49edc416736e0cc6c239d5e4b2f93cb68f41fbd 100644 (file)
@@ -24,14 +24,15 @@ try :
    from builtins import str
    from builtins import range
 except : pass
+
 import re
 import types,sys,os
 import traceback
 from . import typeNode
-#import pdb
 
 import six
 from six.moves import range
+
 from PyQt5.QtWidgets import QTreeWidget , QTreeWidgetItem, QApplication, QMessageBox
 from PyQt5.QtGui import QIcon
 from PyQt5.QtCore  import Qt
@@ -39,7 +40,10 @@ from Extensions.i18n import tr
 from .gereRegles import GereRegles
 from .monChoixCommande import MonChoixCommande
 
+#------------------------------------------
 class JDCTree( QTreeWidget,GereRegles ):
+#------------------------------------------
+
     def __init__( self, jdc_item, QWParent):        
         #if hasattr(QWParent,'widgetTree') : 
         self.editor       = QWParent
@@ -63,7 +67,7 @@ class JDCTree( QTreeWidget,GereRegles ):
         self.childrenComplete=[]
         self.racine=self.item.itemNode(self,self.item)
  
-        self.itemCourrant=None
+        self.itemCourant=None
 
         self.itemClicked.connect(self.handleOnItem)
         self.itemCollapsed.connect(self.handleCollapsedItem)
@@ -74,10 +78,10 @@ class JDCTree( QTreeWidget,GereRegles ):
         self.inhibeExpand=True
         self.expandItem(self.racine)
         self.inhibeExpand=False
-        #print "self.editor.afficheCommandesPliees", self.editor.afficheCommandesPliees
+        #print ("self.editor.maConfiguration.afficheCommandesPliees", self.editor.maConfiguration.afficheCommandesPliees)
         if self.racine.children !=[] :  
            #self.editor.initSplitterSizes(3)
-           if self.editor.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
+           if self.editor.maConfiguration.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
            else : self.racine.children[0].deplieToutEtReaffiche()
            self.racine.children[0].fenetre.donnePremier()
         else : 
@@ -103,11 +107,12 @@ class JDCTree( QTreeWidget,GereRegles ):
         """
         #print "handleContextMenu"
         if item == None : return
+        self.itemCourant=item
         if item.existeMenu == 0 : return
         if item.menu == None:
            item.createPopUpMenu()
         if item.menu != None:
-           if item.item.get_nom() == "DISTRIBUTION" and item.item.isvalid() :
+           if item.item.getNom() == "DISTRIBUTION" and item.item.isValid() :
               item.Graphe.setEnabled(1)
            item.menu.exec_(coord)            
             
@@ -115,6 +120,7 @@ class JDCTree( QTreeWidget,GereRegles ):
     def handleCollapsedItem(self,item):
         #print "dans CollapsedItem", self.inhibeExpand  
         if self.inhibeExpand == True : return
+        self.itemCourant=item
         # On traite le cas de l item non selectionne
         itemParent=item
         while not (hasattr (itemParent,'getPanel')) : 
@@ -129,10 +135,11 @@ class JDCTree( QTreeWidget,GereRegles ):
         item.select()
 
     def handleExpandedItem(self,item):
-        #print "handleExpandedItem pour ", item.item.nom, self.inhibeExpand
+        #print ("handleExpandedItem pour ", item.item.nom, self.inhibeExpand)
         #import traceback
         #traceback.print_stack()
         if self.inhibeExpand == True : return
+        self.itemCourant=item
         self.inhibeExpand = True 
         itemParent=item
         while not (hasattr (itemParent,'getPanel')) : 
@@ -147,25 +154,26 @@ class JDCTree( QTreeWidget,GereRegles ):
 
 
     def handleOnItem(self,item,int):
-        #print "je passe dans handleOnItem pour ",self, item.item.nom, item, item.item
+        #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText())
         
         from InterfaceQT4 import composimp
         self.inhibeExpand = True 
-        self.itemCourrant=item
+        self.itemCourant=item
         itemParent=item
 
         while not (hasattr (itemParent,'getPanel')) : 
            if itemParent.plie==True : itemParent.setDeplie()
+           itemAvant=itemParent
            itemParent=itemParent.treeParent 
 
         if itemParent.fenetre != self.editor.fenetreCentraleAffichee : 
-              
             estUneFeuille=(isinstance(item,composimp.Node))
              # il faut afficher le parent
-            #print "estUneFeuille", estUneFeuille
-            #print "afficheCommandesPliees", self.editor.afficheCommandesPliees
+            if estUneFeuille and itemParent.fenetreIhm=='deplie1Niveau' : 
+               itemAvant.afficheCeNiveau()
+               return
             if estUneFeuille                        : itemParent.affichePanneau()
-            elif self.editor.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
+            elif self.editor.maConfiguration.afficheCommandesPliees : itemParent.plieToutEtReafficheSaufItem(item)
             else                                    : itemParent.affichePanneau()
 
 
@@ -177,8 +185,14 @@ class JDCTree( QTreeWidget,GereRegles ):
              #print 'il faut afficher le 1er'
 
         try :
-           fr = item.item.get_fr()
-           if self.editor: self.editor.affiche_commentaire(six.text_type(fr))
+           fr = item.item.getFr()
+           chaineDecoupee= fr.split('\n')
+           if len(chaineDecoupee) > 3 :
+              txt='\n'.join(chaineDecoupee[0:2])+'...\nfull help : double clicked on validity chip of '+ str(item.item.nom)+ ' in central widget'
+           else : txt=fr
+
+           if self.editor: 
+              self.editor.afficheCommentaire(six.text_type(txt))
         except:
             pass
         item.select()
@@ -195,10 +209,14 @@ class JDCTree( QTreeWidget,GereRegles ):
 COMMENT     = "COMMENTAIRE"
 PARAMETERS  = "PARAMETRE"
  
+#------------------------------------------
 class JDCNode(QTreeWidgetItem,GereRegles):
+#------------------------------------------
     def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
-        #print "creation d'un noeud : ", item, " ",item.nom,"", treeParent, self
+        #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, self)
         #self.a=0
+
+
         self.item        = item
         self.vraiParent  = treeParent
         self.treeParent  = treeParent
@@ -213,13 +231,17 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         from InterfaceQT4 import compoparam
         from InterfaceQT4 import composimp
         if   (isinstance(self.item,compocomm.COMMTreeItem)) : name=tr("Commentaire")
-        elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.GetLabelText()[0]))
-        #else:   name  = tr(str(tr(item.GetLabelText()[0]))+" :")
-        else:   name  = tr(item.GetLabelText()[0])
+        elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=tr(str(item.getLabelText()[0]))
+        #else:   name  = tr(str(tr(item.getLabelText()[0]))+" :")
+        else:   name  = tr(item.getLabelText()[0])
         if item.nom != tr(item.nom) : name = str(tr(item.nom)+" :")
-        value = tr(str( item.GetText() ) )
+        value = tr(str( item.getText() ) )
+       
+        # si specialisation de la fenetre
+        if self.item.object.definition == None : self.fenetreIhm = None
+           # Cas des listes de mots_clefs 
+        else : self.fenetreIhm = self.item.object.definition.fenetreIhm
  
-
         if self.editor.enteteQTree=='complet':mesColonnes=(name,value)
         else : mesColonnes=(name,)
 
@@ -254,15 +276,17 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         else :
            QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
 
-        self.setToolTip(0,self.item.get_fr())
-        self.setToolTip(1,self.item.get_fr())
+        self.setToolTip(0,self.item.getFr())
+        self.setToolTip(1,self.item.getFr())
         repIcon=self.appliEficas.repIcon
 
-        monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+        couleur=self.item.getIconName()
+        monIcone = QIcon(repIcon+"/" + couleur + ".png")
+
         self.setIcon(0,monIcone)
 
         self.children = []
-        self.build_children()
+        self.buildChildren()
         self.menu=None
         self.existeMenu=1
 
@@ -280,10 +304,11 @@ class JDCNode(QTreeWidgetItem,GereRegles):
           pass
 
 
-    def build_children(self,posInsertion=10000):
+    def buildChildren(self,posInsertion=10000):
         """ Construit la liste des enfants de self """
         """ Se charge de remettre les noeuds Expanded dans le meme etat """
-        #print "*********** build_children ",self,self.item, self.item.nom
+        #print ("*********** buildChildren ",self,self.item, self.item.nom)
+        #print (poum)
         
         self.listeItemExpanded=[]
         self.listeItemPlie=[]
@@ -300,7 +325,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         
         self.children = []
         self.childrenComplete = []
-        sublist = self.item._GetSubList()
+        sublist = self.item._getSubList()
         ind=0
         
         for item in sublist :
@@ -311,32 +336,69 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             nouvelItem=item.itemNode(self,item,itemExpand,ancien)
             self.children.append(nouvelItem)
 
-        #print "fin *********** build_children ",self,self.item, self.item.nom, self.children
+        #print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
 
         
     def chercheNoeudCorrespondant(self,objSimp):
-        sublist = self.item._GetSubList()
+        sublist = self.item._getSubList()
         for node in self.childrenComplete:
             if node.item.object==objSimp : return node
         return None
 
 
+    def afficheCeNiveau(self):
+        #print ('afficheCeNiveau pour ', self.item.nom, self.item.getLabelText())
+        for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
+            widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
+            self.editor.widgetCentraleLayout.removeItem(widget)
+        if self.editor.fenetreCentraleAffichee != None :
+            self.editor.widgetCentraleLayout.removeWidget(self.editor.fenetreCentraleAffichee)
+            self.editor.fenetreCentraleAffichee.setParent(None)
+            self.editor.fenetreCentraleAffichee.close()
+            self.editor.fenetreCentraleAffichee.deleteLater()
+
+        from monWidgetNiveauFact import MonWidgetNiveauFact, MonWidgetNiveauFactTableau
+        maDefinition=self.item.get_definition()
+        monObjet=self.item.object
+        if maDefinition.fenetreIhm=='Tableau' : self.maFenetreCadre=MonWidgetNiveauFactTableau(self,self.editor,maDefinition,monObjet)
+        else : self.maFenetreCadre=MonWidgetNiveauFact(self,self.editor,maDefinition,monObjet)
+        
+        self.fenetre=self.maFenetreCadre
+        self.editor.widgetCentraleLayout.addWidget(self.maFenetreCadre)
+        self.editor.fenetreCentraleAffichee=self.maFenetreCadre
+        self.select()
+        #print ('fin afficheCeNiveau pour ', self.item.nom)
+        
+   
+    def getPanelModifie(self):
+       
+        if self.fenetreIhm == None : return None
+        if self.fenetreIhm=='deplie1Niveau':
+           from InterfaceQT4.monWidgetCommandeDeplie1Niveau import MonWidgetCommandeDeplie1Niveau
+           return MonWidgetCommandeDeplie1Niveau (self,self.editor ,self.item.object)
+        return None
+        
+
     def affichePanneau(self) :
-        #if self.editor.code == 'ASTER' and not(self.item.isactif()) : 
+        #if self.editor.code == 'ASTER' and not(self.item.isActif()) : 
         # posera des pb si un code decide d appeler FIN un mot clef
         # on resoudera a ce moment la
-        # pour l instant pas de poussiere sous le tapis
-        if  not(self.item.isactif()) : 
+        # pour l pas de poussiere sous le tapis
+        #print ('_________________ds affichePanneau pour', self.item.nom)
+        if  not(self.item.isActif()) : 
             from .monWidgetInactif import MonWidgetInactif
             self.fenetre = MonWidgetInactif(self,self.editor)
         else:
            itemParent=self
            while not (hasattr (itemParent,'getPanel')) : itemParent=itemParent.treeParent 
            if itemParent!=self : 
+              #print ('j appelle affichePanneau pour ', itemParent.item.nom , 'par', self.item.nom)
               itemParent.affichePanneau()
+              #print ('fin _________________ds affichePanneau pour', self.item.nom)
               return
-           self.fenetre=self.getPanel()
-           #self.editor.restoreSplitterSizes()
+           self.fenetre=self.getPanelModifie()
+           if self.fenetre == None : self.fenetre=self.getPanel()
+           self.editor.restoreSplitterSizes()
          
         for indiceWidget in range(self.editor.widgetCentraleLayout.count()):
             widget=self.editor.widgetCentraleLayout.itemAt(indiceWidget)
@@ -359,7 +421,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         self.tree.inhibeExpand=True
         self.tree.expandItem(self)
         self.tree.inhibeExpand=False
-        #print( 'fin affichePanneau pour', self.item.nom)
+        #print( '_________________fin affichePanneau pour', self.item.nom)
           
 
     def createPopUpMenu(self):
@@ -374,10 +436,10 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         # (commentariser) un commentaire.
         try :
             pos=self.treeParent.children.index(self)
-            commande_comment = self.item.get_objet_commentarise()
+            commande_comment = self.item.getObjetCommentarise()
             # On signale a l editeur du panel (le JDCDisplay) une modification
-            self.editor.init_modif()
-            self.treeParent.build_children()
+            self.editor.initModif()
+            self.treeParent.buildChildren()
             self.treeParent.children[pos].select()
             self.treeParent.children[pos].affichePanneau()
         except Exception as e:
@@ -390,9 +452,9 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         """
         try :
             pos=self.treeParent.children.index(self)
-            commande,nom = self.item.uncomment()
-            self.editor.init_modif()
-            self.treeParent.build_children()
+            commande,nom = self.item.unComment()
+            self.editor.initModif()
+            self.treeParent.buildChildren()
             self.treeParent.children[pos].select()
             self.treeParent.children[pos].affichePanneau()
         except Exception as e:
@@ -402,7 +464,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         """
         Ajoute un commentaire a l'interieur du JDC :
         """
-        self.editor.init_modif()
+        self.editor.initModif()
         if after:
             pos = 'after'
         else:
@@ -413,7 +475,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         """
         Ajoute un parametre a l'interieur du JDC :
         """
-        self.editor.init_modif()
+        self.editor.initModif()
         if after: pos = 'after'
         else: pos = 'before'
         child=self.appendBrother( PARAMETERS, pos )
@@ -440,7 +502,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         par defaut on l'ajoute immediatement apres 
         Methode externe
         """
-        self.editor.init_modif()
+        self.editor.initModif()
 
         from InterfaceQT4 import compojdc
         if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos)  : return 0
@@ -449,7 +511,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
           index = self.vraiParent.children.index(self)
           if   pos == 'before': index = index
           elif pos == 'after': index = index +1
-          return self.vraiParent.append_child(name,pos=index,plier=plier)
+          return self.vraiParent.appendChild(name,pos=index,plier=plier)
         else :
           index = self.treeParent.children.index(self)
           if   pos == 'before': index = index
@@ -457,13 +519,13 @@ class JDCNode(QTreeWidgetItem,GereRegles):
           else:
               print(six.text_type(pos), tr("  n'est pas un index valide pour appendBrother"))
               return 0
-          return self.treeParent.append_child(name,pos=index,plier=plier)
+          return self.treeParent.appendChild(name,pos=index,plier=plier)
 
     def verifiePosition(self,name,pos,aLaRacine=False):
-        if name not in self.editor.Classement_Commandes_Ds_Arbre : return True
-        indexName=self.editor.Classement_Commandes_Ds_Arbre.index(name)
+        if name not in self.editor.readercata.Classement_Commandes_Ds_Arbre : return True
+        indexName=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(name)
 
-        etapes=self.item.get_jdc().etapes
+        etapes=self.item.getJdc().etapes
         if etapes == [] : return True
 
         if aLaRacine == False :indexOu=etapes.index(self.item.object)
@@ -472,35 +534,35 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         if pos=="after" : indexOu = indexOu+1
         for e in etapes[:indexOu] :
             nom=e.nom
-            if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
-            indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+            if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+            indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
             if indexEtape > indexName :
                comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
                QMessageBox.information( None,tr('insertion impossible'),comment, )
                return False
         for e in etapes[indexOu:] :
             nom=e.nom
-            if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
-            indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+            if nom not in self.editor.readercata.Classement_Commandes_Ds_Arbre : continue
+            indexEtape=self.editor.readercata.Classement_Commandes_Ds_Arbre.index(nom)
             if indexEtape < indexName :
                comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
                QMessageBox.information( None,tr('insertion impossible'),comment, )
                return False
         return True
 
-    def append_child(self,name,pos=None,plier=False):
+    def appendChild(self,name,pos=None,plier=False):
         """
            Methode pour ajouter un objet fils a l'objet associe au noeud self.
            On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
            ou en position intermediaire.
            Si pos vaut None, on le place a la position du catalogue.
         """
-        #print ("************** append_child ",self.item.GetLabelText(), plier)
+        #print ("************** appendChild ",self.item.getLabelText(), pos, plier)
         #import traceback
         #traceback.print_stack()
 
          
-        self.editor.init_modif()
+        self.editor.initModif()
         if pos == 'first':
             index = 0
         elif pos == 'last':
@@ -510,11 +572,11 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             index = pos
         elif type(pos) == types.InstanceType:
             # pos est un item. Il faut inserer name apres pos
-            index = self.item.get_index(pos) +1
+            index = self.item.getIndex(pos) +1
         elif type(name) == types.InstanceType:
-            index = self.item.get_index_child(name.nom)
+            index = self.item.getIndexChild(name.nom)
         else:
-            index = self.item.get_index_child(name)
+            index = self.item.getIndexChild(name)
 
         # si on essaye d inserer a la racine
         if (isinstance(self.treeParent,JDCTree) and index==0) :
@@ -522,7 +584,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
            if not verifiePosition : return 0
 
         self.tree.inhibeExpand=True
-        obj=self.item.additem(name,index) # emet le signal 'add'
+        obj=self.item.addItem(name,index) # emet le signal 'add'
         if obj is None:obj=0
         if obj == 0:return 0
         try :
@@ -533,14 +595,14 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         except :
            child=self.children[index]
         try : 
-           if len(obj) > 1 : self.build_children()
+           if len(obj) > 1 : self.buildChildren()
         except : pass
         self.tree.inhibeExpand=False
         #print (" fin append child")
         return child
 
     def deplace(self):
-        self.editor.init_modif()
+        self.editor.initModif()
         index = self.treeParent.children.index(self) - 1 
         if index < 0 : index =0
         ret=self.treeParent.item.deplaceEntite(self.item.getObject())
@@ -549,22 +611,22 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         """ 
             Methode externe pour la destruction de l'objet associe au noeud
         """
-        self.editor.init_modif()
+        self.editor.initModif()
         index = self.vraiParent.children.index(self) - 1 
         if index < 0 : index =0
         recalcule=0
         if self.item.nom == "VARIABLE" :
            recalcule=1
            jdc=self.item.jdc
-        ret,commentaire=self.vraiParent.item.suppitem(self.item)
+        ret,commentaire=self.vraiParent.item.suppItem(self.item)
         if ret==0 :
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
         else :
-          self.editor.affiche_infos(commentaire)
-        self.treeParent.build_children()
+          self.editor.afficheInfos(commentaire)
+        self.treeParent.buildChildren()
         if self.treeParent.childrenComplete : toselect=self.treeParent.childrenComplete[index]
         else: toselect=self.treeParent
-        if recalcule : jdc.recalcule_etat_correlation()
+        if recalcule : jdc.recalculeEtatCorrelation()
         if ret==0 :
             if self.treeParent.childrenComplete :
                 notdeleted=self.treeParent.childrenComplete[index+1]
@@ -585,7 +647,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             Methode externe pour la destruction d une liste de noeud
         """
         from InterfaceQT4 import compojdc 
-        self.editor.init_modif()
+        self.editor.initModif()
         index=9999
         recalcule=0
         jdc=self.treeParent
@@ -606,10 +668,10 @@ class JDCNode(QTreeWidgetItem,GereRegles):
                  parentPosition=parentPosition.treeParent
 
         for noeud in liste:
-            noeud.treeParent.item.suppitem(noeud.item)
+            noeud.treeParent.item.suppItem(noeud.item)
 
-        jdc.build_children()
-        if recalcule : jdc.recalcule_etat_correlation()
+        jdc.buildChildren()
+        if recalcule : jdc.recalculeEtatCorrelation()
         try    : toselect=parentPosition.children[index]
         except : toselect=jdc
         toselect.select()
@@ -618,7 +680,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
 #    #------------------------------------------------------------------
     def onValid(self):        
 
-        #print "onValid pour ", self.item.nom
+        #print ("onValid pour ", self.item.nom)
         if self.JESUISOFF==1 : return
         if hasattr(self,'fenetre') and self.fenetre: 
            try :
@@ -627,113 +689,115 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             # print "onValid pour ", self.item.nom, self,'pb'
             pass
 
-        if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isvalid():
-           self.item.jdc.recalcule_etat_correlation()
+        if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isValid():
+           self.item.jdc.recalculeEtatCorrelation()
         if hasattr(self.item,'forceRecalcul'):
            self.forceRecalculChildren(self.item.forceRecalcul)
-        self.editor.init_modif()
+        self.editor.initModif()
         
-        self.update_node_valid()
-        self.update_node_label()
-        self.update_node_texte()
+        self.updateNodeValid()
+        self.updateNodeLabel()
+        self.updateNodeTexte()
 
     def onAdd(self,object):
         if self.JESUISOFF==1 : return
-        #print "onAdd pour ", self.item.nom, object.nom
-        self.editor.init_modif()
-        self.update_nodes()
+        #print ("onAdd pour ", self.item.nom, object)
+        self.editor.initModif()
+        self.updateNodes()
         # PN -- non necessaire si item=jdc
         if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
  
     def onSupp(self,object):
         if self.JESUISOFF==1 : return
-        #print "onSup pour ", self.item.nom, object.nom
-        self.editor.init_modif()
-        self.update_nodes()
+        #print "onSup pour ", self.item.nom, object
+        self.editor.initModif()
+        self.updateNodes()
         # PN -- non necessaire si item=jdc
         if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
          
 
 
-    def update_node_valid(self):
+    def updateNodeValid(self):
         """Cette methode remet a jour la validite du noeud (icone)
-           Elle appelle isvalid
+           Elle appelle isValid
         """
         repIcon=self.appliEficas.repIcon
-        monIcone = QIcon(repIcon+"/" +self.item.GetIconName() + ".png")
+        couleur=self.item.getIconName()
+        monIcone = QIcon(repIcon+"/" + couleur + ".png")
         self.setIcon(0,monIcone)
 
 
-    def update_node_label(self):
+
+    def updateNodeLabel(self):
         """ Met a jour le label du noeud """
-        #print "NODE update_node_label", self.item.GetLabelText()
-        labeltext,fonte,couleur = self.item.GetLabelText()
+        #print "NODE updateNodeLabel", self.item.getLabelText()
+        labeltext,fonte,couleur = self.item.getLabelText()
         # PNPN a reflechir
         self.setText(0, labeltext)        
     
-    def update_node_label_in_black(self):
+    def updateNodeLabelInBlack(self):
         if hasattr(self.appliEficas,'noeudColore'): 
             self.appliEficas.noeudColore.setForeground(0,Qt.black)
-            self.appliEficas.noeudColore.update_node_label
+            self.appliEficas.noeudColore.updateNodeLabel
     
-    def update_node_label_in_blue(self):
+    def updateNodeLabelInBlue(self):
         if hasattr(self.appliEficas,'noeudColore'): self.appliEficas.noeudColore.setForeground(0,Qt.black)
         self.setForeground(0,Qt.blue)
-        labeltext,fonte,couleur = self.item.GetLabelText()
+        labeltext,fonte,couleur = self.item.getLabelText()
         self.setText(0, labeltext)        
         self.appliEficas.noeudColore=self
 
-    def update_plusieurs_node_label_in_blue(self,liste):
+    def updatePlusieursNodeLabelInBlue(self,liste):
         if hasattr(self.appliEficas,'listeNoeudsColores'):
            for noeud in self.appliEficas.listeNoeudsColores:
                noeud.setTextColor( 0,Qt.black)
-               noeud.update_node_label()
+               noeud.updateNodeLabel()
         self.appliEficas.listeNoeudsColores=[]
         for noeud in liste :
             noeud.setTextColor( 0,Qt.blue )
-            labeltext,fonte,couleur = noeud.item.GetLabelText()
+            labeltext,fonte,couleur = noeud.item.getLabelText()
             noeud.setText(0, labeltext)        
             self.appliEficas.listeNoeudsColores.append(noeud)
 
-    def update_node_texte_in_black(self):
+    def updateNodeTexteInBlack(self):
         """ Met a jour les noms des SD et valeurs des mots-cles """
         self.setTextColor( 1,Qt.black )
-        value = self.item.GetText()
+        value = self.item.getText()
         self.setText(1, value)
 
-    def update_node_texte(self):
+    def updateNodeTexte(self):
         """ Met a jour les noms des SD et valeurs des mots-cles """
-        value = self.item.GetText()
+        value = self.item.getText()
         self.setText(1, value)
         
 
-    def update_node_texte_in_blue(self):
+    def updateNodeTexteInBlue(self):
         self.setTextColor( 1,Qt.blue )
-        value = self.item.GetText()
+        value = self.item.getText()
         self.setText(1, value)
 
-    def update_nodes(self):
-        #print 'NODE update_nodes', self.item.GetLabelText()
-        self.build_children()
+    def updateNodes(self):
+        #print 'NODE updateNodes', self.item.getLabelText()
+        self.buildChildren()
 
-    def update_valid(self) :
+    def updateValid(self) :
         """Cette methode a pour but de mettre a jour la validite du noeud
            et de propager la demande de mise a jour a son parent
         """
-        #print "NODE update_valid", self.item.GetLabelText()
-        self.update_node_valid()
+        #print "NODE updateValid", self.item.getLabelText()
+        self.updateNodeValid()
         try :
-          self.treeParent.update_valid()
+          self.treeParent.updateValid()
         except:
           pass
             
-    def update_texte(self):
+    def updateTexte(self):
         """ Met a jour les noms des SD et valeurs des mots-cles """
-        #print "NODE update_texte", self.item.GetLabelText()
-        self.update_node_texte()
+        #print "NODE updateTexte", self.item.getLabelText()
+        self.updateNodeVexte()
         if self.isExpanded() :
             for child in self.children:
-                if child.isHidden() == false : child.update_texte()
+                if child.isHidden() == false : child.updateTexte()
 
 
     def forceRecalculChildren(self,niveau):
@@ -753,10 +817,10 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             Declenche la copie de l'objet item avec pour cible
             l'objet passe en argument : node_selected
         """
-        objet_a_copier = self.item.get_copie_objet()
+        objet_a_copier = self.item.getCopieObjet()
         child=node_selected.doPasteCommande(objet_a_copier,pos)
         if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
-        self.update_node_label_in_black()
+        self.updateNodeLabelInBlack()
         return child
 
     def doPasteCommande(self,objet_a_copier,pos='after'):
@@ -776,12 +840,11 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         """
            Realise la copie de l'objet passe en argument (objet_a_copier)
         """
-        objet = objet_a_copier.item.get_copie_objet()
-        child = self.append_child(objet,pos='first')
+        objet = objet_a_copier.item.getCopieObjet()
+        child = self.appendChild(objet,pos='first')
         return child
 
     def plieToutEtReafficheSaufItem(self, itemADeplier):
-        #print "je suis dans plieToutEtReaffiche", self.item.get_nom()
         self.inhibeExpand=True
         from InterfaceQT4 import compojdc
         if (isinstance(self, compojdc.Node)) :
@@ -800,6 +863,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         self.inhibeExpand=False
 
     def plieToutEtReaffiche(self):
+        #print ('plieToutEtReaffiche', self.item.getNom())
         from InterfaceQT4 import compojdc
         if (isinstance(self, compojdc.Node)) : self.affichePanneau(); return 
         self.inhibeExpand=True
@@ -810,6 +874,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
             if (isinstance(item,compobloc.Node)) : continue
             item.setPlie()
         self.affichePanneau()
+        #print ("fin plieToutEtReaffiche", self.item.getNom())
 
     def deplieToutEtReaffiche(self):
         self.editor.deplier = True
@@ -819,7 +884,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
 
     def setPlie(self):
         #print "je mets inhibeExpand a true dans setPlie"
-        #print "je suis dans plieTout", self.item.get_nom()
+        #print ("je suis dans plieTout", self.item.getNom())
         from . import compojdc
         if self.fenetre == self.editor.fenetreCentraleAffichee  and isinstance(self.treeParent,compojdc.Node): 
            return
@@ -836,15 +901,17 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         #       item.appartientAUnNoeudPlie=False
 
     def setPlieChildren(self):
-        #print ("dans setPlieChildren pour", self.item.nom)
         self.plie=True
+        from InterfaceQT4 import composimp
+        if isinstance(self,composimp.Node) : return
         for c in self.children :
             c.setPlieChildren()
-            #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
+            #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0]
             c.appartientAUnNoeudPlie=True
             c.plie=True
             #print "dans setPlieChildren plie", c.item.nom
-            c.setExpanded(False)
+            #  01/2018 PNPN : boucle sur MT __ La ligne suivante ne me semble pas necessaire
+            #if not (isinstance(c,composimp.Node)) :c.setExpanded(False)
 
         # Pour les blocs et les motcles list
         # on affiche un niveau de plus
@@ -856,17 +923,9 @@ class JDCNode(QTreeWidgetItem,GereRegles):
                niveauPere=niveauPere.treeParent
             for c in self.children :
                 c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
-                #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie
+                #print ("dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.getLabelText()[0], "mis a la valeur ", niveauPere.appartientAUnNoeudPlie)
                 c.setExpanded(False)
 
-        # on affiche un niveau de plus
-        #if isinstance(self,compomclist.Node)  : 
-        #if isinstance(self,compobloc.Node)  : 
-        #    niveauPere=self.treeParent
-        #    while (isinstance(niveauPere,compobloc.Node)):
-        #       niveauPere=niveauPere.treeParent
-        #    for c in self.children :
-        #        c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
 
     def setDeplie(self):
         #print "dans setPlieChildren pour", self.item.nom
@@ -879,7 +938,7 @@ class JDCNode(QTreeWidgetItem,GereRegles):
         #print "je mets inhibeExpand a false dans setDePlie"
 
     def setDeplieChildren(self):
-        #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
+        #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.getLabelText()
         for c in self.children :
             c.setDeplieChildren()
             #print "dans setDeplieChildren ", c.item.nom
index df06e88d9c103e6fcad0fd0814b9e22011988de7..f41f7c073485cc0cf69ddee4b41c49e4e75fe277 100644 (file)
@@ -48,12 +48,12 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
 class BLOCTreeItem(compofact.FACTTreeItem):
   itemNode=Node
 
-  def get_objet(self,name) :
-      for v in self.object.mc_liste:
-          if v.nom == name : return v
-      return None
+  #def get_objet(self,name) :
+  #    for v in self.object.mcListe:
+  #        if v.nom == name : return v
+  #    return None
     
-  def iscopiable(self):
+  def isCopiable(self):
     return 0
 
 
index e699a33451bf9be29d5a66f8b5f77ae7fddc499e..cedfadce1a47835c8da9aedef013ad55c841607c 100644 (file)
@@ -38,21 +38,21 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 
     def createPopUpMenu(self):
         typeNode.PopUpMenuNodePartiel.createPopUpMenu(self)
-        self.Decommente = QAction(tr("Decommenter"),self.tree)
-        self.Decommente.triggered.connect(self.Decommenter)
+        self.Decommente = QAction(tr("decommenter"),self.tree)
+        self.Decommente.triggered.connect(self.decommenter)
         self.Decommente.setStatusTip(tr("Decommente la commande "))
 
-        if hasattr(self.item,'uncomment'):
+        if hasattr(self.item,'unComment'):
            self.menu.addAction(self.Decommente)
 
-    def Decommenter(self) :
+    def decommenter(self) :
         item= self.tree.currentItem()
         item.unCommentIt()
 
-    def update_node_label(self) :
+    def updateNodeLabel(self) :
         """
         """
-        debComm=self.item.GetText()
+        debComm=self.item.getText()
         self.setText(1,debComm)
 
 
@@ -61,9 +61,9 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
     itemNode=Node    
 
     def init(self):
-      self.setfunction = self.set_valeur
+      self.setFunction = self.setValeur
 
-    def GetIconName(self):
+    def getIconName(self):
       """
       Retourne le nom de l'icone associee au noeud qui porte self,
       dependant de la validite de l'objet
@@ -71,7 +71,7 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
       """
       return "ast-white-percent"
 
-    def GetLabelText(self):
+    def getLabelText(self):
         """ Retourne 3 valeurs :
         - le texte a afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
@@ -79,13 +79,13 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
         """
         return tr('Commentaire'),None,None
 
-    def get_valeur(self):
+    def getValeur(self):
       """
       Retourne la valeur de l'objet Commentaire cad son texte
       """
-      return self.object.get_valeur() or ''
+      return self.object.getValeur() or ''
     
-    def GetText(self):
+    def getText(self):
         texte = self.object.valeur
         texte = texte.split('\n')[0]
         if len(texte) < 25 :
@@ -93,23 +93,23 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
         else :
             return texte[0:24]
 
-    def set_valeur(self,valeur):
+    def setValeur(self,valeur):
       """
       Affecte valeur a l'objet COMMENTAIRE
       """
-      self.object.set_valeur(valeur)
+      self.object.setValeur(valeur)
       
-    def GetSubList(self):
+    def getSubList(self):
       """
       Retourne la liste des fils de self
       """
       return []
 
 
-    def get_objet_commentarise(self):
+    def getObjetCommentarise(self):
        """
-           La methode get_objet_commentarise() de la classe compocomm.COMMTreeItem
-           surcharge la methode get_objet_commentarise de la classe Objecttreeitem.ObjectTreeItem
+           La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem
+           surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem
            elle a pour but d'empecher l'utilisateur final de commentariser un commentaire.
        """
        raise EficasException( 'Impossible de commentariser un commentaire' )
index 191057bb152bf729a979eb2b6372ef8200b8fffd..41eed95a36ee0c016cd2bfe4d72c100e620de9d3 100644 (file)
@@ -28,20 +28,20 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
     itemNode=compocomm.Node
 
     def init(self):
-      self.setfunction = self.set_valeur
+      self.setFunction = self.setValeur
 
-    def GetIconName(self):
+    def getIconName(self):
       """
       Retourne le nom de l'icone associee au noeud qui porte self,
       dependant de la validite de l'objet
       NB : une commande commentarisee est toujours valide ...
       """
-      if self.isvalid():
+      if self.isValid():
           return "ast-green-percent"
       else:
           return "ast-red-percent"
 
-    def GetLabelText(self):
+    def getLabelText(self):
         """ Retourne 3 valeurs :
         - le texte a afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
@@ -49,13 +49,13 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
         """
         return 'commentaire'
 
-    def get_valeur(self):
+    def getValeur(self):
       """
       Retourne la valeur de la commande commentarisee cad son texte
       """
-      return self.object.get_valeur() or ''
+      return self.object.getValeur() or ''
     
-    def GetText(self):
+    def getText(self):
         texte = self.object.valeur
         texte = texte.split('\n')[0]
         if len(texte) < 25 :
@@ -63,26 +63,26 @@ class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
         else :
             return texte[0:24]
 
-    def set_valeur(self,valeur):
+    def setValeur(self,valeur):
       """
       Afefcte valeur a l'objet commande commentarisee
       """
-      self.object.set_valeur(valeur)
+      self.object.setValeur(valeur)
       
-    def GetSubList(self):
+    def getSubList(self):
       """
       Retourne la liste des fils de self
       """
       return []
 
-    def uncomment(self):
+    def unComment(self):
       """
       Demande a l'objet commande commentarisee de se decommentariser.
       Si l'operation s'effectue correctement, retourne l'objet commande
       et eventuellement le nom de la sd produite, sinon leve une exception
       """
       try:
-        commande,nom = self.object.uncomment()
+        commande,nom = self.object.unComment()
         #self.parent.children[pos].select()
       except Exception as e:
         traceback.print_exc()
index b9eee20d8b7c666ca07563d6b93d49362c44e173..8a9d66fbb5ca01237a6d6650abb814060fa72c63 100644 (file)
 #
 
 from __future__ import absolute_import
-from . import browser
-from . import typeNode
+from InterfaceQT4 import browser
+from InterfaceQT4 import typeNode
 from Extensions.i18n import tr
 
 
 from Editeur import Objecttreeitem
 import six
+import traceback
 
 
 class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 
     def getPanelGroupe(self,parentQt,commande,insertIn=-1):
-        import traceback
         maDefinition=self.item.get_definition()
         monObjet=self.item.object
         monNom=self.item.nom
@@ -39,15 +39,15 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
         if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
         else : self.niveau=1
         #if  hasattr(self,'plie') :print self.item.nom, self.plie
-        #if maDefinition.sensLayout == 'horizontal':
-        #   from .monWidgetFact import MonWidgetFactHorizontal
-        #   widget=MonWidgetFactHorizontal(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+        #if maDefinition.fenetreIhm == 'Tableau':
+        #   from InterfaceQt4.monWidgetFact import MonWidgetFactTableau
+        #   widget=MonWidgetFactTableau(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         #elif  hasattr(self,'plie') and self.plie==True : 
         if  hasattr(self,'plie') and self.plie==True : 
-           from .monWidgetFactPlie import MonWidgetFactPlie
+           from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
            widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
         else:
-           from .monWidgetFact import MonWidgetFact
+           from InterfaceQT4.monWidgetFact import MonWidgetFact
            widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
         return widget
 
@@ -59,32 +59,32 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel):
 class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
   itemNode=Node
   
-  def IsExpandable(self):
+  def isExpandable(self):
     return 1
 
-  def GetText(self):
+  def getText(self):
       return  ''
 
-  def GetLabelText(self):
+  def getLabelText(self):
       """ Retourne 3 valeurs :
         - le texte à afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
         - la couleur du texte
       """
       # None --> fonte et couleur par defaut
-      if not(hasattr(self.object,'getlabeltext')): return self.object.nom,None,None
-      return self.object.getlabeltext(),None,None
+      if not(hasattr(self.object,'getLabelText')): return self.object.nom,None,None
+      return self.object.getLabelText(),None,None
 
-  def isvalid(self):
-    return self.object.isvalid()
+  def isValid(self):
+    return self.object.isValid()
 
-  def iscopiable(self):
+  def isCopiable(self):
     return 1
 
-  def GetIconName(self):
-    if self.object.isvalid():
+  def getIconName(self):
+    if self.object.isValid():
       return "ast-green-los"
-    elif self.object.isoblig():
+    elif self.object.isOblig():
       return "ast-red-los"
     else:
       return "ast-yel-los"
@@ -94,11 +94,11 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
   #  keys=self.object.mc_dict
   #  return keys
 
-  def GetSubList(self):
+  def getSubList(self):
       """
          Reactualise la liste des items fils stockes dans self.sublist
       """
-      liste=self.object.mc_liste
+      liste=self.object.mcListe
       sublist=[None]*len(liste)
       # suppression des items lies aux objets disparus
       for item in self.sublist:
@@ -113,20 +113,20 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
       for obj in liste:
          if sublist[pos] is None:
             # nouvel objet : on cree un nouvel item
-            def setfunction(value, object=obj):
+            def setFunction(value, object=obj):
                 object.setval(value)
-            item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+            item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
             sublist[pos]=item
          pos=pos+1
 
       self.sublist=sublist
       return self.sublist
 
-  def additem(self,name,pos):
-    objet = self.object.addentite(name,pos)
+  def addItem(self,name,pos):
+    objet = self.object.addEntite(name,pos)
     return objet
 
-  def suppitem(self,item) :
+  def suppItem(self,item) :
       """ 
          Cette methode a pour fonction de supprimer l'item passee en argument
          des fils de l'item FACT qui est son pere
@@ -134,16 +134,13 @@ class FACTTreeItem(Objecttreeitem.ObjectTreeItem):
            - item.getObject() = MCSIMP ou MCBLOC 
       """
       itemobject=item.getObject()
-      if itemobject.isoblig() :
-         #self.editor.affiche_infos(tr('Impossible de supprimer un mot-cle obligatoire '),Qt.red)
+      if itemobject.isOblig() :
          return (0, tr('Impossible de supprimer un mot-cle obligatoire '))
 
-      if self.object.suppentite(itemobject):
+      if self.object.suppEntite(itemobject):
          message = tr("Mot-cle %s supprime")+ six.text_type(itemobject.nom)
-         #self.editor.affiche_commentaire(message)
          return (1, message)
       else:
-         #self.editor.affiche_infos(tr('Pb interne : impossible de supprimer ce mot-cle'),Qt.red)
          return (0,tr('Pb interne : impossible de supprimer ce mot-cle'))
 
 import Accas
index 6142c55b811b5b244ec56c7193c8b81a456198fd..d18af81b9b843a601e604986093f76e8626b2233 100644 (file)
@@ -49,12 +49,12 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
     itemNode=FormuleNode
 
     def init(self):
-      self.setfunction = self.set_valeur
+      self.setFunction = self.setValeur
 
 # ---------------------------------------------------------------------------
 #                   API de FORMULE pour l'arbre 
 # ---------------------------------------------------------------------------
-    def GetSubList(self):
+    def getSubList(self):
       """
       Retourne la liste des fils de self
       On considere que FORMULE n'a pas de fils
@@ -64,27 +64,27 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
       # de facon traditionnelle
       return []
 
-    def GetIconName(self):
+    def getIconName(self):
       """
       Retourne le nom de l'icone a afficher dans l'arbre
       Ce nom depend de la validite de l'objet
       """
-      if self.object.isactif():
-        if self.object.isvalid():
+      if self.object.isActif():
+        if self.object.isValid():
           return "ast-green-square"
         else:
           return "ast-red-square"
       else:
         return "ast-white-text"
 
-    def GetLabelText(self):
+    def getLabelText(self):
       """ Retourne 3 valeurs :
       - le texte a afficher dans le noeud representant l'item
       - la fonte dans laquelle afficher ce texte
       - la couleur du texte
       """
       return self.labeltext,None,None
-      #if self.object.isactif():
+      #if self.object.isActif():
         # None --> fonte et couleur par defaut
       #  return tr(self.labeltext),None,None
       #else:
@@ -96,24 +96,24 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
 #       du parametre = API graphique de la FORMULE pour Panel et EFICAS
 # ---------------------------------------------------------------------------
 
-    def get_nom(self):
+    def getNom(self):
       """
       Retourne le nom de la FORMULE
       """
-      return self.object.get_nom()
+      return self.object.getNom()
 
-    def get_type(self):
+    def getType(self):
       """
       Retourne le type de la valeur retournee par la FORMULE
       """
       return self.object.type_retourne
 
-    def get_args(self):
+    def getArgs(self):
       """
       Retourne les arguments de la FORMULE
       """
       args=""
-      for mot in self.object.mc_liste:
+      for mot in self.object.mcListe:
           if mot.nom == 'NOM_PARA':
              args=mot.valeur
              break
@@ -127,26 +127,26 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
              pass
       return args
 
-    def get_corps(self):
+    def getCorps(self):
       """
       Retourne le corps de la FORMULE
       """
       corps=""
-      for mot in self.object.mc_liste:
+      for mot in self.object.mcListe:
           if mot.nom == 'VALE':
              corps=mot.valeur
              break
       return corps
 
 
-    def get_liste_types_autorises(self):
+    def getListeTypesAutorises(self):
       """
          Retourne la liste des types autorises pour les valeurs de sortie 
          d'une FORMULE
       """
       return self.object.l_types_autorises
 
-    def save_formule(self,new_nom,new_typ,new_arg,new_exp):
+    def saveFormule(self,new_nom,new_typ,new_arg,new_exp):
       """
       Verifie si (new_nom,new_typ,new_arg,new_exp) definit bien une FORMULE 
       licite :
@@ -155,41 +155,41 @@ class FORMULETreeItem(compooper.EtapeTreeItem):
           - si non, laisse les parametres anciens de la FORMULE inchanges et 
             retourne 0
       """
-      test,erreur = self.object.verif_formule_python(formule=(new_nom,new_typ,new_arg,
+      test,erreur = self.object.verifFormule_python(formule=(new_nom,new_typ,new_arg,
                                                        new_exp))
       if test :
           # la formule est bien correcte : on sauve les nouveaux parametres
-          test=self.object.update_formule_python(formule=(new_nom,new_typ,new_exp,new_arg))
+          test=self.object.updateFormulePython(formule=(new_nom,new_typ,new_exp,new_arg))
       return test,erreur
 
 # ---------------------------------------------------------------------------
 #          Acces aux methodes de verification de l'objet FORM_ETAPE
 # ---------------------------------------------------------------------------
 
-    def verif_nom(self,nom):
+    def verifNom(self,nom):
         """
         Lance la verification du nom passe en argument
         """
-        return self.object.verif_nom(nom)
+        return self.object.verifNom(nom)
 
-    def verif_arguments(self,arguments):
+    def verifArguments(self,arguments):
         """
         Lance la verification des arguments passes en argument
         """
-        return self.object.verif_arguments('('+arguments+')')
+        return self.object.verifArguments('('+arguments+')')
 
-    def verif_formule(self,formule):
+    def verifFormule(self,formule):
         """
         Lance la verification de FORMULE passee en argument
         """
-        return self.object.verif_formule(formule=formule)
+        return self.object.verifFormule(formule=formule)
 
 
-    def verif_formule_python(self,formule):
+    def verifFormule_python(self,formule):
         """
         Lance la verification de FORMULE passee en argument
         """
-        return self.object.verif_formule_python(formule=formule)
+        return self.object.verifFormule_python(formule=formule)
 
 import Accas
 treeitem =FORMULETreeItem
index fd95201a0d5b20648628a3aa4b2fff50e0e69c3e..111a4e982f71bbf3ff0899e82775de9e052f69d7 100644 (file)
@@ -36,7 +36,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine):
         typeNode.PopUpMenuRacine.createPopUpMenu(self)
 
     def addParameters(self,apres):
-        param=self.append_child("PARAMETRE",pos=0)
+        param=self.appendChild("PARAMETRE",pos=0)
         return param
        
 
@@ -44,24 +44,24 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine):
 class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
   itemNode=Node
   
-  def IsExpandable(self):
+  def isExpandable(self):
     return 1
 
-  def GetText(self):
+  def getText(self):
       return  "    "
 
-  def GetLabelText(self):
+  def getLabelText(self):
       # None --> fonte et couleur par defaut
       return tr(self.object.nom),None,None
 
-  def get_jdc(self):
+  def getJdc(self):
     """
     Retourne l'objet pointe par self
     """
     return self.object
   
-  def GetIconName(self):
-    if self.object.isvalid():
+  def getIconName(self):
+    if self.object.isValid():
       return "ast-green-square"
     else:
       return "ast-red-square"
@@ -72,17 +72,17 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
   #    else:
   #        return range(len(self.object.etapes))
 
-  def additem(self,name,pos):
-      cmd = self._object.addentite(name,pos)
+  def addItem(self,name,pos):
+      cmd = self._object.addEntite(name,pos)
       return cmd
 
-  def suppitem(self,item) :
+  def suppItem(self,item) :
     # item             = item de l'ETAPE a supprimer du JDC
     # item.getObject() = ETAPE ou COMMENTAIRE
     # self.object      = JDC
 
     itemobject=item.getObject()
-    if self.object.suppentite(itemobject):
+    if self.object.suppEntite(itemobject):
        if itemobject.nature == "COMMENTAIRE" :
           message = tr("Commentaire supprime")
        else :
@@ -92,7 +92,7 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
        message=tr("Pb interne : impossible de supprimer cet objet")
        return 0,message
 
-  def GetSubList(self):
+  def getSubList(self):
     """
        Retourne la liste des items fils de l'item jdc.
        Cette liste est conservee et mise a jour a chaque appel
@@ -115,19 +115,19 @@ class JDCTreeItem(Objecttreeitem.ObjectTreeItem):
     for obj in liste:
        if sublist[pos] is None:
           # nouvel objet : on cree un nouvel item
-          item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj)
+          item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj)
           sublist[pos]=item
        pos=pos+1
 
     self.sublist=sublist
     return self.sublist
 
-  def get_l_noms_etapes(self):
+  def getLNomsEtapes(self):
       """ Retourne la liste des noms des etapes de self.object"""
-      return self.object.get_l_noms_etapes()
+      return self.object.getLNomsEtapes()
 
-  def get_liste_cmd(self):
-      listeCmd = self.object.niveau.definition.get_liste_cmd()
+  def getListeCmd(self):
+      listeCmd = self.object.niveau.definition.getListeCmd()
       return listeCmd
 
 import Accas
index f597a98f9df2e0bdde729aa68e20c9f707209fe9..64a9d63ff240800dad49e09ed5c33a0ce5e6a42c 100644 (file)
@@ -27,9 +27,9 @@ import traceback
 # Modules Eficas
 from Editeur import Objecttreeitem
 from Extensions.i18n import tr
-from . import compooper
-from . import browser
-from . import typeNode
+from InterfaceQT4 import compooper
+from InterfaceQT4 import browser
+from InterfaceQT4 import typeNode
 from PyQt5.QtWidgets import QAction
 from PyQt5.QtCore import Qt
 
@@ -44,12 +44,12 @@ class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):
 
     def createPopUpMenu(self):
       typeNode.PopUpMenuNode.createPopUpMenu(self)
-      if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
+      if ("AFFE_CARA_ELEM" in self.item.getGenealogie()) and self.editor.salome:
            self.ViewElt = QAction(tr('View3D'),self.tree)
            self.ViewElt.triggered.connect(self.view3D)
            self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
            self.menu.addAction(self.ViewElt)
-           if self.item.isvalid() :
+           if self.item.isValid() :
               self.ViewElt.setEnabled(1)
            else:
               self.ViewElt.setEnabled(0)
@@ -73,10 +73,10 @@ class MACROTreeItem(compooper.EtapeTreeItem):
 
 class INCLUDETreeItemBase(MACROTreeItem):
 
-    def __init__(self,appli, labeltext, object, setfunction):    
-       MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
+    def __init__(self,appli, labeltext, object, setFunction):    
+       MACROTreeItem.__init__(self,appli, labeltext, object, setFunction)
 
-    def iscopiable(self):
+    def isCopiable(self):
        return 0
 
 
@@ -98,7 +98,7 @@ class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):
     
         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
                #L'include n'est pas initialise
-               self.item.object.build_include(None,"")
+               self.item.object.buildInclude(None,"")
     
         # On cree un nouvel onglet dans le bureau
         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
@@ -130,7 +130,7 @@ class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):
         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
             text="""DEBUT()
                     FIN()"""
-            self.object.build_poursuite(None,text)
+            self.object.buildPoursuite(None,text)
     
         # On cree un nouvel onglet dans le bureau
         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
@@ -174,18 +174,18 @@ class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
 # ------------------------------------
     
 
-def treeitem(appli, labeltext, object, setfunction=None):
+def treeitem(appli, 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(appli, labeltext, object, setFunction)
    elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
-      return INCLUDETreeItem(appli, labeltext, object, setfunction)
+      return INCLUDETreeItem(appli, labeltext, object, setFunction)
    elif object.nom == "POURSUITE":
-      return POURSUITETreeItem(appli, labeltext, object, setfunction)
+      return POURSUITETreeItem(appli, labeltext, object, setFunction)
    else:
-      return MACROTreeItem(appli, labeltext, object, setfunction)
+      return MACROTreeItem(appli, labeltext, object, setFunction)
 
 import Accas
 objet=Accas.MACRO_ETAPE
index 6b8a7d4d45e2996fd6c31e582cee3cee525c4281..7035e14b9374596f6a4af444ffdfaf085ad2f1f6 100644 (file)
@@ -41,30 +41,30 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         monObjet=self.item.object
         monNom=self.item.nom
         maCommande=commande
-        #print "ds getPanelGroupe" , self.item.nom
         if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
         else : self.niveau=1
+        # attention si l objet est une mclist on utilise bloc
         if not (monObjet.isMCList()) :
            if  hasattr(self,'plie') and self.plie==True : 
-               from .monWidgetFactPlie import MonWidgetFactPlie
+               from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
                widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
            else:
-               from .monWidgetFact import MonWidgetFact
+               from InterfaceQT4.monWidgetFact import MonWidgetFact
                widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande,insertIn)
         else :
-           from .monWidgetBloc import MonWidgetBloc
+           from InterfaceQT4.monWidgetBloc import MonWidgetBloc
            widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
         return widget
 
 
 
     def doPaste(self,node_selected,pos):
-        objet_a_copier = self.item.get_copie_objet()
+        objet_a_copier = self.item.getCopieObjet()
         # before est un effet de bord heureux sur l index
         child=self.appendBrother(objet_a_copier,'before')
         if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
-        self.update_node_label_in_black()
-        self.parent().build_children()
+        self.update_NodeLabelInBlack()
+        self.parent().buildChildren()
         return child
 
 
@@ -87,9 +87,9 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 
     def updateDelegate(self):
         if len(self._object) > 1:
-           self.setdelegate(self._object)
+           self.setDelegate(self._object)
         else:
-           self.setdelegate(self._object.data[0])
+           self.setDelegate(self._object.data[0])
 
     def panel(self,jdcdisplay,pane,node):
         """ Retourne une instance de l'objet panneau associe a l'item (self)
@@ -104,17 +104,17 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         else:
            return compofact.FACTPanel(jdcdisplay,pane,node)
 
-    def IsExpandable(self):
+    def isExpandable(self):
         if len(self._object) > 1:
-           return Objecttreeitem.SequenceTreeItem.IsExpandable(self)
+           return Objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
-           return compofact.FACTTreeItem.IsExpandable(self)
+           return compofact.FACTTreeItem.isExpandable(self)
 
-    def GetSubList(self):
+    def getSubList(self):
         self.updateDelegate()
         if len(self._object) <= 1:
            self._object.data[0].alt_parent=self._object
-           return compofact.FACTTreeItem.GetSubList(self)
+           return compofact.FACTTreeItem.getSubList(self)
 
         liste=self._object.data
         sublist=[None]*len(liste)
@@ -131,9 +131,9 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         for obj in liste:
            if sublist[pos] is None:
               # nouvel objet : on cree un nouvel item
-              def setfunction(value, object=obj):
+              def setFunction(value, object=obj):
                   object=value
-              item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+              item = self.makeObjecttreeitem(self.appli, 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
@@ -145,23 +145,23 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         self.sublist=sublist
         return self.sublist
 
-    def GetIconName(self):
-        if self._object.isvalid():
+    def getIconName(self):
+        if self._object.isValid():
             return "ast-green-los"
-        elif self._object.isoblig():
+        elif self._object.isOblig():
             return "ast-red-los"
         else:
             return "ast-yel-los"
 
-    def get_docu(self):
+    def getDocu(self):
         """ Retourne la clef de doc de l'objet pointe par self """
-        return self.object.get_docu()    
+        return self.object.getDocu()    
 
-    def iscopiable(self):
+    def isCopiable(self):
         if len(self._object) > 1:
-           return Objecttreeitem.SequenceTreeItem.iscopiable(self)
+           return Objecttreeitem.SequenceTreeItem.isCopiable(self)
         else:
-           return compofact.FACTTreeItem.iscopiable(self)
+           return compofact.FACTTreeItem.isCopiable(self)
 
     def isMCFact(self):
         """
@@ -175,30 +175,29 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         """
         return len(self._object) > 1
         
-    def get_copie_objet(self):
+    def getCopieObjet(self):
         return self._object.data[0].copy()
 
-    def additem(self,obj,pos):
-        #print "compomclist.additem",obj,pos
+    def addItem(self,obj,pos):
+        #print "compomclist.addItem",obj,pos
         if len(self._object) <= 1:
-           return compofact.FACTTreeItem.additem(self,obj,pos)
+           return compofact.FACTTreeItem.addItem(self,obj,pos)
 
-        o= self.object.addentite(obj,pos)
+        o= self.object.addEntite(obj,pos)
         return o
 
-    def suppitem(self,item):
+    def suppItem(self,item):
         """
         Retire un objet MCFACT de la MCList (self.object) 
         """
-        #print "compomclist.suppitem",item
+        #print "compomclist.suppItem",item
         obj=item.getObject()
         if len(self._object) <= 1:
-           return compofact.FACTTreeItem.suppitem(self,item)
+           return compofact.FACTTreeItem.suppItem(self,item)
 
-        if self.object.suppentite(obj):
+        if self.object.suppEntite(obj):
            if len(self._object) == 1: self.updateDelegate()     
            message = "Mot-clef " + obj.nom + " supprime"
-           #self.editor.affiche_commentaire(message)
            return (1,message)
         else:
            return (0,tr('Impossible de supprimer ce mot-clef'))
@@ -207,8 +206,8 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 import Accas
 objet = Accas.MCList    
 
-def treeitem(appli,labeltext,object,setfunction):
+def treeitem(appli,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(appli,labeltext,object,setFunction)
index bbf7db34f64bc01ef710c93150787f1154930a1c..c03704bf25e9ac9ef7650c9438abbce2d94538a3 100644 (file)
@@ -43,19 +43,19 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
         self.treeParent.tree.openPersistentEditor(self,1)
         self.monWidgetNom=self.treeParent.tree.itemWidget(self,1)
         self.monWidgetNom.returnPressed.connect(self.nomme)
-        if self.item.GetIconName() == "ast-red-square" : self.monWidgetNom.setDisabled(True)
+        if self.item.getIconName() == "ast-red-square" : self.monWidgetNom.setDisabled(True)
         #else : self.monWidgetNom.setFocus()  ;self.monWidgetNom.setDisabled(False)
 
     def nomme(self):
         nom=str(self.monWidgetNom.text())
-        self.editor.init_modif()
-        test,mess = self.item.nomme_sd(nom)
+        self.editor.initModif()
+        test,mess = self.item.nommeSd(nom)
         if (test== 0):
-           self.editor.affiche_infos(mess,Qt.red)
-           old=self.item.GetText()
+           self.editor.afficheInfos(mess,Qt.red)
+           old=self.item.getText()
            self.monWidgetNom.setText(old)
         else :
-           self.editor.affiche_commentaire(tr("Nommage du concept effectue"))
+           self.editor.afficheCommentaire(tr("Nommage du concept effectue"))
            self.onValid()
            try :
              self.fenetre.LENom.setText(nom)
@@ -69,21 +69,21 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
 
     def createPopUpMenu(self):
         typeNode.PopUpMenuNode.createPopUpMenu(self)
-        if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome: 
+        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() :
+           if self.item.isValid() :
               self.ViewElt.setEnabled(1)
            else:
               self.ViewElt.setEnabled(0)
-        if  self.item.get_nom() == "DISTRIBUTION" :
+        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() :
+           if self.item.isValid() :
               self.Graphe.setEnabled(1)
            else:
               self.Graphe.setEnabled(0)
@@ -102,7 +102,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
             g.gener(self.item.object, format='beautifie')
             stdGener = g.getGenerateur()
             loi = list(g.dictMCLois.keys())[0]
-            nomLoi = loi.get_name()
+            nomLoi = loi.getName()
             (fd, fichier) = tempfile.mkstemp(prefix = "openturns_graph_", suffix = ".png")
             os.close(fd)
             chemin = os.path.dirname(fichier)
@@ -136,21 +136,21 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
   """
   itemNode=Node
   
-  def IsExpandable(self):
+  def isExpandable(self):
       return 1
 
-  def GetIconName(self):
+  def getIconName(self):
       """
       Retourne le nom de l'icone a afficher dans l'arbre
       Ce nom depend de la validite de l'objet
       """
-      if not self.object.isactif():
+      if not self.object.isActif():
          return "ast-white-square"
-      elif self.object.isvalid():
+      elif self.object.isValid():
          return "ast-green-square"
       else:
-         valid=self.valid_child()
-         valid=valid * self.valid_regles("non")
+         valid=self.validChild()
+         valid=valid * self.validRegles("non")
          if self.reste_val != {}:
             valid=0
          if valid==0  :
@@ -165,57 +165,54 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
               pass
             return "ast-yellow-square"
 
-  def GetLabelText(self):
+  def getLabelText(self):
       """ Retourne 3 valeurs :
       - le texte a afficher dans le noeud représentant l'item
       - la fonte dans laquelle afficher ce texte
       - la couleur du texte
       """
       return self.labeltext,None,None
-      #if self.object.isactif():
+      #if self.object.isActif():
         # None --> fonte et couleur par défaut
       #  return self.labeltext,None,None
       #else:
       #  return self.labeltext, None, None #CS_pbruno todo
       
-  def get_objet(self,name) :
-      for v in self.object.mc_liste:
-          if v.nom == name : return v
-      return None
+  #def get_objet(self,name) :
+  #    for v in self.object.mcListe:
+  #        if v.nom == name : return v
+  #    return None
       
 def get_type_sd_prod(self):
-      """
-         Retourne le nom du type du concept résultat de l'étape
-      """
     sd_prod=self.object.get_type_produit()
-      if sd_prod:
-         return sd_prod.__name__
-      else:
-         return ""
-
-  def additem(self,name,pos):      
-      mcent = self._object.addentite(name,pos)
# def getType_sd_prod(self):
#     """
#        Retourne le nom du type du concept résultat de l'étape
#     """
#     sd_prod=self.object.getType_produit()
#     if sd_prod:
#        return sd_prod.__name__
#     else:
#        return ""
+
+  def addItem(self,name,pos):      
+      mcent = self._object.addEntite(name,pos)
       return mcent
       
 
-  def suppitem(self,item) :
+  def suppItem(self,item) :
       # item : item du MOCLE de l'ETAPE a supprimer
       # item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList 
       itemobject=item.getObject()
-      if itemobject.isoblig() :
-          #self.editor.affiche_infos(tr('Impossible de supprimer un mot-clef obligatoire '),Qt.red)
+      if itemobject.isOblig() :
           return (0,tr('Impossible de supprimer un mot-clef obligatoire '))
-      if self.object.suppentite(itemobject):
+      if self.object.suppEntite(itemobject):
           message = tr("Mot-clef %s supprime " , itemobject.nom)
-          #self.editor.affiche_commentaire(message)
           return (1,message)
       else :
-          #self.editor.affiche_commentaire(tr('Pb interne : impossible de supprimer ce mot-clef'),Qt.red)
           return (0,tr('Pb interne : impossible de supprimer ce mot-clef'))
 
-  def GetText(self):
+  def getText(self):
       try:
-          return self.object.get_sdname()
+          return self.object.getSdname()
       except:
           return ''
 
@@ -224,12 +221,12 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
   #    keys=self.object.mc_dict
   #    return keys
 
-  def GetSubList(self):
+  def getSubList(self):
       """
          Reactualise la liste des items fils stockes dans self.sublist
       """
-      if self.isactif():
-         liste=self.object.mc_liste
+      if self.isActif():
+         liste=self.object.mcListe
       else:
          liste=[]
 
@@ -248,19 +245,19 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
       for obj in liste:
          if sublist[pos] is None:
             # nouvel objet : on cree un nouvel item
-            def setfunction(value, object=obj):
+            def setFunction(value, object=obj):
                 object.setval(value)
-            item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
+            item = self.makeObjecttreeitem(self.appli, obj.nom + " : ", obj, setFunction)
             sublist[pos]=item
          pos=pos+1
 
       self.sublist=sublist
       return self.sublist
 
-  def isvalid(self):
-      return self.object.isvalid()
+  def isValid(self):
+      return self.object.isValid()
 
-  def iscopiable(self):
+  def isCopiable(self):
       """
       Retourne 1 si l'objet est copiable, 0 sinon
       """
@@ -273,35 +270,35 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
 
   def update(self,item):
       if item.sd and item.sd.nom:
-         self.nomme_sd(item.sd.nom)
+         self.nommeSd(item.sd.nom)
 
-  def nomme_sd(self,nom):
+  def nommeSd(self,nom):
       """ Lance la méthode de nommage de la SD """
       oldnom=""
       if self.object.sd != None :
          oldnom=self.object.sd.nom
-      test,mess= self.object.nomme_sd(nom)
-      if test:self.object.parent.reset_context()
+      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]
       return test,mess
 
-  def is_reentrant(self):
-      return self.object.is_reentrant()
+  def isReentrant(self):
+      return self.object.isReentrant()
     
-  def get_noms_sd_oper_reentrant(self):
-      return self.object.get_noms_sd_oper_reentrant()
+  def getNomsSdOperReentrant(self):
+      return self.object.getNomsSdOperReentrant()
 
-  def get_objet_commentarise(self):
+  def getObjetCommentarise(self):
       """
           Cette méthode retourne un objet commentarisé
           représentatif de self.object
       """
       # Format de fichier utilisé
       format=self.appli.appliEficas.format_fichier
-      return self.object.get_objet_commentarise(format)
+      return self.object.getObjetCommentarise(format)
 
-  def get_objet_commentarise_BAK(self):
+  def getObjetCommentarise_BAK(self):
       """
           Cette méthode retourne un objet commentarisé
           représentatif de self.object
@@ -323,8 +320,8 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
 
       pos=self.object.parent.etapes.index(self.object)
       parent=self.object.parent
-      self.object.parent.suppentite(self.object)
-      parent.addentite(commande_comment,pos)
+      self.object.parent.suppEntite(self.object)
+      parent.addEntite(commande_comment,pos)
 
       return commande_comment
 
index ed2bd7a90f0932a4633dd89327c1767ea9201c01..74a442386d818a6f9c9731e9d9765b2f62a22439 100644 (file)
@@ -62,27 +62,27 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
     itemNode=Node
 
     def init(self):      
-      self.setfunction = self.set_valeur
+      self.setFunction = self.setValeur
 
 # ---------------------------------------------------------------------------
 #                   API du PARAMETRE pour l'arbre 
 # ---------------------------------------------------------------------------
 
-    def GetIconName(self):
+    def getIconName(self):
       """
       Retourne le nom de l'icone associee au noeud qui porte self,
       dependant de la validite de l'objet
       NB : un PARAMETRE est toujours valide ...
       """
-      if self.isactif():
-          if self.isvalid():
+      if self.isActif():
+          if self.isValid():
               return "ast-green-square"
           else:
               return "ast-red-square"
       else:
           return "ast-white-square"
 
-    def GetLabelText(self):
+    def getLabelText(self):
         """ Retourne 3 valeurs :
         - le texte a afficher dans le noeud representant l'item
         - la fonte dans laquelle afficher ce texte
@@ -90,7 +90,7 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
         """
         return tr('PARAMETRE'),None,None 
 
-    def GetText(self):
+    def getText(self):
       """
       Retourne le texte a afficher apres le nom de la commande (ici apres 'parametre')
       Ce texte est tronque a 25 caracteres
@@ -107,7 +107,7 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
       else :
           return texte[0:24]+'...'
 
-    def GetSubList(self):
+    def getSubList(self):
       """
       Retourne la liste des fils de self
       """
@@ -118,33 +118,33 @@ class PARAMTreeItem(Objecttreeitem.ObjectTreeItem):
 #       du parametre = API graphique du PARAMETRE pour Panel et EFICAS
 # ---------------------------------------------------------------------------
 
-    def get_valeur(self):
+    def getValeur(self):
       """
       Retourne la valeur de l'objet PARAMETRE cad son texte
       """
       if self.object.valeur is None: return ''
       else: return self.object.valeur 
 
-    def get_nom(self):
+    def getNom(self):
       """
       Retourne le nom du parametre
       """
       return self.object.nom
 
-    def set_valeur(self,new_valeur):
+    def setValeur(self,new_valeur):
       """
       Affecte valeur a l'objet PARAMETRE
       """
-      self.object.set_valeur(new_valeur)
+      self.object.setValeur(new_valeur)
 
-    def set_nom(self,new_nom):
+    def setNom(self,new_nom):
       """
       Renomme le parametre
       """
-      self.object.set_nom(new_nom)
-      #self.object.set_attribut('nom',new_nom)
+      self.object.setNom(new_nom)
+      #self.object.setAttribut('nom',new_nom)
 
-    def get_fr(self):
+    def getFr(self):
       """
       Retourne le fr associe au parametre, cad la bulle d'aide pour EFICAS
       """
index b46ceb36a2f2a5d8c37c131e812ad150f189814e..c9a3ef1d89b9f3e105da25d6256ab9e13eb1e4eb 100644 (file)
@@ -28,12 +28,12 @@ import types,os
 
 from copy import copy,deepcopy
 import traceback
-from . import typeNode
+from InterfaceQT4 import typeNode
 
 # Modules Eficas
-from Editeur import Objecttreeitem
-from . import browser
-from Noyau.N_CR   import justify_text
+from Editeur      import Objecttreeitem
+from InterfaceQT4 import browser
+from Noyau.N_CR   import justifyText
 from Accas        import SalomeEntry
     
 class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):    
@@ -49,7 +49,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
 
         # label informatif 
         if monObjet.isInformation():
-          from .monWidgetInfo import MonWidgetInfo
+          from InterfaceQT4.monWidgetInfo import MonWidgetInfo
           widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           self.widget=widget
           return widget
@@ -59,14 +59,14 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
       # Attention il faut gerer les blocs et les facteurs 
       # a gerer comme dans composimp
       # Gestion des matrices
-        if self.item.wait_matrice ():
-          from .monWidgetMatrice import MonWidgetMatrice
+        if self.item.waitMatrice ():
+          from InterfaceQT4.monWidgetMatrice import MonWidgetMatrice
           widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           self.widget=widget
           return widget
 
-        #print "____________________________", monNom, self.item.wait_co() 
-        #print "____________________________", monNom, self.item.wait_assd() 
+        #print "____________________________", monNom, self.item.waitCo() 
+        #print "____________________________", monNom, self.item.waitAssd() 
         # Gestion d'une seule valeur (eventuellement un tuple ou un complexe)
         if maDefinition.into != [] and maDefinition.into != None:
             if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into() 
@@ -76,147 +76,164 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         if maDefinition.max == 1 :
 
         # A verifier
-          if maDefinition.into != [] and maDefinition.into != None:
-            if len(monInto) < 4 :
-              from .monWidgetRadioButton import MonWidgetRadioButton
+          if maDefinition.intoSug != [] and maDefinition.intoSug != None:
+            from InterfaceQT4.monWidgetCBIntoSug import MonWidgetCBIntoSug
+            widget=MonWidgetCBIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          elif  maDefinition.into != [] and maDefinition.into != None:
+            if maDefinition.fenetreIhm=='menuDeroulant' :
+              from InterfaceQT4.monWidgetCB import MonWidgetCB
+              widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            elif len(monInto) < 4 :
+              from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButton
               widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             elif len(monInto) < 7 :
-              from .monWidget4a6RadioButton import MonWidget4a6RadioButton
+              from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButton
               widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :
-              from .monWidgetCB import MonWidgetCB
+              from InterfaceQT4.monWidgetCB import MonWidgetCB
               widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
-          elif self.item.wait_bool() :
-            from .monWidgetSimpBool import MonWidgetSimpBool
+          elif self.item.waitBool() :
+            from InterfaceQT4.monWidgetSimpBool import MonWidgetSimpBool
             widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-          elif self.item.wait_fichier():
-            from .monWidgetSimpFichier import MonWidgetSimpFichier
+          elif self.item.waitFichier():
+            from InterfaceQT4.monWidgetSimpFichier import MonWidgetSimpFichier
             widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
           # PNPNPN - a faire
-          elif self.item.wait_date():
-            from .monWidgetDate import MonWidgetDate
+          elif self.item.waitDate():
+            from InterfaceQT4.monWidgetDate import MonWidgetDate
             widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-          elif self.item.wait_heure():
-            from .monWidgetHeure import MonWidgetHeure
+          elif self.item.waitHeure():
+            from InterfaceQT4.monWidgetHeure import MonWidgetHeure
             widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
-          elif self.item.wait_tuple() :
-            if self.item.object.definition.type[0].ntuple == 2:
-               from .monWidgetSimpTuple2 import MonWidgetSimpTuple2
-               widget=MonWidgetSimpTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            elif self.item.object.definition.type[0].ntuple == 3 :
-               from .monWidgetSimpTuple3 import MonWidgetSimpTuple3
-               widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            else :
-               print ("Pas de Tuple de longueur > 3")
-               print ("Prevenir la maintenance ")
-
-          elif self.item.wait_complex():
-            from .monWidgetSimpComplexe import MonWidgetSimpComplexe
+          elif self.item.waitTuple() :
+            num=self.item.object.definition.type[0].ntuple
+            nomDeLaClasse = 'MonWidgetSimpTuple'+str(num)
+            nomDuFichier  = 'InterfaceQT4.monWidgetSimpTupleN'
+            try :
+            #if 1 :
+               _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0)
+               #print (_temp)
+               MonWidgetSimpTuple =  getattr(_temp,nomDeLaClasse)
+            except :
+               print ("Pas de Tuple de longueur : ", num)
+            #   print ("Prevenir la maintenance ")
+            widget=MonWidgetSimpTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+          elif self.item.waitComplex():
+            from InterfaceQT4.monWidgetSimpComplexe import MonWidgetSimpComplexe
             widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
-          elif self.item.wait_co():
-            if len(self.item.get_sd_avant_du_bon_type()) == 0 :
-               from .monWidgetUniqueSDCO import MonWidgetUniqueSDCO
+          elif self.item.waitCo():
+            if len(self.item.getSdAvantDuBonType()) == 0 :
+               from InterfaceQT4.monWidgetUniqueSDCO import MonWidgetUniqueSDCO
                widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :      
-               from .monWidgetSDCOInto import MonWidgetSDCOInto
+               from InterfaceQT4.monWidgetSDCOInto import MonWidgetSDCOInto
                widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-          elif self.item.wait_assd():
-            if len(self.item.get_sd_avant_du_bon_type()) == 0 :
-               from .monWidgetVide import MonWidgetVide
+          elif self.item.waitAssd():
+            if len(self.item.getSdAvantDuBonType()) == 0 :
+               from InterfaceQT4.monWidgetVide import MonWidgetVide
                widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            elif len(self.item.get_sd_avant_du_bon_type()) < 4 :
-              from .monWidgetRadioButton import MonWidgetRadioButtonSD
+            elif len(self.item.getSdAvantDuBonType()) < 4 :
+              from InterfaceQT4.monWidgetRadioButton import MonWidgetRadioButtonSD
               widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            elif len(self.item.get_sd_avant_du_bon_type()) < 7 :
-              from .monWidget4a6RadioButton import MonWidget4a6RadioButtonSD
+            elif len(self.item.getSdAvantDuBonType()) < 7 :
+              from InterfaceQT4.monWidget4a6RadioButton import MonWidget4a6RadioButtonSD
               widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :
-              from .monWidgetCB import MonWidgetCBSD
+              from InterfaceQT4.monWidgetCB import MonWidgetCBSD
               widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           
-          elif  self.item.wait_Salome() and self.editor.salome:
-            from .monWidgetSimpSalome import MonWidgetSimpSalome
+          elif  self.item.waitSalome() and self.editor.salome:
+            from InterfaceQT4.monWidgetSimpSalome import MonWidgetSimpSalome
             widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
-          elif self.item.wait_TXM():
-            from .monWidgetSimpTxt import MonWidgetSimpTxt
+          elif self.item.waitTxm():
+            from InterfaceQT4.monWidgetSimpTxt import MonWidgetSimpTxt
             widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           else :
-            from .monWidgetSimpBase import MonWidgetSimpBase
+            from InterfaceQT4.monWidgetSimpBase import MonWidgetSimpBase
             widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
         # Gestion des listes
         else :
           if maDefinition.intoSug != [] and maDefinition.intoSug != None:
                if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
-                 from .monWidgetIntoSug import MonWidgetIntoSug
+                 from InterfaceQT4.monWidgetIntoSug import MonWidgetIntoSug
                  widget=MonWidgetIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                else :
-                  from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+                  from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
                   widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           #if maDefinition.into != [] and maDefinition.into != None:
           # Attention pas fini --> on attend une liste de ASSD avec ordre
-          elif self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon():
-               #if self.item.is_list_Chargement():
-                #from monWidgetPlusieursTuple2AvecChargement import MonWidgetPlusieursTuple2AvecChargement
-                #widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-                # pass
-               #else :
-               listeAAfficher = self.item.get_sd_avant_du_bon_type()
+          elif self.item.waitAssd() and self.item.isListSansOrdreNiDoublon():
+               listeAAfficher = self.item.getSdAvantDuBonType()
                if len(listeAAfficher) == 0:
-                 from .monWidgetVide import MonWidgetVide
+                 from InterfaceQT4.monWidgetVide import MonWidgetVide
                  widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                else :
-                 from .monWidgetPlusieursInto import MonWidgetPlusieursInto
+                 from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto
                  widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-          elif self.item.wait_assd() :
-               listeAAfficher = self.item.get_sd_avant_du_bon_type()
-               if len(listeAAfficher) == 0:
-                 from .monWidgetVide import MonWidgetVide
+          elif self.item.waitAssd() :
+               listeAAfficher = self.item.getSdAvantDuBonType()
+               mctype=maDefinition.type[0]
+               enable_salome_selection = self.editor.salome and \
+                      (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \
+                      (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection))
+               if enable_salome_selection:
+                  from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
+                  widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+               elif len(listeAAfficher) == 0:
+                 from InterfaceQT4.monWidgetVide import MonWidgetVide
                  widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
-                 from .monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne
+                 from InterfaceQT4.monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne
                  widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                else :
-                  from .monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD
+                  from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlieASSD
                   widget=MonWidgetPlusieursPlieASSD(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-          elif self.item.wait_tuple() :
-            if self.item.object.definition.type[0].ntuple == 2:
-               from .monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2
-               widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            elif self.item.object.definition.type[0].ntuple == 3 :
-               from .monWidgetPlusieursTuple3 import MonWidgetPlusieursTuple3
-               widget=MonWidgetPlusieursTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande)
-            else :
-               print ("Pas de Tuple de longueur > 3")
-               print ("Prevenir la maintenance ")
-          elif self.item.has_into():
-            if self.item.is_list_SansOrdreNiDoublon():
+          elif self.item.waitTuple() :
+            if self.item.object.definition.fenetreIhm == 'Tableau' :
+               from InterfaceQT4.monWidgetTableau import MonWidgetTableau
+               widget=MonWidgetTableau(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+            else  :
+               num=self.item.object.definition.type[0].ntuple
+               nomDeLaClasse = 'MonWidgetPlusieursTuple'+str(num)
+               nomDuFichier  = 'InterfaceQT4.monWidgetPlusieursTupleN'
+               #try:
+               if 1 :
+                  _temp = __import__(nomDuFichier, globals(), locals(), [nomDeLaClasse], 0)
+                  MonWidgetPlusieursTuple =  getattr(_temp,nomDeLaClasse)
+               #except :
+               #   print ("Pas de Tuple de longueur : ", num)
+               #   print ("Prevenir la maintenance ")
+               widget=MonWidgetPlusieursTuple(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+
+          elif self.item.hasInto():
+            if self.item.isListSansOrdreNiDoublon():
                
                if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
-                  from .monWidgetPlusieursInto import MonWidgetPlusieursInto
+                  from InterfaceQT4.monWidgetPlusieursInto import MonWidgetPlusieursInto
                   widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                else :
-                  from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+                  from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
                   widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :
                if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : 
-                  from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne
+                  from InterfaceQT4.monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne
                   widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande)
                else :
-                  from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+                  from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
                   widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
           else :
-            #print 8
             if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees)  : 
-               from .monWidgetPlusieursBase import MonWidgetPlusieursBase
+               from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
                widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande)
             else :
-               from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie
+               from InterfaceQT4.monWidgetPlusieursPlie import MonWidgetPlusieursPlie
                widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande)
 
         self.widget=widget
@@ -236,17 +253,15 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
   # ou au mot-clef simple
   #
   #-----------------------------------------------
-  # is_list
-  # get_into                a priori inutile --> commentee
-  # has_into
-  # wait_into                a priori inutile --> commentee
-  # GetMinMax
-  # GetMultiplicite
-  # GetIntervalle
-  # GetListeValeurs
-  # get_liste_possible
-
-  def is_list(self):
+  # isList
+  # hasInto
+  # getMinMax
+  # getMultiplicite
+  # getIntervalle
+  # getListeValeurs
+  # getListePossible
+
+  def isList(self):
       """
           Cette methode indique si le mot cle simple attend une liste (valeur de retour 1)
           ou s'il n'en attend pas (valeur de retour 0)
@@ -255,31 +270,28 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
           Dans le cas sans validateur, l'information est donnee par l'attribut max
           de la definition du mot cle.
           Dans le cas avec validateur, il faut combiner l'information precedente avec
-          celle issue de l'appel de la methode is_list sur le validateur.On utilisera
+          celle issue de l'appel de la methode isList sur le validateur.On utilisera
           l'operateur ET pour effectuer cette combinaison (AndVal).
       """
       is_a_list=0
-      min,max = self.GetMinMax()
+      min,max = self.getMinMax()
       assert (min <= max)
       if max > 1 :
                 is_a_list=1
       # Dans le cas avec validateurs, pour que le mot cle soit considere
       # comme acceptant une liste, il faut que max soit superieur a 1
-      # ET que la methode is_list du validateur retourne 1. Dans les autres cas
+      # ET que la methode isList du validateur retourne 1. Dans les autres cas
       # on retournera 0 (n'attend pas de liste)
       if self.definition.validators :
-         is_a_list= self.definition.validators.is_list() * is_a_list
+         is_a_list= self.definition.validators.isList() * is_a_list
       return is_a_list 
 
-  def is_list_SansOrdreNiDoublon(self):
+  def isListSansOrdreNiDoublon(self):
       if self.definition.homo=="SansOrdreNiDoublon" : return 1
       return 0 
 
-  def is_list_Chargement(self):
-      if  self.definition.docu != "" :  return 1
-      return 0 
 
-  def has_into(self):
+  def hasInto(self):
       """
           Cette methode indique si le mot cle simple propose un choix (valeur de retour 1)
           ou s'il n'en propose pas (valeur de retour 0)
@@ -289,45 +301,45 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
           de la definition du mot cle.
           Dans le cas avec validateurs, pour que le mot cle soit considere
           comme proposant un choix, il faut que into soit present OU
-          que la methode has_into du validateur retourne 1. Dans les autres cas
+          que la methode hasInto du validateur retourne 1. Dans les autres cas
           on retournera 0 (ne propose pas de choix)
       """
       has_an_into=0
       if self.definition.into:
                has_an_into=1
       elif self.definition.validators :
-         has_an_into= self.definition.validators.has_into()
+         has_an_into= self.definition.validators.hasInto()
       return has_an_into
 
-  def has_intoSug(self):
+  def hasIntoSug(self):
       if self.definition.intoSug: return 1
       return 0
 
 
-  def GetMinMax(self):
+  def getMinMax(self):
       """ Retourne les valeurs min et max de la definition de object """
-      return self.object.get_min_max()
+      return self.object.getMinMax()
 
-  def GetMultiplicite(self):
+  def getMultiplicite(self):
       """ A preciser.
           Retourne la multiplicite des valeurs affectees a l'objet
           represente par l'item. Pour le moment retourne invariablement 1.
       """
       return 1
 
-  def GetIntervalle(self):
+  def getIntervalle(self):
       """ 
            Retourne le domaine de valeur attendu par l'objet represente 
            par l'item.
       """
       return self.object.getintervalle()
 
-  def GetListeValeurs(self) :
+  def getListeValeurs(self) :
       """ Retourne la liste des valeurs de object """
-      valeurs=self.object.get_liste_valeurs()
+      valeurs=self.object.getListeValeurs()
       try :
         if "R" in self.object.definition.type:
-           clef=self.object.GetNomConcept()
+           clef=self.object.getNomConcept()
            if clef in self.appli.dict_reels:
               if type(valeurs) == tuple:
                  valeurs_reelles=[]
@@ -344,7 +356,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
         pass
       return valeurs
     
-  def get_liste_possible(self,listeActuelle=[]):
+  def getListePossible(self,listeActuelle=[]):
       if hasattr(self.definition.validators,'into'):
          valeurspossibles = self.definition.validators.into 
       else:
@@ -359,20 +371,20 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else :
          valeurspossibles=(valeurspossibles,)
       for item in valeurspossibles:
-          encorevalide=self.valide_item(item)
+          encorevalide=self.valideItem(item)
           if encorevalide :
              listevalideitem.append(item)
 
-      #on ne garde que les choix possibles qui passent le test de valide_liste_partielle
+      #on ne garde que les choix possibles qui passent le test de valideListePartielle
       listevalideliste=[]
       for item in listevalideitem:
-          encorevalide=self.valide_liste_partielle(item,listeActuelle)
+          encorevalide=self.valideListePartielle(item,listeActuelle)
           if encorevalide :
               listevalideliste.append(item)
       #print listevalideliste
       return listevalideliste
 
-  def get_liste_possible_avecSug(self,listeActuelle=[]):
+  def getListePossibleAvecSug(self,listeActuelle=[]):
       if hasattr(self.definition,'intoSug'):
          valeurspossibles = self.definition.intoSug 
       else:
@@ -388,24 +400,24 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else :
          valeurspossibles=(valeurspossibles,)
       for item in valeurspossibles:
-          encorevalide=self.valide_item(item)
+          encorevalide=self.valideItem(item)
           if encorevalide :
              listevalideitem.append(item)
 
-      #on ne garde que les choix possibles qui passent le test de valide_liste_partielle
+      #on ne garde que les choix possibles qui passent le test de valideListePartielle
       listevalideliste=[]
       for item in listevalideitem:
-          encorevalide=self.valide_liste_partielle(item,listeActuelle)
+          encorevalide=self.valideListePartielle(item,listeActuelle)
           if encorevalide :
               listevalideliste.append(item)
       return listevalideliste
 
-  def get_liste_param_possible(self):
+  def getListeParamPossible(self):
       liste_param=[]
-      l1,l2=self.jdc.get_parametres_fonctions_avant_etape(self.get_etape())
+      l1,l2=self.jdc.getParametresFonctionsAvantEtape(self.getEtape())
       for param in self.object.jdc.params:
           if param.nom not in l1 : continue
-          encorevalide=self.valide_item(param.valeur)
+          encorevalide=self.valideItem(param.valeur)
           if encorevalide:
              type_param=param.valeur.__class__.__name__
              for typ in self.definition.type:
@@ -424,36 +436,33 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
   # Methodes liees a la validite des valeurs saisies
   #
   #---------------------------------------------------
-  # valide_item
-  # valide_liste_partielle
-  # valide_liste_complete
-  # info_erreur_item
-  # info_erreur_liste
-  # IsInIntervalle
-  # isvalid
-
-  def valide_item(self,item):
+  # valideItem
+  # valideListePartielle
+  # valideListeComplete
+  # infoErreurItem
+  # infoErreurListe
+  # isInIntervalle
+  # isValid
+
+  def valideItem(self,item):
       """
         La validation est realisee directement par l'objet
       """
-      return self.object.valide_item(item)
+      return self.object.valideItem(item)
      
-  def valide_liste_partielle(self,item,listecourante):
+  def valideListePartielle(self,item,listecourante):
       #On protege la liste en entree en la copiant
-      valeur=listecourante[:]
-      valeur.append(item)
-      return self.object.valid_valeur_partielle(valeur)
-
-  def valide_liste_complete (self,valeur):
-      return self.object.valid_valeur(valeur)
+      valeur=list(listecourante)
+      if item : valeur.append(item)
+      return self.object.validValeurPartielle(valeur)
 
-  def valide_val (self,valeur):
-      return self.object.valid_val(valeur)
+  def valideListeComplete (self,valeur):
+      return self.object.validValeur(valeur)
 
-  def info_erreur_item(self) :
+  def infoErreurItem(self) :
       commentaire=""
       if self.definition.validators :
-         commentaire=self.definition.validators.info_erreur_item()
+         commentaire=self.definition.validators.infoErreurItem()
       return commentaire
       
   def aide(self) :
@@ -462,21 +471,21 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
          commentaire=self.definition.validators.aide()
       return commentaire
 
-  def info_erreur_liste(self) :
+  def infoErreurListe(self) :
       commentaire=""
       if self.definition.validators :
-         commentaire=self.definition.validators.info_erreur_liste()
+         commentaire=self.definition.validators.infoErreurListe()
       return commentaire
 
-  def IsInIntervalle(self,valeur):
+  def isInIntervalle(self,valeur):
       """ 
           Retourne 1 si la valeur est dans l'intervalle permis par
           l'objet represente par l'item.
       """
-      return self.valide_item(valeur)
+      return self.valideItem(valeur)
 
-  def isvalid(self):
-    valide=self.object.isvalid()
+  def isValid(self):
+    valide=self.object.isValid()
     return valide
 
   #--------------------------------------------------
@@ -484,86 +493,89 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
   # Autres ...
   #
   #---------------------------------------------------
-  # GetIconName
-  # GetText
-  # set_valeur_co
-  # get_sd_avant_du_bon_type
-  # delete_valeur_co
+  # getIconName
+  # getText
+  # setValeurCo
+  # getSdAvantDuBonType
 
 
-  def GetIconName(self):
-    if self.isvalid():
+  def getIconName(self):
+    if self.appli.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"
       return "ast-green-ball"
-    elif self.object.isoblig():
+    elif self.isValid():
+      return "ast-green-ball"
+    elif self.object.isOblig():
       return "ast-red-ball"
     else:
       return "ast-yel-ball"
 
-  def GetText(self):
+  def getText(self):
     """
     Classe SIMPTreeItem
     Retourne le texte a afficher dans l'arbre representant la valeur de l'objet
     pointe par self 
     """
-    text= self.object.GetText()
+    text= self.object.getText()
     if text == None : text=""
     return text
     
 
-  def set_valeur_co(self,nom_co):
+  def setValeurCo(self,nom_co):
       """
       Affecte au MCS pointé par self l'objet de type CO et de nom nom_co
       """
-      ret = self.object.set_valeur_co(nom_co)
-      #print "set_valeur_co",ret
+      ret = self.object.setValeurCo(nom_co)
+      #print "setValeurCo",ret
       return ret
       
-  def get_sd_avant_du_bon_type(self):
+  def getSdAvantDuBonType(self):
       """
       Retourne la liste des noms des SD présentes avant l'étape qui contient
       le MCS pointé par self et du type requis par ce MCS
       """
-      a=self.object.etape.parent.get_sd_avant_du_bon_type(self.object.etape,self.object.definition.type)
+      a=self.object.etape.parent.getSdAvantDuBonType(self.object.etape,self.object.definition.type)
       return a
 
-  def get_sd_avant_du_bon_type_pour_type_de_base(self):
-      a=self.object.jdc.get_sd_avant_du_bon_type_pour_type_de_base(self.object.etape,"LASSD")
+  def getSdAvantDuBonTypePourTypeDeBase(self):
+      a=self.object.jdc.getSdAvantDuBonTypePourTypeDe_Base(self.object.etape,"LASSD")
       return a
 
 
 
-
-  def delete_valeur_co(self,valeur=None):
+  def deleteValeurCo(self,valeur=None):
       """
            Supprime la valeur du mot cle (de type CO)
            il faut propager la destruction aux autres etapes
       """
       if not valeur : valeur=self.object.valeur
-      # XXX faut il vraiment appeler del_sdprod ???
-      #self.object.etape.parent.del_sdprod(valeur)
-      self.object.etape.parent.delete_concept(valeur)
+      # XXX faut il vraiment appeler delSdprod ???
+      #self.object.etape.parent.delSdprod(valeur)
+      self.object.etape.parent.deleteConcept(valeur)
 
   #-----------------------------------------------
   #
   # Methodes liees au type de l objet attendu
   #
   #-----------------------------------------------
-  # wait_c
-  # wait_geom
-  # wait_complex
-  # wait_reel
-  # wait_assd
-  # GetType
-
-  def wait_co(self):
+  # waitC
+  # waitGeom
+  # waitComplex
+  # waitReel
+  # waitAssd
+  # getType
+
+  def waitCo(self):
       """
       Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un objet de type ASSD qui n'existe pas encore (type CO()),
       0 sinon
       """
-      return self.object.wait_co()
+      return self.object.waitCo()
 
-  def wait_fichier(self):
+  def waitFichier(self):
       maDefinition=self.object.definition
       try : 
         if ('Repertoire' in maDefinition.type[0]) or ('Fichier' in maDefinition.type[0]) :
@@ -571,18 +583,18 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       except :
            return 0
 
-  def wait_geom(self):
+  def waitGeom(self):
       """
       Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un objet GEOM, 0 sinon
       """
-      return self.object.wait_geom()
+      return self.object.waitGeom()
 
-  def wait_TXM(self):
-     return self.object.wait_TXM()
+  def waitTxm(self):
+     return self.object.waitTxm()
 
     
-  def wait_complex(self):
+  def waitComplex(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un complexe, 0 sinon """
       if 'C' in self.object.definition.type:
@@ -590,7 +602,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else:
           return 0
 
-  def wait_reel(self):
+  def waitReel(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un réel, 0 sinon """
       if 'R' in self.object.definition.type:
@@ -598,7 +610,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else:
           return 0
 
-  def wait_date(self):
+  def waitTuple(self) :
+      return  self.object.waitTuple()
+
+  def waitDate(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un réel, 0 sinon """
       if 'DateHHMMAAAA' in self.object.definition.type:
@@ -606,7 +621,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       else:
           return 0
         
-  def wait_heure(self):
+  def waitHeure(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un réel, 0 sinon """
       if 'HeureHHMMSS' in self.object.definition.type:
@@ -616,7 +631,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
         
         
         
-  def wait_tuple(self):
+  def waitTuple(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un Tuple, 0 sinon """
       for ss_type in self.object.definition.type:
@@ -624,7 +639,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
              return 1
       return 0
 
-  def wait_matrice(self):
+  def waitMatrice(self):
       """ Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un Tuple, 0 sinon """
       for ss_type in self.object.definition.type:
@@ -632,21 +647,21 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
              return 1
       return 0
 
-  def wait_assd(self):
+  def waitAssd(self):
       """Méthode booléenne qui retourne 1 si l'objet pointé par self
       attend un objet de type ASSD ou dérivé, 0 sinon """
-      return self.object.wait_assd()
+      return self.object.waitAssd()
     
-  def wait_assd_or_type_base(self) :
+  def waitAssdOrTypeBase(self) :
       boo=0
       if len(self.object.definition.type) > 1 :
-         if self.wait_reel() :
+         if self.waitReel() :
             boo = 1
          if 'I' in self.object.definition.type :
             boo = 1
       return boo
 
-  def wait_Salome(self):
+  def waitSalome(self):
       monType = self.object.definition.type[0]
       if 'grma' in repr(monType) : return True
       if 'grno' in repr(monType) : return True
@@ -656,100 +671,79 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
          pass
       return False
    
-  def GetType(self):
+  def getType(self):
       """ 
           Retourne le type de valeur attendu par l'objet représenté par l'item.
       """
-      return self.object.get_type()
+      return self.object.getType()
 
   #-----------------------------------------------------
   #
   # Methodes liees  a l evaluation de la valeur saisie
   #
   #-----------------------------------------------------
-  # eval_valeur
-  # eval_valeur_item
-  # is_CO
-  # traite_reel
+  # evalValeur
+  # evalValeurItem
+  # isCO
+  # traiteReel
 
-  def eval_valeur(self,valeur):
+  def evalValeur(self,valeur):
       """ Lance l'interpretation de 'valeur' (chaine de caracteres) comme valeur de self :
              - retourne l'objet associe si on a pu interpreter (entier, reel, ASSD,...)
              - retourne 'valeur' (chaine de caracteres) sinon
       """
-      newvaleur=self.eval_val(valeur)
+      newvaleur=self.evalVal(valeur)
       return newvaleur,1
 
-  def eval_valeur_BAK(self,valeur):
-      """ Lance l'interpretation de 'valeur' (chaine de caractéres) comme valeur
-      de l'objet pointé par self :
-        - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...)
-        - retourne 'valeur' (chaine de caractéres) sinon
-        - retourne None en cas d invalidite
-        - retourne invalide si 1 des objets du tuple l est
-      """
-      validite=1
-      if type(valeur) in (list,tuple) :
-         valeurretour=[]
-         for item in valeur :
-             newvaleur,validiteitem=self.eval_valeur_item(item)
-             valeurretour.append(newvaleur)
-             if validiteitem == 0:
-                validite=0
-      else :
-         valeurretour,validite= self.eval_valeur_item(valeur)
-      if validite == 0 :
-         valeurretour = None
-      return valeurretour,validite
 
-  def eval_valeur_item(self,valeur):
+  def evalValeurItem(self,valeur):
       """ Lance l'interprétation de 'valeur' qui doit ne pas etre un tuple 
           - va retourner la valeur de retour et la validite
             selon le type de l objet attendu
           - traite les reels et les parametres 
       """ 
-      #print "eval_valeur_item",valeur
+      #print "evalValeurItem",valeur
       if valeur==None or valeur == "" :
          return None,0
       validite=1
-      if self.wait_reel():
-             valeurinter = self.traite_reel(valeur)
+      if self.waitReel():
+             valeurinter = self.traiteReel(valeur)
              if valeurinter != None :
-                valeurretour,validite= self.object.eval_valeur(valeurinter)
+                valeurretour,validite= self.object.evalValeur(valeurinter)
              else:
-                valeurretour,validite= self.object.eval_valeur(valeur)
-      elif self.wait_geom():
+                valeurretour,validite= self.object.evalValeur(valeur)
+      elif self.waitGeom():
              valeurretour,validite = valeur,1
       else :
-             valeurretour,validite= self.object.eval_valeur(valeur)
-      #print "eval_valeur_item",valeurretour,validite
+             valeurretour,validite= self.object.evalValeur(valeur)
+      #print "evalValeurItem",valeurretour,validite
 
       if validite == 0:
-         if type(valeur) == bytes and self.object.wait_TXM():
+         if type(valeur) == bytes and self.object.waitTxm():
             essai_valeur="'" + valeur + "'"
-            valeurretour,validite= self.object.eval_valeur(essai_valeur)
+            valeurretour,validite= self.object.evalValeur(essai_valeur)
 
       if hasattr(valeurretour,'__class__'):
          #if valeurretour.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
          if valeurretour.__class__.__name__ in ('PARAMETRE',):
             validite=1
 
-      #if self.wait_co():
+      #if self.waitCo():
          # CCAR : il ne faut pas essayer de creer un concept
-         # il faut simplement en chercher un existant ce qui a du etre fait par self.object.eval_valeur(valeur)
+         # il faut simplement en chercher un existant ce qui a du etre fait par self.object.evalValeur(valeur)
          #try:
             #valeurretour=Accas.CO(valeur)
          #except:
             #valeurretour=None
             #validite=0
       # on est dans le cas ou on a évalué et ou on n'aurait pas du
-      if self.object.wait_TXM() :
+      if self.object.waitTxm() :
           if type(valeurretour) != bytes:
              valeurretour=str(valeur)
              validite=1
       return valeurretour,validite
       
-  def is_CO(self,valeur=None):
+  def isCO(self,valeur=None):
       """
          Indique si valeur est un concept produit de la macro
          Cette méthode n'a de sens que pour un MCSIMP d'une MACRO
@@ -760,27 +754,27 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
       # ou si son nom de classe est CO.
       # Il faut faire les 2 tests car une macro non valide peut etre
       # dans un etat pas tres catholique avec des CO pas encore types
-      # et donc pas dans sdprods (resultat d'une exception dans type_sdprod)
+      # et donc pas dans sdprods (resultat d'une exception dans typeSDProd)
       if not valeur:valeur=self.object.valeur
       if valeur in self.object.etape.sdprods:return 1
       if type(valeur) is not types.InstanceType:return 0
       if valeur.__class__.__name__ == 'CO':return 1
       return 0
 
-  def is_param(self,valeur) :
+  def isParam(self,valeur) :
       for param in self.jdc.params:
           if (repr(param) == valeur):
              return 1
       return 0
 
-  def traite_reel(self,valeur):
+  def traiteReel(self,valeur):
       """
       Cette fonction a pour but de rajouter le '.' en fin de chaine pour un réel
       ou de détecter si on fait référence a un concept produit par DEFI_VALEUR
       ou un EVAL ...
       """
       valeur = valeur.strip()
-      liste_reels = self.get_sd_avant_du_bon_type()
+      liste_reels = self.getSdAvantDuBonType()
       if valeur in liste_reels:
           return valeur
       if len(valeur) >= 3 :
@@ -789,7 +783,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem):
               return valeur
       if valeur.find('.') == -1 :
           # aucun '.' n'a été trouvé dans valeur --> on en rajoute un a la fin
-          if (self.is_param(valeur)):
+          if (self.isParam(valeur)):
               return valeur
           else:
               if valeur.find('e') != -1:
index 3c64fc4e0272477e2b0de77f52bb81ac7a2fc202..0c094e4f49621ec131f8b00124052bd1578520f8 100644 (file)
@@ -35,7 +35,7 @@ from  Editeur.Eficas_utils import read_file
 from Extensions.i18n import tr
 
 
-class CONFIG_BASE(object):
+class configBase(object):
 
   #-------------------------------
   def __init__(self,appli,repIni):
@@ -52,6 +52,7 @@ class CONFIG_BASE(object):
   #         par celui de l utilisateur
   # 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
@@ -59,24 +60,30 @@ class CONFIG_BASE(object):
       else           : self.name="editeur.ini"
       self.rep_mat = None
       self.repIni  = repIni
+     
+      if self.code == None : self.code=''
       if sys.platform[0:5]=="linux" :
-              self.rep_user   = os.path.join(os.environ['HOME'],'.config/Eficas',appli.code)
+              self.rep_user   = os.path.join(os.environ['HOME'],'.config/Eficas',self.code)
       else :
-              self.rep_user   = os.path.join('C:/','.config/Eficas',appli.code)
+              self.rep_user   = os.path.join('C:/','.config/Eficas',self.code)
 
-     
 
       self.setValeursParDefaut()
       
-      self.lecture_fichier_ini_standard()
-      self.lecture_fichier_ini_integrateur()
-      self.lecture_fichier_ini_utilisateur()
+      if self.code != '' :
+         self.lectureFichierIniStandard()
+         self.lectureFichierIniIntegrateur()
+         self.lectureFichierIniUtilisateur()
+
+      if self.boutonDsMenuBar:
+         self.closeAutreCommande = True
+         self.closeFrameRechercheCommande = True
 
       #Particularite des schemas MAP
       if hasattr(self,'make_ssCode'): self.make_ssCode(self.ssCode)
 
-      if self.appli: self.parent=appli.top
-      else:         self.parent=None
+      #if self.appli: self.parent=appli.top
+      #else:        self.parent=None
 
       if not os.path.isdir(self.savedir) :
         if sys.platform[0:5]=="linux" :
@@ -98,7 +105,7 @@ class CONFIG_BASE(object):
         self.savedir   = os.path.abspath(os.path.join(os.environ['HOME'],nomDir))
       else:
         self.savedir = os.path.abspath('C:/')
-      self.mode_nouv_commande='initial'
+      self.modeNouvCommande='initial'
       self.affiche="alpha"
       self.closeAutreCommande = False
       self.closeFrameRechercheCommande = False
@@ -109,13 +116,31 @@ class CONFIG_BASE(object):
       self.nombreDeBoutonParLigne=0
       self.translatorFichier=None
       self.dicoImages= {}
+      self.dicoIcones= {}
+      self.afficheCommandesPliees = True
       self.simpleClic= False
       self.afficheOptionnelVide=False
       self.afficheListesPliees=True
+      self.boutonDsMenuBar=False
+      self.ficIcones=None
+      self.repIcones=None
+      self.differencieSiDefaut=False
+      self.typeDeCata='Python'
+      self.dumpXSD=False
+      self.withXSD=False
+      self.afficheIhm=True
+      self.closeParenthese=False
+      self.enleverActionStructures=False
+      self.enleverParametres=False
+      self.enleverSupprimer=False
+      self.ajoutExecution=False
+      self.utilParExtensions=False
+
+
 
  
   #--------------------------------------
-  def lecture_fichier_ini_standard(self):
+  def lectureFichierIniStandard(self):
   #--------------------------------------
 
       name='prefs_'+self.appli.code
@@ -128,7 +153,7 @@ class CONFIG_BASE(object):
 
 
   #--------------------------------------
-  def lecture_fichier_ini_integrateur(self):
+  def lectureFichierIniIntegrateur(self):
   #--------------------------------------
   # Verifie l'existence du fichier "standard"
   # appelle la lecture de ce fichier
@@ -162,7 +187,7 @@ class CONFIG_BASE(object):
 
 
   #--------------------------------------
-  def lecture_fichier_ini_utilisateur(self):
+  def lectureFichierIniUtilisateur(self):
   #--------------------------------------
   # Surcharge les parametres standards par les parametres utilisateur s'ils existent
       self.fic_ini_utilisateur = os.path.join(self.rep_user,self.name)
@@ -186,7 +211,7 @@ class CONFIG_BASE(object):
              setattr(self,k,d[k])
 
   #--------------------------------------
-  def save_params(self):
+  def saveParams(self):
   #--------------------------------------
   # sauvegarde
   # les nouveaux parametres dans le fichier de configuration utilisateur
@@ -208,3 +233,4 @@ class CONFIG_BASE(object):
       f.close()
 #
 
+
index aeed89385098dafd762c698f3811cad910732e0c..a95c1c62850e694e629b9edfdd5f5410baba1d3f 100755 (executable)
@@ -27,393 +27,111 @@ 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
+
+
+from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter, QLabel
+from PyQt5.QtGui     import QPalette
+from PyQt5.QtCore    import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
 
 import traceback
 
 # Modules Eficas
+from Extensions.i18n import tr
 
-import convert, generator
 from Editeur        import session
 from Editeur        import comploader
 from Editeur        import Objecttreeitem
-from desBaseWidget  import Ui_baseWidget
+from InterfaceQT4   import browser
+
+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'}
 debug = False
 
     
+from InterfaceQT4.editorSsIhm    import JDCEditorSsIhm
 
 
-class JDCEditor(Ui_baseWidget,QWidget):
+class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
 # ----------------------------------------- #
     """
        Editeur de jdc
     """
 
-    def __init__ (self,appli,fichier = None, jdc = None, QWParent=None, units = None, include=0 , vm=None):
-    #----------------------------------------------------------------------------------------------------------#
+# ----------------------------------------
+# Methodes faisant appel a ssIhm
+# ----------------------------------------
+
+    def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+    #------------------------------------------------------------------------------------------
+
 
         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 ????????")
+        self.afficheListesPliees=True
+        if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+        else : self.sb = None
+        self.QWParent=QWParent
 
-        # ces attributs sont mis a jour par definitCode appelee par newEditor
-        self.code   = self.appliEficas.CONFIGURATION.code
-        self.initSplitterSizes()
+        JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
 
-        #self.afficheListesPliees=False
-        self.afficheListesPliees=True
+        # Particularites IHM : met la fenetre a jour
+
+        self.initSplitterSizes()
         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.affiche=self.appliEficas.maConfiguration.affiche
 
-        self.version_code = session.d_env.cata
+        if self.code in ['MAP','CARMELCND','PSEN'] : self.maConfiguration.afficheCommandesPliees=False
+        if self.code in ['MAP',]: self.fermeArbre()
+        #   self.widgetTree.close()
+        #   self.widgetTree=None
 
+        if self.maConfiguration.closeArbre: self.fermeArbre()
+        if self.maConfiguration.boutonDsMenuBar : self.appliEficas.remplitIconesCommandes()
 
-        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.version_code = session.d_env.cata
+     
         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=''
+        self.afficheApresInsert=False
+        if self.maConfiguration.closeArbre    : self.afficheApresInsert=True
         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 ['TELEMAC',]          : self.enteteQTree='premier'
+        else                                  : self.enteteQTree='complet'
         if self.code in ['Adao','ADAO','TELEMAC'] : self.affichePlie=True
-        else : self.affichePlie=False
+        else                                      : self.affichePlie=False
 
         self.Commandes_Ordre_Catalogue =self.readercata.Commandes_Ordre_Catalogue
 
-        #------- construction du jdc --------------
+        if self.appliEficas.readercata.demandeCatalogue==True  :
+           nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.versionCode)
+           if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) :
+              translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation)
+              from Extensions import localisation
+              localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier)
 
-        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 )
+        if self.jdc_item and self.appliEficas.ssIhm==False :
+            self.tree = browser.JDCTree( self.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)
-
-    #-------------------#  Pour execution avec output et error dans le bash
-    def runPSEN_N1(self):
-    #-------------------#
-      
-
-      self.saveFile()
-      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 'dicoImbrique' in generator.plugins:
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.generator.Dico 
-         
-         ###to delete
-         #fileDico =  r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
-         fileDico =  os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
-         f = open( str(fileDico), 'w')
-         f.write("Dico =" + str(dico) )
-         f.close()
-         ###
-         
-      
-      print ('in runPSEN_N1', dico)
-      print (dico)
-      from Run import run 
-      run(dico)
-      #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 'dicoImbrique' in generator.plugins:
-         self.generator=generator.plugins['dicoImbrique']()
-         jdc_formate=self.generator.gener(self.jdc)
-         dico=self.get_Dico() #generator.Dico
-
-
-         for k in dico['CONTINGENCY_PROCESSING']:
-             #print (k)
-             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), 'w')
-         f.write("Dico =" + str(dico) )
-         f.close()
-         ###
-         return dico
-
-        #return self.get_Dico()
-
-    #-------------------#  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.get_Dico() #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.append_child("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):
     #--------------------------------#
@@ -421,109 +139,69 @@ class JDCEditor(Ui_baseWidget,QWidget):
         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
-
-             #import cProfile, pstats, StringIO
-            #pr = cProfile.Profile()
-             #pr.enable()
-
-             text=p.convert('exec',self.appliEficas)
-             #pr.disable()
-             #s = StringIO.StringIO()
-             #sortby = 'cumulative'
-             #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
-             #ps.print_stats()
-             #print (s.getvalue())
-
-             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
 
+        jdc=JDCEditorSsIhm.readFile(self, fn)
+
+        # Particularites IHM : met le titre de la fenetre a jour
 #        qApp.restoreOverrideCursor()
-        if self.fileInfo!= None :
-           self.lastModified = self.fileInfo.lastModified()
-        else :
-           self.lastModified = 1
+        if self.fileInfo!= None : self.lastModified = self.fileInfo.lastModified()
         nouveauTitre=self.titre+"              "+os.path.basename(self.fichier)
         self.appliEficas.setWindowTitle(nouveauTitre)
-        return jdc
 
+        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
+# ---------------------------------------------
+# Methodes Inchangees
+# ---------------------------------------------
+#   _newJDC
+#   _newJDCInclude
+#   __generateTempFilename
+#   getSource
+#   generDico
+#   viewJdcSource
+#   viewJdcPy
+#   viewJdcRapport
+#   getFileName
+#   initModif
+#   writeFile
+#   getTextJDC
+#   verifieChecksum
+#   getChecksum
+#   getDico
+#   chercheGroupes
+#   chercheDico
+#   saveFileLegerAs
+
+# ---------------------------------------------
+# Methodes Surchargees 
+# ---------------------------------------------
 
     #-----------------------------------------------------------------------#
     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 informe(self,titre,txt,critique=True):
+    #--------------------------------#
+       if  critique :
+           self.afficheInfos(tr(txt),Qt.red)
+           QMessageBox.critical( self, tr(titre), tr(txt))
+       else :
+           QMessageBox.warning( self, tr(titre),tr(txt))
+
+    #--------------------------------#
+    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)
 
 
     #----------------------------------------------#
@@ -557,57 +235,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
         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.get_text_JDC(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):
@@ -615,13 +249,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
         """
         Public method called by the viewmanager to finally get rid of us.
         """
-        if self.jdc:
-            self.jdc.supprime()
+        if self.jdc: self.jdc.supprime()
         self.close()
 
     #----------------------------------------------#
-    def affiche_infos(self,message,couleur=Qt.black):
+    def afficheInfos(self,message,couleur=Qt.black):
     #----------------------------------------------#
+        if couleur=='red' : couleur = Qt.red
         if self.sb:
            mapalette=self.sb.palette()
            mapalette.setColor( QPalette.WindowText, couleur )
@@ -630,13 +264,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
            self.couleur=couleur
 
     #------------------------------#
-    def affiche_alerte(self,titre,message):
+    def afficheAlerte(self,titre,message):
     #------------------------------#
     # appele par I_MACRO_ETAPE
         QMessageBox.information( self, titre, message)
 
     #-----------------------------------#
-    def affiche_commentaire(self,message):
+    def afficheCommentaire(self,message):
     #-----------------------------------#
         self.labelCommentaire.setText(message)
         QTimer.singleShot(6000, self.rendInvisible)
@@ -646,15 +280,6 @@ class JDCEditor(Ui_baseWidget,QWidget):
     #----------------------#
         self.labelCommentaire.setText("")
 
-    #-------------------#
-    def init_modif(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):
     #---------------------------------------#
@@ -730,8 +355,8 @@ class JDCEditor(Ui_baseWidget,QWidget):
       """
       self.chercheNoeudSelectionne()
       if len(self.node_selected) == 0 : return
-      if len(self.node_selected) == 1 : self.node_selected[0].update_node_label_in_blue()
-      else :  self.node_selected[0].update_plusieurs_node_label_in_blue(self.node_selected)
+      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
 
@@ -763,7 +388,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
       noeudACopier=self.QWParent.noeud_a_editer[0]
 
       if (self.QWParent.edit != "couper"):
-        #print   (noeudOuColler.item.parent.get_child(noeudOuColler.item.nom)) 
+        #print   (noeudOuColler.item.parent.getChild(noeudOuColler.item.nom)) 
         try:
            if noeudOuColler == self.tree.racine :
                child=noeudOuColler.doPastePremier(noeudACopier)
@@ -773,21 +398,21 @@ class JDCEditor(Ui_baseWidget,QWidget):
            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)
+               self.afficheInfos("Copie refusee",Qt.red)
            if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
                try :
                  nom=noeudACopier.item.sd.nom
-                 child.item.nomme_sd(nom)
+                 child.item.nommeSd(nom)
                except :
                  pass
            return
-           self.init_modif()
+           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)
+           self.afficheInfos("Copie refusee",Qt.red)
            return
 
       # il faut declarer le JDCDisplay_courant modifie
@@ -795,7 +420,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
       # si possible on renomme l objet comme le noeud couper
 
       if (self.QWParent.edit == "couper"):
-         print ('je pass la')
+         #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 '))
 
@@ -804,7 +429,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
            # indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
             indexNoeudACopier=self.getTreeIndex(noeudACopier)
             noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
-            noeudACopier.treeParent.build_children()
+            noeudACopier.treeParent.buildChildren()
 
          #else:
          except:
@@ -880,19 +505,35 @@ class JDCEditor(Ui_baseWidget,QWidget):
          listeASupprimer.append(noeud)
 
      for i in range(len(listeChild)):
-         self.tree.item.suppitem(listeItem[i])
+         self.tree.item.suppItem(listeItem[i])
          listeChild[i].item.update(listeItem[i])
 
      self.QWParent.noeud_a_editer = []
 
+    #----------------------------------#
+    def handleAjoutEtape(self,nomEtape):
+    #----------------------------------#
+      self.chercheNoeudSelectionne()
+      if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine : 
+         nodeOuAjouter=self.tree.racine
+         nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first')
+      else :               
+         nodeOuAjouter=self.node_selected[0]
+         if nodeOuAjouter != self.tree.racine :
+            while  nodeOuAjouter.treeParent != self.tree.racine:
+                   #print (nodeOuAjouter)
+                   nodeOuAjouter=nodeOuAjouter.treeParent
+                   #print (nodeOuAjouter.parent == self.tree.racine)
+         nouveau=nodeOuAjouter.appendBrother(nomEtape)
+      try : 
+        self.node_selected[0].setSelected(False)
+      except : pass
+      nouveau.setSelected(True)
+      nouveau.affichePanneau()
 
-    #---------------------#
-    def getFileName(self):
-    #---------------------#
-      return self.fichier
 
     #---------------------------#
-    def get_file_variable(self) :
+    def getFileVariable(self) :
     #---------------------------#
      titre = tr("Choix d'un fichier XML")
      texte = tr("Le fichier contient une commande MODEL\n")
@@ -901,90 +542,10 @@ class JDCEditor(Ui_baseWidget,QWidget):
 
      fichier = QFileDialog.getOpenFileName(self.appliEficas,
                    tr('Ouvrir Fichier'),
-                   self.appliEficas.CONFIGURATION.savedir,
+                   self.appliEficas.maConfiguration.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.get_text_JDC(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)
-            if self.code != 'PSEN' and self.code != 'PSEN_N1' : checksum=self.get_checksum(txt)
-            else : checksum=''
-            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 get_text_JDC(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 get_Dico(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):
     #------------#
@@ -998,11 +559,16 @@ class JDCEditor(Ui_baseWidget,QWidget):
       fonction="saveRun"+self.code
       if fonction in JDCEditor.__dict__: JDCEditor.__dict__[fonction](self,)
 
+
+# ---------------------------------------------
+# Methodes Non Crees dans ssIHM 
+# ---------------------------------------------
+
     #---------------#
     def runMAP(self):
     #---------------#
 
-      if not(self.jdc.isvalid()):
+      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 :
@@ -1010,7 +576,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
          return
       if self.modified or self.fichier==None  :
          self.fichierMapInput = self.__generateTempFilename(prefix = "map_run", suffix = ".map")
-         texte=self.get_text_JDC("MAP")
+         texte=self.getTextJDC("MAP")
          self.writeFile( self.fichierMapInput, txt = texte)
       else :
          self.fichierMapInput=self.fichier
@@ -1041,13 +607,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
     #-------------------#
     def runZCRACKS(self):
     #-------------------#
-      if not(self.jdc.isvalid()):
+      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.get_text_JDC("ZCRACKS",pourRun=1)
+         texte=self.getTextJDC("ZCRACKS",pourRun=1)
          self.writeFile( self.fichierZcracksInput, txt = texte)
       else :
          self.fichierZcracksInput=self.fichier
@@ -1062,13 +628,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
     #-------------------#
     def runCARMELCND(self):
     #-------------------#
-      #if not(self.jdc.isvalid()):
+      #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.get_text_JDC(self.format)
+      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)
@@ -1127,7 +693,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
     def saveRunMAP(self):
     #-----------------#
         extension=".input"
-        if not(self.jdc.isvalid()):
+        if not(self.jdc.isValid()):
            QMessageBox.critical( self, tr( "Sauvegarde de l'input impossible "),
                                 tr("Un JdC valide est necessaire pour creer un .input")
                                  )
@@ -1139,7 +705,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
                                 tr("Choix du composant obligatoire")
                                  )
            return
-        if hasattr(self.CONFIGURATION, "savedir"): path=self.CONFIGURATION.savedir
+        if hasattr(self.maConfiguration, "savedir"): path=self.maConfiguration.savedir
         else : path='C:/'
 
         monNomFichier=""
@@ -1174,7 +740,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
 
         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.get_text_JDC("MAP")
+            texte=self.getTextJDC("MAP")
             self.writeFile( self.fichierMapInput, txt = texte)
 
         cmd = ("map gen -t dat -n " + composant + " -i " + self.fichierMapInput + " -o " + fn)
@@ -1189,25 +755,6 @@ class JDCEditor(Ui_baseWidget,QWidget):
         self.saveFile()
 
 
-    #-----------------------------------------#
-    def cherche_Groupes(self):
-    #-----------------------------------------#
-        listeMA,listeNO=self.get_text_JDC("GroupMA")
-        return listeMA,listeNO
-
-    #-----------------------------------------#
-    def cherche_Dico(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):
@@ -1222,43 +769,36 @@ class JDCEditor(Ui_baseWidget,QWidget):
         #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"):
+    def saveCompleteFile(self, path = None, saveas= 0,formatLigne="beautifie"):
     #-----------------------------------------------------------------#
         extension='.casR'
-        fn = self.fichier
+        fn = self.fichierComplet
         #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
+        self.generator=self.maConfiguration.mesGenerators.plugins[self.format]()
+        if self.fichierComplet is None or saveas:
+          if path is None: path=self.maConfiguration.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]
+          self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
           fn = six.text_type(QDir.toNativeSeparators(fn))
 
-        self.fichier = os.path.splitext(fn)[0]+extension
+        self.fichierComplet = 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 hasattr(self.generator, "writeComplet"):
+            self.generator.writeComplet(self.fichierComplet,self.jdc,config=self.appliEficas.maConfiguration,appli=self.appliEficas)
 
-        if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
+        if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
 
         self.modified = 0
-        nouveauTitre=self.titre+"              "+str(os.path.basename(self.fichier))
+        nouveauTitre=self.titre+"              "+str(os.path.basename(self.fichierComplet))
         self.appliEficas.setWindowTitle(nouveauTitre)
-        return (1, self.fichier)
+        return (1, self.fichierComplet)
 
     #-----------------------------------------------------------------#
     def saveFile(self, path = None, saveas= 0,formatLigne="beautifie"):
@@ -1283,14 +823,14 @@ class JDCEditor(Ui_baseWidget,QWidget):
         newName = None
         fn = self.fichier
         if self.fichier is None or saveas:
-          if path is None: path=self.CONFIGURATION.savedir
+          if path is None: path=self.maConfiguration.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]
+          self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
           fn = six.text_type(QDir.toNativeSeparators(fn))
           newName = fn
 
@@ -1305,12 +845,28 @@ class JDCEditor(Ui_baseWidget,QWidget):
         if newName is not None:
            self.appliEficas.addToRecentList(newName)
            self.tree.racine.item.getObject().nom=os.path.basename(newName)
-           self.tree.racine.update_node_label()
+           self.tree.racine.updateNodeLabel()
+
+        #print ('sortie du XML')
+        #self.jdc.toXml()
 
-        if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
+        if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+        #if hasattr(self.generator, "writeDefault"):
             self.generator.writeDefault(fn)
         elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
-            self.generator.writeDefault(fn)
+            msgBox = QMessageBox(None)
+            msgBox.setWindowTitle(tr("Fichier .cas invalide / incomplet"))
+            msgBox.setText(tr("Le fichier .cas est invalide / incomplet"))
+            msgBox.addButton(tr("&Sauvegarder"),1)
+            msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+            msgBox.addButton(tr("&Annuler"),2)
+            res=msgBox.exec_()
+            if res == 0 :
+               self.generator.writeDefault(fn)
+               return (1, self.fichier)
+            if res == 2 : return (0, None)
+            if self.appliEficas.salome : self.appliEficas.close()
+            else : sys.exit(1)
 
         if self.salome :
                self.appliEficas.addJdcInSalome( self.fichier)
@@ -1346,7 +902,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
 
 
     #---------------------------------------------#
-    def get_file(self,unite=None,fic_origine = ''):
+    def getFile(self,unite=None,fic_origine = ''):
     #---------------------------------------------#
     # appele par I_JDC
         ulfile  = None
@@ -1367,18 +923,18 @@ class JDCEditor(Ui_baseWidget,QWidget):
         QMessageBox.information( self, titre,texte)
         fn = QFileDialog.getOpenFileName(self.appliEficas,
                    titre,
-                   self.appliEficas.CONFIGURATION.savedir)
+                   self.appliEficas.maConfiguration.savedir)
 
-        # ce retour est impose par le get_file d'I_JDC
+        # 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]
+        self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
 
         # On utilise le convertisseur defini par format_fichier
-        source=self.get_source(ulfile)
+        source=self.getSource(ulfile)
         if source:
             # On a reussia convertir le fichier self.ulfile
             jdcText = source
@@ -1388,14 +944,12 @@ class JDCEditor(Ui_baseWidget,QWidget):
         return ulfile, jdcText
 
     #-----------------------------------#
-    def updateJdc(self, itemApres,texte):
+    def updateJdc(self, etape,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.build_children()
+        CONTEXT.setCurrentStep(etape)
+        etape.buildIncludeEtape(texte)
+        self.tree.racine.buildChildren()
 
     #-----------------------------------#
     def updateJdcEtape(self, itemApres,texte):
@@ -1403,25 +957,41 @@ class JDCEditor(Ui_baseWidget,QWidget):
     # ajoute une etape  de JdC a partir d un texte
         monItem=itemApres
         etape=monItem.item.object
-        CONTEXT.set_current_step(etape)
+         
+        CONTEXT.setCurrentStep(etape)
         try :
-          ok=etape.build_includeEtape(texte)
+          ok=etape.buildIncludeEtape(texte)
         except :
           ok=0
         if not ok :
            QMessageBox.information( self,
                       tr("Import texte"),
                       tr("Impossible d importer le texte"))
-        self.tree.racine.build_children()
+        self.tree.racine.buildChildren()
         return ok
 
+    #-------------------------------------------#
+    def updateJdcAfterEtape(self, etape,texte):
+    #--------------------------------------------#
+    # ajoute une etape  de JdC a partir d un texte
+        CONTEXT.setCurrentStep(etape)
+        try :
+          ok=etape.buildIncludeEtape(texte,doitEtreValide=0)
+        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 deleteEtape(self,etape):
     #-------------------------------------#
     # dans le JDC
-        self.jdc.suppentite(etape)
+        self.jdc.suppEntite(etape)
 
     #-------------------------------------#
     def deleteMC(self,etape,MCFils,listeAvant=()):
@@ -1429,11 +999,11 @@ class JDCEditor(Ui_baseWidget,QWidget):
     # dans le JDC
         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=ouChercher.getChild(mot,restreint="oui")
+        monMC=ouChercher.getChild(MCFils,restreint="oui")
+        if monMC != None :  ouChercher.suppEntite(monMC)
         ouChercher.state='changed'
-        ouChercher.isvalid()
+        ouChercher.isValid()
 
     #-------------------------------------#
     def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
@@ -1441,417 +1011,28 @@ class JDCEditor(Ui_baseWidget,QWidget):
     # dans le JDC
         ouChercher=etape
         for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-        monMC=etape.get_child(ouChercher,restreint="oui")
-        if monMC== None : monMC= ouChercher.addentite(MCFils)
+              ouChercher=ouChercher.getChild(mot,restreint="oui")
+        monMC=etape.getChild(ouChercher,restreint="oui")
+        if monMC== None : monMC= ouChercher.addEntite(MCFils)
         monMC.valeur=valeurs
         monMC.val=valeurs
         monMC.state='changed'
-        monMC.isvalid()
+        monMC.isValid()
 
     #----------------------------------------------#
     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 debug : print ('etape trouvee', ouChercher)
-        if ouChercher==None : return None
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-              if debug : print (mot, ouChercher)
-              if ouChercher==None : return None
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        if debug : print ('monMC', monMC)
-        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.set_valeur(valeur)
-        monMC.isvalid()
-
-    #-----------------------------------------------------------#
-    def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
-    #-----------------------------------------------------------#
-    # dans le JDC
+        #print ('ajoutMCFact')
         ouChercher=etape
-        if isinstance (etape, str):
-           ouChercher=None
-           for e in self.jdc.etapes:
-              if e.nom == etape : ouChercher=e; break
-        if ouChercher==None : return
-        for mot in listeAvant :
-              ouChercher=ouChercher.get_child(mot,restreint="oui")
-              if ouChercher==None : return 
-        monMC=ouChercher.get_child(MCFils,restreint="oui")
-        if monMC== None : monMC= ouChercher.addentite(MCFils)
-
-        monMC.definition.into=valeurs
-        from Noyau.N_VALIDATOR import  IntoProtocol
-        monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
-        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
-        
+        #print (ouChercher)
         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 changeIntoDefMC(self,nomEtape,listeMC,valeurs):
-    #------------------------------------------------#
-    # dans le MDD
-        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]]
-
-        if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
-        else : oldValeurs=None
-        if oldValeurs==valeurs : return 0
-
-        mcAccas.into=valeurs
-        from Noyau.N_VALIDATOR import  IntoProtocol
-        mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
-        return 1
-
-    #-------------------------------------------------------------#
-    def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
-    #-------------------------------------------------------------#
-    # dans le MDD
-        #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
-        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],etape)
-        ouChercher=definitionEtape
-        for k in listeAvant : 
-            ouChercher=ouChercher.entites[k]
-        MCADetruire=ouChercher.entites[nomDuMC]
-        ouChercher.ordre_mc.remove(nomDuMC)
-        print ('remove de ', nomDuMC)
-        del ouChercher.entites[nomDuMC]
-        del self.dicoNouveauxMC[nomDuMC]
-
-
-    #-------------------------------------------------------------#
-    def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
-    #-------------------------------------------------------------#
-    # dans le MDD
-        definitionEtape=getattr(self.jdc.cata[0],nomEtape)
-        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)
-        #print ('ajout de ', nomDuMC)
-        #traceback.print_stack()
-        # ajout CIST sauvegarde
-        if nomDuMC in self.dicoNouveauxMC : del self.dicoNouveauxMC[nomDuMC]
-        self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
-        #print self.dicoNouveauxMC
-
-    #---------------------------------------------------------------------#
-    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 changeIntoMCandSet(self,etape,listeMC,into,valeurs):
-    #----------------------------------------------------#
-    # dans le MDD et le JDC
-
-        self.changeIntoDefMC(etape,listeMC,into)
-
-        if isinstance (etape, str):
-          for e in self.jdc.etapes:
-            if e.nom == etape : etape=e; break
-        if etape == None : return
-
-        ouChercher = etape
-        for mot in listeMC[:-1] :
-            ouChercher=ouChercher.get_child(mot,restreint="oui")
-            if ouChercher==None : return 
-        MCFils=listeMC[-1]
-        monMC=ouChercher.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 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]
-        if self.code != 'PSEN'  and self.code != 'PSEN_N1':
-           checksum=self.get_checksum(textJDC)
-           pareil=(checkAvant==checksum)
-        else :
-           pareil=1
-        #if self.code=='PSEN'
-        return pareil, textJDC
-
-    #---------------------------#
-    def get_checksum(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):
-    #---------------------------#
-        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()
+              ouChercher=ouChercher.getChild(mot,restreint="oui")
+              #print (mot)
+              #print (ouChercher)
+        monMC=etape.getChild(ouChercher,restreint="oui")
+        if monMC== None : monMC= ouChercher.addEntite(MCFils)
+        monMC.isValid()
 
 
     #-----------------------------------------
@@ -1859,15 +1040,14 @@ class JDCEditor(Ui_baseWidget,QWidget):
     #-----------------------------------------
        #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]
+       if   self.code in [ 'Adao', 'ADAO','MAP' ] : 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]
+       if   self.code in [ 'Adao', 'ADAO','MAP' ] : self.splitterSizes2=[5,1500]
        else                                  : self.splitterSizes2=[300,1000]
 
 
-
     #-----------------------------------------
     def restoreSplitterSizes(self,nbWidget=3):
     #----------------------------------------
@@ -1932,6 +1112,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
        self.widgetTree.show()
        #self.restoreSplitterSizes(3)
 
+    #-----------------------
+    def getEtapeCourante(self) :
+    #-----------------------
+      #print (self.tree.selectedItems())
+      if len(self.tree.selectedItems()) != 1 : return None
+      etape=self.tree.selectedItems()[0].item.object.getEtape()
+      return etape
     #-----------------------------
     def getTreeIndex(self,noeud):
     #----------------------------
@@ -1953,27 +1140,95 @@ class JDCEditor(Ui_baseWidget,QWidget):
           pass
       return indexNoeud
 
-if __name__ == "__main__":
-    self.code='ASTER'
-    name='prefs_'+prefs.code
-    prefsCode=__import__(name)
+    #-------------------#  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)
 
+    #-------------------#  Pour execution avec output et error dans le bash
+    def runPSEN_N1(self):
+    #-------------------#
+      
 
-    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
+      self.saveFile()
+      path1 = os.path.abspath(os.path.join(os.path.abspath(__file__), '../','../','ProcessOutputs_Eficas','TreatOutputs'))
+      sys.path.append(path1)
 
-#    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)
+      if not(self.jdc.isValid()):
+         QMessageBox.information( self, tr( "Unvalid JDC"),tr("incorrect keywords will be ignored"))
+      if 'dicoImbrique' in generator.plugins:
+         self.generator=generator.plugins['dicoImbrique']()
+         jdc_formate=self.generator.gener(self.jdc)
+         dico=self.generator.Dico 
+         
+         ###to delete
+         #fileDico =  r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+         fileDico =  os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+         f = open( str(fileDico), 'w')
+         f.write("Dico =" + str(dico) )
+         f.close()
+         ###
+         
+      
+      print ('in runPSEN_N1', dico)
+      print (dico)
+      from Run import run 
+      run(dico)
+      #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 'dicoImbrique' in generator.plugins:
+         self.generator=generator.plugins['dicoImbrique']()
+         jdc_formate=self.generator.gener(self.jdc)
+         dico=self.getDico() #generator.Dico
+
+
+         for k in dico['CONTINGENCY_PROCESSING']:
+             #print (k)
+             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), 'w')
+         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
+
+if __name__ == "__main__":
+    print ('in main')
diff --git a/InterfaceQT4/editorJuillet.py b/InterfaceQT4/editorJuillet.py
new file mode 100755 (executable)
index 0000000..616587c
--- /dev/null
@@ -0,0 +1,1249 @@
+# -*- 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 range
+except : pass
+
+import types,sys,os, re
+import  subprocess
+import traceback
+import six
+
+from monCodeMeteoAppelRun import Profil_Neutre
+
+
+from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter, QLabel
+from PyQt5.QtGui     import QPalette
+from PyQt5.QtCore    import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
+
+import traceback
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from Editeur        import session
+from Editeur        import comploader
+from Editeur        import Objecttreeitem
+from InterfaceQT4   import browser
+
+from desBaseWidget    import Ui_baseWidget
+from InterfaceQT4.monViewTexte   import ViewText
+from monWidgetCreeParam import MonWidgetCreeParam 
+
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
+debug = False
+
+    
+from InterfaceQT4.editorSsIhm    import JDCEditorSsIhm
+
+
+class JDCEditor(JDCEditorSsIhm,Ui_baseWidget,QWidget):
+# ----------------------------------------- #
+    """
+       Editeur de jdc
+    """
+
+# ----------------------------------------
+# Methodes faisant appel a ssIhm
+# ----------------------------------------
+
+    def __init__ (self,appli,fichier = None, jdc=None, QWParent=None, units = None, include=0):
+    #------------------------------------------------------------------------------------------
+
+
+        QWidget.__init__(self,None)
+        self.setupUi(self)
+
+        self.inhibeSplitter=0
+        self.widgetOptionnel=None
+        self.fenetreCentraleAffichee=None
+        self.dejaDansPlieTout=False
+        self.listeDesListesOuvertes=set()
+        self.afficheListesPliees=True
+        if appli!=None and hasattr(appli,"statusBar"): self.sb = appli.statusBar()
+        else : self.sb = None
+        self.QWParent=QWParent
+
+        JDCEditorSsIhm. __init__ (self,appli,fichier, jdc,units,include)
+
+        # Particularites IHM : met la fenetre a jour
+
+        self.initSplitterSizes()
+        if self.code == "ASTER" or self.code == "monCode" : self.afficheListesPliees =True
+        if self.code == 'PSEN_N1' : self.afficheListesPliees = False
+
+        #self.affiche=self.appliEficas.maConfiguration.affiche
+
+        if self.code in ['MAP','CARMELCND','PSEN'] : self.maConfiguration.afficheCommandesPliees=False
+        if self.code in ['MAP',]: self.fermeArbre()
+        #   self.widgetTree.close()
+        #   self.widgetTree=None
+
+        if self.maConfiguration.closeArbre: self.fermeArbre()
+        if self.maConfiguration.boutonDsMenuBar : self.appliEficas.remplitIconesCommandes()
+
+        self.version_code = session.d_env.cata
+     
+        self.format =  self.appliEficas.format_fichier
+
+        self.node_selected = []
+        self.deplier = True
+        self.message=''
+        self.afficheApresInsert=False
+        if self.maConfiguration.closeArbre    : self.afficheApresInsert=True
+        if self.code in ['Adao','ADAO','MAP'] : self.afficheApresInsert=True
+        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
+
+        if self.appliEficas.readercata.demandeCatalogue==True  :
+           nomFichierTranslation='translatorFichier'+'_'+str(self.appliEficas.readercata.versionCode)
+           if hasattr(self.appliEficas.maConfiguration,nomFichierTranslation) :
+              translatorFichier=getattr(self.appliEficas.maConfiguration,nomFichierTranslation)
+              from Extensions import localisation
+              localisation.localise(None,self.appliEficas.langue,translatorFichier=translatorFichier)
+
+
+        if self.jdc_item and self.appliEficas.ssIhm==False :
+            self.tree = browser.JDCTree( self.jdc_item,  self )
+        self.appliEficas.construitMenu()
+
+        self.adjustSize()
+
+
+    #-------------------------------#
+    def readFile(self, fn):
+    #--------------------------------#
+        """
+        Public slot to read the text from a file.
+        @param fn filename to read from (string or QString)
+        """
+
+        jdc=JDCEditorSsIhm.readFile(self, fn)
+
+        # Particularites IHM : met le titre de la fenetre a jour
+#        qApp.restoreOverrideCursor()
+        if self.fileInfo!= None : self.lastModified = self.fileInfo.lastModified()
+        nouveauTitre=self.titre+"              "+os.path.basename(self.fichier)
+        self.appliEficas.setWindowTitle(nouveauTitre)
+
+        return jdc
+
+# ---------------------------------------------
+# Methodes Inchangees
+# ---------------------------------------------
+#   _newJDC
+#   _newJDCInclude
+#   __generateTempFilename
+#   getSource
+#   generDico
+#   viewJdcSource
+#   viewJdcPy
+#   viewJdcRapport
+#   getFileName
+#   initModif
+#   writeFile
+#   getTextJDC
+#   verifieChecksum
+#   getChecksum
+#   getDico
+#   chercheGroupes
+#   chercheDico
+#   saveFileLegerAs
+
+# ---------------------------------------------
+# Methodes Surchargees 
+# ---------------------------------------------
+
+    #-----------------------------------------------------------------------#
+    def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
+    #--------------------------------------------------------------------#
+        w = ViewText( self.QWParent,self ,caption,txt,largeur,hauteur)
+        w.show()
+
+    #--------------------------------#
+    def informe(self,titre,txt,critique=True):
+    #--------------------------------#
+       if  critique :
+           self.afficheInfos(tr(txt),Qt.red)
+           QMessageBox.critical( self, tr(titre), tr(txt))
+       else :
+           QMessageBox.warning( self, tr(titre),tr(txt))
+
+    #--------------------------------#
+    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 _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 gestionParam(self):
+    #-----------------------#
+        w = MonWidgetCreeParam( self)
+        w.show()
+
+
+    #----------------#
+    def closeIt(self):
+    #----------------#
+        """
+        Public method called by the viewmanager to finally get rid of us.
+        """
+        if self.jdc: self.jdc.supprime()
+        self.close()
+
+    #----------------------------------------------#
+    def afficheInfos(self,message,couleur=Qt.black):
+    #----------------------------------------------#
+        if couleur=='red' : couleur = Qt.red
+        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 afficheAlerte(self,titre,message):
+    #------------------------------#
+    # appele par I_MACRO_ETAPE
+        QMessageBox.information( self, titre, message)
+
+    #-----------------------------------#
+    def afficheCommentaire(self,message):
+    #-----------------------------------#
+        self.labelCommentaire.setText(message)
+        QTimer.singleShot(6000, self.rendInvisible)
+
+    #----------------------#
+    def rendInvisible(self):
+    #----------------------#
+        self.labelCommentaire.setText("")
+
+    #---------------------------------------#
+    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.getChild(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.afficheInfos("Copie refusee",Qt.red)
+           if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor:
+               try :
+                 nom=noeudACopier.item.sd.nom
+                 child.item.nommeSd(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.afficheInfos("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 handleAjoutEtape(self,nomEtape):
+    #----------------------------------#
+      self.chercheNoeudSelectionne()
+      if len(self.node_selected) == 0 or self.node_selected[0] == self.tree.racine : 
+         nodeOuAjouter=self.tree.racine
+         nouveau=nodeOuAjouter.appendChild(nomEtape,pos='first')
+      else :               
+         nodeOuAjouter=self.node_selected[0]
+         if nodeOuAjouter != self.tree.racine :
+            while  nodeOuAjouter.treeParent != self.tree.racine:
+                   print (nodeOuAjouter)
+                   nodeOuAjouter=nodeOuAjouter.treeParent
+                   print (nodeOuAjouter.parent == self.tree.racine)
+         nouveau=nodeOuAjouter.appendBrother(nomEtape)
+      try : 
+        self.node_selected[0].setSelected(False)
+      except : pass
+      nouveau.setSelected(True)
+      nouveau.affichePanneau()
+
+
+    #---------------------------#
+    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.maConfiguration.savedir,
+                   tr('Wrapper Files (*.xml);;''All Files (*)'))
+     return  fichier
+
+    #------------#
+    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,)
+
+
+# ---------------------------------------------
+# Methodes Non Crees dans ssIHM 
+# ---------------------------------------------
+
+    #---------------#
+    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.maConfiguration, "savedir"): path=self.maConfiguration.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()
+
+
+
+    #-----------------------------------------#
+    def handleAjoutGroup(self,listeGroup):
+    #-----------------------------------------#
+        try :
+        #if 1:
+           from ajoutGroupe import handleAjoutGroupFiltre
+           #print listeGroup
+           handleAjoutGroupFiltre(self,listeGroup)
+           #print "apres handleAjoutGroupFiltre"
+        except :
+        #else :
+           pass
+
+
+    #-----------------------------------------------------------------#
+    def saveCompleteFile(self, path = None, saveas= 0,formatLigne="beautifie"):
+    #-----------------------------------------------------------------#
+        extension='.casR'
+        fn = self.fichierComplet
+        #saveas=True # Pour forcer le nom
+        self.generator=self.maConfiguration.mesGenerators.plugins[self.format]()
+        if self.fichierComplet is None or saveas:
+          if path is None: path=self.maConfiguration.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.maConfiguration.savedir=os.path.split(ulfile)[0]
+          fn = six.text_type(QDir.toNativeSeparators(fn))
+
+        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)
+
+        if self.salome : self.appliEficas.addJdcInSalome( self.fichierComplet)
+
+        self.modified = 0
+        nouveauTitre=self.titre+"              "+str(os.path.basename(self.fichierComplet))
+        self.appliEficas.setWindowTitle(nouveauTitre)
+        return (1, self.fichierComplet)
+
+    #-----------------------------------------------------------------#
+    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.maConfiguration.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.maConfiguration.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()
+
+        self.jdc.toXml()
+
+        if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+        #if hasattr(self.generator, "writeDefault"):
+            self.generator.writeDefault(fn)
+        elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
+            msgBox = QMessageBox(None)
+            msgBox.setWindowTitle(tr("Fichier .cas invalide / incomplet"))
+            msgBox.setText(tr("Le fichier .cas est invalide / incomplet"))
+            msgBox.addButton(tr("&Sauvegarder"),1)
+            msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+            msgBox.addButton(tr("&Annuler"),2)
+            res=msgBox.exec_()
+            if res == 0 :
+               self.generator.writeDefault(fn)
+               return (1, self.fichier)
+            if res == 2 : return (0, None)
+            if self.appliEficas.salome : self.appliEficas.close()
+            else : sys.exit(1)
+
+        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.maConfiguration.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.maConfiguration.savedir=os.path.split(ulfile)[0]
+
+        # On utilise le convertisseur defini par format_fichier
+        source=self.getSource(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, etape,texte):
+    #------------------------------------#
+    # ajoute une etape  de JdC a partir d un texte
+        CONTEXT.setCurrentStep(etape)
+        etape.buildIncludeEtape(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.setCurrentStep(etape)
+        try :
+          ok=etape.buildIncludeEtape(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 updateJdcAfterEtape(self, etape,texte):
+    #--------------------------------------------#
+    # ajoute une etape  de JdC a partir d un texte
+        CONTEXT.setCurrentStep(etape)
+        try :
+          ok=etape.buildIncludeEtape(texte,doitEtreValide=0)
+        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 deleteEtape(self,etape):
+    #-------------------------------------#
+    # dans le JDC
+        self.jdc.suppEntite(etape)
+
+    #-------------------------------------#
+    def deleteMC(self,etape,MCFils,listeAvant=()):
+    #-------------------------------------#
+    # dans le JDC
+        ouChercher=etape
+        for mot in listeAvant :
+              ouChercher=ouChercher.getChild(mot,restreint="oui")
+        monMC=ouChercher.getChild(MCFils,restreint="oui")
+        if monMC != None :  ouChercher.suppEntite(monMC)
+        ouChercher.state='changed'
+        ouChercher.isValid()
+
+    #-------------------------------------#
+    def ajoutMC(self,etape,MCFils,valeurs,listeAvant=()):
+    #-------------------------------------#
+    # dans le JDC
+        ouChercher=etape
+        for mot in listeAvant :
+              ouChercher=ouChercher.getChild(mot,restreint="oui")
+        monMC=etape.getChild(ouChercher,restreint="oui")
+        if monMC== None : monMC= ouChercher.addEntite(MCFils)
+        monMC.valeur=valeurs
+        monMC.val=valeurs
+        monMC.state='changed'
+        monMC.isValid()
+
+    #----------------------------------------------#
+    def ajoutMCFact(self,etape,MCFils,listeAvant=()):
+    #----------------------------------------------#
+    # dans le JDC
+        print ('ajoutMCFact')
+        ouChercher=etape
+        print (ouChercher)
+        for mot in listeAvant :
+              ouChercher=ouChercher.getChild(mot,restreint="oui")
+              print (mot)
+              print (ouChercher)
+        monMC=etape.getChild(ouChercher,restreint="oui")
+        if monMC== None : monMC= ouChercher.addEntite(MCFils)
+        monMC.isValid()
+
+
+    #-----------------------------------------
+    def initSplitterSizes(self, nbWidget=3):
+    #-----------------------------------------
+       #print ("je passe ds initSplitterSizes", nbWidget)
+
+       if   self.code in [ 'Adao', 'ADAO','MAP' ] : 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','MAP' ] : 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 getEtapeCourante(self) :
+    #-----------------------
+      print (self.tree.selectedItems())
+      if len(self.tree.selectedItems()) != 1 : return None
+      etape=self.tree.selectedItems()[0].item.object.getEtape()
+      return etape
+    #-----------------------------
+    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
+
+    #-------------------#
+    def runMeteo(self):
+    #-------------------#
+
+      if not(self.jdc.isValid()):
+         QMessageBox.critical( self, tr( "Execution impossible "),tr("le JDC doit etre valide pour une execution Meteo"))
+         return
+      strSource = str( self.getTextJDC(self.format) )
+      code = compile(strSource, strSource, 'exec')
+      exec(code, globals(), {})
+
+
+
+    #-------------------#  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)
+
+    #-------------------#  Pour execution avec output et error dans le bash
+    def runPSEN_N1(self):
+    #-------------------#
+      
+
+      self.saveFile()
+      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 'dicoImbrique' in generator.plugins:
+         self.generator=generator.plugins['dicoImbrique']()
+         jdc_formate=self.generator.gener(self.jdc)
+         dico=self.generator.Dico 
+         
+         ###to delete
+         #fileDico =  r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+         fileDico =  os.path.join(path1, 'dicoN1.py') #r'C:\Logiciels DER\PSEN_V16\Code\ProcessOutputs_Eficas\TreatOutputs\dicoN1.py'
+         f = open( str(fileDico), 'w')
+         f.write("Dico =" + str(dico) )
+         f.close()
+         ###
+         
+      
+      print ('in runPSEN_N1', dico)
+      print (dico)
+      from Run import run 
+      run(dico)
+      #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 'dicoImbrique' in generator.plugins:
+         self.generator=generator.plugins['dicoImbrique']()
+         jdc_formate=self.generator.gener(self.jdc)
+         dico=self.getDico() #generator.Dico
+
+
+         for k in dico['CONTINGENCY_PROCESSING']:
+             #print (k)
+             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), 'w')
+         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
+
+
+if __name__ == "__main__":
+    print ('in main')
diff --git a/InterfaceQT4/editorSsIhm.py b/InterfaceQT4/editorSsIhm.py
new file mode 100755 (executable)
index 0000000..0e3cb69
--- /dev/null
@@ -0,0 +1,1029 @@
+# -*- 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
+
+import traceback
+
+# Modules Eficas
+
+import convert, generator
+from Editeur        import session
+from Editeur        import comploader
+from Editeur        import Objecttreeitem
+
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
+debug = False
+
+
+
+class JDCEditorSsIhm :
+# ------------------- #
+    """
+       Editeur de jdc
+    """
+
+# ---------------------------------------------
+# Methodes Communes ou appelees depuis avec Ihm
+# ---------------------------------------------
+
+    def __init__ (self,appli,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.fichier     = fichier
+        self.fichierComplet  = fichier
+        self.jdc         = jdc
+        self.first      = True
+        self.jdc_item    = None
+        self.dicoNouveauxMC   = {}
+        self.dicoNouveauxFact = {}
+        self.dict_reels       = {}
+        self.liste_simp_reel  = []
+
+        if appli != None : self.salome =  self.appliEficas.salome
+        else             : self.salome =  0
+
+        # ces attributs sont mis a jour par definitCode appelee par newEditor
+        self.code              = self.appliEficas.maConfiguration.code
+        self.maConfiguration   = self.appliEficas.maConfiguration
+
+        self.version_code = session.d_env.cata
+
+
+        if not hasattr ( self.appliEficas, 'readercata') or self.appliEficas.readercata.demandeCatalogue==True or self.appliEficas.multi==True:
+           if self.maConfiguration.typeDeCata == 'XML' :
+              from InterfaceQT4   import readercataXML as readercata
+           else :
+              from InterfaceQT4   import readercata
+           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.format =  self.appliEficas.format_fichier
+
+        if self.appliEficas.maConfiguration.dumpXSD==True : self.appliEficas.dumpXsd()
+        self.dict_reels={}
+        self.liste_simp_reel=[]
+        self.dicoNouveauxMC={}
+        self.dicoNouveauxFact={}
+
+
+        try:
+          self.maConfiguration.generator_module
+          _module = __import__(self.maConfiguration.generator_module)
+          info    = _module.entryPoint()
+          generator.plugins.addEntryPoint(info)
+        except:
+          pass
+
+        try:
+          self.maConfiguration.convert_module
+          #print self.maConfiguration.convert_module
+          _module = __import__(self.maConfiguration.convert_module)
+          info = _module.entryPoint()
+          convert.plugins.addEntryPoint(info)
+        except :
+          pass
+
+        self.maConfiguration.mesGenerators     = generator
+        self.maConfiguration.mesconvertisseurs = convert
+
+        self.fileInfo       = None
+        self.lastModified   = 0
+
+        self.modified   = False
+        self.isReadOnly = False
+
+        #------- construction du jdc --------------
+
+
+        self.nouveau=0
+        if self.fichier is not None:        #  fichier jdc fourni
+            if jdc==None :
+               #print ('PNPN : chgt try en if')
+               try :
+               #if 1 :
+                   self.jdc = self.readFile(self.fichier)
+               except :
+                   print ("mauvaise lecture du fichier")
+               if self.salome :
+                  try :
+                     self.appliEficas.addJdcInSalome( self.fichier)
+                  except :
+                     print ("mauvais enregistrement dans Salome")
+            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:
+# si on est en XMML ne faut-il pas passer en Accas ?
+                self.jdc.analyse()
+                txt_exception = self.jdc.cr.getMessException()
+            if txt_exception :
+                self.jdc = None
+                self.informe('pb chargement jdc',txt_exception)
+            else:
+                comploader.chargerComposants()
+                self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc )
+
+    #-------------------------------#
+    def readFile(self, fn):
+    #--------------------------------#
+        """
+        Public slot to read the text from a file.
+        @param fn filename to read from (string or QString)
+        """
+
+        # charge un JDC
+        # paticularisee avec Ihm
+
+        fn = six.text_type(fn)
+        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
+
+             p=convert.plugins[self.appliEficas.format_fichier_in]()
+             p.readfile(fn)
+
+             if p.text=="" : self.nouveau=1
+             #print ('PNPN --> CIST a faire')
+
+             pareil,texteNew=self.verifieChecksum(p.text)
+             if  not pareil :
+                self.informe(("fichier modifie"),("Attention! fichier change hors EFICAS"),False)
+
+             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.afficheInfos("Erreur a la conversion",'red')
+        else :
+            self.afficheInfos("Type de fichier non reconnu",'red')
+            self.informe( "Type de fichier non reconnu",
+                    "EFICAS ne sait pas ouvrir le type de fichier " + self.appliEficas.format_fichier_in)
+            return None
+
+        CONTEXT.unsetCurrentStep()
+
+        #if elf.appliEficas.maConfiguration
+        jdc=self.readercata.cata.JdC(procedure=text,
+                                    appli=self,
+                                    cata=self.readercata.cata,
+                                    cata_ord_dico=self.readercata.cata_ordonne_dico,
+                                    nom=jdcName,
+                                    rep_mat=self.maConfiguration.rep_mat
+                                   )
+        self.modified = False
+        return jdc
+
+
+    #--------------------------------#
+    def _newJDC( self ,units = None):
+    #--------------------------------#
+        """
+        Initialise un nouveau JDC vierge
+        """
+        self.modified=1
+        CONTEXT.unsetCurrentStep()
+
+        texte=""
+        if self.code == "CARMELCND" : texte=self._newJDCCND()
+        if self.code == "ZCRACKS" : texte=self._newZCRACKS()
+        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 hasattr(self.readercata.cata,'TEXTE_NEW_JDC') : texte=self.readercata.cata.TEXTE_NEW_JDC
+
+
+        #jdc=self.readercata.cata[0].JdC( procedure =texte,
+        #print (self.readercata.cata)
+        jdc=self.readercata.cata.JdC( procedure =texte,
+                                         appli=self,
+                                         cata=self.readercata.cata,
+                                         cata_ord_dico=self.readercata.cata_ordonne_dico,
+                                         rep_mat=self.maConfiguration.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 ?
+        # elle positionne le contexte
+        # est ce qu on ne doit pas changer le format en Accas si on vient d accas ?
+        if self.format == 'xml' : return jdc
+        if texte == "" :
+           jdc.editor=self
+           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.unsetCurrentStep()
+
+        #jaux=self.readercata.cata[0].JdC( procedure="",
+        jaux=self.readercata.cata.JdC( procedure="",
+                               appli=self,
+                               cata=self.readercata.cata,
+                               cata_ord_dico=self.readercata.cata_ordonne_dico,
+                               rep_mat=self.maConfiguration.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.maConfiguration.rep_mat,
+                   )
+        J.analyse()
+        if units is not None:
+           J.recorded_units=units
+           J.old_recorded_units=units
+        return J
+
+
+
+    #-----------------------#
+    def getSource(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.afficheInfos("Erreur a la conversion",'red')
+            return text
+        else:
+            # Il n'existe pas c'est une erreur
+            self.afficheInfos("Type de fichier non reconnu",'red')
+            self.informe( "Type de fichier non reconnu",
+                    "EFICAS ne sait pas ouvrir le type de fichier " + self.appliEficas.format_fichier_in)
+            return None
+
+    #----------------------------------------------#
+    def __generateTempFilename(self, prefix, suffix):
+    #----------------------------------------------#
+        import tempfile
+        (fd, filename) = tempfile.mkstemp(prefix=prefix, suffix=suffix)
+        os.close(fd)
+        return filename
+
+    #-----------------------#
+    def generDico(self):
+    #-----------------------#
+       if 'dico' in generator.plugins:
+         self.generator=generator.plugins['dico']()
+         #print (self.generator)
+         jdc_formate=self.generator.gener(self.jdc)
+         #print (jdc_formate)
+         dico=self.generator.Dico
+         #print (dico)
+         return dico
+
+    #-----------------------#
+    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):
+    #-----------------------#
+        # on ajoute les regles
+        strRapport = six.text_type( self.jdc.report() )
+        self._viewText(strRapport, "JDC_RAPPORT")
+
+    #-----------------------#
+    def viewJdcRegles(self):
+    #-----------------------#
+        # on ajoute les regles
+        texte_global, test_global =  self.jdc.verifRegles() 
+        self._viewText(texte_global, "JDC_REGLES")
+
+    #-----------------------#
+    def getJdcRapport(self):
+    #-----------------------#
+        # on ajoute les regles
+        strRapport = six.text_type( self.jdc.report() )
+        return strRapport
+
+    #---------------------#
+    def getFileName(self):
+    #---------------------#
+      return self.fichier
+
+    #-------------------#
+    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 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)
+            if self.code != 'PSEN' and self.code != 'PSEN_N1' : checksum=self.getChecksum(txt)
+            else : checksum=''
+            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:
+            self.afficheInfos('Sauvegarde du Fichier', 'Le fichier'+str(fn) + 'n a pas pu etre sauvegarde :'  + str(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.maConfiguration,appli=self.appliEficas)
+            if pourRun : jdc_formate=self.generator.textePourRun
+            if self.code == 'TELEMAC' : jdc_formate=self.generator.texteDico
+         except ValueError as e:
+            self.informe( "Erreur a la generation",str(e),'red')
+            return
+
+         if not self.generator.cr.estvide():
+            self.informe("Erreur a la generation","EFICAS ne sait pas convertir ce JDC",'red')
+            return ""
+         else:
+            return jdc_formate
+      else:
+         # Il n'existe pas c'est une erreur
+         self.informe("Format inconnu", self.format +  " non reconnu" )
+         return ""
+
+    #------------------------------#
+    def verifieChecksum(self,text):
+    #------------------------------#
+    # Attention : souci sous Windows
+    #
+        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]
+        if self.code != 'PSEN'  and self.code != 'PSEN_N1':
+           checksum=self.getChecksum(textJDC)
+           pareil=(checkAvant==checksum)
+        else :
+           pareil=1
+        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 getDico(self):
+    #---------------------#
+      if 'dicoImbrique' in generator.plugins:
+         self.generator=generator.plugins['dicoImbrique']()
+         #print (self.generator)
+         jdc_formate=self.generator.gener(self.jdc)
+         dico=self.generator.Dico
+         return dico
+      else :
+         self.afficheInfos(tr("Format %s non reconnu" , self.format),Qt.red)
+         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.maConfiguration)
+           dicoCourant=self.generator.dico
+        return dicoCourant
+
+    #-----------------------------------------------------------------#
+    def saveFileLegerAs(self, fileName = None) :
+    #-----------------------------------------------------------------#
+        if fileName != None :
+           self.fichier = fileName
+           return self.saveFileLeger(fileName)
+        return self.saveFileLeger()
+
+    #-----------------------------------------------------------------#
+    def saveFileComplet(self, fichier = None, formatLigne="beautifie"):
+    #-----------------------------------------------------------------#
+        fn = fichier
+        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)
+
+
+# ---------------------------------------------
+# Methodes Surchargees par avecIhm
+# ---------------------------------------------
+
+    #--------------------------------#
+    def ajoutCommentaire(self):
+    #--------------------------------#
+      print ('pas programme sans Ihm')
+      print ('prevenir la maintenance du besoin')
+
+
+    #--------------------------------------#
+    def informe(self,titre,txt,critique=True):
+    #--------------------------------------#
+    # methode differenre avec et sans ihm
+      if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!')
+      print (titre)
+      print (txt)
+      if critique : print ('!!!!!!!!!!!!!!!!!!!!!!!!!!!')
+
+    #--------------------------------------#
+    def afficheInfos(self,txt,couleur=None):
+    #--------------------------------------#
+    # methode differenre avec et sans ihm
+      print (txt)
+
+    #-----------------------------------------------------------------------#
+    def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
+    #--------------------------------------------------------------------#
+        print ('_____________________________')
+        print (txt)
+        print ('_____________________________')
+
+
+    #-----------------------------------------------------------------#
+    def saveFile(self, fichier, 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
+        """
+
+
+        if not (self.writeFile(fichier,formatLigne=formatLigne)): return (0, None)
+        self.fichierOut = fichier
+
+        if self.jdc.isValid() != 0 and hasattr(self.generator, "writeDefault"):
+            self.generator.writeDefault(fichier)
+        elif self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
+            self.generator.writeDefault(fichier)
+
+        self.modified = 0
+
+        return (1, self.fichier)
+#
+
+    #----------------------------------------------#
+    def sauveLigneFile(self):
+    #----------------------------------------------#
+        self.modified=1
+        return self.saveFile(formatLigne="Ligne")
+
+
+    #-----------------------------------#
+    def updateJdc(self, itemApres,texte):
+    #------------------------------------#
+    # ajoute une etape  de JdC a partir d un texte
+        monItem=itemApres
+        etape=monItem.item.object
+        CONTEXT.setCurrentStep(etape)
+        etape.buildIncludeInclude(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.build_children()
+        return ok
+
+
+
+    #-------------------------------------#
+    def deleteEtape(self,etape):
+    #-------------------------------------#
+    # dans le JDC
+        self.jdc.suppentite(etape)
+
+    #-------------------------------------#
+    def deleteMC(self,etape,MCFils,listeAvant=()):
+    #-------------------------------------#
+    # dans le JDC
+        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=()):
+    #-------------------------------------#
+    # dans le JDC
+        ouChercher=etape
+        for mot in listeAvant :
+              ouChercher=ouChercher.get_child(mot,restreint="oui")
+        monMC=etape.get_child(ouChercher,restreint="oui")
+        if monMC== None : monMC= ouChercher.addentite(MCFils)
+        monMC.valeur=valeurs
+        monMC.val=valeurs
+        monMC.state='changed'
+        monMC.isvalid()
+
+    #----------------------------------------------#
+    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 debug : print ('etape trouvee', ouChercher)
+        if ouChercher==None : return None
+        for mot in listeAvant :
+              ouChercher=ouChercher.get_child(mot,restreint="oui")
+              if debug : print (mot, ouChercher)
+              if ouChercher==None : return None
+        monMC=ouChercher.get_child(MCFils,restreint="oui")
+        if debug : print ('monMC', monMC)
+        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.set_valeur(valeur)
+        monMC.isvalid()
+
+    #-----------------------------------------------------------#
+    def changeIntoMC(self,etape,MCFils,valeurs, listeAvant=()):
+    #-----------------------------------------------------------#
+    # dans le JDC
+        ouChercher=etape
+        if isinstance (etape, str):
+           ouChercher=None
+           for e in self.jdc.etapes:
+              if e.nom == etape : ouChercher=e; break
+        if ouChercher==None : return
+
+        for mot in listeAvant :
+              ouChercher=ouChercher.get_child(mot,restreint="oui")
+              if ouChercher==None : return
+        monMC=ouChercher.get_child(MCFils,restreint="oui")
+        if monMC== None : monMC= ouChercher.addentite(MCFils)
+
+        monMC.definition.into=valeurs
+        from Noyau.N_VALIDATOR import  IntoProtocol
+        monMC.definition.intoProto = IntoProtocol("into", into=monMC.definition.into, val_min=monMC.definition.val_min, val_max=monMC.definition.val_max)
+        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,nomEtape)
+        #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 changeIntoDefMC(self,nomEtape,listeMC,valeurs):
+    #------------------------------------------------#
+    # dans le MDD
+        #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+        definitionEtape=getattr(self.jdc.cata,nomEtape)
+        ouChercher=definitionEtape
+
+        if len(listeMC) > 1 :
+           for mc in listeMC[0:-1]:
+             mcfact=ouChercher.entites[mc]
+             ouChercher=mcfact
+        mcAccas=ouChercher.entites[listeMC[-1]]
+
+        if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into
+        else : oldValeurs=None
+        if oldValeurs==valeurs : return 0
+
+        mcAccas.into=valeurs
+        from Noyau.N_VALIDATOR import  IntoProtocol
+        mcAccas.intoProto = IntoProtocol("into", into=valeurs, val_min=mcAccas.val_min, val_max=mcAccas.val_max)
+        return 1
+
+    #-------------------------------------------------------------#
+    def deleteDefinitionMC(self,etape,listeAvant,nomDuMC):
+    #-------------------------------------------------------------#
+    # dans le MDD
+        #print 'in deleteDefinitionMC', etape,listeAvant,nomDuMC
+        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],etape)
+        definitionEtape=getattr(self.jdc.cata,etape)
+        ouChercher=definitionEtape
+        for k in listeAvant :
+            ouChercher=ouChercher.entites[k]
+        MCADetruire=ouChercher.entites[nomDuMC]
+        ouChercher.ordre_mc.remove(nomDuMC)
+        print ('remove de ', nomDuMC)
+        del ouChercher.entites[nomDuMC]
+        del self.dicoNouveauxMC[nomDuMC]
+
+
+    #-------------------------------------------------------------#
+    def ajoutDefinitionMC(self,nomEtape,listeAvant,nomDuMC,typ,**args):
+    #-------------------------------------------------------------#
+    # dans le MDD
+        #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+        definitionEtape=getattr(self.jdc.cata,nomEtape)
+        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)
+        #print ('ajout de ', nomDuMC)
+        #traceback.print_stack()
+        # ajout CIST sauvegarde
+        if nomDuMC in self.dicoNouveauxMC : del self.dicoNouveauxMC[nomDuMC]
+        self.dicoNouveauxMC[nomDuMC]=('ajoutDefinitionMC',nomEtape,listeAvant,nomDuMC,typ,args)
+        #print self.dicoNouveauxMC
+
+    #---------------------------------------------------------------------#
+    def ajoutDefinitionMCFact(self,nomEtape,listeAvant,nomDuMC,listeMC,**args):
+    #---------------------------------------------------------------------#
+    # dans le MDD
+        print ('ajoutDefinitionMCFact', nomDuMC)
+        #definitionEtape=getattr(self.jdc.cata[0],nomEtape)
+        definitionEtape=getattr(self.jdc.cata,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 changeIntoMCandSet(self,etape,listeMC,into,valeurs):
+    #----------------------------------------------------#
+    # dans le MDD et le JDC
+
+        self.changeIntoDefMC(etape,listeMC,into)
+
+        if isinstance (etape, str):
+          for e in self.jdc.etapes:
+            if e.nom == etape : etape=e; break
+        if etape == None : return
+
+        ouChercher = etape
+        for mot in listeMC[:-1] :
+            ouChercher=ouChercher.get_child(mot,restreint="oui")
+            if ouChercher==None : return
+        MCFils=listeMC[-1]
+        monMC=ouChercher.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 ajoutVersionCataDsJDC(self,txt):
+    #-------------------------------------#
+        #if not hasattr(self.readercata.cata[0],'VERSION_CATALOGUE'): return txt
+        if not hasattr(self.readercata.cata,'VERSION_CATALOGUE'): return txt
+        ligneVersion="#VERSION_CATALOGUE:"+self.readercata.cata.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,'VERSION_CATALOGUE'): self.versionCata=self.readercata.cata.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
+
+
+# Methodes a resorber
+# il faut mettre a jour les catalogues avec
+# TEXTE_NEW_JDC
+#
+
+    #---------------------------#
+    def _new_CF(self):
+    #---------------------------#
+        texte="CONDUITE_FORCEE();"
+        return texte
+
+    #---------------------------#
+    def _newPSEN(self):
+    #---------------------------#
+        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
+
+
+if __name__ == "__main__":
+   print ('a faire')
index 355d33293b7cf691dabff0758c6cc217ea2552fb..d7aea420395a51840183530d2c185f726b943139 100755 (executable)
@@ -38,8 +38,16 @@ if ihmDir not in sys.path : sys.path.append(ihmDir)
 if ihmQTDir not in sys.path : sys.path.append(ihmQTDir)
 if editeurDir not in sys.path :sys.path.append(editeurDir)
 
+def getEficasSsIhm(code=None,fichier=None,ssCode=None,multi=False,langue='en',versionCode=None):
+    #print (versionCode)
+    from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
+    Eficas=AppliSsIhm(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue,versionCode=versionCode)
+    from Editeur  import session
+    options=session.parse(['ssIhm','-k',code,'-v',versionCode])
+    return Eficas
 
-def lance_eficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
+
+def lanceEficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
     """
         Lance l'appli EFICAS
     """
@@ -51,14 +59,26 @@ def lance_eficas(code=None,fichier=None,ssCode=None,multi=False,langue='en'):
 
     from InterfaceQT4.qtEficas import Appli
     app = QApplication(sys.argv)
+
+    #import cProfile, pstats, StringIO
+    #pr = cProfile.Profile()
+    #pr.enable()
+
     Eficas=Appli(code=code,salome=0,ssCode=ssCode,multi=multi,langue=langue)
+    #pr.disable()
+    #s = StringIO.StringIO()
+    #sortby = 'cumulative'
+    #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
+    #ps.print_stats()
+    #print (s.getValue())
+
     Eficas.show()
 
     res=app.exec_()
     sys.exit(res)
 
 
-def lance_eficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
+def lanceEficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=False,langue='en'):
     """
         Lance l'appli EFICAS pour trouver les noms des groupes
     """
@@ -77,24 +97,24 @@ def lance_eficas_ssIhm(code=None,fichier=None,ssCode=None,version=None,debug=Fal
 
     from . import readercata
     if not hasattr ( Eficas, 'readercata'):
-           monreadercata  = readercata.READERCATA( parent, Eficas )
+           monreadercata  = readercata.ReaderCata( parent, Eficas )
            Eficas.readercata=monreadercata
 
     from .editor import JDCEditor
     monEditeur=JDCEditor(Eficas,fichier)
     return monEditeur
 
-def lance_eficas_ssIhm_cherche_Groupes(code=None,fichier=None,ssCode=None,version=None):
-    monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
-    print((monEditeur.cherche_Groupes()))
+def lanceEficas_ssIhm_chercheGroupes(code=None,fichier=None,ssCode=None,version=None):
+    monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version)
+    print((monEditeur.chercheGroupes()))
 
-def lance_eficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=None):
-    monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version)
+def lanceEficas_ssIhm_cherche_cr(code=None,fichier=None,ssCode=None,version=None):
+    monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version)
     print((monEditeur.jdc.cr))
 
-def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False,debug=False,leger=False,langue='ang'):
-    #print 'lance_eficas_ssIhm_reecrit', fichier
-    monEditeur=lance_eficas_ssIhm(code,fichier,ssCode,version,langue=langue)
+def lanceEficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,ou=None,cr=False,debug=False,leger=False,langue='ang'):
+    #print 'lanceEficas_ssIhm_reecrit', fichier
+    monEditeur=lanceEficas_ssIhm(code,fichier,ssCode,version,langue=langue)
     if ou == None : 
        fileName=fichier.split(".")[0]+"_reecrit.comm"
        fn=fichier.split(".")[0]+"_cr.txt"
@@ -116,7 +136,7 @@ def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,o
          sortby = 'cumulative'
          ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
          ps.print_stats()
-         print (s.getvalue())
+         print (s.getValue())
 
     elif not leger : monEditeur.saveFileAs(fileName=fileName)
     else : monEditeur.saveFileLegerAs(fileName=fileName)
@@ -125,7 +145,7 @@ def lance_eficas_ssIhm_reecrit(code=None,fichier=None,ssCode=None,version=None,o
        f.write(str(monEditeur.jdc.report()))
        f.close()
 
-def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'):
+def lanceEficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION_STUDY'):
     """
         Lance l'appli EFICAS pour trouver les noms des groupes
     """
@@ -142,7 +162,7 @@ def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION
 
     from . import readercata
     if not hasattr ( Eficas, 'readercata'):
-           monreadercata  = readercata.READERCATA( parent, Eficas )
+           monreadercata  = readercata.ReaderCata( parent, Eficas )
            Eficas.readercata=monreadercata
 
     from .editor import JDCEditor
@@ -151,11 +171,10 @@ def lance_eficas_param(code='Adao',fichier=None,version='V0',macro='ASSIMILATION
     parameters=getJdcParameters(texte,macro)
     return parameters
 
-def getEficasSsIhm(code='Adao',version='V0'):
-    from .qtEficasSsIhm import AppliSsIhm
-    app = QApplication(sys.argv)
-    Eficas=Appli(code=code,ssCode=None,salome=0)
-    return Eficas
+#def getEficasSsIhm(code='Adao',versionCode='V0'):
+#    from .qtEficasSsIhm import AppliSsIhm
+#    Eficas=AppliSsIhm(code=code,ssCode=None,salome=0)
+#    return Eficas
 
 def getJdcParameters(jdc,macro):
     """
@@ -191,6 +210,6 @@ def loadJDC(filename):
 if __name__ == "__main__":
     import sys
     sys.path.insert(0,os.path.abspath(os.path.join(os.getcwd(),'..')))
-    lance_eficas(code=None,fichier=None,ssCode=None,multi=True)
+    lanceEficas(code=None,fichier=None,ssCode=None,multi=True)
     
 
index 8b790bf064a1735aa8655254534d9b4dc542a6e0..d3800d89023908afa1d6d93a1058951b6b34e467 100644 (file)
@@ -27,7 +27,7 @@ import types,os
 import traceback
 
 from PyQt5.QtWidgets import QToolButton ,QWidget
-from PyQt5.QtGui import QFont, QFontMetrics
+from PyQt5.QtGui import QFont, QFontMetrics, QFontInfo, QPalette
 from PyQt5.QtCore import Qt
 
 from Extensions.i18n import tr
@@ -36,7 +36,8 @@ from .gereIcones import ContientIcones
 from .gereIcones import FacultatifOuOptionnel
 from .qtSaisie    import SaisieValeur
 
-nomMax=250
+nomMax=230
+# empirique les metrics ne fonctionnent pas 
 # ---------------------------------------------------------------------- #
 class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
 # --------------------------------------------------------------------- #
@@ -83,18 +84,27 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
    def setNom(self):
        self.debutToolTip=""
        nomTraduit=tr(self.objSimp.nom)
+       #metrix= QFontMetrics(self.label.font())
+       #maxLongueur = self.label.width() - 2
+       #print ('______________________')
+       #print (nomTraduit)
+       #print (self.label.font().pixelSize())
+       #longueur2 = metrix.boundingRect(nomTraduit).width()
        longueur=QFontMetrics(self.label.font()).width(nomTraduit)
        if longueur >= nomMax :
          nouveauNom=self.formate(nomTraduit)
          self.label.setText(nouveauNom)
        else :   
          self.label.setText(nomTraduit)
+       #clidedText = metrics.elidedText(text, Qt.ElideRight, label.width());
+       #if (clippedText != nomTraduit): self.label.setToolTip(nomTraduit)
+       #self.label.setText(clippedText)
 
-   def agrandit(self):
+   #def agrandit(self):
        # inutile pour certains widgets
-       if self.height() < 40 :
-          self.setMinimumHeight(50)
-          self.resize(self.width(),200)
+   #    if self.height() < 40 :
+   #       self.setMinimumHeight(50)
+   #       self.resize(self.width(),200)
 
    #def mousePressEvent(self, event):
      #print 'mousePressEvent'
@@ -132,30 +142,31 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
         else :
            if mc.min == mc.max:
                commentaire=tr("Entrez ")+str(mc.min)+" "+tr(d_aides[type])+'\n'
+           elif mc.max == float('inf') :
+               commentaire=tr("Entrez une liste de ") + tr(d_aides[type])+'\n'
            else :
                commentaire=tr("Entrez entre ")+"\n"+str(mc.min)+(" et  ")+str(mc.max) +" " +tr(d_aides[type])+'\n'
         aideval=self.node.item.aide()
         commentaire=commentaire +  tr(aideval)
-        self.monCommentaireLabel.setText(str(commentaire))
         return str(commentaire)
 
 
    def setSuggestion(self):
-      if self.monSimpDef.get_sug() != None and self.monSimpDef.get_sug() != "":
-         suggere=str('<html><head/><body><p><span style=" font-size:8pt;">suggestion : ')+str(self.monSimpDef.get_sug())+"</span></p></body></html>"
+      if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "":
+         suggere=str('<html><head/><body><p><span style=" font-size:8pt;">suggestion : ')+str(self.monSimpDef.getSug())+"</span></p></body></html>"
          if hasattr(self,'lineEditVal'): self.lineEditVal.setToolTip(suggere)
 
    def setCommentaire(self):
       c  = self.debutToolTip
       #if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide()
       self.aide=c
-      if self.objSimp.get_fr() != None and self.objSimp.get_fr() != "":
-          #c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr().decode('latin-1','replace')+"</p></body></html>"
-          c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr()
-          #c2 = '<html><head/><body><p>'+c+self.objSimp.get_fr()+"</p></body></html>"
+      if self.objSimp.getFr() != None and self.objSimp.getFr() != "":
+          #c2 = '<html><head/><body><p>'+c+self.objSimp.getFr().decode('latin-1','replace')+"</p></body></html>"
+          c2 = '<html><head/><body><p>'+c+self.objSimp.getFr()
+          #c2 = '<html><head/><body><p>'+c+self.objSimp.getFr()+"</p></body></html>"
           self.label.setToolTip(c2)
-          #self.aide=self.objSimp.get_fr().decode('latin-1','ignore')+" "+c
-          self.aide=self.objSimp.get_fr()+" "+c
+          #self.aide=self.objSimp.getFr().decode('latin-1','ignore')+" "+c
+          self.aide=self.objSimp.getFr()+" "+c
       else :
          c+=self.finCommentaire()
          if c != "" and c != None :
@@ -201,8 +212,8 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
 
    def setZoneInfo(self):
       # info=str(self.nom)+'  '
-      # if self.monSimpDef.get_fr() != None and self.monSimpDef.get_fr() != "": info+=self.monSimpDef.get_sug() +" "
-      # if self.monSimpDef.get_sug() != None and self.monSimpDef.get_sug() != "": info+="Valeur suggeree : "self.monSimpDef.get_sug()
+      # if self.monSimpDef.getFr() != None and self.monSimpDef.getFr() != "": info+=self.monSimpDef.getSug() +" "
+      # if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": info+="Valeur suggeree : "self.monSimpDef.getSug()
       pass
 
    def reaffiche(self):
@@ -219,7 +230,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
          #nodeAVoir.fenetre.setFocus()
          # return  # on est bien postionne
 
-         if self.objSimp.isvalid() and hasattr(self, 'AAfficher'):
+         if self.objSimp.isValid() and hasattr(self, 'AAfficher'):
             nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp)
             try :
                index=self.editor.fenetreCentraleAffichee.listeAffichageWidget.index(nodeAVoir.fenetre.AAfficher)
@@ -233,7 +244,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
             except :
                pass
       else :
-         if self.objSimp.isvalid() and hasattr(self, 'AAfficher'):
+         if self.objSimp.isValid() and hasattr(self, 'AAfficher'):
             try :
                self.setValeursApresBouton()
             except :
@@ -253,25 +264,16 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
    #   QWidget.enterEvent(self,event)
 
    def traiteClicSurLabel(self,texte):
-       aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1')
-       self.editor.affiche_commentaire(aide)
+       #aide=self.aide.encode('latin-1', 'ignore').decode('latin-1')+"\n"+self.aideALaSaisie().encode('latin-1', 'ignore').decode('latin-1')
+       try :
+          aide=self.aide+"\n"+self.aideALaSaisie()
+       except :
+          aide=self.aideALaSaisie()
+       self.editor.afficheCommentaire(aide)
 
    def formate(self,t):
-       if t.find('_')==0 :
-          newText=t[0:19]+'\n'+t[19:]
-       else:
-          listeNom=t.split('_')
-          newTexte=""
-          ligne=""
-          for n in listeNom:
-            if len(ligne)+len(n) < 25 : 
-               newTexte=newTexte+"_"+n
-               ligne+="_"+n
-            else :
-               newTexte=newTexte+"\n_"+n
-               ligne=""
-          #newTexte=t[0:t.rfind('_')]+'\n'+ t[t.rfind('_'):]
-          newText=newTexte[1:]
+       l=len(t)//2
+       newText=t[0:l]+'-\n'+t[l:]
        return newText
       
 
index 8ba9f3c5a59c20d559250a57b76cb11fde8fd754..13b31b09a9d7be29acb054295725b40dcfe195b6 100644 (file)
@@ -44,7 +44,7 @@ class FacultatifOuOptionnel(object):
   def setReglesEtAide(self):
       listeRegles=()
       try :
-         listeRegles     = self.node.item.get_regles()
+         listeRegles     = self.node.item.getRegles()
       except :
          pass
       if hasattr(self,"RBRegle"):
@@ -63,18 +63,18 @@ class FacultatifOuOptionnel(object):
       if isinstance(self,MonWidgetCommande) and self.editor.code =="MAP":
          self.cle_doc = self.chercheDocMAP()
       else :
-         self.cle_doc = self.node.item.get_docu()
+         self.cle_doc = self.node.item.getDocu()
       if self.cle_doc == None  : self.RBInfo.close()
       else : self.RBInfo.clicked.connect (self.viewDoc)
 
 
   def chercheDocMAP(self):
       try :
-        clef=self.editor.CONFIGURATION.adresse+"/"
+        clef=self.editor.maConfiguration.adresse+"/"
       except :
         return None
-      for k in self.editor.readercata.cata[0].JdC.dict_groupes:
-          if self.obj.nom in self.editor.readercata.cata[0].JdC.dict_groupes[k]:
+      for k in self.editor.readercata.cata.JdC.dict_groupes:
+          if self.obj.nom in self.editor.readercata.cata.JdC.dict_groupes[k]:
              clef+=k
              break
       clef+="/"+ self.obj.nom[0:-5].lower()+"/spec_"+self.obj.nom[0:-5].lower()+".html"
@@ -90,13 +90,13 @@ class FacultatifOuOptionnel(object):
           QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee "))
 
   def viewRegles(self):
-      self.node.AppelleBuildLBRegles()
+      self.node.appellebuildLBRegles()
 
 
   def setIconePoubelle(self):
       if not(hasattr(self,"RBPoubelle")):return
 
-      if self.node.item.object.isoblig()  and not( hasattr(self.node.item.object,'isDeletable') ): 
+      if self.node.item.object.isOblig()  and not( hasattr(self.node.item.object,'isDeletable') ): 
          icon=QIcon(self.repIcon+"/deleteRondVide.png")
          self.RBPoubelle.setIcon(icon)
          return
@@ -187,14 +187,10 @@ class FacultatifOuOptionnel(object):
       self.node.delete()
 
   def setValide(self):
-      #print " c est le moment de gerer le passage au suivant"
       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")
-      self.RBValide.setIcon(icon)
+      couleur=self.node.item.getIconName()
+      monIcone = QIcon(self.repIcon+"/" + couleur + ".png")
+      self.RBValide.setIcon(monIcone)
 
   # il faut chercher la bonne fenetre
   def rendVisible(self):
@@ -227,7 +223,7 @@ class FacultatifOuOptionnel(object):
   def choixSaisi(self):
       fction=str(self.CBScripts.currentText())
       numero= self.dictCommandes[fction]
-      self.node.AppelleFonction(numero,nodeTraite=self.node)
+      self.node.appelleFonction(numero,nodeTraite=self.node)
       #self.reaffiche()
 
 class ContientIcones(object):
@@ -238,7 +234,14 @@ class ContientIcones(object):
        from .monViewTexte import ViewText
        try :
          if sys.platform[0:5]=="linux" :
-           cmd="xdg-open "+ str(fichier)
+           #cmd="xdg-open "+ str(fichier)
+           #changer pour marcher dans l'EDC
+           #cmd="gedit "+ str(fichier)
+           from os.path import splitext
+           fileName,extension = splitext(fichier)
+           if extension in  self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions:
+              cmd=self.parentQt.editor.appliEficas.maConfiguration.utilParExtensions[extension] + " " + str(fichier)
+           else:  cmd="xdg-open "+ str(fichier)
            os.system(cmd)
          else                         :
            os.startfile(str(fichier)) 
@@ -267,22 +270,22 @@ class ContientIcones(object):
       if len(mctype) > 2 and mctype[2] == "Sauvegarde":
           fichier = QFileDialog.getSaveFileName(self.appliEficas,
                               tr('Sauvegarder Fichier'),
-                              self.appliEficas.CONFIGURATION.savedir,
+                              self.appliEficas.maConfiguration.savedir,
                               filters)
       else:
-          print(filters)
+          #print(filters)
           fichier = QFileDialog.getOpenFileName(self.appliEficas,
                               tr('Ouvrir Fichier'),
-                              self.appliEficas.CONFIGURATION.savedir,
+                              self.appliEficas.maConfiguration.savedir,
                               filters)
 
       fichier=fichier[0]
       if not(fichier == ""):
          ulfile = os.path.abspath(six.text_type(fichier))
-         self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+         self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
          self.lineEditVal.setText(fichier)
-         self.editor.affiche_commentaire(tr("Fichier selectionne"))
-         self.LEValeurPressed()
+         self.editor.afficheCommentaire(tr("Fichier selectionne"))
+         self.LEvaleurPressed()
          if (QFileInfo(fichier).suffix() in listeSuffixe ):
              self.image=fichier
              if (not hasattr(self,"BSelectInFile")):
@@ -303,20 +306,16 @@ class ContientIcones(object):
 
   def BFichierOuRepertoirePressed(self):
       self.fileName=""
-      print (0)
       self.file_dialog=QFileDialog()
-      print (1)
       self.file_dialog.setFileMode(QFileDialog.Directory);
-      print (2)
       self.file_dialog.setFileMode(QFileDialog.Directory|QFileDialog.ExistingFiles)
-      print (3)
       self.file_dialog.setOption(QFileDialog.DontUseNativeDialog,True);
       self.file_dialog.setWindowTitle('Choose File or Directory')
       self.explore(self.file_dialog)
       self.file_dialog.exec_()
       if self.fileName == "" : return
       self.lineEditVal.setText(self.fileName)
-      self.LEValeurPressed()
+      self.LEvaleurPressed()
      
 
   def explore(self,widget):
@@ -347,14 +346,14 @@ class ContientIcones(object):
 
   def BRepertoirePressed(self):
       directory = QFileDialog.getExistingDirectory(self.appliEficas,
-            directory = self.appliEficas.CONFIGURATION.savedir,
+            directory = self.appliEficas.maConfiguration.savedir,
             options = QFileDialog.ShowDirsOnly)
 
       if not (directory == "") :
          absdir = os.path.abspath(six.text_type(directory))
-         self.appliEficas.CONFIGURATION.savedir = os.path.dirname(absdir)
+         self.appliEficas.maConfiguration.savedir = os.path.dirname(absdir)
          self.lineEditVal.setText(directory)
-         self.LEValeurPressed()
+         self.LEvaleurPressed()
 
   def BSelectInFilePressed(self):
       from monSelectImage import MonSelectImage
@@ -363,10 +362,10 @@ class ContientIcones(object):
           
 
   def BSalomePressed(self):
-        self.editor.affiche_commentaire("")
+        self.editor.afficheCommentaire("")
         selection=[]
         commentaire=""
-        genea=self.node.item.get_genealogie()
+        genea=self.node.item.getGenealogie()
         kwType = self.node.item.get_definition().type[0]
         for e in genea:
             if "GROUP_NO" in e: kwType = "GROUP_NO"
@@ -397,10 +396,10 @@ class ContientIcones(object):
            selection, commentaire = self.appliEficas.selectEntryFromSalome(kwType,editor=self.editor)
 
         if commentaire !="" :
-            self.editor.affiche_infos(tr(str(commentaire)))
+            self.editor.afficheInfos(tr(str(commentaire)))
         if selection == [] : return
 
-        min,max=self.node.item.GetMinMax()
+        min,max=self.node.item.getMinMax()
         if max > 1 : 
            self.ajoutNValeur(selection)
            return
@@ -409,7 +408,7 @@ class ContientIcones(object):
         for geomElt in selection: monTexte=geomElt+","
         monTexte= monTexte[0:-1]
         self.lineEditVal.setText(str(monTexte))
-        self.LEValeurPressed()
+        self.LEvaleurPressed()
 
   def BView2DPressed(self):
         try :
@@ -422,10 +421,10 @@ class ContientIcones(object):
         if valeur :
            ok, msgError = self.appliEficas.displayShape(valeur)
            if not ok:
-              self.editor.affiche_infos(msgError,Qt.red)
+              self.editor.afficheInfos(msgError,Qt.red)
 
   def BParametresPressed(self):
-        liste=self.node.item.get_liste_param_possible()
+        liste=self.node.item.getListeParamPossible()
         from monListeParamPanel import MonListeParamPanel
         MonListeParamPanel(liste=liste,parent=self).show()
 
index 474b86f06aaa08dda448d3ba18feb7f9d0c8769c..755b00e711ad8ace046459b50372cbdff0bc46dc 100644 (file)
@@ -33,7 +33,7 @@ import traceback
 import six
 from six.moves import range
 from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog
-from PyQt5.QtCore    import QEvent, Qt
+from PyQt5.QtCore    import QEvent, Qt, QTimer
 from PyQt5.QtGui     import QIcon, QPalette
 
 from Extensions.i18n import tr
@@ -53,42 +53,57 @@ class LECustom(QLineEdit):
         self.num=i
         self.dansUnTuple=False
         self.numDsLaListe=-1
+        self.parentTuple=None
+        self.valeur=None
 
  def focusInEvent(self,event):
-     #print "dans focusInEvent de LECustom"
+     #print ("dans focusInEvent de LECustom")
+     self.parentQt.aEuLeFocus=True
+     self.aEuLeFocus=True
      self.parentQt.LineEditEnCours=self
-     self.parentQt.NumLineEditEnCours=self.num
+     self.parentQt.numLineEditEnCours=self.num
      self.parentQt.textSelected=self.text()
      self.setStyleSheet("border: 2px solid gray")
      QLineEdit.focusInEvent(self,event)
 
  def focusOutEvent(self,event):
+     #print (self.aEuLeFocus)
      self.setStyleSheet("border: 0px")
      if self.dansUnTuple    : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
      elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
      else                   : self.setStyleSheet("background:rgb(235,235,235)")
+     if self.aEuLeFocus:
+       self.aEuLeFocus=False
+       self.litValeur()
+       if self.dansUnTuple : self.parentTuple.getValeur()
+     QLineEdit.focusOutEvent(self,event)
        
     
-     
-     from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase
+ def litValeur(self):
+     #print ("dans litValeur de LECustom")
+     self.aEuLeFocus=False
+     val=str(self.text())
+     if str(val)=="" or val==None :
+        self.valeur=None
+        return
      try :
-       #if isinstance (self.parentQt, MonWidgetPlusieursBase) and not self.parentQt.inFocusOutEvent : 
-       #  self.parentQt.inFocusOutEvent=True
-       #  self.parentQt.changeValeur(changeDePlace=True,oblige=False)
-       #  self.parentQt.inFocusOutEvent=False
-
-       #if isinstance(self,LECustomTuple)  and  not self.tupleCustomParent.inFocusOutEvent:
-       #  self.tupleCustomParent.inFocusOutEvent=True
-       #  self.tupleCustomParent.valueChange()
-       #  self.tupleCustomParent.inFocusOutEvent=False
-       QLineEdit.focusOutEvent(self,event)
-     except : pass
-
+       valeur=eval(val,{})
+     except :
+       try :
+          d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+          valeur=eval(val,d)
+       except :
+          valeur=val
+     self.valeur=valeur
+     #print ('self.valeur', self.valeur)
+     
+     
  def clean(self):
      self.setText("")
 
  def getValeur(self):
-     return self.text()
+     #return self.text()
+     return self.valeur
 
  def setValeur(self,valeur):
      self.setText(valeur)
@@ -127,18 +142,6 @@ class GereListe(object):
    def __init__(self):
        self.connecterSignaux()
 
-   def connecterSignauxQT4(self):
-       if hasattr(self,'RBHaut'):
-          self.connect(self.RBHaut,SIGNAL("clicked()"),self.hautPushed)
-          self.connect(self.RBBas,SIGNAL("clicked()"),self.basPushed)
-          self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed)
-          self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed)
-          self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed)
-       if hasattr(self,'PBAlpha'):
-          self.connect(self.PBAlpha,SIGNAL("clicked()"),self.alphaPushed)
-          self.connect(self.PBCata,SIGNAL("clicked()"),self.cataPushed)
-          self.connect(self.PBFind,SIGNAL("clicked()"),self.findPushed)
-          self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEFiltreReturnPressed)
 
    def connecterSignaux(self):
        if hasattr(self,'RBHaut'):
@@ -152,6 +155,8 @@ class GereListe(object):
           self.PBAlpha.clicked.connect(self.alphaPushed)
           self.PBFind.clicked.connect(self.findPushed)
           self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+       if hasattr(self, 'PBValideFeuille'):
+          self.PBValideFeuille.clicked.connect(self.changeValeur)
 
    def filtreListe(self):
        l=[]
@@ -181,17 +186,17 @@ class GereListe(object):
        self.prepareListeResultat()
 
    def hautPushed(self):
-       if self.NumLineEditEnCours == 1 : return
-       else : numEchange=self.NumLineEditEnCours-1
-       self.echange(self.NumLineEditEnCours,numEchange)
+       if self.numLineEditEnCours == 1 : return
+       else : numEchange=self.numLineEditEnCours-1
+       self.echange(self.numLineEditEnCours,numEchange)
        self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
 
    def basPushed(self):
-       if self.NumLineEditEnCours == self.indexDernierLabel : return
-       else : numEchange=self.NumLineEditEnCours+1
-       self.echange(self.NumLineEditEnCours,numEchange)
+       if self.numLineEditEnCours == self.indexDernierLabel : return
+       else : numEchange=self.numLineEditEnCours+1
+       self.echange(self.numLineEditEnCours,numEchange)
        self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
@@ -208,20 +213,20 @@ class GereListe(object):
        courant.setText(courant2.text())
        courant2.setText(valeurAGarder)
        self.changeValeur(changeDePlace=False)
-       self.NumLineEditEnCours=num2
+       self.numLineEditEnCours=num2
        self.LineEditEnCours=courant2
        self.LineEditEnCours.setFocus(True)
 
    def moinsPushed(self):
        # on supprime le dernier
-       if self.NumLineEditEnCours == 0 : return
+       if self.numLineEditEnCours == 0 : return
        if self.indexDernierLabel == 0 : return
-       if self.NumLineEditEnCours==self.indexDernierLabel : 
+       if self.numLineEditEnCours==self.indexDernierLabel : 
           nomLineEdit=self.nomLine+str(self.indexDernierLabel)
           courant=getattr(self,nomLineEdit)
           courant.clean()
        else :
-         for i in range (self.NumLineEditEnCours, self.indexDernierLabel):
+         for i in range (self.numLineEditEnCours, self.indexDernierLabel):
              aRemonter=i+1
              nomLineEdit=self.nomLine+str(aRemonter)
              courant=getattr(self,nomLineEdit)
@@ -239,26 +244,31 @@ class GereListe(object):
    def plusPushed(self):
        if self.indexDernierLabel == self.monSimpDef.max:
           if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
-          else : self.editor.affiche_infos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+          else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
           return
        self.ajoutLineEdit()
        self.descendLesLignes()
+       self.chercheLigneVide()
+       QTimer.singleShot(1, self.rendVisibleLigne)
 
    def chercheLigneVide(self):
        for i in range(self.indexDernierLabel) :
           nomLineEdit=self.nomLine+str(i+1)
           courant=getattr(self,nomLineEdit)
           valeur=courant.getValeur()
-          if valeur=="" : courant.setFocus(7);return
+          if valeur=="" : 
+             courant.setFocus(True)
+             self.estVisible=courant
+             return
 
 
    def descendLesLignes(self):
-       if self.NumLineEditEnCours==self.indexDernierLabel : return
-       nomLineEdit=self.nomLine+str(self.NumLineEditEnCours+1)
+       if self.numLineEditEnCours==self.indexDernierLabel : return
+       nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
        courant=getattr(self,nomLineEdit)
        valeurADescendre=courant.getValeur()
        courant.clean()
-       for i in range (self.NumLineEditEnCours+1, self.indexDernierLabel):
+       for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
              aDescendre=i+1
              nomLineEdit=self.nomLine+str(aDescendre)
              courant=getattr(self,nomLineEdit)
@@ -270,7 +280,7 @@ class GereListe(object):
 
    def voisListePushed(self):
        texteValeurs=""
-       for v in self.node.item.GetListeValeurs():
+       for v in self.node.item.getListeValeurs():
           texteValeurs+=str(v)+", "
        entete="Valeurs pour "+self.nom
        f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
@@ -278,7 +288,7 @@ class GereListe(object):
 
 
    def selectInFile(self):
-       init=str( self.editor.CONFIGURATION.savedir)
+       init=str( self.editor.maConfiguration.savedir)
        fn = QFileDialog.getOpenFileName(self.node.appliEficas,
                                          tr("Fichier de donnees"),
                                          init,
@@ -287,7 +297,7 @@ class GereListe(object):
        if fn == None : return
        if fn == "" : return
        ulfile = os.path.abspath(six.text_type(fn))
-       self.editor.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+       self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
 
        from .monSelectVal import MonSelectVal
        MonSelectVal(file=fn,parent=self).show()
diff --git a/InterfaceQT4/gereListeAvril11.py b/InterfaceQT4/gereListeAvril11.py
new file mode 100644 (file)
index 0000000..44e191e
--- /dev/null
@@ -0,0 +1,349 @@
+# -*- 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
+#
+# Modules Python
+
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import range
+   from builtins import object
+except : pass
+
+import types,os
+import traceback
+
+
+import six
+from six.moves import range
+from PyQt5.QtWidgets import QLineEdit, QLabel, QFileDialog, QWidget
+from PyQt5.QtCore    import QEvent, Qt, QTimer
+from PyQt5.QtGui     import QIcon, QPalette
+
+from Extensions.i18n import tr
+from InterfaceQT4.monViewTexte   import ViewText
+
+
+# ---------------------- #
+class LECustom(QLineEdit):
+# ---------------------- #
+ def __init__(self,parent,parentQt,i):
+        """
+        Constructor
+        """
+        QLineEdit.__init__(self,parent)
+        
+        self.valeur=None
+        self.aEuLeFocus=False
+        self.parentQt=parentQt
+        self.parent=parent
+        self.num=i
+        self.dansUnTuple=False
+        self.numDsLaListe=-1
+        self.returnPressed.connect(self.litValeur)
+
+ def focusInEvent(self,event):
+     #print ("dans focusInEvent de LECustom",self.parentQt)
+     print ("dans focusInEvent de LECustom",self.num,self.numDsLaListe)
+     self.parentQt.aEuLeFocus=True
+     self.aEuLeFocus=True
+     self.parentQt.LineEditEnCours=self
+     self.parentQt.numLineEditEnCours=self.num
+     self.parentQt.textSelected=self.text()
+     self.setStyleSheet("border: 2px solid gray")
+     QLineEdit.focusInEvent(self,event)
+
+ def focusOutEvent(self,event):
+     #print ("dans focusOutEvent de LECustom",self.num,self.numDsLaListe, self.aEuLeFocus)
+     self.setStyleSheet("border: 0px")
+     if self.dansUnTuple    : self.setStyleSheet("background:rgb(235,235,235); border: 0px;")
+     elif self.num % 2 == 1 : self.setStyleSheet("background:rgb(210,210,210)")
+     else                   : self.setStyleSheet("background:rgb(235,235,235)")
+     
+     if self.aEuLeFocus:
+       self.aEuLeFocus=False
+       self.litValeur()
+     QLineEdit.focusOutEvent(self,event)
+
+ def litValeur(self):
+     self.aEuLeFocus=False
+     val=str(self.text())
+     if str(val)=="" or val==None : 
+        self.valeur=None 
+        return
+     try :
+       valeur=eval(val,{})
+     except :
+       try :
+          d=self.parentQt.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+          valeur=eval(val,d)
+       except :
+          valeur=val
+
+     self.valeur=valeur
+
+ def clean(self):
+     self.setText("")
+
+ def getValeur(self):
+     return self.text()
+
+ def setValeur(self,valeur):
+     self.setText(valeur)
+     self.valeur=valeur
+
+ #def leaveEvent(self,event):
+ #   ne sert a rien. quand on modifie la valeur on prend le focus
+
+    
+
+# --------------------------- #
+class LECustomTuple(LECustom):
+# --------------------------- #
+ def __init__(self,parent):
+   #  index sera mis a jour par TupleCustom
+   parentQt=parent.parent().parent().parent()
+   LECustom. __init__(self,parent,parentQt,0)
+   #print (dir(self))
+
+# ---------------------------- #
+class MonLabelListeClic(QLabel):
+# ---------------------------- #
+     def __init__(self,parent):
+        QLabel.__init__(self,parent)
+        self.parent=parent
+
+     def event(self,event) :
+         if event.type() == QEvent.MouseButtonRelease:
+            self.texte=self.text()
+            self.parent.traiteClicSurLabelListe(self.texte)
+         return QLabel.event(self,event)
+
+
+
+
+# ------------- #
+class GereListe(object):
+# ------------- #
+
+   def __init__(self):
+       self.aEuLeFocus=False
+       self.connecterSignaux()
+
+
+   def leaveEvent(self,event):
+       if self.aEuLeFocus : 
+          print ('appel de changeValeur')
+          self.changeValeur()
+          self.aEuLeFocus=False
+       QWidget.leaveEvent(self,event)
+
+   def connecterSignaux(self):
+       if hasattr(self,'RBHaut'):
+          self.RBHaut.clicked.connect(self.hautPushed)
+          self.RBBas.clicked.connect(self.basPushed)
+          self.RBMoins.clicked.connect(self.moinsPushed)
+          self.RBPlus.clicked.connect(self.plusPushed)
+          self.RBVoisListe.clicked.connect(self.voisListePushed)
+       if hasattr(self,'PBAlpha'):
+          self.PBCata.clicked.connect(self.cataPushed)
+          self.PBAlpha.clicked.connect(self.alphaPushed)
+          self.PBFind.clicked.connect(self.findPushed)
+          self.LEFiltre.returnPressed.connect(self.LEFiltreReturnPressed)
+
+   def filtreListe(self):
+       l=[]
+       if self.filtre != "" :
+          for i in self.listeAAfficher :
+              if i.find(self.filtre) == 0 :l.append(i)
+          self.listeAAfficher=l
+       if self.alpha : self.listeAAfficher.sort()
+      
+   def LEFiltreReturnPressed(self):
+       self.filtre= self.LEFiltre.text()
+       self.prepareListeResultatFiltre()
+
+   def findPushed(self):
+       self.filtre= self.LEFiltre.text()
+       self.prepareListeResultatFiltre()
+
+   def alphaPushed(self):
+       #print "alphaPushed" ,self.alpha
+       if self.alpha == 1 : return
+       self.alpha=1
+       self.prepareListeResultat()
+
+   def cataPushed(self):
+       if self.alpha == 0 : return
+       self.alpha=0
+       self.prepareListeResultat()
+
+   def hautPushed(self):
+       if self.numLineEditEnCours == 1 : return
+       else : numEchange=self.numLineEditEnCours-1
+       self.echange(self.numLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
+       self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+
+   def basPushed(self):
+       if self.numLineEditEnCours == self.indexDernierLabel : return
+       else : numEchange=self.numLineEditEnCours+1
+       self.echange(self.numLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
+       self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+   def echange(self,num1,num2):
+       # on donne le focus au a celui ou on a bouge
+       # par convention le 2
+       nomLineEdit=self.nomLine+str(num1)
+       #print nomLineEdit
+       courant=getattr(self,nomLineEdit)
+       valeurAGarder=courant.text()
+       nomLineEdit2=self.nomLine+str(num2)
+       #print nomLineEdit2
+       courant2=getattr(self,nomLineEdit2)
+       courant.setText(courant2.text())
+       courant2.setText(valeurAGarder)
+       self.changeValeur(changeDePlace=False)
+       self.numLineEditEnCours=num2
+       self.LineEditEnCours=courant2
+       self.LineEditEnCours.setFocus(True)
+
+   def moinsPushed(self):
+       # on supprime le dernier
+       if self.numLineEditEnCours == 0 : return
+       if self.indexDernierLabel == 0 : return
+       if self.numLineEditEnCours==self.indexDernierLabel : 
+          nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+          courant=getattr(self,nomLineEdit)
+          courant.clean()
+       else :
+         for i in range (self.numLineEditEnCours, self.indexDernierLabel):
+             aRemonter=i+1
+             nomLineEdit=self.nomLine+str(aRemonter)
+             courant=getattr(self,nomLineEdit)
+             valeurARemonter=courant.getValeur()
+             nomLineEdit=self.nomLine+str(i)
+             courant=getattr(self,nomLineEdit)
+             if valeurARemonter != None : courant.setValeur(valeurARemonter)
+             else : courant.clean()
+         nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+         courant=getattr(self,nomLineEdit)
+         courant.clean()
+       self.changeValeur(changeDePlace=False,oblige=True)
+       self.setValide()
+
+   def plusPushed(self):
+       if self.indexDernierLabel == self.monSimpDef.max:
+          if len(self.listeValeursCourantes) < self.monSimpDef.max : self.chercheLigneVide()
+          else : self.editor.afficheInfos('nb max de valeurs : '+str(self.monSimpDef.max)+' atteint',Qt.red)
+          return
+       self.ajoutLineEdit()
+       self.descendLesLignes()
+       self.chercheLigneVide()
+       QTimer.singleShot(1, self.rendVisibleLigne)
+
+   def chercheLigneVide(self):
+       for i in range(self.indexDernierLabel) :
+          nomLineEdit=self.nomLine+str(i+1)
+          courant=getattr(self,nomLineEdit)
+          valeur=courant.getValeur()
+          if valeur=="" : 
+             courant.setFocus(True)
+             self.estVisible=courant
+             return
+
+
+   def descendLesLignes(self):
+       if self.numLineEditEnCours==self.indexDernierLabel : return
+       nomLineEdit=self.nomLine+str(self.numLineEditEnCours+1)
+       courant=getattr(self,nomLineEdit)
+       valeurADescendre=courant.getValeur()
+       courant.clean()
+       for i in range (self.numLineEditEnCours+1, self.indexDernierLabel):
+             aDescendre=i+1
+             nomLineEdit=self.nomLine+str(aDescendre)
+             courant=getattr(self,nomLineEdit)
+             valeurAGarder=courant.getValeur()
+             courant.setValeur(valeurADescendre)
+             valeurADescendre=valeurAGarder
+       self.changeValeur(changeDePlace=False)
+       if hasattr (self, 'LineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
+
+   def voisListePushed(self):
+       texteValeurs=""
+       for v in self.node.item.getListeValeurs():
+          texteValeurs+=str(v)+", "
+       entete="Valeurs pour "+self.nom
+       f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
+       f.show()
+
+
+   def selectInFile(self):
+       init=str( self.editor.maConfiguration.savedir)
+       fn = QFileDialog.getOpenFileName(self.node.appliEficas,
+                                         tr("Fichier de donnees"),
+                                         init,
+                                         tr('Tous les  Fichiers (*)',))
+       fn=fn[0]
+       if fn == None : return
+       if fn == "" : return
+       ulfile = os.path.abspath(six.text_type(fn))
+       self.editor.maConfiguration.savedir=os.path.split(ulfile)[0]
+
+       from .monSelectVal import MonSelectVal
+       MonSelectVal(file=fn,parent=self).show()
+
+   def noircirResultatFiltre(self):
+      filtre=str(self.LEFiltre.text())
+      for cb in self.listeCbRouge:
+          palette = QPalette(Qt.red)
+         palette.setColor(QPalette.WindowText,Qt.black)
+         cb.setPalette(palette)
+          t=cb.text()
+          cb.setText(t)
+      self.LEFiltre.setText("")
+      self.listeCbRouge = []
+
+  
+# ----------- #
+class GerePlie(object):
+# ----------- #
+
+   def gereIconePlier(self):
+      if not(hasattr(self,'BFermeListe')) : return
+      self.editor.listeDesListesOuvertes.add(self.node.item)
+      repIcon=self.node.editor.appliEficas.repIcon
+      if not (self.editor.afficheListesPliees):
+         fichier=os.path.join(repIcon, 'empty.png')
+         icon = QIcon(fichier)
+         self.BFermeListe.setIcon(icon)
+         return
+      fichier=os.path.join(repIcon, 'minusnode.png')
+      icon = QIcon(fichier)
+      self.BFermeListe.setIcon(icon)
+      self.BFermeListe.clicked.connect( self.selectWidgetPlie)
+
+   def selectWidgetPlie(self):
+      self.editor.listeDesListesOuvertes.remove(self.node.item)
+      self.reaffichePourDeplier()
+
+        
+     
index 5e366ccb3f1cbf1b9d0eb3b8241ecdbc160831c7..e84486b95b99ed36ff0f610afac65751338289ad 100644 (file)
@@ -29,29 +29,29 @@ from Extensions.i18n import tr
 
 class GereRegles(object) :
 
-   def AppelleBuildLBRegles(self):
+   def appellebuildLBRegles(self):
        from .browser import JDCTree
        if isinstance(self,JDCTree):
-          self.AppelleBuildLBReglesForJdC()
+          self.appellebuildLBReglesForJdC()
        else :
-          self.AppelleBuildLBReglesForCommand()
-       self.BuildLBRegles(self.listeRegles,self.listeNomsEtapes)
-       self.AfficheRegles()
+          self.appellebuildLBReglesForCommand()
+       self.buildLBRegles(self.listeRegles,self.listeNomsEtapes)
+       self.afficheRegles()
        
-   def AppelleBuildLBReglesForCommand(self):
-       self.listeRegles     = self.item.get_regles()
-       self.listeNomsEtapes = self.item.get_mc_presents()
+   def appellebuildLBReglesForCommand(self):
+       self.listeRegles     = self.item.getRegles()
+       self.listeNomsEtapes = self.item.getMcPresents()
 
-   def AppelleBuildLBReglesForJdC(self):
-       self.listeRegles=self.item.get_regles()
-       self.listeNomsEtapes = self.item.get_l_noms_etapes()
+   def appellebuildLBReglesForJdC(self):
+       self.listeRegles=self.item.getRegles()
+       self.listeNomsEtapes = self.item.getLNomsEtapes()
 
 
-   def BuildLBRegles(self,listeRegles,listeNomsEtapes):
+   def buildLBRegles(self,listeRegles,listeNomsEtapes):
        self.liste=[]
        if len(listeRegles) > 0:
           for regle in listeRegles :
-             texteRegle=regle.gettext()
+             texteRegle=regle.getText()
              texteMauvais,test = regle.verif(listeNomsEtapes)
              for ligne in texteRegle.split("\n") :
                 if ligne == "" : continue
@@ -64,7 +64,7 @@ class GereRegles(object) :
        if self.liste==[] : self.liste.append(("pas de regle de construction pour ce jeu de commandes",Qt.black))
                
 
-   def AfficheRegles(self):
+   def afficheRegles(self):
       titre="Regles pour "+self.item.nom
       w = ViewRegles( self.editor,self.liste,titre  )
       w.exec_()
index c15da9d9fcd55df3b51b941b8fed7803cfa5f182..ec6336a06a4dc5f7eafa70107531f41e367d7104 100644 (file)
@@ -22,7 +22,7 @@
 
 __version = {
     'major': 8,
-    'minor': 4
+    'minor': 5
     }
 
 def getEficasVersion():
index 5c0a0cbd3727afbecb12a43ec574fb31c22855a3..55b66eec524f72b5dc1975e17fcd09baea749805 100644 (file)
@@ -21,7 +21,7 @@
 
 from __future__ import absolute_import
 from __future__ import print_function
-from PyQt5.QtWidgets import QWidget
+from PyQt5.QtWidgets import QWidget, QSpacerItem, QSizePolicy
 from PyQt5.QtCore import Qt
 
 from Extensions.i18n import tr
@@ -37,10 +37,10 @@ class Groupe(QWidget,FacultatifOuOptionnel):
   """
   """
   def __init__(self,node,editor,parentQt,definition,obj,niveau,commande=None):
+      #print ("groupe : ",self.node.item.nom," ",self.node.fenetre)
       QWidget.__init__(self,None)
       self.node=node
       self.node.fenetre=self
-      #print "groupe : ",self.node.item.nom," ",self.node.fenetre
       self.setupUi(self)
       self.editor=editor
       self.obj=obj
@@ -51,7 +51,7 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       self.listeFocus=[]
       self.appliEficas=self.editor.appliEficas
       self.repIcon=self.appliEficas.repIcon
-      self.jdc=self.node.item.get_jdc()
+      self.jdc=self.node.item.getJdc()
       self.setIconePoubelle()
       self.setIconesGenerales()
       self.setRun()
@@ -60,47 +60,60 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       self.afficheMots()
       self.listeMCAAjouter=[]
       self.dictMCVenantDesBlocs={}
-      if hasattr(self,'RBDeplie')  : self.RBDeplie.clicked.connect(self.Deplie)
-      if hasattr(self,'RBPlie')    : self.RBPlie.clicked.connect( self.Plie)
+      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)
      
   def donneFocus(self):
       for fenetre in self.listeFocus:
           if fenetre==None : return
-          if fenetre.node.item.isvalid() == 0 :
+          if fenetre.node.item.isValid() == 0 :
              fenetre.prendLeFocus=1
              fenetre.hide()
              fenetre.show()
       
 
   def afficheMots(self):
-      #print "ds afficheMots ",self.node.item.nom
+      #print ("ds afficheMots ",self.node.item.nom,self.node.plie)
       for node in self.node.children:
-           #if node.item.nom == "Background" :print "afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie,node.getPanelGroupe
-           #if node.item.nom == "BackgroundError" :print "afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie,node.getPanelGroupe
            # 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
+           #print ("widget pour ", node.item.nom, widget)
            self.listeFocus.append(node.fenetre)
       #print "fin pour " , self.node.item.nom
 
        
   def calculOptionnel(self):
-        self.liste_mc=[]
-        genea =self.obj.get_genealogie()
+        self.listeMc=[]
+        self.listeMcRegle=[]
+        self.dictToolTipMc={}
+        genea =self.obj.getGenealogie()
         # Attention : les mots clefs listes (+sieurs fact )
         # n ont pas toutes ces methodes
         try :
-           self.liste_mc=self.obj.get_liste_mc_ordonnee(genea,self.jdc.cata_ordonne_dico)
+        #if 1 :
+           self.listeMc     = self.obj.getListeMcOrdonnee(genea,self.jdc.cata_ordonne_dico)
+           listeNomsPresents=self.obj.dictMcPresents()
+           for regle in self.obj.getRegles():
+               (monToolTip,regleOk)=regle.verif(listeNomsPresents)
+               if regleOk : continue
+               for mc in regle.mcs :
+                   self.listeMcRegle.append(mc)
+                   self.dictToolTipMc[mc]=monToolTip
         except :
+           #print ('in except')
+           #print (self)
            return
         
   def afficheOptionnel(self):
-        liste=self.ajouteMCOptionnelDesBlocs()
+        liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
         self.monOptionnel=self.editor.widgetOptionnel
-        self.monOptionnel.afficheOptionnel(liste,self)
+        self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
         #self.monOptionnel.affiche(liste)
            
 
@@ -108,8 +121,9 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       self.dictMCVenantDesBlocs={}
       i=0
       self.calculOptionnel()
-      liste=self.liste_mc
-      for MC in self.liste_mc : self.dictMCVenantDesBlocs[MC]=self
+      liste=self.listeMc
+      liste_rouge=self.listeMcRegle
+      for MC in self.listeMc : self.dictMCVenantDesBlocs[MC]=self
       # ce cas est le cas machine tournant sr le plie
       try :
         while i < self.commandesLayout.count():
@@ -118,14 +132,15 @@ class Groupe(QWidget,FacultatifOuOptionnel):
           i=i+1
           if not(isinstance(widget,MonWidgetBloc)) : continue
           widget.calculOptionnel()
-          listeW=widget.ajouteMCOptionnelDesBlocs() 
+          listeW,listeW_rouge=widget.ajouteMCOptionnelDesBlocs() 
           for MC in widget.dictMCVenantDesBlocs:
               if MC in self.dictMCVenantDesBlocs: print ("Pb Sur les MC" )
               else : self.dictMCVenantDesBlocs[MC]=widget.dictMCVenantDesBlocs[MC]
           liste=liste+listeW
+          liste_rouge=liste_rouge+listeW_rouge
       except : 
         pass
-      return liste
+      return (liste,liste_rouge)
 
 
   def reaffiche(self,nodeAVoir=None):
@@ -137,21 +152,21 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       #on ajoute et on enleve
       listeNode=[]
       for name in listeMC :
-          nodeAEnlever=self.node.append_child(name)
+          nodeAEnlever=self.node.appendChild(name)
           if nodeAEnlever.item.isMCList(): 
              nodeAEnlever=nodeAEnlever.children[-1]
           listeNode.append(nodeAEnlever)
       self.afficheOptionnel()
-      self.monOptionnel.affiche(self.liste_mc)
+      self.monOptionnel.affiche(self.listeMc)
       if len(listeNode) == 0 : return
       if len(listeNode) == 1 : 
          listeNode[0].delete()
-         self.editor.affiche_infos("")
+         self.editor.afficheInfos("")
          return
       for noeud in listeNode:
-          noeud.treeParent.item.suppitem(noeud.item)
-      noeud.treeParent.build_children()
-      self.editor.affiche_infos("")
+          noeud.treeParent.item.suppItem(noeud.item)
+      noeud.treeParent.buildChildren()
+      self.editor.afficheInfos("")
 
   def ajoutMC(self,texteListeNom):
       listeNom=texteListeNom.split("+")[1:]
@@ -159,134 +174,31 @@ class Groupe(QWidget,FacultatifOuOptionnel):
       for nom in listeNom:
         if nom not in self.dictMCVenantDesBlocs:
            #print "bizarre, bizarre"
-           self.editor.init_modif()
-           nouveau=self.node.append_child(nom)
+           self.editor.initModif()
+           nouveau=self.node.appendChild(nom)
         else :
-           self.editor.init_modif()
+           self.editor.initModif()
            widget=self.dictMCVenantDesBlocs[nom]
-           nouveau=widget.node.append_child(nom)
+           nouveau=widget.node.appendChild(nom)
         if firstNode==None : firstNode=nouveau 
         if nouveau == None or nouveau == 0  : 
-           self.editor.affiche_infos(tr('insertion impossible a cet endroit pour '+nom),Qt.red)
-      self.reaffiche(firstNode)
-      if firstNode!=None and firstNode !=0 and firstNode.item!=None :
-        firstNode.select()
+           self.editor.afficheInfos(tr('insertion impossible a cet endroit pour '+nom),Qt.red)
+      try :
+       self.reaffiche(firstNode)
+       if firstNode!=None and firstNode !=0 and firstNode.item!=None : firstNode.select()
+      except :
+       pass
 
 
-  def Plie(self):
+  def setPlie(self):
       self.node.setPlie()
-      if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-         #if  (len(self.node.item.get_genealogie())==2):
-             index=self.maCommande.commandesLayout.indexOf(self)
-             self.maCommande.reafficheSeulement(self,index)
-             return
-         #else :
-         #  self.reaffiche(self.node)
-         #return
-      #print ('je reaffiche dans Plie')
       self.reaffiche(self.node) 
 
-  def Deplie(self):
+  def setDeplie(self):
+      #print ('je passe ds setDeplie de groupe')
       self.node.setDeplie()
-      if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-         #if  (len(self.node.item.get_genealogie())==2):
-             index=self.parentQt.commandesLayout.indexOf(self)
-             self.maCommande.reafficheSeulement(self,index)
-             return
-         #else :
-         #  self.reaffiche(self.node)
-         #return
-      #print ('je reaffiche dans Plie')
       self.reaffiche(self.node) 
     
-    
-  #def Plie(self):
-      #print ('Deplie', self)
-      #print (self.obj.nom)
-      #print (self.node.setPlie)
-      #print (self.parentQt)
-      #print (self)
-   #   self.node.setPlie()
-      #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-      #   itemAtraiter = self.node.item
-      #   nodeAtraiter=self.node
-         #while (len(itemAtraiter.get_genealogie())  > 2 ): 
-         #      itemAtraiter=itemAtraiter.parent
-         #      nodeAtraiter=nodeAtraiter.vraiParent
-         #ancien=nodeAtraiter.fenetre
-         #panneau = nodeAtraiter.getPanelGroupe(self,self.maCommande,insertIn=False)
-         #print (itemAtraiter,nodeAtraiter)
-         #self.parentQt.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-         #nodeAtraiter.vraiParent.fenetre.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-         #return
-   #   if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-   #      if  (len(self.node.item.get_genealogie())==2):
-             #print (self)
-             #print (self.obj.nom)
-             #print (self.node.item.getlabeltext())
-             #print (self.parentQt)
-             #print (self.editor.fenetreCentraleAffichee)
-             #print (self.maCommande)
-   #          index=self.parentQt.commandesLayout.indexOf(self)
-             #print (index)
-   #          self.maCommande.reafficheSeulement(self,index)
-             #self.disconnect()
-             #for c in self.children(): 
-             #  print (c)
-             #  try :
-             #    c.setParent(None)
-             #    c.deleteLater()
-             # c.close()
-             #   c.disconnect()
-             #  except :
-             #    print('poum')
-             #panneau = self.node.getPanelGroupe(self.parentQt,self.maCommande,insertIn=False)
-      #       print (self.parentQt)
-      #       print (self)
-             #self.parentQt.commandesLayout.replaceWidget(self,panneau,Qt.FindDirectChildrenOnly)
-      #       self.parentQt.setUpdatesEnabled(True)
-      #       print (dir(self.parentQt.commandesLayout))
-             #self.parentQt.commandesLayout.updateGeometry()
-   #      else :
-   #        self.reaffiche(self.node)
-   #      return
-      #print ('je reaffiche dans Plie')
-   #   self.reaffiche(self.node) 
-#
-#  def Deplie(self):
-#      print ('Deplie', self)
-#      print (self.obj.nom)
-#      print (self.node.item.GetLabelText())
-#      self.node.setDeplie()
-#      #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") and (len(self.node.item.get_genealogie())==2):
-#      #print (self.node.vraiParent.children)
-#      #if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-#      #   itemAtraiter = self.node.item
-#      #   nodeAtraiter=self.node
-#      #   while (len(itemAtraiter.get_genealogie())  > 2 ): 
-#      #         itemAtraiter=itemAtraiter.parent
-#      #         nodeAtraiter=nodeAtraiter.vraiParent
-#      #   ancien=nodeAtraiter.fenetre
-#      #   panneau = nodeAtraiter.getPanelGroupe(self,self.maCommande,insertIn=False)
-#         #print (itemAtraiter,nodeAtraiter)
-#         #self.parentQt.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-#      #   nodeAtraiter.vraiParent.fenetre.commandesLayout.replaceWidget(ancien,panneau,Qt.FindDirectChildrenOnly)
-#      #   return
-#      if self.editor.code== 'MT' and (self.maCommande.obj.nom == "ZONE") :
-#         if  (len(self.node.item.get_genealogie())==2):
-#             #panneau = self.node.getPanelGroupe(self.parentQt,self.maCommande,insertIn=False)
-#             #self.parentQt.commandesLayout.replaceWidget(self,panneau,Qt.FindDirectChildrenOnly)
-#             #index=self.parentQt.commandesLayout.indexOf(self)
-#             #index=self.maCommande.commandesLayout.indexOf(self)
-#             #print ('index = ', index)
-#             index=0
-#             self.maCommande.reafficheSeulement(self,index)
-#         else :
-#           self.reaffiche(self.node)
-#         return
-#     
-#      #print ('je reaffiche')
-#      self.reaffiche(self.node) 
 
   def traiteClicSurLabel(self,texte):
       if self.editor.code != "CARMELCND" : self.afficheOptionnel()
index dee284e455471d9b89ff988bae850b393cdcf444..335d164453743f3294e8b4fc936b87d62775db18 100644 (file)
@@ -39,13 +39,21 @@ class MonBoutonValide(QToolButton) :
 
      def mouseDoubleClickEvent(self, event):
         #print "dans mouseDoubleClickEvent"
+        strAide=self.parent.node.item.object.getFr()
+        if hasattr(self.parent.node.item.object.definition, 'defaut') :
+                strAide+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
         strRapport=six.text_type(self.parent.node.item.object.report())
-        self.parent.editor._viewText(strRapport, "JDC_RAPPORT")
+        self.parent.editor._viewText(strAide+"\n"+strRapport, "JDC_RAPPORT")
 
      def mousePressEvent(self, event):
        #print "dans mousePressEvent"
-       if self.parent.node.item.object.isvalid() :
+       if self.parent.node.item.object.isValid() :
           myToolTip=tr("objet valide")
+          if self.parent.editor.maConfiguration.differencieSiDefaut :
+            if hasattr(self.parent.node.item.object.definition, 'defaut') :
+              if self.parent.node.item.object.valeur != self.parent.node.item.object.definition.defaut :
+                myToolTip+='\ndefaut : \n'+str(self.parent.node.item.object.definition.defaut)
+
           QToolTip.showText(event.globalPos(),myToolTip )
        else :
           t=""
index 4fe4168f637d4176e57e6ce8a5ce5993e9eabecb..8ecd647d4daf04e2e63bf6945d8cb383c4e829c8 100644 (file)
@@ -38,10 +38,13 @@ class MonChoixCata(Ui_DChoixCata,QDialog):
       self.TLNb.setText(tr("%d versions du catalogue sont disponibles", len(listeCata)))
       if title is not None:
           self.setWindowTitle(tr(title))
+      self.buttonOk.clicked.connect(self.cataChoisi)
+      self.buttonCancel.clicked.connect(self.sortSansChoix)
 
-  def on_buttonCancel_clicked(self):
+
+  def sortSansChoix(self):
       QDialog.reject(self)
 
-  def on_buttonOk_clicked(self):
+  def cataChoisi(self):
       QDialog.accept(self)
 
index c78a9d5382e89c40bd408b0f18eb347e1eaf47a1..59fc60989b8901d425890895690d0e1cfaa2cfb6 100644 (file)
@@ -41,14 +41,16 @@ class MonChoixCode(Ui_ChoixCode,QDialog):
   discretes
   """
   def __init__(self,  parentAppli=None):
-      QDialog.__init__(self,parentAppli)
+      QDialog.__init__(self,parent=parentAppli,flags=Qt.Window)
       self.setModal(True)
       self.setupUi(self)
       self.parentAppli=parentAppli
       self.verifieInstall()
       self.code=None
-      self.pB_OK.clicked.connect(self.choisitCode)
-      self.pB_cancel.clicked.connect(self.sortie)
+      self.buttonBox.accepted.disconnect(self.accept)
+      self.buttonBox.accepted.connect(self.choisitCode)
+     # self.pB_OK.clicked.connect(self.choisitCode)
+      #self.pB_cancel.clicked.connect(self.sortie)
 
   def sortie(self):
       QDialog.reject(self)
@@ -56,7 +58,7 @@ class MonChoixCode(Ui_ChoixCode,QDialog):
   def verifieInstall(self):
       self.groupCodes=QButtonGroup(self.groupBox)
       vars=list(os.environ.items())
-      listeCode=('Aster','Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',)
+      listeCode=('Adao','Carmel3D','CarmelCND','CF','MAP','MT','PSEN','PSEN_N1','Telemac','ZCracks',)
       for code in listeCode:
           dirCode=os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',code))
           try :
index 67b0e419a6f60366a101b00224c63d18f14fcf2d..5ebb70c4ff0f34406273f3ad6d29047b03ba6400 100644 (file)
@@ -39,7 +39,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
   """
   """
   def __init__(self,node, jdc_item, editor):
-      QWidget.__init__(self,None)
+      QWidget.__init__(self,parent=None)
       self.setupUi(self)
 
       self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
@@ -51,7 +51,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       self.item = jdc_item
       self.node = node
       self.editor = editor
-      self.jdc  = self.item.object.get_jdc_root()
+      self.simpleClic=self.editor.maConfiguration.simpleClic
+      self.jdc  = self.item.object.getJdcRoot()
       debutTitre=self.editor.titre
       self.listeWidget=[]
       self.dicoCmd={}
@@ -70,13 +71,13 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       self.LEFiltre.returnPressed.connect(self.ajouteRadioButtons)
       self.LEFiltre.textChanged.connect(self.ajouteRadioButtons)
 
-      if self.node.tree.item.get_regles() == () :
+      if self.node.tree.item.getRegles() == () :
          self.RBRegle.close()
          self.labelRegle.close()
       else : 
         self.RBRegle.clicked.connect(self.afficheRegle)
 
-      if self.editor.Ordre_Des_Commandes == None : self.RBOrdre.close()
+      if self.editor.readercata.Ordre_Des_Commandes == None : self.RBOrdre.close()
 
        
       #self.editor.labelCommentaire.setText("")
@@ -85,45 +86,45 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
          self.editor.widgetOptionnel=None
       self.name=None
 
-      self.affiche_alpha=0
-      self.affiche_groupe=0
-      self.affiche_ordre=0
-      if self.editor.affiche=="alpha"  : 
-         self.affiche_alpha==1;  
+      self.boolAlpha=0
+      self.boolGroupe=0
+      self.boolOrdre=0
+      if self.editor.maConfiguration.affiche=="alpha"  : 
+         self.boolAlpha==1;  
          self.RBalpha.setChecked(True);
          self.afficheAlpha()
-      elif self.editor.affiche=="groupe" : 
-         self.affiche_groupe==1; 
+      elif self.editor.maConfiguration.affiche=="groupe" : 
+         self.boolGroupe==1; 
          self.RBGroupe.setChecked(True); 
          self.afficheGroupe()
-      elif self.editor.affiche=="ordre"  : 
-         self.affiche_ordre==1;  
+      elif self.editor.maConfiguration.affiche=="ordre"  : 
+         self.boolOrdre==1;  
          self.RBOrdre.setChecked(True);  
          self.afficheOrdre()
-      if self.editor.closeFrameRechercheCommande == True : self.frameAffichage.close()
+      if self.editor.maConfiguration.closeFrameRechercheCommande == True : self.frameAffichage.close()
 
       if self.editor.widgetTree != None : self.editor.restoreSplitterSizes(2) 
       else: self.editor.restoreSplitterSizes(3)
 
   def afficheRegle(self):
-      self.node.tree.AppelleBuildLBRegles()
+      self.node.tree.appellebuildLBRegles()
 
   def afficheAlpha(self):
-      self.affiche_alpha=1
-      self.affiche_groupe=0
-      self.affiche_ordre=0
+      self.boolAlpha=1
+      self.boolGroupe=0
+      self.boolOrdre=0
       self.ajouteRadioButtons()
 
   def afficheGroupe(self):
-      self.affiche_alpha=0
-      self.affiche_groupe=1
-      self.affiche_ordre=0
+      self.boolAlpha=0
+      self.boolGroupe=1
+      self.boolOrdre=0
       self.ajouteRadioButtons()
 
   def afficheOrdre(self):
-      self.affiche_alpha=0
-      self.affiche_groupe=0
-      self.affiche_ordre=1
+      self.boolAlpha=0
+      self.boolGroupe=0
+      self.boolOrdre=1
       self.ajouteRadioButtons()
 
   def insereNoeudApresClick(self,event):
@@ -133,8 +134,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       nodeCourrant=self.node.tree.currentItem()
       if nodeCourrant==None: nodeCourrant=self.node.tree.racine
       if self.name != None :
-         plier=self.editor.afficheCommandesPliees
-         if nodeCourrant==self.node : nouveau=self.node.append_child(self.name,'first',plier)
+         plier=self.editor.maConfiguration.afficheCommandesPliees
+         if nodeCourrant==self.node : nouveau=self.node.appendChild(self.name,'first',plier)
          else : nouveau=nodeCourrant.appendBrother(self.name,plier=plier)
       else :
          nouveau = 0
@@ -143,7 +144,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       #if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche()
       if self.editor.afficheApresInsert == True :
            #if self.editor.affichePlie==True:  nouveau.plieToutEtReaffiche()
-           if self.editor.afficheCommandesPliees ==True:  nouveau.plieToutEtReaffiche()
+           if self.editor.maConfiguration.afficheCommandesPliees ==True:  nouveau.plieToutEtReaffiche()
            else : nouveau.deplieToutEtReaffiche()
            nouveau.fenetre.donnePremier()
            #nouveau.deplieToutEtReaffiche()
@@ -156,14 +157,14 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
          
 
   def creeListeCommande(self,filtre):
-      listeGroupes,dictGroupes=self.jdc.get_groups()
+      listeGroupes,dictGroupes=self.jdc.getGroups()
       sensibleALaCasse=self.RBCasse.isChecked()
       if "CACHE" in dictGroupes:
          aExclure=dictGroupes["CACHE"]
       else:
          aExclure=()
       listeACreer=[]
-      for l in self.jdc.get_liste_cmd():
+      for l in self.jdc.getListeCmd():
          if l not in aExclure : 
             if sensibleALaCasse and (filtre != None and not filtre in l) : continue
             if (not sensibleALaCasse) and filtre != None and (not filtre in l) and (not filtre.upper() in l) : continue
@@ -171,7 +172,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       return listeACreer
 
   def ajouteRadioButtons(self):
-      if self.editor.nombreDeBoutonParLigne != 0 :
+      if self.editor.maConfiguration.nombreDeBoutonParLigne != 0 :
          self.ajoutePushButtons()
          return
       #print 'ds ajouteRadioButtons'
@@ -188,23 +189,23 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
          w.setParent(None)
          w.close()
       self.listeWidget=[]
-      if self.affiche_alpha==1 :
+      if self.boolAlpha==1 :
          liste=self.creeListeCommande(filtre)
          for cmd in liste :
            self.dicoCmd[tr(cmd)]=cmd
            rbcmd=(QRadioButton(tr(cmd)))
            self.buttonGroup.addButton(rbcmd)
            self.commandesLayout.addWidget(rbcmd)
-           #if self.editor.simpleClic :  rbcmd.mouseReleaseEvent=self.insereNoeudApresClick
+           #if self.simpleClic :  rbcmd.mouseReleaseEvent=self.insereNoeudApresClick
            #else : rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
            #self.buttonGroup.buttonClicked.connect(self.rbClique) 
-           if not(self.editor.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
-         if self.editor.simpleClic :  
+           if not(self.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+         if self.simpleClic :  
             self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) 
          else :
             self.buttonGroup.buttonClicked.connect(self.rbClique) 
-      elif  self.affiche_groupe==1 :
-         listeGroupes,dictGroupes=self.jdc.get_groups()
+      elif  self.boolGroupe==1 :
+         listeGroupes,dictGroupes=self.jdc.getGroups()
          for grp in listeGroupes:
            if grp == "CACHE" : continue
            label=QLabel(self)
@@ -223,8 +224,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
               rbcmd=(QRadioButton(tr(cmd)))
               self.buttonGroup.addButton(rbcmd)
               self.commandesLayout.addWidget(rbcmd)
-              if not(self.editor.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
-           if self.editor.simpleClic :  
+              if not(self.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+           if self.simpleClic :  
              self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) 
            else :
              self.buttonGroup.buttonClicked.connect(self.rbClique) 
@@ -232,11 +233,11 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
            label2.setText(" ")
            self.listeWidget.append(label2)
            self.commandesLayout.addWidget(label2)
-      elif  self.affiche_ordre==1 :
+      elif  self.boolOrdre==1 :
          listeFiltre=self.creeListeCommande(filtre)
          liste=[]
-         if self.editor.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
-         else : Ordre_Des_Commandes=self.editor.Ordre_Des_Commandes
+         if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
+         else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes
          for cmd in Ordre_Des_Commandes :
             if cmd in listeFiltre :
                  liste.append(cmd)
@@ -245,8 +246,8 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
            rbcmd=(QRadioButton(tr(cmd)))
            self.buttonGroup.addButton(rbcmd)
            self.commandesLayout.addWidget(rbcmd)
-           if not(self.editor.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
-         if self.editor.simpleClic :  
+           if not(self.simpleClic ):  rbcmd.mouseDoubleClickEvent=self.insereNoeudApresClick
+         if self.simpleClic :  
             self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere) 
          else :
             self.buttonGroup.buttonClicked.connect(self.rbClique) 
@@ -275,20 +276,20 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
       col=-1
       ligne = 0
 
-      if self.affiche_alpha==1 :
+      if self.boolAlpha==1 :
          liste=self.creeListeCommande(None)
-      elif  self.affiche_ordre:
+      elif  self.boolOrdre:
          liste=self.creeListeCommande(None)
          listeFiltre=self.creeListeCommande(None)
          liste=[]
-         if self.editor.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
-         else : Ordre_Des_Commandes=self.editor.Ordre_Des_Commandes
+         if self.editor.readercata.Ordre_Des_Commandes == None : Ordre_Des_Commandes=listeFiltre
+         else : Ordre_Des_Commandes=self.editor.readercata.Ordre_Des_Commandes
          for cmd in Ordre_Des_Commandes :
             if cmd in listeFiltre :
                  liste.append(cmd)
       for cmd in liste :
            col=col+1
-           if col == self.editor.nombreDeBoutonParLigne :
+           if col == self.editor.maConfiguration.nombreDeBoutonParLigne :
               col=0
               ligne=ligne+1
            self.dicoCmd[tr(cmd)]=cmd
@@ -301,8 +302,9 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
 "border-width : 30 px;\n"
 "border-color : beige;\n"
 "text-align : center")
-           if cmd in self.editor.dicoImages :
-              fichier=self.editor.dicoImages[cmd]
+           #print ('self.editor.maConfiguration.dicoImages', self.editor.maConfiguration.dicoImages)
+           if cmd in self.editor.maConfiguration.dicoImages :
+              fichier=self.editor.maConfiguration.dicoImages[cmd]
               icon = QIcon()
               icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off)
               rbcmd.setIcon(icon)
@@ -329,7 +331,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
         except :
           print ('pb d accent : contacter la maintenance')
 
-      definitionEtape=getattr(self.jdc.cata[0],self.name)
+      definitionEtape=getattr(self.jdc.cata,self.name)
       #commentaire=getattr(definitionEtape,self.jdc.lang)
       try :
         commentaire=getattr(definitionEtape,self.jdc.lang)
@@ -338,7 +340,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QWidget):
            commentaire=getattr(definitionEtape,"ang")
         except :
            commentaire=""
-      self.editor.affiche_commentaire(commentaire)
+      self.editor.afficheCommentaire(commentaire)
 
 
 
index 1cfe63ca4b41555bf397fc7bb81a685181f6b684..31cc2245d3f91cc9032b173b6ee965476a612b7f 100644 (file)
@@ -44,30 +44,30 @@ class MonFonctionPanel(MonPlusieursBasePanel):
   def __init__(self,node, parent = None,name = None,fl = 0):
         #print "MonFonctionPanel"
         self.node=node
-        self.SetNbValeurs()
+        self.setNbValeurs()
         MonPlusieursBasePanel.__init__(self,node,parent,name,fl)
 
-  def SetNbValeurs(self):
+  def setNbValeurs(self):
         self.nbValeurs = 1
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
            for a in self.node.item.definition.type :
                try :
                    self.nbValeurs = a.ntuple
                    break
                except :
                    pass
-        genea=self.node.item.get_genealogie()
+        genea=self.node.item.getGenealogie()
         self.nbValeursASaisir=self.nbValeurs
         if "VALE" in genea: self.nbValeurs=2
         if "VALE_C" in genea: self.nbValeurs=3
 
 
-  def DecoupeListeValeurs(self,liste):
+  def decoupeListeValeurs(self,liste):
         #decoupe la liste des valeurs en n ( les x puis les y)
         l_valeurs=[]
         if ((len(liste)% self.nbValeursASaisir != 0 and (len(liste)% self.nbValeurs))):
             message=tr("La cardinalite n'est pas correcte, la derniere valeur est ignoree")
-            self.editor.affiche_infos(message,Qt.red)
+            self.editor.afficheInfos(message,Qt.red)
         i=0
         while ( i < len(liste) ) :
             try :
@@ -78,21 +78,21 @@ class MonFonctionPanel(MonPlusieursBasePanel):
             l_valeurs.append(t)
         return l_valeurs
 
-  def BuildLBValeurs(self,listeValeurs=None):
+  def buildLBValeurs(self,listeValeurs=None):
         self.LBValeurs.clear()
         if listeValeurs== None :
-           listeValeurs=self.node.item.GetListeValeurs()
-        if self.node.item.wait_tuple()== 1 :
+           listeValeurs=self.node.item.getListeValeurs()
+        if self.node.item.waitTuple()== 1 :
              listeATraiter=listeValeurs
               for valeur in listeATraiter:
                   str_valeur=str(valeur)
                   self.LBValeurs.addItem(str_valeur)
         else : 
-             for valeur in self.DecoupeListeValeurs(listeValeurs):
+             for valeur in self.decoupeListeValeurs(listeValeurs):
                    if type(valeur) == tuple:
                        TupleEnTexte="("
                        for val in valeur :
-                           TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+                           TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
                        TupleEnTexte = TupleEnTexte[0:-2] +")"
                        self.LBValeurs.addItem(TupleEnTexte)
                    else :
@@ -103,7 +103,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         # Pour etre appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
         validite=1
         if liste == [] :
-           if self.node.item.wait_tuple()== 1 :
+           if self.node.item.waitTuple()== 1 :
               liste=SaisieValeur.TraiteLEValeurTuple(self)
               if liste == [''] : return
            else :
@@ -111,16 +111,16 @@ class MonFonctionPanel(MonPlusieursBasePanel):
               if validite == 0 : return
         if liste ==[]    : return
 
-        if (self.node.item.wait_tuple()== 1 and len(liste) != self.nbValeurs):
+        if (self.node.item.waitTuple()== 1 and len(liste) != self.nbValeurs):
             commentaire  = str(liste) 
             commentaire += tr(" n est pas un tuple de ") 
             commentaire += str(self.nbValeursASaisir) 
             commentaire += tr(" valeurs")
            self.LEValeur.setText(str(liste))
-            self.editor.affiche_infos(commentaire,Qt.red)
+            self.editor.afficheInfos(commentaire,Qt.red)
             return
 
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
               liste2=tuple(liste)
               liste=liste2
 
@@ -135,27 +135,27 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         listeVal=[]
         for valeur in self.listeValeursCourantes :
                 listeVal.append(valeur)
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
              indexListe = index
-             validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
+             validite,comm,comm2,listeRetour=self.politique.ajoutTuple(liste,index,listeVal)
         else :
-             validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
+             validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,index,listeVal)
         self.Commentaire.setText(tr(comm2))
         if not validite :
-                self.editor.affiche_infos(comm,Qt.red)
+                self.editor.afficheInfos(comm,Qt.red)
         else:
            self.LEValeur.setText("")
            l1=self.listeValeursCourantes[:indexListe]
            l3=self.listeValeursCourantes[indexListe:]
-           if self.node.item.wait_tuple()== 1 :
+           if self.node.item.waitTuple()== 1 :
              listeATraiter=listeRetour
            else : 
-              listeATraiter=self.DecoupeListeValeurs(listeRetour)
+              listeATraiter=self.decoupeListeValeurs(listeRetour)
            for valeur in  listeATraiter :
                if type(valeur) == tuple:
                   TupleEnTexte="("
                   for val in valeur :
-                      TupleEnTexte = TupleEnTexte + str(self.politique.GetValeurTexte(val)) +", "
+                      TupleEnTexte = TupleEnTexte + str(self.politique.getValeurTexte(val)) +", "
                   str_valeur = TupleEnTexte[0:-2] +")"
                else :
                   str_valeur=str(valeur)
@@ -165,20 +165,20 @@ class MonFonctionPanel(MonPlusieursBasePanel):
                self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
-           self.BuildLBValeurs(self.listeValeursCourantes)
+           self.buildLBValeurs(self.listeValeursCourantes)
 
 
   def ajoutNValeur(self,liste) :
         if len(liste)%self.nbValeurs != 0 :
            texte="Nombre de valeur incorrecte"
            #self.Commentaire.setText(texte)
-           self.editor.affiche_infos(texte,Qt.red)
+           self.editor.afficheInfos(texte,Qt.red)
            return
-        listeDecoupee=self.DecoupeListeValeurs(liste)
+        listeDecoupee=self.decoupeListeValeurs(liste)
         for vals in listeDecoupee :
             self.ajout1Valeur(vals)
            
-  def Sup1Valeur(self):
+  def sup1Valeur(self):
         index=self.LBValeurs.currentRow()
         if index == None : return
         removed_item = self.LBValeurs.takeItem(index)
@@ -189,7 +189,7 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         for i in range(self.nbValeurs):
             indexAOter=index*self.nbValeurs + i
             indexInterdit.append(indexAOter)
-        if self.node.item.wait_tuple()== 1 :
+        if self.node.item.waitTuple()== 1 :
            indexInterdit=[index]
 
         i=0
index f474a69cd0d668def7ab4470c6318aeb653b850a..7b17edbab88ec89ded5799ba2c075941586acb6c 100644 (file)
 
 from __future__ import absolute_import
 from PyQt5.QtWidgets import QCheckBox, QWidget, QLabel, QPushButton
-from PyQt5.QtCore import Qt, QRect
+from PyQt5.QtCore    import Qt, QRect
+from PyQt5.QtGui     import QPalette
 
-from Extensions.i18n import tr
+from Extensions.i18n    import tr
 from desGroupeOptionnel import Ui_groupeOptionnel
-from desPBOptionnelMT import Ui_customPB
+from desPBOptionnelMT   import Ui_customPB
 
     
 # Import des panels
 
-class monRBButtonCustom(QCheckBox):
+class MonRBButtonCustom(QCheckBox):
 
-   def __init__(self,texte,monOptionnel,parent=None):
+   def __init__(self,texte,monOptionnel,parent=None,couleur=None):
       QCheckBox.__init__(self,tr(texte),parent)
       self.mousePressed=True
-      self.texte=texte
       self.monOptionnel=monOptionnel
       self.setToolTip(tr("clicker: affichage aide, double-click: ajout"))
+      if couleur != None :
+         mapalette=self.palette()
+         mapalette.setColor( QPalette.WindowText, couleur )
+         mapalette.setColor( QPalette.Base, Qt.green )
+         self.setPalette( mapalette );
+         self.setText(tr(texte))
+         try :
+           monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
+           self.setToolTip(monToolTip)
+         except :
+           pass
+
 
    def mouseDoubleClickEvent(self, event):
       #print "dans mouseDoubleClickEvent", self
@@ -69,18 +81,31 @@ class monRBButtonCustom(QCheckBox):
         maDefinition = self.monOptionnel.parentMC.definition.entites[self.texte]
         maLangue =  self.monOptionnel.parentMC.jdc.lang
         if hasattr(maDefinition,maLangue): 
-          monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
+          self.monAide = getattr(maDefinition,self.monOptionnel.parentMC.jdc.lang)
         else : 
-          monAide = ""
+          self.monAide = ""
       except :
-          monAide = ""
-      self.monOptionnel.parentMC.editor.affiche_commentaire(monAide)
+          self.monAide = ""
+      self.monOptionnel.parentMC.editor.afficheCommentaire(self.monAide)
   
-class monPBButtonCustom(QWidget,Ui_customPB):
+class MonPBButtonCustom(QWidget,Ui_customPB):
 
-   def __init__(self,texte,monOptionnel,parent=None):
+   def __init__(self,texte,monOptionnel,parent=None,couleur=None):
       QWidget.__init__(self)
       self.setupUi(self)
+      if couleur != None :
+         self.monPb.setText(texte)
+         self.monPb.setStyleSheet('QPushButton {background-color: #A3C1DA; color: red;}')
+         #mapalette=self.monPb.palette()
+         #mapalette.setColor( QPalette.ButtonText, Qt.red )
+         #self.monPb.setPalette( mapalette )
+         self.monPb.update()
+         #self.update()
+         try :
+           monToolTip=monOptionnel.parentMC.dictToolTipMc[texte]
+           self.monPb.setToolTip(monToolTip)
+         except :
+           pass
       self.monPb.setText(texte)
       self.monPb.clicked.connect(self.ajoutMC)
 
@@ -105,8 +130,8 @@ class monPBButtonCustom(QWidget,Ui_customPB):
 class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
   """
   """
-  def __init__(self,liste,parentQt,parentMC):
-     #print "dans init de monWidgetOptionnel ", parentQt, liste,parentMC
+  def __init__(self,liste,liste_rouge,parentQt,parentMC):
+     #print ("dans init de monWidgetOptionnel ", parentQt, liste,parentMC)
      QWidget.__init__(self,None)
      self.setupUi(self)
      self.listeChecked=[]
@@ -116,10 +141,12 @@ class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
      self.cb=None
      self.parentQt=parentQt
      self.parentMC=parentMC
+     
+
      if liste != [] : 
-        self.affiche(liste)
+        self.affiche(liste,liste_rouge)
         self.afficheTitre()
-     elif self.parentQt.parentQt.afficheOptionnelVide != False : 
+     elif self.parentQt.parentQt.maConfiguration.afficheOptionnelVide != False : 
         self.afficheTitre()
         self.MCOptionnelLayout.insertWidget(0,QLabel(tr('Pas de MC Optionnel')))
      else :
@@ -128,7 +155,7 @@ class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
 
 
   def afficheTitre(self):
-     labeltext,fonte,couleur = self.parentMC.node.item.GetLabelText()
+     labeltext,fonte,couleur = self.parentMC.node.item.getLabelText()
      #print (labeltext)
      l=tr(labeltext)
      li=[]
@@ -141,20 +168,21 @@ class MonGroupeOptionnel (QWidget,Ui_groupeOptionnel):
      texte=texte[0:-1]
      self.MCLabel.setText(texte)
 
-  def affiche(self,liste):
-     #print "dans Optionnel ____ affiche", liste
+  def affiche(self,liste,liste_rouge):
+     #print ("dans Optionnel ____ affiche", liste,liste_rouge)
      self.dicoCb={}
      liste.reverse()
      for mot in liste :
-         if self.parentQt.parentQt.simpleClic == False :
-            cb = monRBButtonCustom(mot,self)
+         #if mot in liste_rouge : print ('je dois afficher en rouge' , mot)
+         couleur=None
+         if mot in liste_rouge : couleur=Qt.red 
+         if self.parentQt.parentQt.maConfiguration.simpleClic == False :
+            cb = MonRBButtonCustom(mot,self,couleur=couleur)
             cb.clicked.connect(cb.ajoutAideMC)
          else :
-            cb = monPBButtonCustom(mot,self)
+            cb = MonPBButtonCustom(mot,self,couleur=couleur)
 
          self.MCOptionnelLayout.insertWidget(0,cb)
          self.dicoCb[cb]=mot
      self.scrollAreaCommandesOptionnelles.horizontalScrollBar().setSliderPosition(0)
 
-      
-
diff --git a/InterfaceQT4/monLayoutBouton.py b/InterfaceQT4/monLayoutBouton.py
new file mode 100644 (file)
index 0000000..49a431a
--- /dev/null
@@ -0,0 +1,67 @@
+# 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
+#
+# Modules Python
+# Modules Eficas
+
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+
+from PyQt5.QtWidgets import  QButtonGroup, QToolButton
+from PyQt5.QtGui import QIcon, QPixmap
+from Extensions.i18n import tr
+
+
+#----------------------
+class MonLayoutBouton :
+#----------------------
+
+#  -------------------------------
+   def __init__(self,appliEficas):
+#  -------------------------------
+
+      self.appliEficas = appliEficas
+      self.buttonGroup = QButtonGroup()
+    
+      for etape in self.appliEficas.readercata.cata.JdC.commandes :
+        nomEtape = etape.nom
+        toolButton = QToolButton(self.appliEficas.toolBarCommande)
+        icon = QIcon()
+        if nomEtape in self.appliEficas.maConfiguration.dicoIcones:
+             fichier = self.appliEficas.maConfiguration.dicoIcones[nomEtape]
+             icon.addPixmap(QPixmap(fichier), QIcon.Normal, QIcon.Off)
+             toolButton.setIcon(icon)
+        else :
+             try :    label = nomEtape[0:3]
+             except : label = nomEtape
+             toolButton.setText(label)
+
+        action = self.appliEficas.toolBarCommande.addWidget(toolButton)
+        action.setVisible(True)
+        toolButton.setObjectName(nomEtape)
+        toolButton.setToolTip(tr(nomEtape))
+        self.buttonGroup.addButton(toolButton)
+
+      self.buttonGroup.buttonClicked.connect(self.rbCliqueEtInsere)
+
+   def rbCliqueEtInsere(self,id):
+        self.appliEficas.handleAjoutEtape(id.objectName()) 
+
+
index 65e2442f7e29f147226b17512bd8c7171cf59f7e..059456cc4b62cc765bfb1b5693076659caf75e8f 100644 (file)
@@ -48,8 +48,8 @@ class DRecherche(Ui_desRecherche ,QDialog):
       #if self.motAChercher!=self.LERecherche.text(): self.recherche()
       if self.listeTrouvee=={} : return
       if self.surLigne > len(self.listeTrouvee) -1 : return
-      if self.nodeSurligne!=None : self.nodeSurligne.update_node_texte_in_black()
-      #self.listeTrouvee[self.surLigne].update_node_texte_in_blue()
+      if self.nodeSurligne!=None : self.nodeSurligne.updateNodeTexteInBlack()
+      #self.listeTrouvee[self.surLigne].updateNodeTexteInBlue()
       #self.nodeSurligne=self.listeTrouvee[self.surLigne]
       self.listeTrouvee[self.surLigne].select()
       self.listeTrouvee[self.surLigne].affichePanneau()
index 4db3af09ec909642002f092196f01e58843ce933..415f5948af0d38351de5aa7d34214322da76f5d0 100644 (file)
@@ -28,7 +28,7 @@ except : pass
 from desSelectVal import Ui_DSelVal
 from Extensions.i18n import tr
 
-from PyQt5.QtWidgets import QDialog, QFileDialog
+from PyQt5.QtWidgets import QDialog, QFileDialog, QMessageBox
 from PyQt5.QtCore import QTimer, Qt
 from PyQt5.QtGui import QPalette
 
@@ -56,17 +56,17 @@ class MonSelectVal(DSelVal):
         self.connecterSignaux()
 
   def connecterSignaux(self) :
-        self.Bespace.clicked.connect(self.SelectEsp)
-        self.BpointVirgule.clicked.connect(self.SelectPoint)
-        self.Bvirgule.clicked.connect(self.SelectVir)
+        self.Bespace.clicked.connect(self.selectEsp)
+        self.BpointVirgule.clicked.connect(self.selectPoint)
+        self.Bvirgule.clicked.connect(self.selectVir)
         self.BImportSel.clicked.connect(self.BImportSelPressed)
         self.BImportTout.clicked.connect(self.BImportToutPressed)
         self.parent.editor.sb.messageChanged.connect(self.messageAChanger)
 
   def connecterSignauxQT4(self) :
-        self.connect(self.Bespace,SIGNAL("clicked()"),self.SelectEsp)
-        self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.SelectPoint)
-        self.connect(self.Bvirgule,SIGNAL("clicked()"),self.SelectVir)
+        self.connect(self.Bespace,SIGNAL("clicked()"),self.selectEsp)
+        self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.selectPoint)
+        self.connect(self.Bvirgule,SIGNAL("clicked()"),self.selectVir)
         self.connect(self.BImportSel,SIGNAL("clicked()"),self.BImportSelPressed)
         self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed)
         self.connect(self.parent.editor.sb,SIGNAL("messageChanged(QString)"),self.messageAChanger)
@@ -84,21 +84,26 @@ class MonSelectVal(DSelVal):
 
   def readVal(self):
         if self.file == "" : return
-        f = open(self.file, "r")
-        self.texte = f.read()
-        f.close()
+        try :
+          f = open(self.file, "r")
+          self.texte = f.read()
+          f.close()
+        except :
+          QMessageBox.warning( self,tr( "Fichier Indisponible"),tr( "Lecture impossible"))
+          self.texte=""
+          return
 
   def initVal(self):
         self.TBtext.clear()
         self.TBtext.setText(self.texte)
 
-  def SelectEsp(self):
+  def selectEsp(self):
         self.separateur=" "
         
-  def SelectVir(self):
+  def selectVir(self):
         self.separateur=","
         
-  def SelectPoint(self):
+  def selectPoint(self):
         self.separateur=";"
         
   def BImportSelPressed(self):
@@ -106,13 +111,13 @@ class MonSelectVal(DSelVal):
         texte = self.TBtext.textCursor().selectedText()
         textTraite=texte.replace(u'\u2029',"\n")
         self.textTraite=str(textTraite)
-        self.Traitement()
+        self.traitement()
         
   def BImportToutPressed(self):
         self.textTraite=self.texte
-        self.Traitement()
+        self.traitement()
 
-  def Traitement(self):
+  def traitement(self):
         if self.textTraite == "" : return
         if self.textTraite[-1]=="\n" : self.textTraite=self.textTraite[0:-1]
         self.textTraite=self.textTraite.replace("\n",self.separateur)
@@ -122,10 +127,10 @@ class MonSelectVal(DSelVal):
           if val != '' and val != ' ' and val != self.separateur :
             val=str(val)
             try :
+            #if 1 :
                val2=eval(val,{})
                liste.append(val2)
             except :
               pass
         self.parent.ajoutNValeur(liste) 
         
-
index 61505477a31c3120e7f118c9007a2daca801b4e7..0c167c9b377901c640281ee4431c61098522cd9c 100644 (file)
@@ -58,7 +58,7 @@ class ViewText(Ui_dView,QDialog):
     def saveFile(self):
         #recuperation du nom du fichier
         if self.editor != None :
-           dir=self.editor.appliEficas.CONFIGURATION.savedir
+           dir=self.editor.appliEficas.maConfiguration.savedir
         else:
            dir='/tmp'
         fn = QFileDialog.getSaveFileName(None,
@@ -70,7 +70,7 @@ class ViewText(Ui_dView,QDialog):
 
         ulfile = os.path.abspath(six.text_type(fn))
         if self.editor != None :
-           self.editor.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+           self.editor.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
         try:
            f = open(fn, 'w')
            f.write(str(self.view.toPlainText()))
index 21a64a723dcbc272de33c2292c91465ead1528b7..3025049b968861d254b5f5b57f62755408b3b687 100644 (file)
@@ -44,7 +44,7 @@ class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCom
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         #print "dans le init de MonWidget4a6RadioButton",self
-        self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+        self.maListeDeValeur=node.item.getSdAvantDuBonType()
         MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
 
   def setMaxI(self):
index afdde11b0374603400cc9744eb8f4bbc1393ca2c..86f198ed90a7f294f033e972502e253c451a66a6 100644 (file)
@@ -32,7 +32,7 @@ class MonWidget4a6RadioButtonSD (Ui_Widget4a6RadioButton,MonWidgetRadioButtonCom
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         #print "dans le init de MonWidget4a6RadioButton",self
-        self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+        self.maListeDeValeur=node.item.getSdAvantDuBonType()
         MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
 
   def setMaxI(self):
index 7d5d8239ea31a007dedad648d50c5ce9833199c1..1dc335269dba42b337554d9357b6d4bc3e002a80 100644 (file)
@@ -29,7 +29,7 @@ class MonWidgetBloc(Ui_WidgetBloc,Groupe):
   """
   """
   def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
-      #print "bloc : ",node.item.nom
+      #print ("bloc : ",node.item.nom)
       Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
       self.parentQt.commandesLayout.insertWidget(-1,self,1)
 
index 9f969dd4c3c561e5059168caf5a9c31c7a36c0ab..a23b51fc6c20955aaeb1169becddd9b945c99750 100644 (file)
@@ -28,23 +28,23 @@ import types,os
 # Modules Eficas
 from Extensions.i18n import tr
 
-from .feuille               import Feuille
-from desWidgetCB           import Ui_WidgetCB 
-from .politiquesValidation  import PolitiqueUnique
-from .qtSaisie              import SaisieValeur
+from InterfaceQT4.feuille               import Feuille
+from desWidgetCB                        import Ui_WidgetCB 
+from InterfaceQT4.politiquesValidation  import PolitiqueUnique
+from InterfaceQT4.qtSaisie              import SaisieValeur
 
 from PyQt5.QtWidgets import QComboBox, QCompleter
 from PyQt5.QtCore import Qt
 
 
-class MonWidgetCBCommun (Ui_WidgetCB,Feuille):
+class MonWidgetCBCommun (Feuille):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.politique=PolitiqueUnique(self.node,self.editor)
         self.determineChoix()
         self.setValeursApresBouton()
-        self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+        self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
         #self.CBChoix.lineEdit().setText(tr("Select"))
         self.parentQt.commandesLayout.insertWidget(-1,self)
         self.maCommande.listeAffichageWidget.append(self.CBChoix)
@@ -52,17 +52,18 @@ class MonWidgetCBCommun (Ui_WidgetCB,Feuille):
 
 
   def setValeursApresBouton(self):
-      if self.objSimp.get_valeur()==None : 
+      if self.objSimp.getValeur()==None : 
          self.CBChoix.setCurrentIndex(-1)
          #self.CBChoix.lineEdit().setStyleSheet(("QLineEdit {" " background:yellow;\n" "font: italic ;\n" " }\n" " "))
          self.CBChoix.lineEdit().setText(tr("Select"))
          return
-      valeur=self.objSimp.get_valeur()
+      valeur=self.objSimp.getValeur()
       if not(type(valeur) == str) : valeur=str(valeur)
       self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur))
       
   def determineChoix(self):
       listeChoix=[]
+      if self.maListeDeValeur == None : self.maListeDeValeur=[]
       for choix in self.maListeDeValeur:
           if not(type(choix) == str) : choix=str(choix)
           listeChoix.append(choix)
@@ -72,24 +73,24 @@ class MonWidgetCBCommun (Ui_WidgetCB,Feuille):
       monCompleteur.setCompletionMode(QCompleter.PopupCompletion) 
       self.CBChoix.setCompleter(monCompleteur)
 
-  def ChoixSaisi(self):
+  def choixSaisi(self):
       self.CBChoix.lineEdit().setStyleSheet(("\n"
 "QLineEdit {\n"
 "     font : italic ;\n"
 "     background: rgb(235,235,235);\n"
 " }"))
       valeur=str(self.CBChoix.currentText())
-      SaisieValeur.LEValeurPressed(self,valeur)
+      SaisieValeur.LEvaleurPressed(self,valeur)
       self.reaffiche()
 
-class MonWidgetCB (MonWidgetCBCommun):
+class MonWidgetCB (Ui_WidgetCB, MonWidgetCBCommun):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
       self.maListeDeValeur=monSimpDef.into
       MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
 
-class MonWidgetCBSD (MonWidgetCBCommun):
+class MonWidgetCBSD (Ui_WidgetCB,MonWidgetCBCommun):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
-      self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+      self.maListeDeValeur=node.item.getSdAvantDuBonType()
       MonWidgetCBCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
diff --git a/InterfaceQT4/monWidgetCBIntoSug.py b/InterfaceQT4/monWidgetCBIntoSug.py
new file mode 100644 (file)
index 0000000..c2e71c7
--- /dev/null
@@ -0,0 +1,59 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+
+import types,os
+
+# Modules Eficas
+from Extensions.i18n import tr
+
+from .feuille               import Feuille
+from .politiquesValidation  import PolitiqueUnique
+from .qtSaisie              import SaisieValeur
+from desWidgetCBIntoSug     import Ui_WidgetCBIntoSug
+
+from PyQt5.QtWidgets import QComboBox, QCompleter
+from PyQt5.QtCore import Qt
+
+from monWidgetCB            import MonWidgetCBCommun
+from monWidgetIntoSug       import GereAjoutDsPossible
+
+      
+class MonWidgetCBIntoSug (MonWidgetCBCommun, Ui_WidgetCBIntoSug,GereAjoutDsPossible):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+      self.maListeDeValeur=monSimpDef.into
+      if node.item.hasIntoSug() : self.maListeDeValeur=node.item.getListePossibleAvecSug([])
+      if hasattr(node.item,'suggestion') : self.maListeDeValeur+=  node.item.suggestion
+      MonWidgetCBCommun. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
+
+  def ajouteValeurPossible(self,valeur):
+      self.CBChoix.addItem(valeur)
+      # on ne sait pas si on a deja ajouté une valeur
+      try : self.node.item.suggestion.append(valeur)
+      except : self.node.item.suggestion=(valeur,)
+      self.lineEditVal.setText('')
+      self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur));
+      
+
index 101244733a173be544924314f1a1fa221a15ec9e..929e7426601998b91fdcca33c8fb75dd6f2a17ad 100644 (file)
@@ -44,34 +44,34 @@ class MonWidgetCB (Ui_WidgetCB,Feuille):
         self.politique=PolitiqueUnique(self.node,self.editor)
         self.determineChoix()
         self.setValeursApresBouton()
-        self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+        self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
 
         self.parentQt.commandesLayout.insertWidget(-1,self)
         self.maCommande.listeAffichageWidget.append(self.CBChoix)
-        #print self.objSimp.isoblig()
+        #print self.objSimp.isOblig()
 
 
   def setValeursApresBouton(self):
-      if self.objSimp.get_valeur()==None : 
+      if self.objSimp.getValeur()==None : 
          self.CBChoix.setCurrentIndex(-1)
          return
-      valeur=self.objSimp.get_valeur()
+      valeur=self.objSimp.getValeur()
       if not(type(valeur) == str) : valeur=str(valeur)
       self.CBChoix.setCurrentIndex(self.CBChoix.findText(valeur))
       
   def determineChoix(self):
-      self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+      self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
 
       for choix in self.monSimpDef.into:
           if not(type(choix) == str) : choix=str(choix)
-          self.CBChoix.currentIndexChanged.connect(self.ChoixSaisi)
+          self.CBChoix.currentIndexChanged.connect(self.choixSaisi)
           self.CBChoix.addItem(choix)
       self.CBChoix.setEditable(True)
       monCompleteur=QCompleter(listeChoix,self) 
       monCompleteur.setCompletionMode(QCompleter.PopupCompletion) 
       self.CBChoix.setCompleter(monCompleteur)
 
-  def ChoixSaisi(self):
+  def choixSaisi(self):
       valeur=str(self.CBChoix.currentText())
-      SaisieValeur.LEValeurPressed(self,valeur)
+      SaisieValeur.LEvaleurPressed(self,valeur)
       self.reaffiche()
index 69bafce99385229a7c8a9698f5e5a27399d532ce..98f815adbaf8bc1b278939c6c4a5e9378c2ac6fc 100644 (file)
@@ -54,18 +54,25 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       Groupe.__init__(self,node,editor,None,etape.definition,etape,1,self)
       editor.inhibeSplitter=0
 
-      self.frameAffichage.setMinimumHeight(20)
-      if node.item.get_fr() != "" : self.labelDoc.setText(node.item.get_fr())
-      else : 
-        self.labelDoc.close()
-        self.frameAffichage.resize(self.frameAffichage.width(),50)
+      resize=0
+      if node.item.getFr() != "" : 
+         self.labelDoc.setText(node.item.getFr())
+         resize=1
+      else : self.labelDoc.close()
       
-      #if (etape.get_type_produit()==None): self.LENom.close()
-      #test,mess = self.node.item.nomme_sd('ee')
       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)
-      else : self.LENom.setText("")
+      elif (hasattr(etape, 'sdnom')) and etape.sdnom != "sansnom" and etape.sdnom != None: 
+           self.LENom.setText(etape.sdnom)
+           resize=resize*1
+      else : 
+           self.LENom.setText("")
+           resize=resize*1
+      if resize :
+         nouvelleSize=self.frameAffichage.height()+60
+         self.frameAffichage.setMinimumHeight(nouvelleSize)
+         self.frameAffichage.resize(self.frameAffichage.width(),nouvelleSize)
+      
 
 
       maPolice= QFont("Times", 10,)
@@ -73,7 +80,7 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       self.labelNomCommande.setText(tr(self.obj.nom))
 
 
-      if self.editor.closeAutreCommande==True  : self.closeAutreCommande()
+      if self.editor.maConfiguration.closeAutreCommande == True  : self.closeAutreCommande()
       else :
         try :
            self.bCatalogue.clicked.connect(self.afficheCatalogue)
@@ -81,14 +88,17 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
            self.bApres.clicked.connect(self.afficheApres)
         except :
            pass
-        self.LENom.returnPressed.connect(self.nomChange)
+       
+      if hasattr(self,'LENom'): self.LENom.returnPressed.connect(self.nomChange)
    
-      if self.editor.code in ['Adao','ADAO'] and self.editor.closeFrameRechercheCommande==True  : 
+      if self.editor.code in ['Adao','ADAO'] and self.editor.maConfiguration.closeFrameRechercheCommande==True  : 
                       self.frameAffichage.close()
+      if self.editor.maConfiguration.closeFrameRechercheCommande==True  : 
+         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)
+      if self.node.item.getIconName() == "ast-red-square" : self.LENom.setDisabled(True)
 
       self.setAcceptDrops(True)
       self.etablitOrdre()
@@ -107,7 +117,13 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
         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()
 
       #print "fin init de widget Commande"
@@ -204,24 +220,24 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       nom = str(self.LENom.text())
       nom = nom.strip()
       if nom == '' : return                  # si pas de nom, on ressort sans rien faire
-      test,mess = self.node.item.nomme_sd(nom)
-      self.editor.affiche_commentaire(mess)
+      test,mess = self.node.item.nommeSd(nom)
+      self.editor.afficheCommentaire(mess)
 
       #Notation scientifique
       if test :
         from .politiquesValidation import Validation
         validation=Validation(self.node,self.editor)
-        validation.AjoutDsDictReelEtape()
+        validation.ajoutDsDictReelEtape()
 
   def afficheOptionnel(self):
       # N a pas de parentQt. doit donc etre redefini
-      liste=self.ajouteMCOptionnelDesBlocs()
+      liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
       #print "dans afficheOptionnel", self.monOptionnel
       # dans le cas ou l insertion n a pas eu leiu (souci d ordre par exemple)
       #if self.monOptionnel == None : return
       self.monOptionnel.parentCommande=self
       self.monOptionnel.titre(self.obj.nom)
-      self.monGroupe=self.monOptionnel.afficheOptionnel(liste,self)
+      self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
       
 
   def focusInEvent(self,event):
@@ -293,14 +309,13 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
   def setValide(self):
       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")
-      if self.node.item.GetIconName() == "ast-yellow-square" :
-         icon=QIcon(self.repIcon+"/ast-yel-ball.png")
+      if self.node.item.object.isValid() : icon=QIcon(self.repIcon+"/ast-green-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)
+
       self.LENom.setDisabled(False)
-      if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True)
       self.RBValide.setIcon(icon)
 
 
diff --git a/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py
new file mode 100644 (file)
index 0000000..9fa4cbd
--- /dev/null
@@ -0,0 +1,150 @@
+# 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
+#
+# Modules Python
+# Modules Eficas
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+import types, os
+import traceback
+
+from PyQt5.QtGui import QIcon
+from InterfaceQT4.monWidgetCommande import MonWidgetCommande
+from PyQt5.QtWidgets  import QSpacerItem, QSizePolicy
+
+class MonWidgetCommandeDeplie1Niveau(MonWidgetCommande):
+# Attention au MCLIST qui ne sont pas des MCFACT
+# il faut donc surcharger un certain nb de fonction ici pour eux
+
+
+  def __init__(self,node,editor,etape):
+      #print ("debut de ---------------------- init de MonWidgetCommandeDeplie1Niveau ",node.item.nom)
+      MonWidgetCommande.__init__(self,node,editor,etape)
+      self.node.plieToutEtReaffiche=self.plieToutEtReaffiche
+      spacerItem = QSpacerItem(21, 600, QSizePolicy.Expanding, QSizePolicy.Expanding)
+      self.verticalLayoutCommande.addItem(spacerItem)
+
+  def afficheMots(self):
+      # Attention
+      # Attention --> cette methode surcharge les methodes des Nodes Fils
+      # Attention
+      #print ("debut de ---------------------- ds afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom)
+      #traceback.print_stack()
+      repIcon=self.editor.appliEficas.repIcon
+      fichier=os.path.join(repIcon, 'deleteRondVide.png')
+      icon = QIcon(fichier)
+      for node in self.node.children:
+
+           node.plie=True
+           node.setPlieChildren()
+           if node.appartientAUnNoeudPlie==True : continue
+
+           node.plieToutEtReaffiche   = self.plieToutEtReaffiche
+           node.deplieToutEtReaffiche = self.deplieToutEtReaffiche
+           node.affichePanneau        = self.affichePanneau
+           node.getPanel              = self.getPanel
+
+           widget=node.getPanelGroupe(self,self.maCommande)
+           self.listeFocus.append(node.fenetre)
+
+           try :
+            node.fenetre.RBDeplie.setCheckable(False)
+            node.fenetre.RBDeplie.setEnabled(False)
+            node.fenetre.RBDeplie.setIcon(icon)
+           except : pass
+
+           if node.item.object.isMCList() :
+              node.setDeplie              = self.setDepliePourMCList
+
+              for c in node.children :
+                  c.setDeplie           = self.setDepliePourNode
+                  c.plieToutEtReaffiche = self.plieToutEtReaffiche
+                  c.deplieToutEtReaffiche = self.deplieToutEtReaffiche
+                  c.getPanel              = self.getPanel
+                  c.affichePanneau      = self.affichePanneau
+                  try :        
+                   c.fenetre.RBDeplie.setCheckable(False)
+                    c.fenetre.RBDeplie.setEnabled(False)
+                    c.fenetre.RBDeplie.setIcon(icon)
+                  except :
+                    pass
+           else :
+              node.setDeplie=self.setDepliePourNode
+
+      #print ("fin ------------------------ afficheMots de MonWidgetCommandeDeplie1Niveau ",self.node.item.nom)
+
+  def afficheSuivant(self,aAfficher):
+      fenetre=self.node.tree.itemCourant.fenetre
+      fenetre.afficheSuivant(aAfficher)
+
+  def setDepliePourNode(self):
+      noeudCourant=self.node.tree.itemCourant
+      noeudCourant.setDeplieChildren()
+      if self.editor.fenetreCentraleAffichee == noeudCourant.fenetre : return
+      noeudCourant.afficheCeNiveau()
+      pass
+
+
+# -------------------------------------------- Methodes qui surchargent les noeuds fils
+
+  def setDepliePourMCList(self):
+      #print ('je surcharge setDeplie pour MCList')
+      pass
+
+  def setPlieChildren(self):
+      #print ('je surcharge setPlieChildren')
+      pass
+
+  def setDeplieChildren(self):
+      #print ('je surcharge setDeplieChildren')
+      pass
+
+  def plieToutEtReaffiche(self):
+      #print ('je surcharge plieToutEtReaffiche', self.node.item.nom)
+      pass
+
+  def deplieToutEtReaffiche(self):
+      #print ('je surcharge deplieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText())
+      pass
+
+  def plieToutEtReafficheSaufItem(self):
+      #print ('je surcharge plieToutEtReaffiche', self.node.tree.itemCourant.item.getLabelText())
+      pass
+
+  def affichePanneau(self):
+      #print ('je surcharge affichePanneau', self.node.tree.itemCourant.item.getLabelText())
+      node=self.node.tree.itemCourant
+      while ( not (hasattr(node,'fenetreIhm')) or node.treeParent.fenetreIhm != 'deplie1Niveau') : 
+            node=node.treeParent
+      self.node.tree.setCurrentItem(node)
+          
+      item=node.item
+      if item.getLabelText()[0] == self.editor.fenetreCentraleAffichee.labelNomCommande.text():
+         return
+      node.setDeplieChildren()
+      node.afficheCeNiveau()
+      self.editor.fenetreCentraleAffichee.labelNomCommande.setText(item.getLabelText()[0])
+      self.editor.fenetreCentraleAffichee.labelDoc.setText(item.getFr())
+
+
+
+  def getPanel (self):
+      #print ('surcharge ds getPanel')
+      pass
index 03fb92e24fe0f245c8551ad2d2d174818711c92f..8ff4e31780fd489cb4d0028fd03e8ca765e88590 100644 (file)
@@ -76,7 +76,7 @@ class MonWidgetCommentaire(QWidget,Ui_WidgetCommentaire,FacultatifOuOptionnel):
       else : self.node.tree.racine.select()
 
   def remplitTexte(self):
-      texte=self.node.item.get_valeur()
+      texte=self.node.item.getValeur()
       self.commentaireTE.setText(texte)
       if self.editor.code == "CARMELCND" and texte[0:16]=="Cree - fichier :" :
          self.commentaireTE.setReadOnly(True)
@@ -91,7 +91,7 @@ class MonWidgetCommentaire(QWidget,Ui_WidgetCommentaire,FacultatifOuOptionnel):
 
   def TexteCommentaireEntre(self):
       texte=str(self.commentaireTE.toPlainText())
-      self.editor.init_modif()
-      self.node.item.set_valeur(texte)
-      self.node.update_node_texte()
+      self.editor.initModif()
+      self.node.item.setValeur(texte)
+      self.node.updateNodeTexte()
 
index 1293780093f3c8948a4e872ca2450accea0cc9ac..a46ebddc6e5b1f4dfe592acefcf69c522562fedb 100644 (file)
@@ -40,7 +40,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
   """
   def __init__(self,editor, name = None,fl = 0):
        self.editor=editor
-       self.editor.affiche_infos("")
+       self.editor.afficheInfos("")
        QDialog.__init__(self,editor)
        self.setupUi(self)
        self.connecterSignaux()
@@ -64,10 +64,10 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
             return
         param= self.dictListe[item.text()]
         self.editor.nodeEnCours.lineEditVal.setText(param)
-        self.editor.nodeEnCours.LEValeurPressed()
+        self.editor.nodeEnCours.LEvaleurPressed()
        
 
-  def CreeParametre(self):
+  def creeParametre(self):
         nom=str(self.lineEditNom.text())
         val=str(self.lineEditVal.text())
         if val == "" or None : return
@@ -77,11 +77,11 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
         else :                                     
            itemAvant=self.editor.tree.selectedItems()[0]
         param=itemAvant.addParameters(True)
-        param.item.set_nom(nom)
+        param.item.setNom(nom)
         #PN self.val permet d entrer du texte
-        param.item.set_valeur(self.val)
-        param.update_node_texte()
-        param.update_node_valid()
+        param.item.setValeur(self.val)
+        param.updateNodeTexte()
+        param.updateNodeValid()
         self.LBParam.addItem((repr(param.item.object)))
         self.dictListe[repr(param.item.object)] = param.item.object.nom
         self.lineEditVal.setText("")
@@ -98,7 +98,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
         exec("from math import *", contexte)
         jdc=self.editor.jdc
         if jdc == None : 
-          self.editor.affiche_infos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red)
+          self.editor.afficheInfos(tr(u"La Creation de parametre n est possible que dans un jeu de donnees"),Qt.red)
           return
 
         for p in jdc.params :
@@ -116,8 +116,8 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
             monTexte="monParam='"+valString+"'"
             self.val="'"+valString+"'"
           except :
-            self.editor.affiche_infos(tr("Valeur incorrecte"),Qt.red)
-        if self.lineEditNom.text()!="" and self.dejaExistant==False : self.CreeParametre()
+            self.editor.afficheInfos(tr("Valeur incorrecte"),Qt.red)
+        if self.lineEditNom.text()!="" and self.dejaExistant==False : self.creeParametre()
 
 
   def lineEditNomReturnPressed(self):
@@ -126,14 +126,14 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam,QDialog):
         if not pattern_name.match(nom) :
            self.lineEditNom.setText("")
            commentaire=nom + tr(" n est pas un identifiant correct\n ")
-           self.editor.affiche_infos(commentaire,Qt.red)
+           self.editor.afficheInfos(commentaire,Qt.red)
         for p in self.editor.jdc.params :
            if p.nom==nom :
              commentaire=nom + tr(" existe deja\n ")
-             self.editor.affiche_infos(commentaire,Qt.red)
+             self.editor.afficheInfos(commentaire,Qt.red)
              return
 
-        if self.lineEditVal.text()!="" : self.CreeParametre()
+        if self.lineEditVal.text()!="" : self.creeParametre()
         self.lineEditVal.setFocus(Qt.OtherFocusReason)
 
 
index a4731129e883054d10c93f8503a097ea494c5ad8..d756cb28cdf3539963f5c0d390cd99a8c882e3be 100644 (file)
@@ -26,7 +26,7 @@ from PyQt5.QtWidgets import QWidget
 
 from .groupe import Groupe
 from desWidgetFact import Ui_WidgetFact
-#from desWidgetFactHorizon import Ui_WidgetFactHorizon
+from desWidgetFactTableau import Ui_WidgetFactTableau
 from Extensions.i18n import tr
 # Import des panels
 
@@ -36,21 +36,23 @@ class MonWidgetFactCommun(Groupe):
   def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
       #print "fact : ",node.item.nom
       Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
-      labeltext,fonte,couleur = self.node.item.GetLabelText()
+      labeltext,fonte,couleur = self.node.item.getLabelText()
       self.GroupBox.setText(tr(labeltext))
       self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse)
       self.parentQt.commandesLayout.insertWidget(insertIn,self)
-      #else :  self.parentQt.commandesLayout.insertWidget(0,self)
       self.doitAfficherOptionnel=False
+      min,max=obj.getMinMax()
+      if max < 2 and  hasattr(self, 'RBPlus') : self.RBPlus.close() 
+      if max > 1 and  hasattr(self, 'RBPlus') : self.RBPlus.clicked.connect(self.ajouteMCParPB)
 
   def enterEvent(self,event):
-      #print "enterEvent ", self.node.item.GetLabelText()[0]
+      #print "enterEvent ", self.node.item.getLabelText()[0]
       self.doitAfficherOptionnel=True
       QWidget.enterEvent(self,event)
       QTimer.singleShot(500, self.delayAffiche)
 
   def leaveEvent(self,event):
-      #print "leaveEvent", self.node.item.GetLabelText()[0]
+      #print "leaveEvent", self.node.item.getLabelText()[0]
       self.doitAfficherOptionnel=False
       QWidget.leaveEvent(self,event)
 
@@ -58,10 +60,22 @@ class MonWidgetFactCommun(Groupe):
       #print "delayAffiche, self.doitAfficherOptionnel = ", self.doitAfficherOptionnel
       if self.doitAfficherOptionnel and self.editor.code != "CARMELCND" :self.afficheOptionnel()
 
+  def ajouteMCParPB(self):
+      texteListeNom="+"+self.obj.nom
+      parentOuAjouter=self.parentQt
+      from .monWidgetBloc import MonWidgetBloc
+      while (parentOuAjouter and isinstance(parentOuAjouter, MonWidgetBloc)) :
+         parentOuAjouter=parentOuAjouter.parentQt
+      parentOuAjouter.ajoutMC(texteListeNom)
+
+
 class MonWidgetFact(Ui_WidgetFact,MonWidgetFactCommun):
-  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=True):
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
       MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
 
-#class MonWidgetFactHorizontal(Ui_WidgetFactHorizon,MonWidgetFactCommun):
-#  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande):
-#      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
+#class MonWidgetFactTableau(Ui_WidgetFactTableau,MonWidgetFactCommun):
+class MonWidgetFactTableau(Ui_WidgetFact,MonWidgetFactCommun):
+  def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=1):
+      MonWidgetFactCommun.__init__(self,node,editor,parentQt, definition,obj,niveau,commande,insertIn)
+      #print ('je passe dans FactTableau')
+      MonWidgetFactTableau.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
index a72be8ee51773a55b90ec5d7b24b130f47526397..17d79b58b44f2fd587d1b2a5334dae81e06f0c84 100644 (file)
@@ -30,8 +30,9 @@ class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe):
   """
   def __init__(self,node,editor,parentQt,definition, obj, niveau,commande,insertIn=-1):
       #print "fact plie : ",node.item.nom
+      node.fenetreAAfficher=self
       Groupe.__init__(self,node,editor,parentQt, definition,obj,niveau,commande)
-      self.groupBox.setText(self.node.item.GetLabelText()[0])
+      self.groupBox.setText(self.node.item.getLabelText()[0])
       self.parentQt.commandesLayout.insertWidget(insertIn,self)
 
   def traiteClicSurLabel(self,texte):
index 837805ba1f34eb819caaa01a84b1d112a9e346da..f1add2f1b6a81905c4f30fe1ae60918ba85eeb97 100644 (file)
@@ -68,7 +68,7 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
           self.bAvant.clicked.connect(self.afficheAvant)
           self.bApres.clicked.connect(self.afficheApres)
       self.LENom.returnPressed.connect(self.nomChange)
-      self.LENomFormule.returnPressed.connect(self.NomFormuleSaisi)
+      self.LENomFormule.returnPressed.connect(self.nomFormuleSaisi)
       self.LENomsArgs.returnPressed.connect(self.argsSaisis)
       self.LECorpsFormule.returnPressed.connect(self.FormuleSaisie)
 
@@ -85,11 +85,11 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
 
 
   def setValeurs(self):
-        self.LENomFormule.setText(self.node.item.get_nom())
-        self.LECorpsFormule.setText(self.node.item.get_corps())
+        self.LENomFormule.setText(self.node.item.getNom())
+        self.LECorpsFormule.setText(self.node.item.getCorps())
         texte_args=""
-        if self.node.item.get_args() != None :
-            for i in self.node.item.get_args() :
+        if self.node.item.getArgs() != None :
+            for i in self.node.item.getArgs() :
                 if texte_args != "" : texte_args = texte_args +","
                 texte_args=texte_args + i
         self.LENomsArgs.setText(texte_args)
@@ -98,7 +98,7 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
   def nomChange(self):
       nom = str(self.LENom.text())
       self.LENomFormule.setText(nom)
-      self.NomFormuleSaisi()
+      self.nomFormuleSaisi()
 
 
   def afficheCatalogue(self):
@@ -116,26 +116,26 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
   def setValide(self):
       if not(hasattr (self,'RBValide')) : return
       icon = QIcon()
-      if self.node.item.object.isvalid() :
+      if self.node.item.object.isValid() :
          icon=QIcon(self.repIcon+"/ast-green-ball.png")
       else :
          icon=QIcon(self.repIcon+"/ast-red-ball.png")
-      if self.node.item.GetIconName() == "ast-yellow-square" :
+      if self.node.item.getIconName() == "ast-yellow-square" :
          icon=QIcon(self.repIcon+"/ast-yel-ball.png")
       self.RBValide.setIcon(icon)
 
 
-  def NomFormuleSaisi(self):
+  def nomFormuleSaisi(self):
       nomFormule = str(self.LENomFormule.text())
       if nomFormule == '' : return
       self.LENom.setText(nomFormule)
-      test,erreur = self.node.item.verif_nom(nomFormule)
+      test,erreur = self.node.item.verifNom(nomFormule)
       if test :
          commentaire=nomFormule+tr(" est un nom valide pour une FORMULE")
-         self.editor.affiche_infos(commentaire)
+         self.editor.afficheInfos(commentaire)
       else :
          commentaire=nomFormule+tr(" n'est pas un nom valide pour une FORMULE")
-         self.editor.affiche_infos(commentaire,Qt.red)
+         self.editor.afficheInfos(commentaire,Qt.red)
          return
       if str(self.LENomsArgs.text()) != "" and  str(self.LECorpsFormule.text())!= "" : self.BOkPressedFormule()
       self.LENomsArgs.setFocus(7)
@@ -143,13 +143,13 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
   def argsSaisis(self):
       arguments = str(self.LENomsArgs.text())
       if arguments == '' : return
-      test,erreur = self.node.item.verif_arguments(arguments)
+      test,erreur = self.node.item.verifArguments(arguments)
       if test:
          commentaire=tr("Argument(s) valide(s) pour une FORMULE")
-         self.editor.affiche_infos(commentaire)
+         self.editor.afficheInfos(commentaire)
       else:
          commentaire=tr("Argument(s) invalide(s) pour une FORMULE")
-         self.editor.affiche_infos(commentaire,Qt.red)
+         self.editor.afficheInfos(commentaire,Qt.red)
       if str(self.LECorpsFormule.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
       self.LECorpsFormule.setFocus(7)
 
@@ -158,50 +158,47 @@ class MonWidgetFormule(QWidget,Ui_WidgetFormule,FacultatifOuOptionnel):
       arguments  = str(self.LENomsArgs.text())
       expression = str(self.LECorpsFormule.text())
       if expression == '' : return
-      test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
+      test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression))
 
       if test:
          commentaire=tr("Corps de FORMULE valide")
-         self.editor.affiche_infos(commentaire)
+         self.editor.afficheInfos(commentaire)
       else:
          commentaire=tr("Corps de FORMULE invalide")
-         self.editor.affiche_infos(commentaire,Qt.red)
+         self.editor.afficheInfos(commentaire,Qt.red)
       if str(self.LENomsArgs.text()) != "" and  str(self.LENomFormule.text())!= "" : self.BOkPressedFormule()
 
   def BOkPressedFormule(self):
       #print dir(self)
-      #if self.parent.modified == 'n' : self.parent.init_modif()
+      #if self.parent.modified == 'n' : self.parent.initModif()
 
       nomFormule = str(self.LENomFormule.text())
-      test,erreur = self.node.item.verif_nom(nomFormule)
+      test,erreur = self.node.item.verifNom(nomFormule)
       if not test :
-         self.editor.affiche_infos(erreur,Qt.red)
+         self.editor.afficheInfos(erreur,Qt.red)
          return
 
       arguments  = str(self.LENomsArgs.text())
-      test,erreur = self.node.item.verif_arguments(arguments)
+      test,erreur = self.node.item.verifArguments(arguments)
       if not test :
-         self.editor.affiche_infos(erreur,Qt.red)
+         self.editor.afficheInfos(erreur,Qt.red)
          return
 
       expression = str(self.LECorpsFormule.text())
-      test,erreur = self.node.item.verif_formule_python((nomFormule,"REEL",arguments,expression))
+      test,erreur = self.node.item.verifFormule_python((nomFormule,"REEL",arguments,expression))
       if not test :
-         self.editor.affiche_infos(erreur,Qt.red)
+         self.editor.afficheInfos(erreur,Qt.red)
          return
 
-      test=self.node.item.object.update_formule_python(formule=(nomFormule,"REEL",arguments,expression))
-      test,erreur = self.node.item.save_formule(nomFormule,"REEL",arguments,expression)
+      test=self.node.item.object.updateFormulePython(formule=(nomFormule,"REEL",arguments,expression))
+      test,erreur = self.node.item.saveFormule(nomFormule,"REEL",arguments,expression)
       if test :
-         #self.node.update_texte()
-         #self.node.update_label()
-         #self.node.update_node()
          self.node.onValid()
          self.node.update_valid()
          commentaire = "Formule saisie"
-         self.editor.affiche_infos(commentaire)
+         self.editor.afficheInfos(commentaire)
       else:
          commentaire ="Formule incorrecte : " + erreur
-         self.editor.affiche_infos(commentaire,Qt.red)
-      self.editor.init_modif()
+         self.editor.afficheInfos(commentaire,Qt.red)
+      self.editor.initModif()
 
index bed6a8307d0899c02b8e3c22f428e541346a0293..0bfc2dd5a6a84c9d244ff983208db86b766babc9 100644 (file)
@@ -38,7 +38,7 @@ class MonWidgetInfo (Ui_WidgetInformative,QWidget):
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         QWidget.__init__(self,None)
         self.setupUi(self)
-        valeur=node.item.get_valeur()
+        valeur=node.item.getValeur()
         self.lineEditVal.setText(str(valeur))
         self.lineEditVal.setReadOnly(True)
         parentQt.commandesLayout.insertWidget(-1,self)
index 847055b087ab28b24be1bcf26a14fa51461d83fc..afb8f74a3c39acf757fe4e799ef46a110869b0fa 100644 (file)
@@ -38,7 +38,30 @@ from Extensions.i18n import tr
 from desWidgetIntoSug        import Ui_WidgetIntoSug 
 from monWidgetPlusieursInto  import MonWidgetPlusieursInto 
 
-class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto):
+class GereAjoutDsPossible:
+  def LEValeurAjouteDsPossible(self):
+       text=str(self.lineEditVal.text())
+       if text == "" : return
+       # il faudrait essauer d en obtenir un reel, un tuple ou ...
+       # si cela est utilise pour autre chose que Telemac
+       # tout devrait etre fait ici
+       if not isinstance(text,str) : 
+          self.lineEditVal.setText("")
+          return
+       if self.node.item.hasIntoSug() : 
+          self.maListeDeValeur=list(self.node.item.getListePossibleAvecSug([]))
+          self.maListeDeValeur.insert(0,text)
+       else :
+         try :
+           self.monSimpDef.intoSug.insert(0,text)
+         except : 
+           self.monSimpDef.intoSug=list(self.monSimpDef.intoSug)
+           self.monSimpDef.intoSug.insert(0,text)
+       # selon si on est une liste ou un combo
+       try : self.ajouteValeurPossible(text)
+       except : self.setValeurs()
+
+class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto,GereAjoutDsPossible):
 # Attention Attention
 # cette wdget ne fonctionne actuellement que pour Telemac
 # on attend du texte . on n essaye pas de transformer 
@@ -48,14 +71,3 @@ class MonWidgetIntoSug (Ui_WidgetIntoSug, MonWidgetPlusieursInto):
         MonWidgetPlusieursInto.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.lineEditVal.returnPressed.connect(self.LEValeurAjouteDsPossible)
 
-  def LEValeurAjouteDsPossible(self):
-       text=str(self.lineEditVal.text())
-       if text == "" : return
-       # il faudrait essauer d en obtenir un reel, un tuple ou ...
-       # si cela est utilise pour autre chose que Telemac
-       if not isinstance(text,str) : 
-          self.lineEditVal.setText("")
-          print ('jkjkl')
-          return
-       self.monSimpDef.intoSug.insert(0,text)
-       self.setValeurs()
index 46650abdbc54d008e0477b62271d05ce46be37eb..0acfb20951765fdc59b242ff31f829e23eb15401 100644 (file)
@@ -52,7 +52,7 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
         self.nomVariables={}
         self.creeColonnes()
         self.connecterSignaux()
-        if self.node.item.get_valeur()== None:  self.initialSsValeur()
+        if self.node.item.getValeur()== None:  self.initialSsValeur()
         else :
            try    : self.initialValeur()
            except : self.initialSsValeur()
@@ -76,7 +76,7 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
   def afficheEntete(self):
       self.objSimp.changeEnteteMatrice()
       self.TBMatrice.clear()
-      if self.node.item.get_valeur()== None:  self.initialSsValeur()
+      if self.node.item.getValeur()== None:  self.initialSsValeur()
       else :
          try    : self.initialValeur()
          except : self.initialSsValeur()
@@ -84,7 +84,7 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
       self.node.item.object.parent.state='changed'
       self.setValide()
       self.parentQt.setValide()
-      self.node.item.jdc.isvalid()
+      self.node.item.jdc.isValid()
 
 
   def itemChanged(self):
@@ -100,20 +100,20 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
       else :
         ok=False
       if ok == False :
-       self.editor.affiche_infos(tr("Entrer un float SVP"),Qt.red)
+       self.editor.afficheInfos(tr("Entrer un float SVP"),Qt.red)
         monItem.setText("")
         return
       if self.monType.valSup != None :
          if val > self.monType.valSup :
-           self.editor.affiche_infos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
+           self.editor.afficheInfos(tr("Entrer un float inferieur a ") + repr(self.monType.valSup),Qt.red)
             monItem.setText("")
             return
       if self.monType.valMin != None :
          if val < self.monType.valMin :
-           self.editor.affiche_infos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
+           self.editor.afficheInfos(tr("Entrer un float superieur a ") + repr(self.monType.valMin),Qt.red)
             monItem.setText("")
             return
-      self.editor.affiche_infos("")
+      self.editor.afficheInfos("")
       if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,))
       self.acceptVal()
 
@@ -140,10 +140,10 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
          self.nbCols=self.monType.nbCols
 
 
-  def  NbDeVariables(self):
+  def  nbDeVariables(self):
        jdc=self.node.item.object.jdc
        etape=self.node.item.object.etape
-       self.listeVariables=jdc.get_variables(etape)
+       self.listeVariables=jdc.getVariables(etape)
        if self.listeVariables == [] :
            QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
            return
@@ -152,10 +152,10 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
        self.nbLigs=len(self.listeVariables)
        self.nbCols=len(self.listeVariables)
 
-  def  NbDeDistributions(self):
+  def  nNbDeDistributions(self):
        jdc=self.node.item.object.jdc
        etape=self.node.item.object.etape
-       self.listeVariables=jdc.get_distributions(etape)
+       self.listeVariables=jdc.getDistributions(etape)
        if self.listeVariables == [] :
            QMessageBox.critical( self, tr("Mauvaise Commande "),tr( "Aucune variable connue"))
            return
@@ -181,7 +181,7 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
        self.TBMatrice.setHorizontalHeaderLabels(header)
 
   def  initialValeur(self):
-      liste=self.node.item.get_valeur()
+      liste=self.node.item.getValeur()
       dejaAffiche=0
       if (len(liste)) != self.nbLigs +1  :
          QMessageBox.critical( self,tr( "Mauvaise dimension de matrice"),tr( "le nombre de ligne n est pas egal a ") + str(self.nbLigs))
@@ -224,4 +224,4 @@ class MonWidgetMatrice (Ui_desWidgetMatrice,Feuille):
               listeCol.append(val)
           liste.append(listeCol)
       # on ajoute l ordre des variables aux valeurs
-      self.node.item.set_valeur(liste)
+      self.node.item.setValeur(liste)
diff --git a/InterfaceQT4/monWidgetNiveauFact.py b/InterfaceQT4/monWidgetNiveauFact.py
new file mode 100644 (file)
index 0000000..236ab67
--- /dev/null
@@ -0,0 +1,180 @@
+# 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
+#
+# Modules Python
+# Modules Eficas
+
+from __future__ import absolute_import
+try :
+   from builtins import str
+except : pass
+
+import types
+
+from desWidgetNiveauFact import Ui_WidgetNiveauFact
+from InterfaceQT4.monWidgetOptionnel import MonWidgetOptionnel
+from InterfaceQT4.groupe import Groupe
+
+from PyQt5.QtWidgets  import  QWidget
+from PyQt5.QtGui  import  QIcon
+
+
+from Extensions.i18n import tr
+import Accas 
+import os
+
+    
+# Import des panels
+
+class MonWidgetNiveauFact(Ui_WidgetNiveauFact,Groupe):
+  """
+  """
+  def __init__(self,node,editor,definition,obj):
+      self.listeAffichageWidget=[]
+      self.listeBoutonAChanger=[]
+      Groupe.__init__(self,node,editor,None,definition,obj,1,self)
+      from InterfaceQT4 import composimp
+      if isinstance(self.node ,composimp.Node):
+         widget=self.node.getPanelGroupe(self,self.maCommande)
+         self.listeBoutonAChanger.append(widget.RBValide)
+      self.afficheOptionnel()
+      self.inhibe=False
+      self.labelDoc.setText(self.node.item.getFr())
+      self.labelNomCommande.setText(self.node.item.getLabelText()[0])
+
+  def reaffiche(self,nodeAVoir=None):
+      self.node.setDeplieChildren()
+      self.node.afficheCeNiveau()
+      self.editor.fenetreCentraleAffichee.labelDoc.setText(self.node.item.getFr())
+      self.editor.fenetreCentraleAffichee.labelNomCommande.setText(self.node.item.getLabelText()[0])
+
+  def getPanel(self):
+  # necessaire pour handleOnItem de browser.py
+  # non appele
+      pass 
+
+  def donnePremier(self):
+      #print "dans donnePremier"
+      QApplication.processEvents()
+      if self.listeAffichageWidget != [] :
+         self.listeAffichageWidget[0].setFocus(7)
+      QApplication.processEvents()
+      #print self.focusWidget()
+
+
+  def focusNextPrevChild(self, next):
+      # 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()
+
+      if f not in self.listeAffichageWidget :
+         i=0
+         while not hasattr (f,'AAfficher') :
+           if f==None :i=-1; break
+           f=f.parentWidget()
+         if hasattr(f,'AAfficher') : f=f.AAfficher
+         if i != -1 : i=self.listeAffichageWidget.index(f)
+      else :i=self.listeAffichageWidget.index(f) 
+      if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: 
+         try :
+           self.listeAffichageWidget[1].setFocus(7)
+           w=self.focusWidget()
+           self.inhibe=1
+           w.focusPreviousChild()
+           self.inhibe=0
+           return True
+         except : pass
+
+      if i==0 and next==False and not self.inhibe: 
+         if hasattr(self.editor.fenetreCentraleAffichee,'scrollArea'):
+            self.editor.fenetreCentraleAffichee.scrollArea.ensureWidgetVisible(self.listeAffichageWidget[-1])
+         self.listeAffichageWidget[-2].setFocus(7)
+         self.inhibe=1
+         w=self.focusWidget()
+         w.focusNextChild()
+         self.inhibe=0
+         return True
+
+      if i==0 and next==True and not self.inhibe:
+         self.listeAffichageWidget[0].setFocus(7)
+         self.inhibe=1
+         w=self.focusWidget()
+         w.focusNextChild()
+         self.inhibe=0
+         return True
+
+      if i>0 and next==False and not self.inhibe:
+         if isinstance(self.listeAffichageWidget[i-1],QRadioButton):
+           self.listeAffichageWidget[i-1].setFocus(7)
+           return True
+      return QWidget.focusNextPrevChild(self, next)
+
+  def etablitOrdre(self):
+      # si on boucle on perd l'ordre
+      i=0
+      while(i +1 < len(self.listeAffichageWidget)):
+         self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+         i=i+1
+
+  def  afficheSuivant(self,f):
+      #print ('ds afficheSuivant')
+      try :
+        i=self.listeAffichageWidget.index(f) 
+        next=i+1
+      except :
+        next=1
+      if (next==len(self.listeAffichageWidget) ): next =0
+      try :
+        self.listeAffichageWidget[next].setFocus(7)
+      except :
+        pass
+
+
+  def afficheOptionnel(self):
+      # N a pas de parentQt. doit donc etre redefini
+      #print ('ds afficheOptionnel')
+      if self.editor.widgetOptionnel!= None :
+        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.vireTous()
+
+      
+      liste,liste_rouge=self.ajouteMCOptionnelDesBlocs()
+      self.monOptionnel.parentCommande=self
+      self.monOptionnel.titre(self.obj.nom)
+      self.monGroupe=self.monOptionnel.afficheOptionnel(liste,liste_rouge,self)
+      
+  def setValide(self):
+     Groupe.setValide(self)
+     for bouton in self.listeBoutonAChanger:
+         couleur=self.node.item.getIconName()
+         monIcone = QIcon(self.repIcon+"/" + couleur + ".png")
+         bouton.setIcon(monIcone)
+
+class MonWidgetNiveauFactTableau(MonWidgetNiveauFact):
+  def __init__(self,node,editor,definition,obj):
+      MonWidgetNiveauFact.__init__(self,node,editor,definition,obj)
+
+
index 1bfbe3bc5a159756499ec373a677f02fefe3138a..904e5841a9f19c780a0f37d74406aeca9ad9923f 100644 (file)
@@ -37,31 +37,39 @@ class  MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
      self.dicoMCWidgetOptionnel={}
      self.parentQt=parentQt
 
-  def afficheOptionnel(self,liste,MC):
+  def afficheOptionnel(self,liste,liste_rouge,MC):
      #print ('afficheOptionnel MonWidgetOptionnel', self,liste,MC)
-     #import traceback
-     #traceback.print_stack()
      self.vireLesAutres(MC)
+   
      if MC.node.item.nom in self.dicoMCWidgetOptionnel :
+        #print (MC.node.item.nom)
         self.dicoMCWidgetOptionnel[MC.node.item.nom].close()
         self.dicoMCWidgetOptionnel[MC.node.item.nom].setParent(None)
         self.dicoMCWidgetOptionnel[MC.node.item.nom].deleteLater()
-     groupe = MonGroupeOptionnel(liste,self,MC)
+        del self.dicoMCWidgetOptionnel[MC.node.item.nom]
+     if liste==[] : return
+     groupe = MonGroupeOptionnel(liste,liste_rouge,self,MC)
      self.groupesOptionnelsLayout.insertWidget(0,groupe)
      self.dicoMCWidgetOptionnel[MC.node.item.nom]=groupe
      return groupe
 
   def vireLesAutres(self,MC):
       #print( "je passe dans vireLesAutres")
-      genea =MC.obj.get_genealogie()
+      genea =MC.obj.getGenealogie()
       #print (genea)
       for k in list(self.dicoMCWidgetOptionnel.keys()):
+          #print (k)
           #if k not in genea :  print ( k)
           if k not in genea :  
              self.dicoMCWidgetOptionnel[k].close()
              del self.dicoMCWidgetOptionnel[k]
       #print( "fin vireLesAutres")
       
+  def vireTous(self):
+      for k in list(self.dicoMCWidgetOptionnel.keys()):
+          self.dicoMCWidgetOptionnel[k].close()
+          del self.dicoMCWidgetOptionnel[k]
+
   def afficheOptionnelVide(self):
       self.GeneaLabel.setText("")
       for k in list(self.dicoMCWidgetOptionnel.keys()):
@@ -69,10 +77,10 @@ class  MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
             del self.dicoMCWidgetOptionnel[k]
 
   def titre(self,MC):
-     if self.parentCommande.node.editor.code in ['Adao','ADAO'] and self.parentCommande.node.editor.closeFrameRechercheCommande==True :
+     if self.parentCommande.node.editor.code in ['Adao','ADAO'] and self.parentCommande.node.editor.maConfiguration.closeFrameRechercheCommande==True :
         self.frameLabelCommande.close()
         return
-     labeltext,fonte,couleur = self.parentCommande.node.item.GetLabelText()
+     labeltext,fonte,couleur = self.parentCommande.node.item.getLabelText()
      l=tr(labeltext)
      li=[]
      while len(l) > 25:
index a63852554322ba9f19904e6cf9dbf764d9b36cad..287e5ee15ce308e624465d07ab29c3e2b9209a1f 100644 (file)
@@ -54,7 +54,7 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
       self.repIcon=self.appliEficas.repIcon
 
       self.setIconePoubelle()
-      if not(self.node.item.object.isvalid()) :
+      if not(self.node.item.object.isValid()) :
          icon=QIcon(self.repIcon+"/ast-red-ball.png")
          self.RBValide.setIcon(icon)
 
@@ -63,7 +63,7 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
       if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
       else : self.bCatalogue.clicked.connect(self.afficheCatalogue)
 
-      self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+      self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
       self.lineEditNom.returnPressed.connect(self.LENomPressed)
       self.bAvant.clicked.connect(self.afficheAvant)
       self.bApres.clicked.connect(self.afficheApres)
@@ -78,10 +78,10 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
       else : self.node.tree.racine.select()
 
   def remplit(self):
-      nom=self.node.item.get_nom()
+      nom=self.node.item.getNom()
       self.lineEditNom.setText(nom)
 
-      valeur=self.node.item.get_valeur()
+      valeur=self.node.item.getValeur()
       if valeur == None : 
          self.lineEditVal.clear()
       elif type(valeur) == list :
@@ -97,17 +97,17 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
   def donnePremier(self):
       self.lineEditVal.setFocus(7)
 
-  def LEValeurPressed(self):
+  def LEvaleurPressed(self):
       if self.verifiePressed() == False :
          QMessageBox.warning( self,tr( "Modification Impossible"),tr( "le parametre n'est pas valide"))
       nom=str(self.lineEditNom.text())
       val=str(self.lineEditVal.text())
-      self.node.item.set_nom(nom)
-      self.node.item.set_valeur(val)
-      self.node.update_texte()
+      self.node.item.setNom(nom)
+      self.node.item.setValeur(val)
+      self.node.updateTexte()
 
   def LENomPressed(self):
-      self.LEValeurPressed()
+      self.LEvaleurPressed()
 
   def verifiePressed(self):
         nomString=str(self.lineEditNom.text())
@@ -119,7 +119,7 @@ class MonWidgetParam(QWidget,Ui_WidgetParam,FacultatifOuOptionnel):
 
         contexte={}
         exec("from math import *", contexte)
-        jdc=self.node.item.get_jdc()
+        jdc=self.node.item.getJdc()
         for p in jdc.params :
            try:
               tp=p.nom+'='+str(repr(p.valeur))
index 311215f982ea084addf82f4d451a517ca4649160..3498fe85e0a3856f36c7d83f002d9adbf244612a 100644 (file)
@@ -39,7 +39,7 @@ from PyQt5.QtWidgets  import  QScrollBar
 class MonWidgetPlusieursASSDIntoOrdonne (MonWidgetPlusieursIntoOrdonne):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
-        self.NumLineEditEnCours=0
+        self.numLineEditEnCours=0
         MonWidgetPlusieursIntoOrdonne.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
        
 
@@ -48,7 +48,7 @@ class MonWidgetPlusieursASSDIntoOrdonne (MonWidgetPlusieursIntoOrdonne):
        for i in self.listeLE: i.close()
        self.listeLE=[]
        self.vScrollBar = self.scrollArea.verticalScrollBar()
-       self.listeAAfficher = self.node.item.get_sd_avant_du_bon_type()
+       self.listeAAfficher = self.node.item.getSdAvantDuBonType()
 
        if len(self.listeAAfficher) == 0 :
           self.ajoutLE(0)
index 67cbf912dff443a9368f6807ca80c7739c71cdd7..45c7a46c25800bd1b48a1ad4c40dee02bd93ea3c 100644 (file)
@@ -35,13 +35,13 @@ from PyQt5.QtCore    import QTimer, QSize, Qt
 # Modules Eficas
 from Extensions.i18n import tr
 
-from .feuille                import Feuille
-from desWidgetPlusieursBase import Ui_WidgetPlusieursBase 
-from .politiquesValidation   import PolitiquePlusieurs
-from .qtSaisie               import SaisieValeur
-from .gereListe              import GereListe
-from .gereListe              import GerePlie
-from .gereListe              import LECustom
+from InterfaceQT4.feuille                import Feuille
+from desWidgetPlusieursBase        import Ui_WidgetPlusieursBase 
+from InterfaceQT4.politiquesValidation   import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie               import SaisieValeur
+from InterfaceQT4.gereListe              import GereListe
+from InterfaceQT4.gereListe              import GerePlie
+from InterfaceQT4.gereListe              import LECustom
 
 dicoLongueur={2:95,3:125,4:154,5:183,6:210,float('inf'):210}
 hauteurMax=253
@@ -54,7 +54,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
         self.nomLine="lineEditVal"
         self.inInit=True
         self.indexDernierLabel=0
-        self.NumLineEditEnCours=0
+        self.numLineEditEnCours=0
         self.listeAffichageWidget=[]
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         GereListe.__init__(self)
@@ -82,7 +82,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
         self.RBVoisListe.setIcon(icon)
 
 
-        self.listeValeursCourantes=self.node.item.GetListeValeurs()
+        self.listeValeursCourantes=self.node.item.getListeValeurs()
         if self.monSimpDef.max != "**"  and self.monSimpDef.max < 7: 
            hauteurMax=dicoLongueur[self.monSimpDef.max]
         else :
@@ -95,6 +95,8 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
         self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
         self.AAfficher=self.lineEditVal1
         self.inInit=False
+        # PNPN a completer __ si tuple le type des tuples sinon le tuple
+        self.monCommentaireLabel.setText(self.finCommentaireListe())
 
 
   def setValeurs(self):
@@ -109,10 +111,10 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
            self.ajoutLineEdit()
        QApplication.processEvents()
        self.scrollArea.ensureWidgetVisible(self.lineEditVal1)
-       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
        index=1
        for valeur in self.listeValeursCourantes :
-           val=self.politique.GetValeurTexte(valeur)
+           val=self.politique.getValeurTexte(valeur)
            nomLineEdit="lineEditVal"+str(index)
            if hasattr(self,nomLineEdit) : 
               courant=getattr(self,nomLineEdit)
@@ -149,7 +151,6 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
       # deux lignes pour que le ensureVisible fonctionne
       self.estVisible=nouveauLE
       if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
-      #if donneLeFocus==True : nouveauLE.setFocus()
 
   def etablitOrdre(self):
       i=0
@@ -176,12 +177,12 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
         if liste ==[]    : return
         listeVal=[]
         for valeur in self.listeValeursCourantes : listeVal.append(valeur)
-        validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
+        validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
         if (comm2 != "" and comm != None) : return comm2
         if validite : 
            self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
            if len(self.listeValeursCourantes) > self.monSimpDef.min :
-              self.node.item.set_valeur(self.listeValeursCourantes)
+              self.node.item.setValeur(self.listeValeursCourantes)
               self.reaffiche()
            return None
         else :
@@ -191,28 +192,48 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
       # A priori, on ne fait rien
       pass
 
-  def ajoutNValeur(self,liste) :
-      for val in liste :
-         i=1
-         ajoute=False
-         while i <  self.indexDernierLabel+1:
-            nomLineEdit="lineEditVal"+str(i)
-            courant=getattr(self,nomLineEdit)
-            valeur=courant.text()
-            if valeur == None or valeur == "" :
-              ajoute=True
-              courant.setText(str(val))
-              commentaire=self.ajout1Valeur(val)
-              if (commentaire != None ):
-                 self.editor.affiche_infos(commentaire,Qt.red)
-                 courant.setText("")
-              break
-            else : 
-              i=i+1
-         if ajoute : continue
-         self.ajoutLineEdit(valeur=str(val))
-         self.changeValeur()
                 
+  def ajoutNValeur(self,liste):
+  #----------------------------
+  # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+  # car alors le temps de verification devient prohibitif  reconstructu=ion et verification a 
+  # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+           
+        listeFormatee=list(liste)
+
+        min,max=self.node.item.getMinMax()
+        if self.objSimp.valeur == None : listeComplete=listeFormatee
+        else : listeComplete =self.objSimp.valeur + listeFormatee
+
+        if len(listeComplete) > max : 
+           texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+           self.editor.afficheInfos(texte,Qt.red)
+           return
+
+        validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+        if not validite : 
+           self.editor.afficheInfos(comm2,Qt.red)
+           return
+
+       
+        # on calcule le dernier lineedit rempli avant de changer la valeur
+        if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+        else : indexDernierRempli=0
+
+        self.politique.recordValeur(listeComplete)
+
+        indexDernierRempli=0
+        while ( indexDernierRempli < len(liste) ) :
+         texte=liste[indexDernierRempli]
+         if indexDernierRempli < self.indexDernierLabel:
+            nomLineEdit="lineEditVal"+str(indexDernierRempli+1)
+            courant=getattr(self,nomLineEdit)
+            courant.setText(str(texte))
+         else : 
+            self.ajoutLineEdit(texte)
+         indexDernierRempli = indexDernierRempli + 1
+        
 
   def changeValeur(self,changeDePlace=True,oblige=False):
       donneFocus=None
@@ -245,13 +266,13 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
           if valeur != None and valeur != "" : 
              commentaire=self.ajout1Valeur(valeur)
              if (commentaire != None ):
-                 self.editor.affiche_infos(commentaire,Qt.red)
+                 self.editor.afficheInfos(commentaire,Qt.red)
                  courant.setText("")
                  donneFocus=courant
                  self.reaffiche()
                  return
              else :
-                 self.editor.affiche_infos("")
+                 self.editor.afficheInfos("")
           elif donneFocus==None : donneFocus=courant
 
       nomDernierLineEdit="lineEditVal"+str(self.indexDernierLabel)
@@ -264,14 +285,14 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie)
          elif self.indexDernierLabel < self.monSimpDef.max  : 
            self.ajoutLineEdit()
       if self.listeValeursCourantes == [] : return
-      min,max = self.node.item.GetMinMax()
+      min,max = self.node.item.getMinMax()
       if len(self.listeValeursCourantes) < self.monSimpDef.min  :
-        self.editor.affiche_infos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
+        self.editor.afficheInfos(tr('nb min de valeurs : ')+str( self.monSimpDef.min))
       if len(self.listeValeursCourantes) < min and oblige==True: return
       if len(self.listeValeursCourantes) > max : return
-      self.node.item.set_valeur(self.listeValeursCourantes)
+      self.node.item.setValeur(self.listeValeursCourantes)
       if len(self.listeValeursCourantes) == self.monSimpDef.max  :
-        self.editor.affiche_infos(tr('nb max de valeurs atteint'))
+        self.editor.afficheInfos(tr('nb max de valeurs atteint'))
       self.setValide()
       self.reaffiche()
 
index 6fe03833d8593c8b51f64fd718f8acfd32498c46..ddbc9894cfcc081695ab61e3d363f23dd8934a57 100644 (file)
@@ -50,7 +50,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
         self.alpha=0
         self.listeCB=[]
         self.listeCbRouge=[]
-        self.listeValeursCourantes=node.item.GetListeValeurs()
+        self.listeValeursCourantes=node.item.getListeValeurs()
         if self.listeValeursCourantes == None : self.listeValeursCourantes=[]
 
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
@@ -86,13 +86,14 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
 
 
   def changeTout(self,int):
+       #print ('changeTout')
        if self.inhibe : return
        self.inhibe=True
        if not(self.CBCheck.isChecked()) : 
-          min,max = self.node.item.GetMinMax()
+          min,max = self.node.item.getMinMax()
           if max < len(self.listeAAfficher) :
              commentaire=tr('impossible de tout selectionner : max =')+str(max)
-             self.editor.affiche_infos(commentaire,Qt.red)
+             self.editor.afficheInfos(commentaire,Qt.red)
              self.inhibe=False
              return
           for i in range(len(self.listeAAfficher)):
@@ -110,38 +111,39 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
        self.changeValeur()
 
   def setValeurs(self):
-       self.listeValeursCourantes =self.node.item.get_valeur()
+       #print ('setValeurs')
+       self.listeValeursCourantes =self.node.item.getValeur()
        if self.listeValeursCourantes ==  None : self.listeValeursCourantes=[]
-       #print "ds set Valeur", self.listeValeursCourantes, self.node.item.get_valeur()
+       #print "ds set Valeur", self.listeValeursCourantes, self.node.item.getValeur()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
        self.vScrollBar = self.scrollArea.verticalScrollBar()
 
        if hasattr(self.node.item.definition.validators,'set_MCSimp'):
             obj=self.node.item.getObject()
             self.node.item.definition.validators.set_MCSimp(obj)
-            if self.node.item.isvalid() == 0 :
+            if self.node.item.isValid() == 0 :
                liste=[]
                for item in self.listeValeursCourantes:
-                   if self.node.item.definition.validators.verif_item(item)==1:
+                   if self.node.item.definition.validators.verifItem(item)==1:
                       liste.append(item)
-               self.listeAAfficher=self.node.item.get_liste_possible(liste)
+               self.listeAAfficher=self.node.item.getListePossible(liste)
             else: 
-               self.listeAAfficher=self.node.item.get_liste_possible([])
+               self.listeAAfficher=self.node.item.getListePossible([])
        else :
-               self.listeAAfficher=self.node.item.get_liste_possible([])
+               self.listeAAfficher=self.node.item.getListePossible([])
 
-       if self.node.item.has_intoSug() : self.listeAAfficher=self.node.item.get_liste_possible_avecSug([])
+       if self.node.item.hasIntoSug() : self.listeAAfficher=self.node.item.getListePossibleAvecSug([])
                
 
-       if self.objSimp.wait_assd() : 
-          self.listeAAfficher=self.node.item.get_sd_avant_du_bon_type()
+       if self.objSimp.waitAssd() : 
+          self.listeAAfficher=self.node.item.getSdAvantDuBonType()
        if self.listeAAfficher== None or self.listeAAfficher==[] : self.listeAAfficher=[]
 
        #if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
        #else : self.setMinimumHeight(len(self.listeAAfficher)*30)
 
        self.PourEtreCoche=[]
-       if self.objSimp.wait_assd() : 
+       if self.objSimp.waitAssd() : 
           for concept in self.listeValeursCourantes: self.PourEtreCoche.append(concept.nom)
        else :
           for val in self.listeValeursCourantes: self.PourEtreCoche.append(val)
@@ -166,6 +168,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
        
 
   def ajoutCB(self,index,valeur=None):
+      #print ('ajoutCB')
       nomCB="lineEditVal"+str(index)
       if hasattr(self,nomCB) : return
       nouveauCB = QCheckBox(self.scrollArea)
@@ -181,13 +184,14 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
 
 
   def ajout1Valeur(self,valeur=None):
+        #print ('ajout1Valeur')
         if valeur == None : return
         liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
         if validite == 0 : return
         if liste ==[]    : return
         listeVal=[]
         for valeur in self.listeValeursCourantes : listeVal.append(valeur)
-        validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,-1,listeVal)
+        validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(liste,-1,listeVal)
         if (comm2 != "" and comm != None) : return comm2
         if validite : 
            self.listeValeursCourantes=self.listeValeursCourantes+listeRetour
@@ -198,6 +202,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
 
 
   def changeValeur(self):
+      #print ('changeValeur')
       if self.inhibe == True: return
       if hasattr(self,'LEFiltre') :self.noircirResultatFiltre()
       self.listeValeursCourantesAvant=self.listeValeursCourantes
@@ -211,25 +216,26 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
           if valeur != None and valeur != "" : 
              commentaire=self.ajout1Valeur(valeur)
              if (commentaire != None ): 
-                 self.editor.affiche_infos(commentaire,Qt.red)
+                 self.editor.afficheInfos(commentaire,Qt.red)
                  self.listeValeursCourantesAvant=self.listeValeursCourantes
                  self.setValeurs()
 
-      min,max = self.node.item.GetMinMax()
+      min,max = self.node.item.getMinMax()
       if len(self.listeValeursCourantes) < min : 
-         self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+         self.editor.afficheInfos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
       elif len(self.listeValeursCourantes) > max : 
-         self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+         self.editor.afficheInfos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
 
-      if self.listeValeursCourantes== [] :  self.node.item.set_valeur([])
-      else : self.node.item.set_valeur(self.listeValeursCourantes)
+      if self.listeValeursCourantes== [] :  self.node.item.setValeur([])
+      else : self.node.item.setValeur(self.listeValeursCourantes)
 
       # Exception pour PSEN
-      if min==0 and self.listeValeursCourantes== []: self.node.item.set_valeur([])
+      if min==0 and self.listeValeursCourantes== []: self.node.item.setValeur([])
       self.setValide()
 
 
   def prepareListeResultatFiltre(self):
+      #print ('prepareListeResultatFiltre')
       filtre=str(self.LEFiltre.text())
       for cb in self.listeCB:
           texte=cb.text() 
@@ -242,10 +248,12 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille,GerePlie,GereListe)
             self.listeCbRouge.append(cb)
 
   def prepareListeResultat(self):
+      #print ('prepareListeResultat')
       self.clearAll()
       self.setValeurs()
 
   def clearAll(self):
+      #print ('clearAll')
       for cb in self.listeCB :
          cb.setText("")
 
index 584a93d2be428f799358975fa08df4f3ed9008a4..d7f78f30e7e8e06e75e9109b39b659b717678103 100644 (file)
@@ -56,7 +56,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
         GereListe.__init__(self)
         #self.finCommentaireListe()
         self.gereIconePlier()
-        self.listeValeursCourantes=self.node.item.GetListeValeurs()
+        self.listeValeursCourantes=self.node.item.getListeValeurs()
         try :
           self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
         except :
@@ -91,19 +91,19 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
        for i in self.listeLE: i.close()
        self.listeLE=[]
        self.vScrollBar = self.scrollArea.verticalScrollBar()
-       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
        if hasattr(self.node.item.definition.validators,'set_MCSimp'):
             obj=self.node.item.getObject()
             self.node.item.definition.validators.set_MCSimp(obj)
-            if self.node.item.isvalid() == 0 :
+            if self.node.item.isValid() == 0 :
                liste=[]
                for item in self.listeValeursCourantes:
-                   if self.node.item.definition.validators.verif_item(item)==1: liste.append(item)
-               self.listeAAfficher=self.node.item.get_liste_possible(liste)
+                   if self.node.item.definition.validators.verifItem(item)==1: liste.append(item)
+               self.listeAAfficher=self.node.item.getListePossible(liste)
             else: 
-               self.listeAAfficher=self.node.item.get_liste_possible([])
+               self.listeAAfficher=self.node.item.getListePossible([])
        else :
-            self.listeAAfficher=self.node.item.get_liste_possible(self.listeValeursCourantes)
+            self.listeAAfficher=self.node.item.getListePossible(self.listeValeursCourantes)
 
        if self.listeAAfficher==[] : 
           self.ajoutLE(0)
@@ -124,14 +124,13 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
        
       
   def setValeurs(self,first=True):
-       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
        if first : 
           if self.monSimpDef.max == "**" or self.monSimpDef.max == float('inf') : aConstruire=7
           else : aConstruire=self.monSimpDef.max
           if len(self.listeValeursCourantes) > aConstruire : aConstruire=len(self.listeValeursCourantes)
           self.indexDernierLabel = aConstruire
           for i in range(1,aConstruire+1): self.ajoutLEResultat(i)
-       else : self.indexDernierLabel= len(self.listeValeursCourantes)
        index=1
        for val in self.listeValeursCourantes :
           nomLE="LEResultat"+str(index)
@@ -139,6 +138,12 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
           courant.setText(str(val))
           courant.setReadOnly(True)
           index=index+1
+       while (index < self.indexDernierLabel) :
+          nomLE="LEResultat"+str(index)
+          courant=getattr(self,nomLE)
+          courant.setText("")
+          courant.setReadOnly(True)
+          index=index+1
        #self.prepareListeResultat()
 
   def moinsPushed(self):
@@ -212,7 +217,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
       setattr(self,nomLE,nouveauLE)
       
   def ajoutLineEdit(self):
-      #print ('ajoutLineEdit')
+      print ('ajoutLineEdit')
       self.indexDernierLabel=self.indexDernierLabel+1
       self.ajoutLEResultat (self.indexDernierLabel)
 
@@ -224,13 +229,13 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
         if liste ==[]    : return
         listeVal=[]
 
-        self.listeValeursCourantes=self.node.item.GetListeValeurs()
-        min,max = self.node.item.GetMinMax()
+        self.listeValeursCourantes=self.node.item.getListeValeurs()
+        min,max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) +1 > max : 
-           self.editor.affiche_infos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
+           self.editor.afficheInfos(tr("Nombre maximal de valeurs : ") + str(max),Qt.red)
            return
         else :
-           self.editor.affiche_infos("")
+           self.editor.afficheInfos("")
 
         affiche=False
         for i in range(1,self.indexDernierLabel+1):
@@ -263,23 +268,23 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
            liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
            listeVal.append(str(valeur))
 
-        validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeVal,-1,[])
+        validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeVal,-1,[])
         
 
-        self.listeValeursCourantes=self.node.item.GetListeValeurs()
-        min,max = self.node.item.GetMinMax()
+        self.listeValeursCourantes=self.node.item.getListeValeurs()
+        min,max = self.node.item.getMinMax()
         if len(self.listeValeursCourantes) < min : 
-           self.editor.affiche_infos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
+           self.editor.afficheInfos(tr("Nombre minimal de valeurs : ") + str(min),Qt.red)
         else :
-           self.editor.affiche_infos("")
+           self.editor.afficheInfos("")
     
         if len(listeRetour) == 0 :
-           self.node.item.set_valeur(None)
+           self.node.item.setValeur(None)
         elif validite :
-           self.node.item.set_valeur(listeRetour)
+           self.node.item.setValeur(listeRetour)
         else :
            commentaire=comm+" "+comm2
-           self.editor.affiche_infos(commentaire,Qt.red)
+           self.editor.afficheInfos(commentaire,Qt.red)
         self.setValide()
 #
   def rendVisibleLigneRE(self):
@@ -287,5 +292,8 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
       self.estVisibleRE.setFocus()
       self.scrollArea.ensureWidgetVisible(self.estVisibleRE,0,0)
 #
+  def rendVisibleLigne(self):
+      self.estVisibleRE=self.estVisible
+      #rendVisibleLigneRE()
 
 
index 295a025b1b9baf5423b226ea8d54b362e9505ed5..389e5111afdbf2d814b7909d2b41dae8ac72469e 100644 (file)
@@ -48,7 +48,7 @@ class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille):
         self.parentQt.commandesLayout.insertWidget(-1,self)
         self.AAfficher=self.lineEditVal
         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
-        if self.node.item.has_into() : 
+        if self.node.item.hasInto() : 
            self.lineEditVal.setReadOnly(True)
            self.lineEditVal.setStyleSheet("background:rgb(235,235,235);\n")
            self.lineEditVal.setToolTip("Ensemble discret de valeurs possibles, pas de Saisie Manuelle")
@@ -62,7 +62,7 @@ class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille):
 
 
   def setValeurs(self):
-       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
        if self.listeValeursCourantes != []  :  self.lineEditVal.setText(str(self.listeValeursCourantes))
        else : self.lineEditVal.setText("")
        self.politique=PolitiquePlusieurs(self.node,self.editor)
@@ -74,11 +74,11 @@ class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille):
 
   def valeurEntree(self):
       valeurTexte=self.lineEditVal.text()
-      print (valeurTexte[0])
-      print (valeurTexte[-1])
+      #print (valeurTexte[0])
+      #print (valeurTexte[-1])
       if valeurTexte[0] == '[' or valeurTexte[0] == '('   : valeurTexte = valeurTexte[1:]
       if valeurTexte[-1] == ']' or valeurTexte[-1] == ')' : valeurTexte = valeurTexte[:-1]
-      print (valeurTexte)
+      #print (valeurTexte)
       listeValeursBrutes=valeurTexte.split(',')
       if listeValeursBrutes == [] or listeValeursBrutes == None : 
          self.lineEditVal.setText(str(self.listeValeursCourantes))
@@ -86,20 +86,20 @@ class MonWidgetPlusieursPlie (Ui_WidgetPlusieursPlie,Feuille):
       listeValeur=[]
       for v in listeValeursBrutes: 
           if v == None or pattern_blanc.match(v) : 
-             self.editor.affiche_infos(str(listeValeur)+'   Valeurs saisies incorrectes',Qt.red)
+             self.editor.afficheInfos(str(listeValeur)+'   Valeurs saisies incorrectes',Qt.red)
              return
           liste,validite=SaisieValeur.TraiteLEValeur(self,str(v))
           if not validite : 
-             self.editor.affiche_infos(str(listeValeur) +'   Valeurs saisies incorrectes',Qt.red)
+             self.editor.afficheInfos(str(listeValeur) +'   Valeurs saisies incorrectes',Qt.red)
              return
           listeValeur.append(liste[0])
-      validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeValeur,-1,[])
+      validite,comm,comm2,listeRetour=self.politique.ajoutValeurs(listeValeur,-1,[])
       if validite : 
-         self.node.item.set_valeur(listeValeur)
-         self.node.item.isvalid()
+         self.node.item.setValeur(listeValeur)
+         self.node.item.isValid()
          self.setValeurs()
       else :
-         self.editor.affiche_infos(str(listeValeur) + '   ' +comm,Qt.red)
+         self.editor.afficheInfos(str(listeValeur) + '   ' +comm,Qt.red)
          self.lineEditVal.setText('')
        
 class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie):
@@ -109,7 +109,7 @@ class MonWidgetPlusieursPlieASSD (MonWidgetPlusieursPlie):
         self.lineEditVal.setReadOnly(True)
 
   def setValeurs(self):
-       self.listeValeursCourantes=self.node.item.GetListeValeurs()
+       self.listeValeursCourantes=self.node.item.getListeValeurs()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
        if self.listeValeursCourantes == []  :  self.lineEditVal.setText(""); return
        txt="["
index defe4c4c1d71a9037de96640824252d736d237ae..531f0a4357a25438ff37f57b3d5da412a08f0956 100644 (file)
@@ -29,29 +29,40 @@ import types,os,sys
 
 from six.moves import range
 from PyQt5.QtWidgets  import QFrame,QApplication, QFrame, QWidget
-from PyQt5.QtGui  import QIcon
-from PyQt5.QtCore  import QSize, Qt, QTimer
+from PyQt5.QtGui      import QIcon
+from PyQt5.QtCore     import QSize, Qt, QTimer
 
 from Extensions.i18n import tr
 
 
-from .feuille               import Feuille
-from .politiquesValidation  import PolitiquePlusieurs
-from .qtSaisie              import SaisieValeur
-from .gereListe             import GereListe
-from .gereListe             import LECustom
-from Tuple2                import Ui_Tuple2
-from Tuple3                import Ui_Tuple3
+from InterfaceQT4.feuille               import Feuille
+from InterfaceQT4.politiquesValidation  import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie              import SaisieValeur
+from InterfaceQT4.gereListe             import GereListe
+from InterfaceQT4.gereListe             import LECustom
+from Tuple2                             import Ui_Tuple2
+from Tuple3                             import Ui_Tuple3
+from Tuple4                             import Ui_Tuple4
+from Tuple5                             import Ui_Tuple5
+from Tuple6                             import Ui_Tuple6
+from Tuple7                             import Ui_Tuple7
+from Tuple8                             import Ui_Tuple8
+from Tuple9                             import Ui_Tuple9
+from Tuple10                            import Ui_Tuple10
 
 
+#--------------------------
 class TupleCustom(object) :
+#--------------------------
+
   def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------------------------------------
       QWidget.__init__(self,parent)
       self.setupUi(self)
       self.tailleTuple=tailleTuple
       self.parent=parent
       self.parentQt=parentQt
-      self.valeur=None
+      self.valeur=[]
       self.index=index
       self.inFocusOutEvent=False
 
@@ -64,11 +75,13 @@ class TupleCustom(object) :
          courant.returnPressed.connect(self.valueChange)
          courant.numDsLaListe = i+1
          courant.tupleCustomParent=self
+         courant.parentTuple = self
 
 
   def valueChange(self):
+  #----------------------
+
       listeVal=[]
-    
       for i in range(self.tailleTuple):
          nomLE="lineEditVal_"+str(i+1)
          courant=getattr(self,nomLE)
@@ -77,11 +90,12 @@ class TupleCustom(object) :
          if str(val)=="" or val==None : 
             if not self.inFocusOutEvent : courant.setFocus()
             return
+
          try :
              valeur=eval(val,{})
          except :
            try :
-             d=self.parentQt.objSimp.jdc.get_contexte_avant(self.parentQt.objSimp. etape)
+             d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
              valeur=eval(val,d)
            except :
              valeur=val
@@ -91,6 +105,8 @@ class TupleCustom(object) :
 
 
   def setValeur(self,value):
+  #----------------------
+
       listeVal=[]
       valeurNulle=True
       for i in range(self.tailleTuple):
@@ -110,7 +126,7 @@ class TupleCustom(object) :
            valeur=eval(val,{})
          except :
            try :
-             d=self.parentQt.objSimp.jdc.get_contexte_avant(self.parentQt.objSimp. etape)
+             d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
              valeur=eval(val,d)
            except :
              valeur=val
@@ -119,15 +135,27 @@ class TupleCustom(object) :
       else                    : self.valeur=listeVal
 
   def getValeur(self):
+  #----------------------
+      self.valeur=[]
+      vide=True
+      for i in range(self.tailleTuple):
+         nomLE="lineEditVal_"+str(i+1)
+         courant=getattr(self,nomLE)
+         self.valeur.append(courant.valeur)
+         if courant.valeur!= None : vide = False 
+      if vide : self.valeur=[]
       return self.valeur
 
   def text(self):
+  #--------------
       return self.valeur
 
   def setText(self,value):
+  #-----------------------
       self.setValeur(value)
 
   def clean(self):
+  #-------------------
       self.valeur=None
       for i in range(self.tailleTuple):
          nomLE="lineEditVal_"+str(i+1)
@@ -135,24 +163,93 @@ class TupleCustom(object) :
          courant.setText("")
 
   def finCommentaire(self):
+  #-------------------
         return self.finCommentaireListe()
 
 
+#-------------------------------------------------
 class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom):
+#-------------------------------------------------
   def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
       TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+      if self.parentQt.editor.maConfiguration.closeParenthese :
+           self.label_5.close()
+           self.label_7.close()
 
+
+#-------------------------------------------------
 class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom):
+#-------------------------------------------------
   def __init__(self,tailleTuple,parent,parentQt,index):
-      TupleCustom. __init__(self,tailleTuple,parent,parentQt,index)
-      
-# ---------------------------- #
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+      if self.parentQt.editor.maConfiguration.closeParenthese :
+           self.label_5.close()
+           self.label_7.close()
 
 
+
+
+
+# -------------------------------------------- #
 class MonWidgetPlusieursTuple(Feuille,GereListe):
+# -------------------------------------------- #
+
+  def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande):
+  #-----------------------------------------------------
 
-  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         self.indexDernierLabel=0
+        self.numLineEditEnCours=0
         self.nomLine="TupleVal"
         self.listeAffichageWidget=[]
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
@@ -160,6 +257,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
         self.finCommentaireListe()
         self.politique=PolitiquePlusieurs(self.node,self.editor)
         self.parentQt.commandesLayout.insertWidget(-1,self)
+
         if sys.platform[0:5]!="linux":
           repIcon=self.node.editor.appliEficas.repIcon
           fichier=os.path.join(repIcon, 'arrow_up.png')
@@ -174,27 +272,38 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
           self.BSelectFichier.setIcon(icon3)
           self.BSelectFichier.setIconSize(QSize(32, 32))
         self.BSelectFichier.clicked.connect(self.selectInFile)
-          
-        
+
 
 
   def ajoutLineEdit(self,valeur=None,inInit=False):
+  #------------------------------------------------
       self.indexDernierLabel=self.indexDernierLabel+1
       nomLineEdit=self.nomLine+str(self.indexDernierLabel)
       if hasattr(self,nomLineEdit) :
          self.indexDernierLabel=self.indexDernierLabel-1
          return
 
-      if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
-      else                   : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+      nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+      laClasseDuTuple=globals()[nomCustomTuple]
+      nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+      #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+      #else                   : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
                  
       self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
       setattr(self,nomLineEdit,nouveauLE)
       if valeur != None : nouveauLE.setValeur(valeur)
 
-      self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
-      self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
-      if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+      for i in range(self.nbValeurs) :
+          num=i+1
+          nomLineEdit='lineEditVal_'+str(num)
+          lineEditVal=getattr(nouveauLE,nomLineEdit)
+          self.listeAffichageWidget.append(lineEditVal)
+      #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
+      #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
+      #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+
       self.etablitOrdre()
 
       # deux lignes pour que le ensureVisible fonctionne
@@ -202,6 +311,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
       if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
 
   def etablitOrdre(self):
+  # ---------------------
       i=0
       while(i +1 < len(self.listeAffichageWidget)):
          self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
@@ -210,10 +320,11 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
 
 
   def setValeurs(self):
-       self.RBListePush()
-       valeurs=self.node.item.get_valeur()
-       min,max=self.node.item.GetMinMax()
-       if max == "**" or max > 5 : aCreer=5
+  # ---------------------
+       if self.editor.code == 'PSEN' : self.RBListePush()
+       valeurs=self.node.item.getValeur()
+       min,max=self.node.item.getMinMax()
+       if max == "**" or max > 8 : aCreer= 8
        else : aCreer=max 
 
        if valeurs == () or valeurs == None :
@@ -226,36 +337,41 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
        for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True)
 
   def rendVisibleLigne(self):
+  # -------------------------
       QApplication.processEvents()
       self.estVisible.setFocus(True)
       self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
 
    
   def changeValeur(self,changeDePlace=False,oblige=True):
+  # -----------------------------------------------------
       #Pour compatibilite signature
+
       aLeFocus=self.focusWidget()
       listeComplete=[]
-
       libre=False
+      #print (self.indexDernierLabel)
       for i in range(self.indexDernierLabel) :
           nom=self.nomLine+str(i+1)
           courant=getattr(self,nom)
           valeurTuple=courant.valeur
-          if valeurTuple == None or valeurTuple== "": 
+          #print (courant, i, valeurTuple)
+          if valeurTuple == None or valeurTuple== "" or valeurTuple==[]: 
              libre=True
              continue
-          validite,comm,comm2,listeRetour= self.politique.AjoutTuple(valeurTuple,listeComplete)
+          validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete)
           if not validite:
              if comm2 != '' : comm += " " + comm2
-             self.editor.affiche_infos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+             self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
              return
           listeComplete.append(tuple(courant.valeur))
+      #print ('listeComplete', listeComplete)
       if listeComplete == [] : listeComplete=None
-      self.node.item.set_valeur(listeComplete)
+      self.node.item.setValeur(listeComplete)
 
       if changeDePlace : return
-      min,max=self.node.item.GetMinMax()
-      if self.indexDernierLabel == max  : self.editor.affiche_infos(tr('Nb maximum de valeurs atteint'))
+      min,max=self.node.item.getMinMax()
+      if self.indexDernierLabel == max  : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint'))
       if self.indexDernierLabel < max and libre==False :
           self.ajoutLineEdit()
           self.listeAffichageWidget[-2].setFocus(True)
@@ -269,95 +385,139 @@ class MonWidgetPlusieursTuple(Feuille,GereListe):
            pass
           
   def ajoutNValeur(self,liste):
+  #----------------------------
+  # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+  # car alors le temps de verification devient prohibitif  reconstructu=ion et verification a 
+  # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
         if len(liste)%self.nbValeurs != 0 :
            texte="Nombre incorrect de valeurs"
-           self.editor.affiche_infos(tr(texte),Qt.red)
+           self.editor.afficheInfos(tr(texte),Qt.red)
+           return
+
         i=0
-        min,max=self.node.item.GetMinMax()
-        if self.objSimp.valeur == None : l = len(liste) and self.objSimp.valeur
-        else : l = len(liste)+len(self.objSimp.valeur)
-        if l > max : 
+        longueur=len(liste)//self.nbValeurs
+        increment=self.nbValeurs
+        listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)]
+        listeFormatee=tuple(listeFormatee)
+
+        min,max=self.node.item.getMinMax()
+        if self.objSimp.valeur == None : listeComplete=listeFormatee
+        else : listeComplete =self.objSimp.valeur + listeFormatee
+
+        if len(listeComplete) > max : 
            texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
-           self.editor.affiche_infos(texte,Qt.red)
+           self.editor.afficheInfos(texte,Qt.red)
+           return
+
+        validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+        if not validite : 
+           self.editor.afficheInfos(comm+comm2,Qt.red)
            return
+
+        # on calcule le dernier lineedit rempli avant de changer la valeur
+        if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+        else : indexDernierRempli=0
+
+        self.politique.recordValeur(listeComplete)
+
         while ( i < len(liste) ) :
-            if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
-            else : indexDernierRempli=0
             try :
               t=tuple(liste[i:i+self.nbValeurs])
-              i=i+self.nbValeurs
             except:
               t=tuple(liste[i:len(liste)])
+            i=i+self.nbValeurs
             if indexDernierRempli < self.indexDernierLabel:
-               nomLineEdit=self.nomLine+str(indexDernierRempli+1)
-               LEARemplir=getattr(self,nomLineEdit) 
-               LEARemplir.lineEditVal_1.setText(str(t[0]))
-               LEARemplir.lineEditVal_2.setText(str(t[1]))
-               if self.nbValeurs== 3 : LEARemplir.lineEditVal_3.setText(str(t[2]))
-               LEARemplir.valueChange()
+
+               nomLEARemplir=self.nomLine+str(indexDernierRempli+1)
+               LEARemplir=getattr(self,nomLEARemplir) 
+               for n in range(self.nbValeurs) :
+                  nomLineEdit='lineEditVal_'+str(n+1)
+                  lineEditVal=getattr(LEARemplir,nomLineEdit)
+                  lineEditVal.setText(str(t[n]))
             else : 
-               self.ajoutLineEdit(t,False)
+               # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge
+               self.indexDernierLabel=self.indexDernierLabel+1
                nomLineEdit=self.nomLine+str(self.indexDernierLabel)
-               LEARemplir=getattr(self,nomLineEdit) 
-               LEARemplir.valueChange()
+
+               nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+               laClasseDuTuple=globals()[nomCustomTuple]
+               nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+                 
+               self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+               setattr(self,nomLineEdit,nouveauLE)
+               nouveauLE.setValeur(t)
+
+               for n in range(self.nbValeurs) :
+                  nomLineEdit='lineEditVal_'+str(n+1)
+                  lineEditVal=getattr(nouveauLE,nomLineEdit)
+                  self.listeAffichageWidget.append(lineEditVal)
+            indexDernierRempli = indexDernierRempli+1
+
+        self.etablitOrdre()
+
+        
 
   def RBListePush(self):
+  #----------------------
   # PN a rendre generique avec un truc tel prerempli
+  # pour l instant specifique PSEN
+
       if self.editor.code == 'VP' : return
       if self.objSimp.valeur != None and self.objSimp.valeur != [] : return
-      if not hasattr(self.editor.readercata.cata[0],'sd_ligne') : self.editor.readercata.cata[0].sd_ligne=None
-      if not hasattr(self.editor.readercata.cata[0],'sd_generateur') : self.editor.readercata.cata[0].sd_generateur=None
-      if not hasattr(self.editor.readercata.cata[0],'sd_transfo') : self.editor.readercata.cata[0].sd_transfo=None
-      if not hasattr(self.editor.readercata.cata[0],'sd_charge') : self.editor.readercata.cata[0].sd_charge=None
-      if not hasattr(self.editor.readercata.cata[0],'sd_moteur') : self.editor.readercata.cata[0].sd_moteur=None
-      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_ligne :
+      if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None
+      if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None
+      if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None
+      if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None
+      if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne :
          val=[]
          if  hasattr(self.objSimp.jdc,'LineDico'):
           for k in self.objSimp.jdc.LineDico :
               try :
-               valeur=self.objSimp.jdc.get_concept(k)
+               valeur=self.objSimp.jdc.getConcept(k)
                val.append((valeur,0))
               except :
                pass
-         self.node.item.set_valeur(val)
-      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_generateur :
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur :
          val=[]
          if  hasattr(self.objSimp.jdc,'MachineDico'):
           for k in self.objSimp.jdc.MachineDico :
               try :
-               valeur=self.objSimp.jdc.get_concept(k)
+               valeur=self.objSimp.jdc.getConcept(k)
                val.append((valeur,0))
               except :
                pass
-         self.node.item.set_valeur(val)
-      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_transfo :
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo :
          val=[]
          if  hasattr(self.objSimp.jdc,'TransfoDico'):
           for k in self.objSimp.jdc.TransfoDico :
               try :
-               valeur=self.objSimp.jdc.get_concept(k)
+               valeur=self.objSimp.jdc.getConcept(k)
                val.append((valeur,0))
               except :
                pass
-         self.node.item.set_valeur(val)
-      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_charge :
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge :
          val=[]
          if  hasattr(self.objSimp.jdc,'LoadDico'):
           for k in self.objSimp.jdc.LoadDico :
               try :
-               valeur=self.objSimp.jdc.get_concept(k)
+               valeur=self.objSimp.jdc.getConcept(k)
                val.append((valeur,0))
               except :
                pass
-         self.node.item.set_valeur(val)
-      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata[0].sd_moteur :
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur :
          val=[]
          if  hasattr(self.objSimp.jdc,'MotorDico'):
           for k in self.objSimp.jdc.MotorDico :
               try :
-               valeur=self.objSimp.jdc.get_concept(k)
+               valeur=self.objSimp.jdc.getConcept(k)
                val.append((valeur,0))
               except :
                pass
-         self.node.item.set_valeur(val)
+         self.node.item.setValeur(val)
 
diff --git a/InterfaceQT4/monWidgetPlusieursTupleAvril11.py b/InterfaceQT4/monWidgetPlusieursTupleAvril11.py
new file mode 100644 (file)
index 0000000..df8ceb2
--- /dev/null
@@ -0,0 +1,495 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import range
+   from builtins import object
+except : pass
+
+import types,os,sys
+
+from six.moves import range
+from PyQt5.QtWidgets  import QFrame,QApplication, QFrame, QWidget
+from PyQt5.QtGui      import QIcon
+from PyQt5.QtCore     import QSize, Qt, QTimer
+
+from Extensions.i18n import tr
+
+
+from InterfaceQT4.feuille               import Feuille
+from InterfaceQT4.politiquesValidation  import PolitiquePlusieurs
+from InterfaceQT4.qtSaisie              import SaisieValeur
+from InterfaceQT4.gereListe             import GereListe
+from InterfaceQT4.gereListe             import LECustom
+from Tuple2                             import Ui_Tuple2
+from Tuple3                             import Ui_Tuple3
+from Tuple4                             import Ui_Tuple4
+from Tuple5                             import Ui_Tuple5
+from Tuple6                             import Ui_Tuple6
+from Tuple7                             import Ui_Tuple7
+from Tuple8                             import Ui_Tuple8
+from Tuple9                             import Ui_Tuple9
+from Tuple10                            import Ui_Tuple10
+
+
+#--------------------------
+class TupleCustom(object) :
+#--------------------------
+
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------------------------------------
+      QWidget.__init__(self,parent)
+      self.setupUi(self)
+      self.tailleTuple=tailleTuple
+      self.parent=parent
+      self.parentQt=parentQt
+      self.valeur=None
+      self.index=index
+      self.inFocusOutEvent=False
+
+
+      for i in range(self.tailleTuple):
+         nomLE="lineEditVal_"+str(i+1)
+         courant=getattr(self,nomLE)
+         courant.num=index
+         courant.dansUnTuple=True
+         courant.numDsLaListe = i+1
+         courant.tupleCustomParent=self
+
+
+
+  def setValeur(self,value):
+  #----------------------
+
+      listeVal=[]
+      valeurNulle=True
+      for i in range(self.tailleTuple):
+         nomLE="lineEditVal_"+str(i+1)
+         courant=getattr(self,nomLE)
+         try :
+           if str(value[i]) != "" : valeurNulle=False
+         except :
+           pass
+
+         try :
+           courant.setText(str(value[i]))
+         except :
+           courant.setText("")
+         val=str(courant.text())
+         try :
+           valeur=eval(val,{})
+         except :
+           try :
+             d=self.parentQt.objSimp.jdc.getContexteAvant(self.parentQt.objSimp. etape)
+             valeur=eval(val,d)
+           except :
+             valeur=val
+         listeVal.append(valeur)
+      if  valeurNulle == True : self.valeur=None
+      else                    : self.valeur=listeVal
+
+  def getValeur(self):
+  #----------------------
+      return self.valeur
+
+  def text(self):
+  #--------------
+      return self.valeur
+
+  def setText(self,value):
+  #-----------------------
+      self.setValeur(value)
+
+  def clean(self):
+  #-------------------
+      self.valeur=None
+      for i in range(self.tailleTuple):
+         nomLE="lineEditVal_"+str(i+1)
+         courant=getattr(self,nomLE)
+         courant.setText("")
+
+  def finCommentaire(self):
+  #-------------------
+        return self.finCommentaireListe()
+
+
+#-------------------------------------------------
+class TupleCustom2(QWidget,Ui_Tuple2,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-----------------------------------------------------
+      TupleCustom. __init__(self,tailleTuple,parent,parentQt,index)
+      
+#-------------------------------------------------
+class TupleCustom3(QWidget,Ui_Tuple3,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom4(QWidget,Ui_Tuple4,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom5(QWidget,Ui_Tuple5,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom6(QWidget,Ui_Tuple6,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom7(QWidget,Ui_Tuple7,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom8(QWidget,Ui_Tuple8,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom9(QWidget,Ui_Tuple9,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+#-------------------------------------------------
+class TupleCustom10(QWidget,Ui_Tuple10,TupleCustom):
+#-------------------------------------------------
+  def __init__(self,tailleTuple,parent,parentQt,index):
+  #-------------------
+      TupleCustom.__init__(self,tailleTuple,parent,parentQt,index)
+
+
+
+
+
+# -------------------------------------------- #
+class MonWidgetPlusieursTuple(Feuille,GereListe):
+# -------------------------------------------- #
+
+  def __init__(self, node, monSimpDef, nom, objSimp, parentQt, commande):
+  #-----------------------------------------------------
+
+        self.indexDernierLabel=0
+        self.numLineEditEnCours=0
+        self.nomLine="TupleVal"
+        self.listeAffichageWidget=[]
+        Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        GereListe.__init__(self)
+        self.finCommentaireListe()
+        self.politique=PolitiquePlusieurs(self.node,self.editor)
+        self.parentQt.commandesLayout.insertWidget(-1,self)
+
+        if sys.platform[0:5]!="linux":
+          repIcon=self.node.editor.appliEficas.repIcon
+          fichier=os.path.join(repIcon, 'arrow_up.png')
+          icon = QIcon(fichier)
+          self.RBHaut.setIcon(icon)
+          self.RBHaut.setIconSize(QSize(32, 32))
+          fichier2=os.path.join(repIcon, 'arrow_down.png')
+          icon2 = QIcon(fichier2)
+          self.RBBas.setIcon(icon2)
+          fichier3=os.path.join(repIcon, 'file-explorer.png')
+          icon3 = QIcon(fichier3)
+          self.BSelectFichier.setIcon(icon3)
+          self.BSelectFichier.setIconSize(QSize(32, 32))
+        self.BSelectFichier.clicked.connect(self.selectInFile)
+
+
+
+  def ajoutLineEdit(self,valeur=None,inInit=False):
+  #------------------------------------------------
+      self.indexDernierLabel=self.indexDernierLabel+1
+      nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+      if hasattr(self,nomLineEdit) :
+         self.indexDernierLabel=self.indexDernierLabel-1
+         return
+
+      nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+      laClasseDuTuple=globals()[nomCustomTuple]
+      nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+
+      #if self.nbValeurs == 2 : nouveauLE = TupleCustom2(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+      #else                   : nouveauLE = TupleCustom3(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+                 
+      self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+      setattr(self,nomLineEdit,nouveauLE)
+      if valeur != None : nouveauLE.setValeur(valeur)
+
+      for i in range(self.nbValeurs) :
+          num=i+1
+          nomLineEdit='lineEditVal_'+str(num)
+          lineEditVal=getattr(nouveauLE,nomLineEdit)
+          self.listeAffichageWidget.append(lineEditVal)
+      #self.listeAffichageWidget.append(nouveauLE.lineEditVal_1)
+      #self.listeAffichageWidget.append(nouveauLE.lineEditVal_2)
+      #if self.nbValeurs == 3 : self.listeAffichageWidget.append(nouveauLE.lineEditVal_3)
+
+      self.etablitOrdre()
+
+      # deux lignes pour que le ensureVisible fonctionne
+      self.estVisible=nouveauLE.lineEditVal_1
+      if inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
+
+  def etablitOrdre(self):
+  # ---------------------
+      i=0
+      while(i +1 < len(self.listeAffichageWidget)):
+         self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
+         self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+         i=i+1
+
+
+  def setValeurs(self):
+  # ---------------------
+       if self.editor.code == 'PSEN' : self.RBListePush()
+       valeurs=self.node.item.getValeur()
+       min,max=self.node.item.getMinMax()
+       if max == "**" or max > 8 : aCreer= 8
+       else : aCreer=max 
+
+       if valeurs == () or valeurs == None :
+          for i in range(aCreer): self.ajoutLineEdit(inInit=True)
+          return
+
+       for v in valeurs:
+           self.ajoutLineEdit(v,inInit=True)
+
+       for i in range(len(valeurs),aCreer) : self.ajoutLineEdit(inInit=True)
+
+  def rendVisibleLigne(self):
+  # -------------------------
+      QApplication.processEvents()
+      self.estVisible.setFocus(True)
+      self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
+
+   
+  def changeValeur(self,changeDePlace=False,oblige=True):
+  # -----------------------------------------------------
+      #Pour compatibilite signature
+
+      self.aEuLeFocus=False # set pour le leaveEvent voir gereListe
+      aLeFocus=self.focusWidget()
+      listeComplete=[]
+      libre=False
+      #print ('ds changeValeur', self.indexDernierLabel)
+      for i in range(self.indexDernierLabel) :
+          #print (i)
+          nom=self.nomLine+str(i+1)
+          #print (nom)
+          courant=getattr(self,nom)
+          #print (courant)
+          valeurTuple=courant.valeur
+          #print (valeurTuple)
+          if valeurTuple == None or valeurTuple== "": 
+             libre=True
+             continue
+          print (i, valeurTuple)
+          validite,comm,comm2,listeRetour= self.politique.ajoutTuple(valeurTuple,listeComplete)
+          if not validite:
+             print (validite,comm,comm2)
+             if comm2 != '' : comm += " " + comm2
+             print (validite,comm,comm2)
+             self.editor.afficheInfos(comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+             print (comm+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+             return
+          listeComplete.append(tuple(courant.valeur))
+      if listeComplete == [] : listeComplete=None
+      self.node.item.setValeur(listeComplete)
+
+      if changeDePlace : return
+      min,max=self.node.item.getMinMax()
+      if self.indexDernierLabel == max  : self.editor.afficheInfos(tr('Nb maximum de valeurs atteint'))
+      if self.indexDernierLabel < max and libre==False :
+          self.ajoutLineEdit()
+          self.listeAffichageWidget[-2].setFocus(True)
+      else :
+         try :
+           QApplication.processEvents()
+           w=self.listeAffichageWidget[self.listeAffichageWidget.index(aLeFocus)+1]
+           w.setFocus(True)
+           self.scrollArea.ensureWidgetVisible(w,0,0)
+         except :
+           pass
+          
+  def ajoutNValeur(self,liste):
+  #----------------------------
+  # attention quand on charge par un fichier, on ne peut pas se contenter d ajouter N fois 1 valeur
+  # car alors le temps de verification devient prohibitif  reconstructu=ion et verification a 
+  # chaque valeur. d ou l ajout de ajoutNTuple a politique plusieurs
+
+        if len(liste)%self.nbValeurs != 0 :
+           texte="Nombre incorrect de valeurs"
+           self.editor.afficheInfos(tr(texte),Qt.red)
+           return
+
+        i=0
+        longueur=len(liste)//self.nbValeurs
+        increment=self.nbValeurs
+        listeFormatee=[liste[k*increment:(k+1)*increment] for k in range(longueur)]
+        listeFormatee=tuple(listeFormatee)
+
+        min,max=self.node.item.getMinMax()
+        if self.objSimp.valeur == None : listeComplete=listeFormatee
+        else : listeComplete =self.objSimp.valeur + listeFormatee
+
+        if len(listeComplete) > max : 
+           texte=tr("Nombre maximum de valeurs ")+str(max)+tr(" atteint")
+           self.editor.afficheInfos(texte,Qt.red)
+           return
+
+        validite,comm,comm2,listeRetour= self.politique.ajoutNTuple(listeComplete)
+        if not validite : 
+           self.editor.afficheInfos(texte,Qt.red)
+           return
+
+        # on calcule le dernier lineedit rempli avant de changer la valeur
+        if self.objSimp.valeur != None : indexDernierRempli=len(self.objSimp.valeur)
+        else : indexDernierRempli=0
+
+        self.politique.recordValeur(listeComplete)
+
+        while ( i < len(liste) ) :
+            try :
+              t=tuple(liste[i:i+self.nbValeurs])
+            except:
+              t=tuple(liste[i:len(liste)])
+            i=i+self.nbValeurs
+            if indexDernierRempli < self.indexDernierLabel:
+
+               nomLEARemplir=self.nomLine+str(indexDernierRempli+1)
+               LEARemplir=getattr(self,nomLEARemplir) 
+               for n in range(self.nbValeurs) :
+                  nomLineEdit='lineEditVal_'+str(n+1)
+                  lineEditVal=getattr(LEARemplir,nomLineEdit)
+                  lineEditVal.setText(str(t[n]))
+            else : 
+               # ne pas appeler ajoutLineEdit(t,False ) pb de boucle pb du a etablitOrdre et a listeWidgetAffichage qui bouge
+               self.indexDernierLabel=self.indexDernierLabel+1
+               nomLineEdit=self.nomLine+str(self.indexDernierLabel)
+
+               nomCustomTuple='TupleCustom'+str(self.nbValeurs)
+               laClasseDuTuple=globals()[nomCustomTuple]
+               nouveauLE=laClasseDuTuple(self.nbValeurs,self.scrollArea,self,self.indexDernierLabel)
+                 
+               self.verticalLayoutLE.insertWidget(self.indexDernierLabel-1,nouveauLE)
+               setattr(self,nomLineEdit,nouveauLE)
+               nouveauLE.setValeur(t)
+
+               for n in range(self.nbValeurs) :
+                  nomLineEdit='lineEditVal_'+str(n+1)
+                  lineEditVal=getattr(nouveauLE,nomLineEdit)
+                  self.listeAffichageWidget.append(lineEditVal)
+            indexDernierRempli = indexDernierRempli+1
+
+        self.etablitOrdre()
+
+        
+
+  def RBListePush(self):
+  #----------------------
+  # PN a rendre generique avec un truc tel prerempli
+  # pour l instant specifique PSEN
+
+      if self.editor.code == 'VP' : return
+      if self.objSimp.valeur != None and self.objSimp.valeur != [] : return
+      if not hasattr(self.editor.readercata.cata,'sd_ligne') : self.editor.readercata.cata.sd_ligne=None
+      if not hasattr(self.editor.readercata.cata,'sd_generateur') : self.editor.readercata.cata.sd_generateur=None
+      if not hasattr(self.editor.readercata.cata,'sd_transfo') : self.editor.readercata.cata.sd_transfo=None
+      if not hasattr(self.editor.readercata.cata,'sd_charge') : self.editor.readercata.cata.sd_charge=None
+      if not hasattr(self.editor.readercata.cata,'sd_moteur') : self.editor.readercata.cata.sd_moteur=None
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_ligne :
+         val=[]
+         if  hasattr(self.objSimp.jdc,'LineDico'):
+          for k in self.objSimp.jdc.LineDico :
+              try :
+               valeur=self.objSimp.jdc.getConcept(k)
+               val.append((valeur,0))
+              except :
+               pass
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_generateur :
+         val=[]
+         if  hasattr(self.objSimp.jdc,'MachineDico'):
+          for k in self.objSimp.jdc.MachineDico :
+              try :
+               valeur=self.objSimp.jdc.getConcept(k)
+               val.append((valeur,0))
+              except :
+               pass
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_transfo :
+         val=[]
+         if  hasattr(self.objSimp.jdc,'TransfoDico'):
+          for k in self.objSimp.jdc.TransfoDico :
+              try :
+               valeur=self.objSimp.jdc.getConcept(k)
+               val.append((valeur,0))
+              except :
+               pass
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_charge :
+         val=[]
+         if  hasattr(self.objSimp.jdc,'LoadDico'):
+          for k in self.objSimp.jdc.LoadDico :
+              try :
+               valeur=self.objSimp.jdc.getConcept(k)
+               val.append((valeur,0))
+              except :
+               pass
+         self.node.item.setValeur(val)
+      if self.objSimp.definition.validators.typeDesTuples[0]==self.editor.readercata.cata.sd_moteur :
+         val=[]
+         if  hasattr(self.objSimp.jdc,'MotorDico'):
+          for k in self.objSimp.jdc.MotorDico :
+              try :
+               valeur=self.objSimp.jdc.getConcept(k)
+               val.append((valeur,0))
+              except :
+               pass
+         self.node.item.setValeur(val)
+
diff --git a/InterfaceQT4/monWidgetPlusieursTupleN.py b/InterfaceQT4/monWidgetPlusieursTupleN.py
new file mode 100644 (file)
index 0000000..7b0dbb4
--- /dev/null
@@ -0,0 +1,73 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+
+from .feuille                  import Feuille
+from .monWidgetPlusieursTuple  import MonWidgetPlusieursTuple 
+from desWidgetPlusieursTuple  import Ui_WidgetPlusieursTuple 
+
+
+class MonWidgetPlusieursTuple2 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=2
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple3 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=3
+
+class MonWidgetPlusieursTuple4 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=4
+
+class MonWidgetPlusieursTuple5 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=5
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple6 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=6
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple7 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=7
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple8 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=8
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple9 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=9
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetPlusieursTuple10 (Ui_WidgetPlusieursTuple,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=10
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
index 7c23476562b0f2f81cc5635d2659e6e7e723756f..129046be58d590d7262148b4142db5f957f57035 100644 (file)
@@ -53,9 +53,9 @@ class MonWidgetRadioButtonCommun (Feuille):
 
 
   def setValeursApresBouton(self):
-      if self.objSimp.get_valeur()==None : return
-      valeur=self.objSimp.get_valeur()
-      if not(type(valeur) == str) : valeur=str(valeur)
+      if self.objSimp.getValeur()==None : return
+      valeur=self.objSimp.getValeur()
+      if not(isinstance(valeur, str)) : valeur = str(valeur)
       try :
         self.dict_bouton[valeur].setChecked(True)
         self.dict_bouton[valeur].setFocus(True)
@@ -73,7 +73,7 @@ class MonWidgetRadioButtonCommun (Feuille):
          nomBouton="radioButton_"+str(i)
          bouton=getattr(self,nomBouton)
          valeur=self.maListeDeValeur[i-1]
-         if not(type(valeur) == str) : valeur=str(valeur)
+         if not(isinstance(valeur, str)) : valeur = str(valeur)
          bouton.setText(tr(valeur))
          self.dict_bouton[valeur]=bouton
          bouton.clicked.connect(self.boutonclic)
@@ -90,7 +90,7 @@ class MonWidgetRadioButtonCommun (Feuille):
       for valeur in self.dict_bouton:
           if self.dict_bouton[valeur].isChecked():
              #print "dans boutonclic is checked", valeur, type(valeur)
-             SaisieValeur.LEValeurPressed(self,valeur)
+             SaisieValeur.LEvaleurPressed(self,valeur)
       self.reaffiche()
 
 
@@ -146,7 +146,7 @@ class MonWidgetRadioButtonSD (Ui_WidgetRadioButton,MonWidgetRadioButtonCommun):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         #print "dans le init de MonWidgetRadioButtonSD",self
-        self.maListeDeValeur=node.item.get_sd_avant_du_bon_type()
+        self.maListeDeValeur=node.item.getSdAvantDuBonType()
         MonWidgetRadioButtonCommun.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
 
   def setMaxI(self):
index 189c3c680fcdff0fafd7ed1af50c3b628c30544e..e5c6de93750270f40a350e0c5c4679570d514c3b 100644 (file)
@@ -57,10 +57,10 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO):
 
 
   def initLBSDCO(self):
-        listeNomsSDCO = self.node.item.get_sd_avant_du_bon_type()
+        listeNomsSDCO = self.node.item.getSdAvantDuBonType()
         for aSDCO in listeNomsSDCO:
             self.LBSDCO.insertItem( 1,aSDCO)
-        valeur = self.node.item.get_valeur()
+        valeur = self.node.item.getValeur()
         if valeur  != "" and valeur != None :
            self.LESDCO.setText(str(valeur.nom))
 
@@ -73,26 +73,26 @@ class MonWidgetSDCOInto (Ui_WidgetSDCOInto,Feuille,SaisieSDCO):
         """
         nomConcept=str(self.LBSDCO.currentItem().text())
         self.LESDCO.clear()
-        self.editor.init_modif()
-        anc_val = self.node.item.get_valeur()
-        test_CO=self.node.item.is_CO(anc_val)
+        self.editor.initModif()
+        anc_val = self.node.item.getValeur()
+        test_CO=self.node.item.isCO(anc_val)
 
-        valeur,validite=self.node.item.eval_valeur(nomConcept)
-        test = self.node.item.set_valeur(valeur)
+        valeur,validite=self.node.item.evalValeur(nomConcept)
+        test = self.node.item.setValeur(valeur)
         if not test :
           commentaire = tr("impossible d'evaluer : ") +  valeur
         elif validite:
           commentaire = tr("Valeur du mot-clef enregistree")
           if test_CO:
              # il faut egalement propager la destruction de l'ancien concept
-             self.node.item.delete_valeur_co(valeur=anc_val)
-             self.node.item.object.etape.get_type_produit(force=1)
-             self.node.item.object.etape.parent.reset_context()
+             self.node.item.deleteValeurCo(valeur=anc_val)
+             self.node.item.object.etape.getType_produit(force=1)
+             self.node.item.object.etape.parent.resetContext()
              self.LESDCO.setText(nomConcept)
         else :
-          commentaire = self.node.item.get_cr()
+          commentaire = self.node.item.getCr()
           self.reset_old_valeur(anc_val,mess=mess)
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
         self.Commentaire.setText(tr(commentaire))
 
 
index 4981e6f219ee76e5bd61fabae33ae521e4e30062..ef4c5cea810fda7efdd2b1d661fd0a85da1b12ea 100644 (file)
@@ -42,7 +42,7 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         self.parentQt.commandesLayout.insertWidget(-1,self,1)
         self.setFocusPolicy(Qt.StrongFocus)
-        self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+        self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
         self.AAfficher=self.lineEditVal
         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
         self.lineEditVal.focusInEvent=self.monFocusInEvent
@@ -56,7 +56,7 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
   def monFocusOutEvent(self,event):
       if self.oldValeurTexte != self.lineEditVal.text():
          self.oldValeurTexte= self.lineEditVal.text()
-         self.LEValeurPressed()
+         self.LEvaleurPressed()
       QLineEdit.focusOutEvent(self.lineEditVal,event)
 
   #def showEvent(self, event):
@@ -69,8 +69,8 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
   def setValeurs(self):
        #print ("dans setValeurs")
        self.politique=PolitiqueUnique(self.node,self.editor)
-       valeur=self.node.item.get_valeur()
-       valeurTexte=self.politique.GetValeurTexte(valeur)
+       valeur=self.node.item.getValeur()
+       valeurTexte=self.politique.getValeurTexte(valeur)
        chaine=""
 
        if valeurTexte != None :
@@ -107,18 +107,18 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
       return commentaire
 
 
-  def LEValeurPressed(self):
+  def LEvaleurPressed(self):
       # pour les soucis d encoding
       try :
         if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
       except : pass
-      SaisieValeur.LEValeurPressed(self)
+      SaisieValeur.LEvaleurPressed(self)
       self.parentQt.donneFocus()
       self.setValeurs()
       self.reaffiche()
       
       #if self.objSimp.parent.nom == "MODEL" :
-      #   if self.objSimp.isvalid():
+      #   if self.objSimp.isValid():
       #      self.objSimp.parent.change_fichier="1"
-            #self.node.item.parent.build_include(None,"")
+            #self.node.item.parent.buildInclude(None,"")
 
index b052920797290376fbf5285d0990d0f0292daa7c..5b12888f90063d617a4a30e3a75548c238761f5c 100644 (file)
@@ -43,17 +43,17 @@ class MonWidgetSimpBool (Ui_WidgetSimpBool,Feuille):
         self.AAfficher=self.RBTrue
 
   def setValeurs(self):
-       valeur=self.node.item.get_valeur()
+       valeur=self.node.item.getValeur()
        if valeur == None  : return
        if valeur == True  : self.RBTrue.setChecked(True)
        if valeur == False : self.RBFalse.setChecked(True)
 
 
   def boutonTrueClic(self):
-      SaisieValeur.LEValeurPressed(self,True)
+      SaisieValeur.LEvaleurPressed(self,True)
       self.reaffiche()
 
   def boutonFalseClic(self):
-      SaisieValeur.LEValeurPressed(self,False)
+      SaisieValeur.LEvaleurPressed(self,False)
       self.reaffiche()
 
index 7d1e070a4bac914e232af20d2372dfc025ca0d3d..5239a2d657e7d1c2c76fb308ab533e472fa8b882 100644 (file)
@@ -46,8 +46,8 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
         self.setFocusPolicy(Qt.StrongFocus)
         self.LEImag.returnPressed.connect(self.LEImagRPressed)
         self.LEReel.returnPressed.connect(self.LEReelRPressed)
-        self.RBRI.clicked.connect(self.ValeurPressed )
-        self.RBMP.clicked.connect(self.ValeurPressed )
+        self.RBRI.clicked.connect(self.valeurPressed )
+        self.RBMP.clicked.connect(self.valeurPressed )
         self.LEComp.returnPressed.connect(self.LECompRPressed)
         self.maCommande.listeAffichageWidget.append(self.LEComp)
         #self.maCommande.listeAffichageWidget.append(self.RBRI)
@@ -58,7 +58,7 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
 
   def setValeurs(self):
        self.politique=PolitiqueUnique(self.node,self.editor)
-       valeur=self.node.item.get_valeur()
+       valeur=self.node.item.getValeur()
        if valeur == None or valeur == '' : return
        if type(valeur) not in (list,tuple) :
            self.LEComp.setText(str(valeur))
@@ -81,15 +81,15 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
           v=eval(valeur,d)
         except :
           commentaire=tr("expression invalide")
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
           return
         try :
           i=v.imag
-          self.editor.affiche_infos(commentaire)
-          self.ValeurPressed()
+          self.editor.afficheInfos(commentaire)
+          self.valeurPressed()
         except :
           commentaire=tr("l expression n est pas de la forme a+bj")
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
 
   def LEReelRPressed(self):
         self.LEComp.clear()
@@ -97,11 +97,11 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
         valeur = str(self.LEReel.text())
         try :
           a=locale.atof(valeur)
-          self.editor.affiche_infos(commentaire)
+          self.editor.afficheInfos(commentaire)
         except :
           commentaire=tr("expression invalide")
-          self.editor.affiche_infos(commentaire,Qt.red)
-        if self.LEImag.text()!="" : self.ValeurPressed()
+          self.editor.afficheInfos(commentaire,Qt.red)
+        if self.LEImag.text()!="" : self.valeurPressed()
 
   def LEImagRPressed(self):
         self.LEComp.clear()
@@ -109,11 +109,11 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
         valeur = str(self.LEImag.text())
         try :
           a=locale.atof(valeur)
-          self.editor.affiche_infos(commentaire)
+          self.editor.afficheInfos(commentaire)
         except :
           commentaire=tr("expression invalide")
-          self.editor.affiche_infos(commentaire,Qt.red)
-        if self.LEReel.text()!="" : self.ValeurPressed()
+          self.editor.afficheInfos(commentaire,Qt.red)
+        if self.LEReel.text()!="" : self.valeurPressed()
 
   def finCommentaire(self):
       commentaire="valeur de type complexe"
@@ -127,28 +127,28 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
           v=eval(valeur,d)
         except :
           commentaire=tr("expression invalide")
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
           return None
         try :
           i=v.imag
         except :
           commentaire=tr("expression n est pas de la forme a+bj")
-          self.editor.affiche_infos(commentaire,Qt.red)
+          self.editor.afficheInfos(commentaire,Qt.red)
           return None
         return v
 
 
-  def ValeurPressed(self):
+  def valeurPressed(self):
       if self.LEComp.text()== ""  and (self.LEReel.text()=="" or self.LEImag.text()=="") :
          return
       if self.LEComp.text()== "" : valeur = self.getValeurRI()
       else :
           if self.LEReel.text() != "" or self.LEImag.text() != "" :
               commentaire=tr("entrer une seule valeur SVP")
-              self.editor.affiche_infos(commentaire,Qt.red)
+              self.editor.afficheInfos(commentaire,Qt.red)
               return
           valeur=  self.getValeurComp()
-      self.politique.RecordValeur(valeur)
+      self.politique.recordValeur(valeur)
       self.reaffiche()
       self.parentQt.donneFocus()
 
@@ -163,7 +163,7 @@ class MonWidgetSimpComplexe (Ui_WidgetSimpComplexe,Feuille):
          l.append("RI")
       else :
          commentaire=tr("saisir le type de complexe")
-         self.editor.affiche_infos(commentaire,Qt.red)
+         self.editor.afficheInfos(commentaire,Qt.red)
          return None
       try :
          l.append(locale.atof(str(self.LEReel.text())))
index 9322918cf87178bb493e43ed206117b0e4edfab4..af575fd9c066f18a4b8de589d4517029b81c0874 100644 (file)
@@ -45,19 +45,19 @@ class MonWidgetSimpSalome (Ui_WidgetSimpSalome,Feuille):
         self.parentQt.commandesLayout.insertWidget(-1,self,1)
         self.setFocusPolicy(Qt.StrongFocus)
         self.politique=PolitiqueUnique(self.node,self.editor)
-        self.lineEditVal.returnPressed.connect(self.LEValeurPressed)
+        self.lineEditVal.returnPressed.connect(self.LEvaleurPressed)
         self.AAfficher=self.lineEditVal
         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
 
 
-  def LEValeurPressed(self):
+  def LEvaleurPressed(self):
       if str(self.lineEditVal.text())=="" or str(self.lineEditVal.text())==None : return
-      SaisieValeur.LEValeurPressed(self)
+      SaisieValeur.LEvaleurPressed(self)
       self.parentQt.donneFocus()
       self.setValeurs()
       self.reaffiche()
 
 
   def setValeurs(self):
-      valeur=self.node.item.get_valeur()
+      valeur=self.node.item.getValeur()
       if valeur != None : self.lineEditVal.setText(str(valeur))
index b2bbc2a05c22250a92cb839738f5b616767d5520..b75a5676b74c1061f9a9c60fcb03d168e15bf5ec 100644 (file)
@@ -32,9 +32,9 @@ from PyQt5.QtCore import Qt
 # Modules Eficas
 from Extensions.i18n import tr
 
-from .feuille               import Feuille
-from .politiquesValidation  import PolitiqueUnique
-from .qtSaisie              import SaisieValeur
+from InterfaceQT4.feuille               import Feuille
+from InterfaceQT4.politiquesValidation  import PolitiqueUnique
+from InterfaceQT4.qtSaisie              import SaisieValeur
 
 
 class MonWidgetSimpTuple(Feuille):
@@ -46,7 +46,7 @@ class MonWidgetSimpTuple(Feuille):
         self.setFocusPolicy(Qt.StrongFocus)
 
   def setValeurs(self):
-       valeur=self.node.item.get_valeur()
+       valeur=self.node.item.getValeur()
        for i in range(self.nbValeurs) :
            nomLineEdit="lineEditVal"+str(i+1)
            courant=getattr(self,nomLineEdit)
@@ -56,7 +56,7 @@ class MonWidgetSimpTuple(Feuille):
 
   def valeursPressed(self):
       aLeFocus=self.focusWidget()
-      self.editor.affiche_infos("")
+      self.editor.afficheInfos("")
       texteValeur=""
       for i in range(self.nbValeurs) :
           nomLineEdit="lineEditVal"+str(i+1)
@@ -79,9 +79,10 @@ class MonWidgetSimpTuple(Feuille):
                 else :        s=s+'"'
              courant.setText(s)
           texteValeur+=str(courant.text())
+          #print (texteValeur)
           if i+1 != self.nbValeurs : texteValeur+=','
-      validite,commentaire=self.politique.RecordValeur(texteValeur)
-      if not validite:self.editor.affiche_infos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
+      validite,commentaire=self.politique.recordValeur(texteValeur)
+      if not validite:self.editor.afficheInfos(commentaire+" "+str(self.objSimp.definition.validators.typeDesTuples),Qt.red)
 
       # Passage au champ suivant
       nom=aLeFocus.objectName()[11:]
diff --git a/InterfaceQT4/monWidgetSimpTupleN.py b/InterfaceQT4/monWidgetSimpTupleN.py
new file mode 100644 (file)
index 0000000..10eb809
--- /dev/null
@@ -0,0 +1,103 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+#from PyQt4.QtGui import *
+#from PyQt4.QtCore import *
+from Extensions.i18n import tr
+
+from InterfaceQT4.feuille               import Feuille
+from InterfaceQT4.monWidgetSimpTuple    import MonWidgetSimpTuple 
+from desWidgetTuple2  import Ui_WidgetTuple2 
+from desWidgetTuple3  import Ui_WidgetTuple3 
+from desWidgetTuple4  import Ui_WidgetTuple4 
+from desWidgetTuple5  import Ui_WidgetTuple5 
+from desWidgetTuple6  import Ui_WidgetTuple6 
+from desWidgetTuple7  import Ui_WidgetTuple7 
+from desWidgetTuple8  import Ui_WidgetTuple8 
+from desWidgetTuple9  import Ui_WidgetTuple9 
+from desWidgetTuple10 import Ui_WidgetTuple10
+
+
+class MonWidgetSimpTuple2 (Ui_WidgetTuple2,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=2
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        if self.objSimp.isImmuable() :
+          self.lineEditVal1.setDisabled(True)
+          self.lineEditVal2.setDisabled(True)
+          self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+          self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+          self.lineEditVal1.setToolTip(tr("Valeur non modifiable"))
+          self.lineEditVal2.setToolTip(tr("Valeur non modifiable"))
+        else :
+          self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+      
+class MonWidgetSimpTuple3 (Ui_WidgetTuple3,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=3
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        if self.objSimp.isImmuable() :
+          self.lineEditVal1.setDisabled(True)
+          self.lineEditVal2.setDisabled(True)
+          self.lineEditVal1.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+          self.lineEditVal2.setStyleSheet("background:rgb(244,244,244);\n" "border:0px;\n")
+          self.lineEditVal1.setToolTip(tr("Valeur non modifiable"))
+          self.lineEditVal2.setToolTip(tr("Valeur non modifiable"))
+        else :
+          self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+      
+class MonWidgetSimpTuple4 (Ui_WidgetTuple4,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=4
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple5 (Ui_WidgetTuple5,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=5
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple6 (Ui_WidgetTuple6,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=6
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple7 (Ui_WidgetTuple7,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=7
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple8 (Ui_WidgetTuple8,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=8
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple9 (Ui_WidgetTuple9,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=9
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+      
+class MonWidgetSimpTuple10 (Ui_WidgetTuple10,MonWidgetSimpTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=10
+        MonWidgetSimpTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
diff --git a/InterfaceQT4/monWidgetTableau.py b/InterfaceQT4/monWidgetTableau.py
new file mode 100644 (file)
index 0000000..5a0bc06
--- /dev/null
@@ -0,0 +1,73 @@
+# -*- 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
+#
+# Modules Python
+from __future__ import absolute_import
+import types,os
+
+# Modules Eficas
+
+from PyQt5.QtWidgets import QLabel, QSizePolicy, QSpacerItem
+from PyQt5.QtCore    import QSize
+
+from InterfaceQT4.feuille                  import Feuille
+from InterfaceQT4.monWidgetPlusieursTuple  import MonWidgetPlusieursTuple 
+from desWidgetPlusieursTuple               import Ui_WidgetPlusieursTuple
+from desWidgetTableau                      import Ui_WidgetTableau
+
+maxLen=3
+
+
+class MonWidgetTableau (Ui_WidgetTableau,MonWidgetPlusieursTuple):
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        self.nbValeurs=len(monSimpDef.homo)
+        MonWidgetPlusieursTuple.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+
+        sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
+        sizePolicy.setHorizontalStretch(0)
+        sizePolicy.setVerticalStretch(0)
+
+        for i in range(len(monSimpDef.homo)):
+            nomCol='LECol'+str(i+1)
+            objCol=QLabel(self)
+            objCol.setMinimumSize(QSize(80, 25))
+            objCol.setText(monSimpDef.homo[i])
+            self.LATitre.addWidget(objCol)
+            setattr(self,nomCol,objCol)
+            spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
+            self.LATitre.addItem(spacerItem)
+
+
+
+#            monObjTitreCol=getattr(self,nomCol)
+#            monObjTitreCol.setText(monSimpDef.homo[i])
+            
+#        for i in range(maxLen-len(monSimpDef.homo)):
+#            index=i+len(monSimpDef.homo)+1
+#            nomCol='LECol'+str(index)
+#            monObjTitreCol=getattr(self,nomCol)
+#            monObjTitreCol.close()
+            
+        self.resize(self.width(),1800)
+
+  def ajoutLineEdit(self,valeur=None,inInit=False):
+      hauteurAvant=(self.frame.height())
+      MonWidgetPlusieursTuple.ajoutLineEdit(self,valeur,inInit)
+
index 71940f960ef64c628a22f7342d94a22e315103ac..3d73333132f510ec55d398716a60aee7f9d8f7b2 100644 (file)
@@ -44,7 +44,7 @@ class MonWidgetUniqueSDCO (Ui_WidgetUniqueSDCO,Feuille,SaisieSDCO):
         self.maCommande.listeAffichageWidget.append(self.LESDCO)
         self.AAficher=self.LESDCO
 
-        valeur = self.node.item.get_valeur()
+        valeur = self.node.item.getValeur()
         if valeur  != "" and valeur != None : self.LESDCO.setText(valeur.nom)
         self.connect(self.LESDCO,SIGNAL("returnPressed()"),self.LESDCOReturnPressed)
 
index 55949ebef770c78738f018c1311bd3eebe04a7ce..1fb2e7209b6f1dc2efb824442431a342b425ef5b 100644 (file)
@@ -24,16 +24,16 @@ import types,os
 # Modules Eficas
 from Extensions.i18n import tr
 
-from .feuille               import Feuille
-from desWidgetVide         import Ui_WidgetVide 
-
-
+from .feuille                           import Feuille
+from desWidgetVide                      import Ui_WidgetVide 
+from InterfaceQT4.politiquesValidation  import PolitiqueUnique
 
 class MonWidgetVide (Ui_WidgetVide,Feuille):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
+        self.politique=PolitiqueUnique(self.node,self.editor)
         t=self.node.item.object.definition.type[0].__name__
         self.lineEditVal.setText('Attend un objet de type '+t+'. Il faut en créer')
         self.parentQt.commandesLayout.insertWidget(-1,self)
index a8e5c52ca99199be740930ae0ad1aff5c5372186..a93175d7cad09f856c55b47dbc83dd323a34fffc 100644 (file)
@@ -35,19 +35,19 @@ class Validation(object)  :
          self.node=node
          self.parent=parent
 
-  def TesteUneValeur(self,valeurentree):
+  def testeUneValeur(self,valeurentree):
          commentaire = None
-         valeur,validite=self.node.item.eval_valeur(valeurentree)
+         valeur,validite=self.node.item.evalValeur(valeurentree)
          if not validite :
                   commentaire = "impossible d'evaluer : %s " %repr(valeurentree)
                   return valeur,validite,commentaire
-         if self.node.item.wait_TXM() and not( type(valeur) == str) : valeur=str(valeur) 
+         if self.node.item.waitTxm() and not( type(valeur) == str) : valeur=str(valeur) 
 
-         testtype,commentaire = self.node.item.object.verif_type(valeur)
+         testtype,commentaire = self.node.item.object.verifType(valeur)
          if not testtype :
                   return valeur,0,commentaire
 
-         valide=self.node.item.valide_item(valeur)
+         valide=self.node.item.valideItem(valeur)
          if type(valide) == tuple:
                  validite,commentaire=valide
          else :
@@ -56,20 +56,21 @@ class Validation(object)  :
 
          if not validite and commentaire is None:
                   commentaire = "impossible d'evaluer : %s " %repr(valeurentree)
+         #print ('ds testeUneValeur', valeur, validite, commentaire)
          return valeur, validite, commentaire
 
 # ----------------------------------------------------------------------------------------
 #   Methodes utilisees pour la manipulation des items en notation scientifique
 #   a mettre au point
 # ----------------------------------------------------------------------------------------
-  def SetValeurTexte(self,texteValeur) :
+  def setValeurTexte(self,texteValeur) :
          try :
                   if "R" in self.node.item.object.definition.type:
                      if texteValeur[0] != "'":
                         clef=eval(texteValeur)
                         if str(clef) != str(texteValeur) :
-                           self.node.item.object.init_modif()
-                           clefobj=self.node.item.object.GetNomConcept()
+                           self.node.item.object.initModif()
+                           clefobj=self.node.item.object.getNomConcept()
                            if not clefobj in self.parent.appliEficas.dict_reels:
                               self.parent.appliEficas.dict_reels[clefobj] = {}
                            self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
@@ -78,26 +79,26 @@ class Validation(object)  :
                               if not self.node.item.object.etape in self.parent.appliEficas.dict_reels :
                                  self.parent.appliEficas.dict_reels[self.node.item.object.etape] = {}
                               self.parent.appliEficas.dict_reels[self.node.item.object.etape][clef]=texteValeur
-                           self.node.item.object.fin_modif()
+                           self.node.item.object.finModif()
          except:
             pass
 
-  def GetValeurTexte(self,valeur) :
+  def getValeurTexte(self,valeur) :
          valeurTexte=valeur
          if valeur == None : return valeur
          from decimal import Decimal
          if  isinstance(valeur,Decimal) :
-             if self.node.wait_TXM() and not self.is_param(valeur) : return "'"+str(valeur)+"'"
+             if self.node.waitTxm() and not self.isParam(valeur) : return "'"+str(valeur)+"'"
              else : return(valeur)
          if "R" in self.node.item.object.definition.type:
-                  clefobj=self.node.item.object.GetNomConcept()
+                  clefobj=self.node.item.object.getNomConcept()
                   if clefobj in self.parent.appliEficas.dict_reels:
                      if valeur in self.parent.appliEficas.dict_reels[clefobj] :
                         valeurTexte=self.parent.appliEficas.dict_reels[clefobj][valeur]
                   else :
                      if str(valeur).find('.') == -1 and str(valeur).find('e') == -1 and str(valeur).find('E'):
                      # aucun '.' n'a ete trouve dans valeur --> on en rajoute un a la fin
-                        if (self.is_param(valeur)):
+                        if (self.isParam(valeur)):
                            return valeur
                         else:
                           try :
@@ -106,13 +107,13 @@ class Validation(object)  :
                             pass
          return valeurTexte
 
-  def is_param(self,valeur) :
+  def isParam(self,valeur) :
       for param in self.node.item.jdc.params:
           if ((repr(param) == repr(valeur)) or (str(param)==str(valeur))):
              return 1
       return 0
 
-  def AjoutDsDictReel(self,texteValeur):
+  def ajoutDsDictReel(self,texteValeur):
          # le try except est necessaire pour saisir les parametres
          # on enleve l erreur de saisie 00 pour 0
          if str(texteValeur)== '00' : return
@@ -121,7 +122,7 @@ class Validation(object)  :
                 if str(texteValeur)[0] != "'":
                    clef=eval(texteValeur)
                    if str(clef) != str(texteValeur) :
-                      clefobj=self.node.item.object.GetNomConcept()
+                      clefobj=self.node.item.object.getNomConcept()
                       if not clefobj in self.parent.appliEficas :
                           self.parent.appliEficas.dict_reels[clefobj] = {}
                       self.parent.appliEficas.dict_reels[clefobj][clef]=texteValeur
@@ -133,7 +134,7 @@ class Validation(object)  :
          except:
           pass
 
-  def AjoutDsDictReelEtape(self):
+  def ajoutDsDictReelEtape(self):
       try:
          if self.node.item.object in self.parent.appliEficas.dict_reels:
             self.parent.appliEficas.dict_reels[self.node.item.sdnom]=self.parent.appliEficas.dict_reels[self.node.item.object]
@@ -151,24 +152,24 @@ class PolitiqueUnique(Validation) :
   def __init__(self,node,parent):
         Validation.__init__(self,node,parent)
 
-  def RecordValeur(self,valeurentree):
-         if self.parent.modified == 'n' : self.parent.init_modif()
-         ancienne_val = self.node.item.get_valeur()
-         valeur,validite,commentaire =self.TesteUneValeur(valeurentree)
+  def recordValeur(self,valeurentree):
+         if self.parent.modified == 'n' : self.parent.initModif()
+         ancienneVal = self.node.item.getValeur()
+         valeur,validite,commentaire =self.testeUneValeur(valeurentree)
          if validite and ('R' in self.node.item.object.definition.type) and not(isinstance(valeur,PARAMETRE)) :
             s=valeurentree
             if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.'
-            valeur,validite,commentaire =self.TesteUneValeur(s)
+            valeur,validite,commentaire =self.testeUneValeur(s)
          if validite :
-            validite=self.node.item.set_valeur(valeur)
-            if self.node.item.isvalid():
+            validite=self.node.item.setValeur(valeur)
+            if self.node.item.isValid():
                   commentaire = tr("Valeur du mot-cle enregistree")
                   #commentaire = "Valeur du mot-cle enregistree"
-                  self.SetValeurTexte(str(valeurentree))
+                  self.setValeurTexte(str(valeurentree))
             else:
-                  cr = self.node.item.get_cr()
-                  commentaire =  tr("Valeur du mot-cle non autorisee ")+cr.get_mess_fatal()
-                  self.node.item.set_valeur(ancienne_val)
+                  cr = self.node.item.getCr()
+                  commentaire =  tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal()
+                  self.node.item.setValeur(ancienneVal)
          return validite, commentaire 
 
  
@@ -186,7 +187,7 @@ class PolitiquePlusieurs(Validation):
          #print self.parent
 
 
-  def AjoutValeurs(self,listevaleur,index,listecourante):
+  def ajoutValeurs(self,listevaleur,index,listecourante):
          listeRetour=[]
          commentaire="Nouvelle valeur acceptee"
          commentaire2=""
@@ -196,7 +197,7 @@ class PolitiquePlusieurs(Validation):
          if not( type(listevaleur)  in (list,tuple)) :
             listevaleur=tuple(listevaleur)
          # on verifie que la cardinalite max n a pas ete atteinte
-         min,max = self.node.item.GetMinMax()
+         min,max = self.node.item.getMinMax()
          if len(listecourante) + len(listevaleur) > max :
             commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse"
             return False,commentaire,commentaire2,listeRetour
@@ -204,11 +205,11 @@ class PolitiquePlusieurs(Validation):
          for valeur in listevaleur :
              # On teste le type de la valeur
              valeurScientifique=valeur
-             valide=self.node.item.valide_item(valeur)
+             valide=self.node.item.valideItem(valeur)
              if not valide :
                 try :
-                   valeur,valide=self.node.item.eval_valeur(valeur)
-                   valide,commentaire2 = self.node.item.object.verif_type(valeur)
+                   valeur,valide=self.node.item.evalValeur(valeur)
+                   valide,commentaire2 = self.node.item.object.verifType(valeur)
                 except :
                    #return testtype,commentaire,"",listeRetour
                    pass
@@ -217,15 +218,15 @@ class PolitiquePlusieurs(Validation):
                    commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse: On attend une chaine de caracteres < 8"
                 else :
                    commentaire="Valeur "+str(valeur)+ " incorrecte : ajout a la liste refuse"
-                if commentaire2== "" :commentaire2=self.node.item.info_erreur_item()
+                if commentaire2== "" :commentaire2=self.node.item.infoErreurItem()
                 return valide,commentaire,commentaire2,listeRetour
 
              # On valide la liste obtenue
-             encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
+             encorevalide=self.node.item.valideListePartielle(valeur,listecourante)
              if not encorevalide :
-                commentaire2=self.node.item.info_erreur_liste()
+                commentaire2=self.node.item.infoErreurListe()
                 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
-                min,max = self.node.item.GetMinMax()
+                min,max = self.node.item.getMinMax()
                 if len(listecourante) + 1 >= max :
                    commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse"
                    return valide,commentaire,commentaire2,listeRetour
@@ -233,14 +234,14 @@ class PolitiquePlusieurs(Validation):
                    commentaire=""
                    return valide,commentaire,commentaire2,listeRetour
              # On ajoute la valeur testee a la liste courante et a la liste acceptee
-             self.AjoutDsDictReel(valeurScientifique)
+             self.ajoutDsDictReel(valeurScientifique)
              listecourante.insert(index,valeur)
              index=index+1
              listeRetour.append(valeur)
 
          return valide,commentaire,commentaire2,listeRetour
 
-  def AjoutTuple(self,valeurTuple,listecourante):
+  def ajoutTuple(self,valeurTuple,listecourante):
          listeRetour=[]
          commentaire="Nouvelle valeur acceptee"
          commentaire2=""
@@ -248,22 +249,46 @@ class PolitiquePlusieurs(Validation):
          if valeurTuple==None: return
          if valeurTuple==['']: return
          # On teste le type de la valeur
-         valide=self.node.item.valide_item(valeurTuple)
+         valide=self.node.item.valideItem(valeurTuple)
          if not valide :
             try :
-                valeur,valide=self.node.item.eval_valeur(valeurTuple)
-                valide = self.node.item.valide_item(valeur)
+                valeur,valide=self.node.item.evalValeur(valeurTuple)
+                valide = self.node.item.valideItem(valeur)
             except :
                 pass
          if not valide:
             commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout a la liste refuse"
-            commentaire2=self.node.item.info_erreur_item()
+            commentaire2=self.node.item.infoErreurItem()
             return valide,commentaire,commentaire2,listeRetour
 
          # On valide la liste obtenue
-         encorevalide=self.node.item.valide_liste_partielle(valeurTuple,listecourante)
+         encorevalide=self.node.item.valideListePartielle(valeurTuple,listecourante)
          if not encorevalide :
-            commentaire2=self.node.item.info_erreur_liste()
+            commentaire2=self.node.item.infoErreurListe()
             return valide,commentaire,commentaire2,listeRetour
          listeRetour.append(valeurTuple)
          return valide,commentaire,commentaire2,listeRetour
+
+  def ajoutNTuple(self,liste):
+         listeRetour=[]
+         commentaire="Nouvelles valeurs acceptee"
+         commentaire2=""
+         print (self.node.item.valideListePartielle)
+         valide=self.node.item.valideListePartielle(None,liste)
+         if not valide :
+            commentaire2=self.node.item.infoErreurListe()
+         return valide,commentaire,commentaire2,listeRetour
+
+  def recordValeur(self,liste,dejaValide=True):
+         ancienneVal = self.node.item.getValeur()
+         validite=self.node.item.setValeur(liste)
+         if validite : self.node.item.initModif()
+         if self.node.item.isValid():
+            commentaire = tr("Valeur du mot-cle enregistree")
+         else:
+            cr = self.node.item.getCr()
+            commentaire =  tr("Valeur du mot-cle non autorisee ")+cr.getMessFatal()
+            self.node.item.setValeur(ancienneVal)
+         return validite, commentaire 
+
+      
index 2bc9ba644c1a8f2266f40b9f7aa249f3c133b749..08de9be6bd88b8f24ce9dbefc958975533685819 100755 (executable)
@@ -1,3 +1,4 @@
+#!/usr/bin/env python
 # -*- coding: iso-8859-1 -*-
 # Copyright (C) 2007-2017   EDF R&D
 #
@@ -28,132 +29,133 @@ import os, sys
 import six
 
 
-from PyQt5.QtWidgets import QApplication, QMainWindow, QBoxLayout, QMenu, QAction, QMessageBox
+from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QBoxLayout, QMenu, QAction, QMessageBox
 from PyQt5.QtGui import QIcon
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSize
 
-from Extensions.i18n import tr
-from Extensions.eficas_exception import EficasException
-from Extensions import param2
 
-
-from myMain import Ui_Eficas
-from .viewManager import MyTabview
-from .getVersion import getEficasVersion
 from Editeur import session
+from myMain import Ui_Eficas
+from InterfaceQT4.viewManager import MyViewManager
+from InterfaceQT4.qtEficasSsIhm import AppliSsIhm
 
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
+from Extensions import param2
 
 
-class Appli(Ui_Eficas,QMainWindow):
+class Appli(AppliSsIhm,Ui_Eficas,QMainWindow):
     """
     Class implementing the main user interface.
     """
-    def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=False):
+    def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=False,versionCode=None):
         """
         Constructor
         """
+        if ssIhm == True : 
+           print ('mauvaise utilisation de la classe Appli. Utiliser AppliSsIm SVP')
+           exit()
+
+        AppliSsIhm.__init__(self,code,salome,parent,ssCode,multi,langue,ssIhm=True,versionCode=None)
         QMainWindow.__init__(self,parent)
         Ui_Eficas.__init__(self)
 
-        
-
-        version=getEficasVersion()
-        self.VERSION_EFICAS="Eficas QT5 Salome " + version
-        self.salome=salome
-        self.parentMainWindow=parent
-        self.ihm="QT"
-        self.ssIhm=ssIhm
-        self.top = self    #(pour CONFIGURATION)
-        self.QWParent=None #(Pour lancement sans IHM)
-        self.code=code
-        self.indice=0
-        self.first=1
-        self.dict_reels={}
-        self.recent =  []
-        self.ficRecents={}
-        self.mesScripts={}
-        self.listeAEnlever=[]
-        self.ListePathCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
-        self.listeCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
-        self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
-
-
-        if self.salome:
-          import Accas
-          try :
-            import eficasSalome
-            Accas.SalomeEntry = eficasSalome.SalomeEntry
-          except : 
-            print ('eficas hors salome')
-
+        self.ssIhm=False
         self.multi=multi
-        self.demande=multi # specifique PSEN
-
-        if langue=='fr': self.langue=langue
-        else           : self.langue="ang"
+        self.demande=multi # voir PSEN
 
         if self.multi == False :
              self.definitCode(code,ssCode)
              if code==None: return
+        else :
+             print ('a programmer')
 
         self.suiteTelemac=False
-        if hasattr (self, 'CONFIGURATION') :
-           if self.CONFIGURATION.force_langue :
-              from .monChoixLangue import MonChoixLangue
+        if hasattr (self, 'maConfiguration') :
+           if self.maConfiguration.force_langue :
+              from InterfaceQT4.monChoixLangue import MonChoixLangue
               widgetLangue = MonChoixLangue(self)
               ret=widgetLangue.exec_()
-           self.suiteTelemac=self.CONFIGURATION.suiteTelemac
+           self.suiteTelemac=self.maConfiguration.suiteTelemac
 
 
-        if not self.salome and hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'lang') : self.langue=self.CONFIGURATION.lang
+        if not self.salome and hasattr (self, 'maConfiguration') and hasattr(self.maConfiguration,'lang') : self.langue=self.maConfiguration.lang
         from Extensions import localisation
         app=QApplication
-        if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
-
+        if hasattr (self, 'maConfiguration') : localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier)
         self.setupUi(self)
+
         #if parent != None : self.parentCentralWidget = parent.centralWidget()
         #else              : self.parentCentralWidget = None
 
         if not self.salome :
-           if  hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'taille') : self.taille=self.CONFIGURATION.taille
+           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())
+           #if self.code in ['MAP',] : self.resize(1440,self.height())
+           #else : self.resize(self.taille,self.height())
+           self.resize(self.taille,self.height())
 
 
         icon = QIcon(self.repIcon+"/parametres.png")
         self.actionParametres.setIcon(icon)
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar  : 
+           self.frameEntete.setMaximumSize(QSize(16777215,100))
+           self.frameEntete.setMinimumSize(QSize(0,100))
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.enleverActionStructures  : 
+            self.enleverActionsStructures()
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.enleverParametres  : 
+            self.enleverParametres()
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.enleverSupprimer : 
+            self.enleverSupprimer()
 
 
         self.myQtab.removeTab(0)
-        self.blEntete= QBoxLayout(0,self.frameEntete)
+        self.blEnteteGlob = QBoxLayout(2,self.frameEntete)
+        self.blEnteteGlob.setSpacing(0)
+        self.blEnteteGlob.setContentsMargins(0,0,0,0)
+
+        self.blEntete = QBoxLayout(0)
         self.blEntete.insertWidget(0,self.toolBar)
         self.blEntete.insertWidget(0,self.menubar)
+        self.blEnteteGlob.insertLayout(0,self.blEntete)
 
-        if hasattr (self, 'CONFIGURATION') and self.CONFIGURATION.closeEntete==True and self.salome: self.closeEntete()
+
+        
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.boutonDsMenuBar  : 
+            self.blEnteteCommmande = QBoxLayout(0)
+            self.blEnteteCommmande.insertWidget(0,self.toolBarCommande)
+            self.toolBarCommande.setIconSize(QSize(96,96))
+            self.blEnteteGlob.insertLayout(-1,self.blEnteteCommmande)
+        else :
+            self.toolBarCommande.close()
+         
+
+        if hasattr (self, 'maConfiguration') and self.maConfiguration.closeEntete==True and self.salome: self.closeEntete()
 
         eficas_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
-        #self.resize(20,20)
-        self.viewmanager = MyTabview(self)
+        self.viewmanager = MyViewManager(self)
         self.recentMenu=QMenu(tr('&Recents'))
         #self.menuFichier.insertMenu(self.actionOuvrir,self.recentMenu)
+
         # actionARemplacer ne sert que pour l insert Menu
         self.menuFichier.insertMenu(self.actionARemplacer ,self.recentMenu)
         self.menuFichier.removeAction(self.actionARemplacer)
         self.connecterSignaux()
         self.toolBar.addSeparator()
+
         if self.code != None : self.construitMenu()
 
         self.setWindowTitle(self.VERSION_EFICAS)
-        #try :
-        if 1 :
+        try :
+        #if 1 :
+         # print ('attention try devient if 1')
           self.ouvreFichiers()
-        #except EficasException, exc:
+        except EficasException, exc:
         #except:
         #  print "je suis dans le except"
-          #if self.salome == 0 : exit()
+          if self.salome == 0 : exit()
 
         #self.adjustSize()
 
@@ -167,31 +169,12 @@ class Appli(Ui_Eficas,QMainWindow):
         self.ssCode=ssCode
         if self.code==None :
            self.cleanPath()
-           from .monChoixCode import MonChoixCode
+           from InterfaceQT4.monChoixCode import MonChoixCode
            widgetChoix = MonChoixCode(self)
            ret=widgetChoix.exec_()
-        import sys
+           #widgetChoix.show()
         if self.code == None:return # pour le cancel de la fenetre choix code
-        name='prefs_'+self.code
-        prefsCode=__import__(name)
-
-        self.repIni=prefsCode.repIni
-        if ssCode != None :
-           self.format_fichier= ssCode  #par defaut
-           prefsCode.NAME_SCHEME=ssCode
-        else :
-           self.format_fichier="python" #par defaut
-
-        nameConf='configuration_'+self.code
-        configuration=__import__(nameConf)
-        self.CONFIGURATION = configuration.make_config(self,prefsCode.repIni)
-        self.CONFIGStyle = None
-        if hasattr(configuration,'make_config_style'):
-           self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni)
-
-        if hasattr (self,'CONFIGURATION') and self.CONFIGURATION.translatorFichier : 
-           from Extensions import localisation
-           localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
+        AppliSsIhm.definitCode(self,self.code,ssCode)
 
         #PN --> pb d exception qui font planter salome
         # plus supporte en python 3
@@ -218,14 +201,17 @@ class Appli(Ui_Eficas,QMainWindow):
         if self.code.upper() in Appli.__dict__:
           Appli.__dict__[self.code.upper()](self,)
         if self.suiteTelemac : self.lookSuiteTelemac()
+        self.metMenuAJourUtilisateurs()
+        if  hasattr (self, 'maConfiguration') and self.maConfiguration.ajoutExecution : 
+            self.ajoutExecution()
 
     def initAides(self):
         #print "je passe la"
         repAide=os.path.dirname(os.path.abspath(__file__))
         fileName='index.html'
         self.docPath=repAide+"/../Aide"
-        if hasattr(self,'CONFIGURATION') and hasattr(self.CONFIGURATION,'docPath') : self.docPath=self.CONFIGURATION.docPath
-        if hasattr(self,'CONFIGURATION') and hasattr(self.CONFIGURATION,'fileName'):fileName=self.CONFIGURATION.fileName
+        if hasattr(self,'maConfiguration') and hasattr(self.maConfiguration,'docPath') : self.docPath=self.maConfiguration.docPath
+        if hasattr(self,'maConfiguration') and hasattr(self.maConfiguration,'fileName'):fileName=self.maConfiguration.fileName
         self.fileDoc=os.path.join(self.docPath,fileName)
         self.actionCode.setText(tr("Aide specifique ")+str(self.code))
         if not os.path.isfile(self.fileDoc) :
@@ -326,7 +312,7 @@ class Appli(Ui_Eficas,QMainWindow):
     def enleverSupprimer(self):
         self.toolBar.removeAction(self.actionSupprimer)
 
-    def enleverNewInclude(self):
+    def enlevernewInclude(self):
         self.actionNouvel_Include.setVisible(False)
 
     def enleverRechercherDsCatalogue(self):
@@ -337,16 +323,21 @@ class Appli(Ui_Eficas,QMainWindow):
         self.rechercherDejaLa=True
         self.actionRechercherDsCatalogue.triggered.connect(self.handleRechercherDsCatalogue)
 
-    def ajoutSortieLegere(self):
-        if hasattr(self,'actionSortieLegere') : return
-        self.actionSortieLegere = QAction(self)
-        self.actionSortieLegere.setText(tr("Sortie Legere"))
-        self.menuFichier.insertAction(self.actionEnregistrer_sous,self.actionSortieLegere)
-        self.actionSortieLegere.triggered.connect(self.handleSortieLegere)
+    def ajoutSortieComplete(self):
+        if hasattr(self,'actionSortieComplete') : return
+        self.actionSortieComplete = QAction(self)
+        self.actionSortieComplete.setText(tr("Sortie Complete"))
+        self.menuFichier.insertAction(self.actionEnregistrer_sous,self.actionSortieComplete)
+        self.actionSortieComplete.triggered.connect(self.handleSortieComplete)
+
+
+    def MT(self):
+        self.enlevernewInclude()
+        self.toolBar.addSeparator()
 
 
     def ZCRACKS(self):
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.toolBar.addSeparator()
         self.ajoutExecution()
 
@@ -356,7 +347,7 @@ class Appli(Ui_Eficas,QMainWindow):
 
     def ADAO(self):
         self.enleverActionsStructures()
-        self.enleverNewInclude()
+        self.enlevernewInclude()
 
     def ASTER(self) :
         self.menuTraduction = self.menubar.addMenu("menuTraduction")
@@ -374,21 +365,21 @@ class Appli(Ui_Eficas,QMainWindow):
 
     def CARMEL3D(self):
         #if self.salome == 0 : return
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.menuMesh = self.menubar.addMenu(tr("Gestion Maillage"))
         self.menuMesh.setObjectName("Mesh")
         self.menuMesh.addAction(self.actionChercheGrpMaille)
         #self.griserActionsStructures()
 
     def CARMELCND(self):
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.enleverRechercherDsCatalogue()
         self.ajoutExecution()
         self.ajoutSauveExecution()
         self.griserActionsStructures()
 
     def MAP(self):
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.toolBar.addSeparator()
         self.ajoutExecution()
         self.ajoutSauveExecution()
@@ -396,6 +387,14 @@ class Appli(Ui_Eficas,QMainWindow):
         self.menuOptions.addAction(self.actionParametres_Eficas)
         self.menuOptions.setTitle(tr("Options"))
 
+    def MAPIDENTIFICATION(self):
+        self.enlevernewInclude()
+        self.enleverSupprimer()
+        #self.ajoutExecution()
+        self.enleverRechercherDsCatalogue()
+        self.enleverActionsStructures()
+        self.enleverParametres()
+
     def PSEN(self):
         if self.first:  self.first=0
         try : self.action_Nouveau.triggered.disconnect(self.fileNew)
@@ -407,7 +406,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.enleverActionsStructures()
         self.enleverParametres()
         self.enleverRechercherDsCatalogue()
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.ajoutExecution()
         self.ajoutN1()
         self.ajoutHelpPSEN()
@@ -417,19 +416,19 @@ class Appli(Ui_Eficas,QMainWindow):
         self.enleverActionsStructures()
         self.enleverParametres()
         self.enleverRechercherDsCatalogue()
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.ajoutExecution()
         self.ajoutIcones()
 
     def TELEMAC(self):
         self.enleverActionsStructures()
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.connectRechercherDsCatalogue()
-        self.ajoutSortieLegere()
+        self.ajoutSortieComplete()
 
     def lookSuiteTelemac(self):
         self.enleverActionsStructures()
-        self.enleverNewInclude()
+        self.enlevernewInclude()
         self.enleverParametres()
         self.enleverSupprimer()
         self.enleverRechercherDsCatalogue()
@@ -490,7 +489,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
 
         self.connect(self.action_Nouveau,SIGNAL("triggered()"),self.fileNew)
-        self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.NewInclude)
+        self.connect(self.actionNouvel_Include,SIGNAL("triggered()"),self.newInclude)
         self.connect(self.actionOuvrir,SIGNAL("triggered()"),self.fileOpen)
         self.connect(self.actionEnregistrer,SIGNAL("triggered()"),self.fileSave)
         self.connect(self.actionEnregistrer_sous,SIGNAL("triggered()"),self.fileSaveAs)
@@ -507,7 +506,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.connect(self.actionColler,SIGNAL("triggered()"),self.editPaste)
         self.connect(self.actionSupprimer,SIGNAL("triggered()"),self.supprimer)
         self.connect(self.actionRechercher,SIGNAL("triggered()"),self.rechercher)
-        self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.Deplier)
+        self.connect(self.actionDeplier_replier,SIGNAL("triggered()"),self.handleDeplier)
 
         self.connect(self.actionRapport_de_Validation,SIGNAL("triggered()"),self.jdcRapport)
         self.connect(self.actionRegles_du_JdC,SIGNAL("triggered()"),self.jdcRegles)
@@ -557,7 +556,7 @@ class Appli(Ui_Eficas,QMainWindow):
 
         self.recentMenu.aboutToShow.connect(self.handleShowRecentMenu)
         self.action_Nouveau.triggered.connect(self.fileNew)
-        self.actionNouvel_Include.triggered.connect(self.NewInclude)
+        self.actionNouvel_Include.triggered.connect(self.newInclude)
         self.actionOuvrir.triggered.connect(self.fileOpen)
         self.actionEnregistrer.triggered.connect(self.fileSave)
         self.actionEnregistrer_sous.triggered.connect(self.fileSaveAs)
@@ -575,7 +574,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.actionColler.triggered.connect(self.editPaste)
         self.actionSupprimer.triggered.connect(self.supprimer)
         self.actionRechercher.triggered.connect(self.rechercher)
-        self.actionDeplier_replier.triggered.connect(self.Deplier)
+        self.actionDeplier_replier.triggered.connect(self.handleDeplier)
 
         self.actionRapport_de_Validation.triggered.connect(self.jdcRapport)
         self.actionRegles_du_JdC.triggered.connect(self.jdcRegles)
@@ -619,7 +618,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.actionCode.triggered.connect(self.aideCode)
 
 
-    def Deplier(self):
+    def handleDeplier(self):
         self.viewmanager.handleDeplier()
 
     def ajoutCommentaire(self):
@@ -631,11 +630,11 @@ class Appli(Ui_Eficas,QMainWindow):
         self.dir=cwd
         for study in session.d_env.studies:
             os.chdir(cwd)
-            d=session.get_unit(study,self)
+            d=session.getUnit(study,self)
             self.viewmanager.handleOpen(fichier=study["comm"],units=d)
 
 
-    def  get_source(self,file):
+    def  getSource(self,file):
     # appele par Editeur/session.py
         import convert
         p=convert.plugins['python']()
@@ -714,7 +713,7 @@ class Appli(Ui_Eficas,QMainWindow):
 
     def sauveRecents(self) :
        try :
-         rep=self.CONFIGURATION.rep_user
+         rep=self.maConfiguration.rep_user
          monFichier=rep+"/listefichiers_"+self.code
        except :
          return
@@ -737,15 +736,15 @@ class Appli(Ui_Eficas,QMainWindow):
 
     def traductionV11V12(self):
         from .gereTraduction import traduction
-        traduction(self.CONFIGURATION.repIni,self.viewmanager,"V11V12")
+        traduction(self.maConfiguration.repIni,self.viewmanager,"V11V12")
 
     def traductionV10V11(self):
         from .gereTraduction import traduction
-        traduction(self.CONFIGURATION.repIni,self.viewmanager,"V10V11")
+        traduction(self.maConfiguration.repIni,self.viewmanager,"V10V11")
 
     def traductionV9V10(self):
         from .gereTraduction import traduction
-        traduction(self.CONFIGURATION.repIni,self.viewmanager,"V9V10")
+        traduction(self.maConfiguration.repIni,self.viewmanager,"V9V10")
 
     def version(self) :
         from .monVisu import DVisu
@@ -803,16 +802,16 @@ class Appli(Ui_Eficas,QMainWindow):
         #else :
            QMessageBox.critical( self, tr("Parametrage"), tr("Pas de possibilite de personnalisation de la configuration "))
            return
-        monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
+        monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.maConfiguration)
         monOption.show()
 
     def optionPdf(self) :
         from monOptionsPdf import OptionPdf
-        monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
+        monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.maConfiguration)
         monOption.show()
 
-    def handleSortieLegere(self):
-        return self.viewmanager.saveLegerCurrentEditor()
+    def handleSortieComplete(self):
+        return self.viewmanager.saveCompleteCurrentEditor()
 
     def handleShowRecentMenu(self):
         """
@@ -928,7 +927,7 @@ class Appli(Ui_Eficas,QMainWindow):
         self.viewmanager.handleViewJdcRegles()
 
     def gestionParam(self):
-        self.viewmanager.handlegestionParam()
+        self.viewmanager.handleGestionParam()
 
     def visuJdcPy(self):
         self.viewmanager.handleViewJdcPy()
@@ -939,7 +938,7 @@ class Appli(Ui_Eficas,QMainWindow):
     def fermeArbre(self):
         self.viewmanager.fermeArbre()
 
-    def NewInclude(self):
+    def newInclude(self):
         self.viewmanager.newIncludeEditor()
 
     def cleanPath(self):
@@ -960,19 +959,50 @@ class Appli(Ui_Eficas,QMainWindow):
       res=self.fileExit()
       if res==2 : event.ignore()
 
+    def remplitIconesCommandes(self):
+        if self.maConfiguration.boutonDsMenuBar == False : return
+        if not hasattr(self, 'readercata') : return
+        from monLayoutBouton import MonLayoutBouton
+        if hasattr(self,'monLayoutBoutonRempli') : return
+        self.monLayoutBoutonRempli=MonLayoutBouton(self)
+        
+    def handleAjoutEtape(self,nomEtape):
+        self.viewmanager.handleAjoutEtape(nomEtape)
+     
+    def metMenuAJourUtilisateurs(self):
+        self.lesFonctionsUtilisateurs={}
+        if self.code not in self.mesScripts : return
+        if not hasattr(self.mesScripts[self.code],'dict_menu') : return
+        titre,lesFonctions=self.mesScripts[self.code].dict_menu.items()[0]
+        self.menuOptions = self.menubar.addMenu("menuOptions")
+        self.menuOptions.setTitle(tr(titre))
+        for elt in lesFonctions :
+            laFonctionUtilisateur, label, lesArguments = elt
+            action = QAction(self)
+            action.setText(label)
+            #action.triggered.connect(self.appelleFonctionUtilisateur)
+            self.menuOptions.addAction(action)
+            self.lesFonctionsUtilisateurs[action]=(laFonctionUtilisateur, lesArguments)
+        self.menuOptions.triggered.connect(self.handleFonctionUtilisateur)
+
+    def handleFonctionUtilisateur(self,action) :
+        (laFonctionUtilisateur, lesArguments)=self.lesFonctionsUtilisateurs[action]
+        self.viewmanager.handleFonctionUtilisateur(laFonctionUtilisateur, lesArguments)
 
 if __name__=='__main__':
 
     # Modules Eficas
-    rep=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__),'..','ASTER')))
+    rep=os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__),'..','Adao')))
     sys.path.append(rep)
-    from Aster import prefsCode
-    if hasattr(prefsCode,'encoding'):
+    from Adao import prefs
+    from Adao import prefs_Adao
+    #if hasattr(prefsCode,'encoding'):
        # Hack pour changer le codage par defaut des strings
-       import sys
-       reload(sys)
-       sys.setdefaultencoding(prefsCode.encoding)
-       del sys.setdefaultencoding
+       #import sys
+       #reload(sys)
+       #sys.setdefaultencoding(prefsCode.encoding)
+       #del sys.setdefaultencoding
        # Fin hack
 
     from Editeur import import_code
diff --git a/InterfaceQT4/qtEficasSsIhm.py b/InterfaceQT4/qtEficasSsIhm.py
new file mode 100755 (executable)
index 0000000..59f39bf
--- /dev/null
@@ -0,0 +1,173 @@
+# -*- coding: iso-8859-1 -*-
+# 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
+except : pass
+
+import os, sys
+import six
+
+from Extensions.eficas_exception import EficasException
+from Extensions import param2
+
+from InterfaceQT4.getVersion import getEficasVersion
+from InterfaceQT4.viewManagerSsIhm import MyViewManagerSsIhm
+#from editorSsIhm import JDCEditorSsIhm
+
+
+class AppliSsIhm:
+    """
+    Class implementing the main user interface.
+    """
+    def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=True,versionCode=None):
+        """
+        Constructor
+        """
+        version=getEficasVersion()
+        self.VERSION_EFICAS="Eficas QT5 Salome " + version
+        self.versionCode=versionCode
+
+        self.salome=salome
+        self.ssIhm=True
+        self.code=code
+
+        self.dict_reels={}
+        self.fichierIn=None
+        self.fichierOut=None
+
+        self.recent =  []
+        self.ficRecents={}
+        self.mesScripts={}
+        self.listeAEnlever=[]
+        self.ListePathCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
+        self.listeCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
+        self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
+
+        if self.salome:
+          import Accas
+          try :
+            import eficasSalome
+            Accas.SalomeEntry = eficasSalome.SalomeEntry
+          except : 
+            print ('eficas hors salome')
+
+        self.multi=multi
+        if self.multi : 
+              print ('pas de multi sans ihm')
+
+
+        if langue=='fr': self.langue=langue
+        else           : self.langue="ang"
+
+        if self.multi == False :
+             self.definitCode(code,ssCode)
+             if code==None: return
+
+        self.suiteTelemac=False
+        self.viewmanager=MyViewManagerSsIhm(self)
+
+
+    def definitCode(self,code,ssCode) :
+        self.code=code
+        self.ssCode=ssCode
+        if self.code == None:return # pour le cancel de la fenetre choix code
+
+        name='prefs_'+self.code
+        prefsCode=__import__(name)
+
+        self.repIni=prefsCode.repIni
+        if ssCode != None :
+           self.format_fichier= ssCode  #par defaut
+           prefsCode.NAME_SCHEME=ssCode
+        else :
+           self.format_fichier="python" #par defaut
+
+        nameConf='configuration_'+self.code
+        configuration=__import__(nameConf)
+        self.maConfiguration = configuration.make_config(self,prefsCode.repIni)
+
+        if hasattr (self,'maConfiguration') and self.maConfiguration.translatorFichier :
+           from Extensions import localisation
+           localisation.localise(None,self.langue,translatorFichier=self.maConfiguration.translatorFichier)
+
+
+    def getSource(self,file):
+    # appele par Editeur/session.py
+        import convert
+        p=convert.plugins['python']()
+        p.readfile(file)
+        texte=p.convert('execnoparseur')
+        return texte
+
+
+    def initEditor(self,fichier = None,jdc = None, units = None,include=0):
+        if self.editor != None : 
+           print ('un seul editeur par appli')
+           sys.Exit()
+        self.editor = JDCEditorSsIhm(self,fichier, jdc, self.myQtab,units=units,include=include)
+        
+
+    def fileNew(self):
+        self.editor=initEditor(self)
+
+    def getEditor(self):
+        return self.editor
+
+    def fileOpen(self,fichier):
+        fichierIn = os.path.abspath(six.text_type(fichier))
+        try:
+            monEditor=self.viewmanager.handleOpen(fichierIn)
+        except EficasException as exc:
+            print ('poum')
+            monEditor=None
+        return monEditor
+
+    def fileSave(self):
+        if self.editor == None : return False
+        ok, newName = editor.saveFileAs()
+        print ('ok, newName ',ok, newName)
+
+    def fileSaveAs(self,fileName):
+        if self.editor == None : return False
+        ok = editor.saveFileAs()
+        print ('ok ',ok)
+
+    def dumpXsd(self):
+        current_cata    = CONTEXT.getCurrentCata()
+        current_cata.dumpXsd()
+        if self.maConfiguration.afficheIhm==False : exit()
+
+#,self.fileSaveAs
+#,self.fileClose
+#,self.fileExit
+#,self.jdcRapport
+#,self.jdcRegles
+#,self.jdcFichierSource
+#,self.visuJdcPy
+       
+
+
+if __name__=='__main__':
+
+    # Modules Eficas
+    monEficas= AppliSsIhm(code='Adao',salome=0,versionCode='V83')
index d8f595d7e70cc5817a1f4d1d08bffbf5405f4961..2eb78021cc3581065222d1571afb6250c946bd32 100644 (file)
@@ -302,7 +302,7 @@ class Appli(Ui_Eficas,QMainWindow):
             self.viewmanager.handleOpen(fichier=study["comm"],units=d)
 
 
-    def  get_source(self,file):
+    def  getSource(self,file):
     # appele par Editeur/session.py
         import convert
         p=convert.plugins['python']()
index 42260b1f708581c725d9a14d463269c942bb2470..1b0b79ab527cce468afbd1738d6b447730ece1e7 100644 (file)
@@ -41,7 +41,7 @@ class SaisieValeur(object):
        pass
 
 
-  def LEValeurPressed(self,valeur=None):
+  def LEvaleurPressed(self,valeur=None):
          if not hasattr(self, 'inSaisieValeur' ) : self.inSaisieValeur=False
          if self.inSaisieValeur : return
          self.inSaisieValeur=True
@@ -49,8 +49,8 @@ class SaisieValeur(object):
             try :
               nouvelleValeur=str(self.lineEditVal.text())
             except UnicodeEncodeError as e :
-               self.editor.affiche_infos("pb d encoding", Qt.red)
-               validite,commentaire=self.politique.RecordValeur(None)
+               self.editor.afficheInfos("pb d encoding", Qt.red)
+               validite,commentaire=self.politique.recordValeur(None)
                self.lineEditVal.setText('')
                self.setValide()
                self.inSaisieValeur=False
@@ -63,21 +63,21 @@ class SaisieValeur(object):
               if hasattr(self,"lineEditVal"):self.lineEditVal.setText(valeur)
             nouvelleValeur=valeur
          if self.node.item.definition.validators != None :
-          if self.node.item.definition.validators.verif_item(nouvelleValeur) !=1 :
-                commentaire=self.node.item.definition.validators.info_erreur_item()
-                self.editor.affiche_infos(commentaire,Qt.red)
+          if self.node.item.definition.validators.verifItem(nouvelleValeur) !=1 :
+                commentaire=self.node.item.definition.validators.infoErreurItem()
+                self.editor.afficheInfos(commentaire,Qt.red)
                 self.inSaisieValeur=False
                 return
-         nouvelleValeurFormat=self.politique.GetValeurTexte(nouvelleValeur)
-         validite,commentaire=self.politique.RecordValeur(nouvelleValeurFormat)
+         nouvelleValeurFormat=self.politique.getValeurTexte(nouvelleValeur)
+         validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat)
          if commentaire != "" :
             #PNPNPNP Il faut trouver une solution pour les 2 cas 
-            #   self.editor.affiche_infos(commentaire)
+            #   self.editor.afficheInfos(commentaire)
             #self.Commentaire.setText(tr(commentaire))
             if validite :
-                self.editor.affiche_commentaire(commentaire)
+                self.editor.afficheCommentaire(commentaire)
             else :
-                self.editor.affiche_infos(commentaire,Qt.red)
+                self.editor.afficheInfos(commentaire,Qt.red)
          self.inSaisieValeur=False
          self.setValide()
 
@@ -111,12 +111,13 @@ class SaisieValeur(object):
             valeur=valeurBrute
 
         # pour traiter 11.0 - 30.0 pour le CIST
-        if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.wait_TXM())) :
+        #if (valeurTraitee and (type(valeurTraitee) in types.StringTypes) and (self.node.item.waitTxm())) :
+        if (valeurTraitee and  isinstance(valeurTraitee, str)  and (self.node.item.waitTxm())) :
            valeur=str(valeurTraitee)
 
 
         if type(valeur)  in (list,tuple) :
-           if self.node.item.wait_complex() :
+           if self.node.item.waitComplex() :
               indice = 0
               while (indice < len(valeur)):
                  v=valeur[indice]
@@ -128,7 +129,7 @@ class SaisieValeur(object):
                        indice=indice+3
                     except :
                        commentaire = tr("Veuillez entrer le complexe sous forme aster ou sous forme python")
-                       self.editor.affiche_infos(commentaire)
+                       self.editor.afficheInfos(commentaire)
                        return listeValeurs,0
                        
 
@@ -154,23 +155,23 @@ class SaisieSDCO(object) :
            Lit le nom donne par l'utilisateur au concept de type CO qui doit être
            la valeur du MCS courant et stocke cette valeur
         """
-        self.editor.init_modif()
-        anc_val = self.node.item.get_valeur()
+        self.editor.initModif()
+        anc_val = self.node.item.getValeur()
         if anc_val != None:
           # il faut egalement propager la destruction de l'ancien concept
-          self.node.item.delete_valeur_co(valeur=anc_val)
+          self.node.item.deleteValeurCo(valeur=anc_val)
           # et on force le recalcul des concepts de sortie de l'etape
-          self.node.item.object.etape.get_type_produit(force=1)
+          self.node.item.object.etape.getType_produit(force=1)
           # et le recalcul du contexte
-          self.node.item.object.etape.parent.reset_context()
+          self.node.item.object.etape.parent.resetContext()
         nomConcept = str(self.LESDCO.text())
         if nomConcept == "" : return
 
-        test,commentaire=self.node.item.set_valeur_co(nomConcept)
+        test,commentaire=self.node.item.setValeurCo(nomConcept)
         if test:
            commentaire=tr("Valeur du mot-clef enregistree")
-           self.node.update_node_valid()
+           self.node.updateNodeValid()
         else :
-           cr = self.node.item.get_cr()
-           commentaire = tr("Valeur du mot-clef non autorisee :")+cr.get_mess_fatal()
+           cr = self.node.item.getCr()
+           commentaire = tr("Valeur du mot-clef non autorisee :")+cr.getMessFatal()
                                                                                          
index 3943955f1a6573677288fe3b8fa94fc4b482be76..f788c8b6e386a316563dc371528dd55d23215aec 100644 (file)
@@ -45,78 +45,81 @@ import analyse_catalogue
 import analyse_catalogue_initial
 import autre_analyse_cata
 import uiinfo
-from .monChoixCata import MonChoixCata
+from InterfaceQT4.monChoixCata import MonChoixCata
 from Extensions.i18n import tr
 from Extensions.eficas_exception import EficasException
 
 from PyQt5.QtWidgets import QMessageBox, QApplication, QDialog
 
+#-------------------------------
+class ReaderCataCommun(object):
+#-------------------------------
 
+   def askChoixCatalogue(self, cata_choice_list):
+   # ____________________________________________
+      """
+      Ouvre une fenetre de selection du catalogue dans le cas où plusieurs
+      ont ete definis dans Accas/editeur.ini
+      """
+      code = getattr(self.appliEficas.maConfiguration, "code", None)
+      if code != None :
+          title=tr("Choix d une version du code ")+str(code)
+      else :
+          title=tr("Choix d une version ")
 
-class READERCATA(object):
+      widgetChoix = MonChoixCata(self.appliEficas, [cata.user_name for cata in cata_choice_list], title)
+      ret=widgetChoix.exec_()
 
-   def __init__(self,QWParent, appliEficas):
-      self.QWParent=QWParent
-      self.appliEficas=self.QWParent.appliEficas
-      self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
-      self.code=self.QWParent.code
-      self.ssCode=self.appliEficas.ssCode
-      self.appliEficas.format_fichier='python'
-      self.mode_nouv_commande=self.appliEficas.CONFIGURATION.mode_nouv_commande
-      self.version_code=self.QWParent.version_code
-      self.version_cata=None
-      self.fic_cata=None
-      self.OpenCata()
-      self.cataitem=None
-      self.cree_dico_inverse()
-      if self.code=="TELEMAC": self.cree_dico_CasToCata()
-      #for k in self.dicoInverse:
-      #   genea= self.dicoInverse[k]
-      #   for t in genea :
-      #       print t[0]
-      #   print "\n"
 
+      lab=str(self.VERSION_EFICAS)+" "
+      lab+=tr(" pour ")
+      lab+=str(self.code)
+      lab+=tr(" avec le catalogue ")
+      if ret == QDialog.Accepted:
+          cata = cata_choice_list[widgetChoix.CBChoixCata.currentIndex()]
+          self.fic_cata = cata.cata_file_path
+          self.versionCode = cata.identifier
+          self.appliEficas.format_fichier = cata.file_format
+          self.appliEficas.format_fichier_in = cata.file_format_in
+          lab+=self.versionCode
+          self.appliEficas.setWindowTitle(lab)
+          #qApp.mainWidget().setCaption(lab)
+          widgetChoix.close()
+      else:
+          widgetChoix.close()
+          raise EficasException()
 
-   def OpenCata(self):
-      """ 
-          Ouvre le catalogue standard du code courant, cad le catalogue present
-          dans le repertoire Cata 
-      """
+   def choisitCata(self):
+   # ____________________
 
       liste_cata_possibles=[]
       self.Commandes_Ordre_Catalogue=[]
 
       all_cata_list = []
-      for catalogue in self.appliEficas.CONFIGURATION.catalogues:
-          if isinstance(catalogue, CatalogDescription):
-              all_cata_list.append(catalogue)
-          elif isinstance(catalogue, tuple):
-              all_cata_list.append(CatalogDescription.create_from_tuple(catalogue))
-          else:
-              print(("Catalog description cannot be interpreted: ", catalogue))
+      for catalogue in self.appliEficas.maConfiguration.catalogues:
+          if isinstance(catalogue, CatalogDescription): all_cata_list.append(catalogue)
+          elif isinstance(catalogue, tuple)           : all_cata_list.append(CatalogDescription.create_from_tuple(catalogue))
+          else: print(("Catalog description cannot be interpreted: ", catalogue))
 
       # This filter is only useful for codes that have subcodes (like MAP).
       # Otherwise, the "code" attribute of the catalog description can (should) be None.
-      if self.ssCode is None:
-          liste_cata_possibles = all_cata_list
+      if self.ssCode is None: liste_cata_possibles = all_cata_list
       else:
           for catalogue in all_cata_list:
-              if catalogue.code == self.code and catalogue.file_format == self.ssCode:
-                  liste_cata_possibles.append(catalogue)
+              if catalogue.code == self.code and catalogue.file_format == self.ssCode: liste_cata_possibles.append(catalogue)
 
-      if len(liste_cata_possibles)==0:          
+      if len(liste_cata_possibles)==0:
           QMessageBox.critical(self.QWParent, tr("Import du catalogue"),
                                tr("Pas de catalogue defini pour le code ") + self.code)
           self.appliEficas.close()
-          if self.appliEficas.salome == 0 :
-             sys.exit(1)
+          if self.appliEficas.salome == 0 : sys.exit(1)
           return
 
 
-      if self.version_code is not None:
+      if self.versionCode is not None:
           # La version a ete fixee
           for cata in liste_cata_possibles:
-             if self.version_code == cata.identifier:
+             if self.versionCode == cata.identifier:
                 self.fic_cata = cata.cata_file_path
                 self.appliEficas.format_fichier = cata.file_format
                 self.appliEficas.format_fichier_in = cata.file_format_in
@@ -124,39 +127,83 @@ class READERCATA(object):
           cata_choice_list = []
           for cata in liste_cata_possibles:
               if cata.selectable:
-                  if cata.default:
-                      cata_choice_list.insert(0, cata)
-                  else :
-                      cata_choice_list.append(cata)
+                  if cata.default : cata_choice_list.insert(0, cata)
+                  else            : cata_choice_list.append(cata)
+
           if len(cata_choice_list) == 0:
               QMessageBox.critical(self.QWParent, tr("Import du catalogue"),
                                    tr("Aucun catalogue trouve"))
               self.appliEficas.close()
-              if self.appliEficas.salome == 0 :
-                 sys.exit(1)
+              if self.appliEficas.salome == 0 : sys.exit(1)
+
           elif len(cata_choice_list) == 1:
               self.fic_cata = cata_choice_list[0].cata_file_path
-              self.version_code = cata_choice_list[0].identifier
+              self.versionCode = cata_choice_list[0].identifier
               self.appliEficas.format_fichier = cata_choice_list[0].file_format
               self.appliEficas.format_fichier_in = cata_choice_list[0].file_format_in
+
           else:
               # plusieurs catalogues sont disponibles : il faut demander a l'utilisateur
               # lequel il veut utiliser ...
-              self.ask_choix_catalogue(cata_choice_list)
+              self.askChoixCatalogue(cata_choice_list)
+              self.demandeCatalogue=True
 
       if self.fic_cata == None :
           if self.appliEficas.salome == 0 :
-             print(("Pas de catalogue pour code %s, version %s" %(self.code,self.version_code)))
+             print(("Pas de catalogue pour code %s, version %s" %(self.code,self.versionCode)))
              sys.exit(1)
           else :
              self.appliEficas.close()
              return
 
-      if self.code == "ASTER" : self.determineMater()
 
+#------------------------------------
+class ReaderCata (ReaderCataCommun):
+#------------------------------------
+
+   def __init__(self,QWParent, appliEficas):
+   # ______________________________________
+
+      self.QWParent=QWParent
+      self.appliEficas=self.QWParent.appliEficas
+      self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
+      self.demandeCatalogue=False
+      self.code=self.appliEficas.code
+      self.ssCode=self.appliEficas.ssCode
+      self.appliEficas.format_fichier='python'
+      self.versionCode=self.appliEficas.versionCode
+      self.fic_cata=None
+      self.openCata()
+      self.traiteIcones()
+      self.cataitem=None
+      self.creeDicoInverse()
+      if self.code=="TELEMAC": self.creeDicoCasToCata()
+
+
+
+   def openCata(self):
+      """
+          Ouvre le catalogue standard du code courant, cad le catalogue present
+          dans le repertoire Cata
+      """
       # import du catalogue
-      self.cata = self.import_cata(self.fic_cata)
-      if not self.cata :          
+      self.choisitCata()
+
+      if self.appliEficas.maConfiguration.withXSD :
+         try :
+           #import raw.Telemac2d as modeleMetier
+           #import raw.cata_genere_fact as modeleMetier
+           import raw.cata_map_genere as modeleMetier
+           #import raw.cata_bloc as modeleMetier
+           print ('import Test ad modeleMetier')
+         except :
+           modeleMetier = None
+      else :
+           modeleMetier = None
+
+      self.cata = self.importCata(self.fic_cata)
+      self.cata.modeleMetier = modeleMetier
+      if not self.cata :
           QMessageBox.critical( self.QWParent, tr("Import du catalogue"),tr("Impossible d'importer le catalogue ")+ self.fic_cata)
           self.appliEficas.close()
           if self.appliEficas.salome == 0 :
@@ -164,17 +211,26 @@ class READERCATA(object):
       #
       # analyse du catalogue (ordre des mots-cles)
       #
-      # Retrouve_Ordre_Cata_Standard fait une analyse textuelle du catalogue
-      # remplace par Retrouve_Ordre_Cata_Standard_autre qui utilise une numerotation
+      # retrouveOrdreCataStandard fait une analyse textuelle du catalogue
+      # remplace par retrouveOrdreCataStandardAutre qui utilise une numerotation
       # des mots cles a la creation
-      self.Retrouve_Ordre_Cata_Standard_autre()
-      if self.mode_nouv_commande== "initial" : self.Retrouve_Ordre_Cata_Standard()
+      #print (self.cata)
+      #print (dir(self.cata))
+      self.retrouveOrdreCataStandardAutre()
+      if self.appliEficas.maConfiguration.modeNouvCommande == "initial" : self.retrouveOrdreCataStandard()
       if hasattr(self.cata, 'Ordre_Des_Commandes') : self.Ordre_Des_Commandes=self.cata.Ordre_Des_Commandes
       else : self.Ordre_Des_Commandes=None
-      
-      if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') : 
+
+      if hasattr(self.cata, 'Classement_Commandes_Ds_Arbre') :
              self.Classement_Commandes_Ds_Arbre=self.cata.Classement_Commandes_Ds_Arbre
       else : self.Classement_Commandes_Ds_Arbre=()
+      if hasattr(self.cata,'enum'):
+         try :
+           _temp= __import__(self.cata.enum,globals(), locals(), ['DicoEnumCasFrToEnumCasEn', 'TelemacdicoEn'], 0)
+           self.DicoEnumCasFrToEnumCasEn = _temp.DicoEnumCasFrToEnumCasEn
+           self.TelemacdicoEn = _temp.TelemacdicoEn
+         except : pass
+
       #print self.cata.Ordre_Des_Commandes
 
       #
@@ -185,34 +241,15 @@ class READERCATA(object):
       #
       # traitement des clefs documentaires
       #
-      if self.code == "ASTER" : self.traite_clefs_documentaires()
-      self.cata=(self.cata,)
 
       self.titre=self.VERSION_EFICAS+" "+tr( " avec le catalogue ") + os.path.basename(self.fic_cata)
-      if self.appliEficas.top:
-        self.appliEficas.setWindowTitle(self.titre)
+      if self.appliEficas.ssIhm == False : self.appliEficas.setWindowTitle(self.titre)
       self.appliEficas.titre=self.titre
       self.QWParent.titre=self.titre
 
-   def determineMater(self) :
-      # Determinination du repertoire materiau
-      v_codeSansPoint=self.version_code
-      if v_codeSansPoint == None : return 
-      v_codeSansPoint=re.sub("\.","",v_codeSansPoint)
-      chaine="rep_mat_"+v_codeSansPoint
-      if hasattr(self.appliEficas.CONFIGURATION,chaine):
-          a=getattr(self.appliEficas.CONFIGURATION,chaine)
-      else :
-          try :
-             a=self.appliEficas.CONFIGURATION.dRepMat[self.version_code]
-          except :
-             if self.code == "ASTER" :
-                print ("Probleme avec le repertoire materiau")
-             a='.'
-      self.appliEficas.CONFIGURATION.rep_mat=a
-
-   def import_cata(self,cata):
-      """ 
+
+   def importCata(self,cata):
+      """
           Realise l'import du catalogue dont le chemin d'acces est donne par cata
       """
       nom_cata = os.path.splitext(os.path.basename(cata))[0]
@@ -220,7 +257,7 @@ class READERCATA(object):
       sys.path[:0] = [rep_cata]
       self.appliEficas.listeAEnlever.append(rep_cata)
 
-      
+
       if nom_cata in list(sys.modules.keys()) :
         del sys.modules[nom_cata]
       for k in sys.modules:
@@ -228,20 +265,12 @@ class READERCATA(object):
           del sys.modules[k]
 
       mesScriptsNomFichier='mesScripts_'+self.code.upper()
-      if self.code == "ASTER" :
-         self.appliEficas.rep_scripts=os.path.join(rep_cata,nom_cata)
-         sys.path[:0] = [self.appliEficas.rep_scripts]
-         try :
-             self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
-         except:
-             pass
-         sys.path=sys.path[1:]
-      else :
-         try :
-            self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
-         except:
-            pass
+      try :
+          self.appliEficas.mesScripts[self.code]=__import__(mesScriptsNomFichier)
+      except:
+          pass
 
+      #if 1 :
       try :
           o=__import__(nom_cata)
           return o
@@ -251,110 +280,63 @@ class READERCATA(object):
 
 
 
-   def Retrouve_Ordre_Cata_Standard_autre(self):
-      """ 
+   def retrouveOrdreCataStandardAutre(self):
+      """
           Construit une structure de donnees dans le catalogue qui permet
           a EFICAS de retrouver l'ordre des mots-cles dans le texte du catalogue.
           Pour chaque entite du catlogue on cree une liste de nom ordre_mc qui
           contient le nom des mots cles dans le bon ordre
-      """ 
-      self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata)
+      """
+      self.cata_ordonne_dico, self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata)
+      #self.appliEficas.liste_simp_reel = ()
+      #self.cata_ordonne_dico = {}
 
-   def Retrouve_Ordre_Cata_Standard(self):
-      """ 
+   def retrouveOrdreCataStandard(self):
+      """
           Retrouve l'ordre des mots-cles dans le catalogue, cad :
           Attention s appuie sur les commentaires
       """
       nom_cata = os.path.splitext(os.path.basename(self.fic_cata))[0]
       rep_cata = os.path.dirname(self.fic_cata)
-      self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyse_catalogue(self.fic_cata)
+      self.Commandes_Ordre_Catalogue = analyse_catalogue_initial.analyseCatalogue(self.fic_cata)
       #print self.Commandes_Ordre_Catalogue
 
-   def ask_choix_catalogue(self, cata_choice_list):
-      """
-      Ouvre une fenetre de selection du catalogue dans le cas où plusieurs
-      ont ete definis dans Accas/editeur.ini
-      """      
-      code = getattr(self.appliEficas.CONFIGURATION, "code", None)
-      if code != None : 
-          title=tr("Choix d une version du code ")+str(code)
-      else :
-          title=tr("Choix d une version ")
-    
-      widgetChoix = MonChoixCata(self.appliEficas, [cata.user_name for cata in cata_choice_list], title)
-      ret=widgetChoix.exec_()
-      
-      lab=str(self.VERSION_EFICAS)+" "
-      lab+=tr(" pour ")
-      lab+=str(self.code) 
-      lab+=tr(" avec le catalogue ")
-      if ret == QDialog.Accepted:
-          cata = cata_choice_list[widgetChoix.CBChoixCata.currentIndex()]
-          self.version_cata = cata.identifier
-          self.fic_cata = cata.cata_file_path
-          self.version_code = self.version_cata
-          self.appliEficas.format_fichier = cata.file_format
-          self.appliEficas.format_fichier_in = cata.file_format_in
-          lab+=self.version_cata
-          self.appliEficas.setWindowTitle(lab)
-          #qApp.mainWidget().setCaption(lab)
-      else:
-          raise EficasException()
-        
-
-   def traite_clefs_documentaires(self):
+   def traiteIcones(self):
+      if self.appliEficas.maConfiguration.ficIcones==None : return
       try:
-        fic_doc='rep_doc_'+str(self.version_code)
-        self.fic_doc=getattr(self.appliEficas.CONFIGURATION,fic_doc )
-        f=open(self.fic_doc)
+        ficIcones=self.appliEficas.maConfiguration.ficIcones
+        fichierIcones = __import__(ficIcones, globals(), locals(), [], -1)
+        self.appliEficas.maConfiguration.dicoIcones=fichierIcones.dicoDesIcones.dicoIcones
+        self.appliEficas.maConfiguration.dicoImages=fichierIcones.dicoDesIcones.dicoImages
       except:
-        print ("Pas de fichier associe contenant des clefs documentaires")
-        return
-
-      dict_clef_docu={}
-      for l in f.readlines():
-          clef=l.split(':')[0]
-          deb=l.find(':')+1
-          docu=l[deb:-1]
-          dict_clef_docu[clef]=docu
-      for oper in self.cata.JdC.commandes:
-           if oper.nom in dict_clef_docu :
-              oper.docu=dict_clef_docu[oper.nom]
-
-   def cree_dico_inverse(self):
+        print ("Pas de fichier associe contenant des liens sur les icones ")
+        self.appliEficas.maConfiguration.dicoIcones={}
+
+
+
+   def creeDicoInverse(self):
         self.dicoInverse={}
-        self.dicoMC={} 
-        listeEtapes=self.cata[0].JdC.commandes
-        for e in self.cata[0].JdC.commandes:
-            self.traite_entite(e)
-
-        #self.dicoFrancaisAnglais={}
-        #self.dicoAnglaisFrancais={}
-        #for k in self.dicoInverse:
-        #    listefr=[]
-        #    for nom, obj in self.dicoInverse[k] :
-        #        listefr.append((tr(nom),obj))
-        #        self.dicoFrancaisAnglais[tr(nom)]=nom
-        #        self.dicoAnglaisFrancais[nom]=tr(nom)
-        #    self.dicoInverseFrancais[tr(k)]=listefr
-        #    #print tr(k),listefr
-
-   
-   def cree_dico_CasToCata(self):
+        self.dicoMC={}
+        listeEtapes=self.cata.JdC.commandes
+        for e in self.cata.JdC.commandes:
+            self.traiteEntite(e)
+
+
+   def creeDicoCasToCata(self):
+      if hasattr(self.cata,'dicoCasEn'):
+        _temp= __import__(self.cata.dicoCasEn,globals(), locals(), ['DicoCasEnToCata'], 0)
         if self.appliEficas.langue=="ang" :
-           from dicoCasEnToCata import dicoCasEnToCata as dicoCasToCata
+           self.dicoCasToCata=_temp.dicoCasEnToCata
         else :
-           from dicoCasFrToCata import dicoCasFrToCata as dicoCasToCata
-        self.dicoCasToCata=dicoCasToCata
-        
-        
-         
-        
-   def traite_entite(self,e):
+           self.dicoCasToCata=_temp.dicoCasFrToCata
+
+
+
+   def traiteEntite(self,e):
        boolIn=0
        for (nomFils, fils) in list(e.entites.items()) :
           self.dicoMC[nomFils]=fils
-          self.traite_entite(fils)
+          self.traiteEntite(fils)
           boolIn=1
        if boolIn==0 :
           liste=[]
@@ -366,15 +348,22 @@ class READERCATA(object):
           self.dicoInverse[e.nom]=liste
           self.dicoInverse[tr(e.nom)]=liste
 
-   def cree_rubrique(self,e,dico, niveau):
+   def creeRubrique(self,e,dico, niveau):
        from Accas import A_BLOC
        decale=niveau*"   "
        #if niveau != 0 :
-       #    if isinstance(e,A_BLOC.BLOC): print decale, e.condition 
-       #    else :                           print decale, e. nom  
+       #    if isinstance(e,A_BLOC.BLOC): print decale, e.condition
+       #    else :                           print decale, e. nom
        for (nom, fils) in list(e.entites.items()) :
-           if  list(fils.entites.items()) != [] : self.cree_rubrique(fils,dico,niveau+1)
+           if  list(fils.entites.items()) != [] : self.creeRubrique(fils,dico,niveau+1)
            #else : print (niveau+1)*"   ", nom
 
-        
-          
+
+   def dumpToXsdEficas(self):
+       # Pas sur qu on ait jamais besoin de cela
+       pass
+       #from Efi2Xsd import readerEfficas
+       #newSchema=   xml = open('Cata_MED_FAM.xml').read()
+       #SchemaMed = efficas.CreateFromDocument(xml)
+       #SchemaMed.alimenteCata(self.cata)
+
diff --git a/InterfaceQT4/readercataXML.py b/InterfaceQT4/readercataXML.py
new file mode 100644 (file)
index 0000000..5579a82
--- /dev/null
@@ -0,0 +1,83 @@
+# -*- 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
+#
+"""
+    Ce module sert a lire un catalogue et a construire
+    un objet CataItem pour Eficas.
+    Il s'appuie sur la classe READERCATA
+"""
+# Modules Python
+import sys, os
+import autre_analyse_cata
+
+
+# Modules Eficas
+
+from monChoixCata import MonChoixCata
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
+import uiinfo
+from Efi2Xsd import readerEfiXsd
+# ATtention pas teste depuis le chgt de nom
+
+from readercata import ReaderCataCommun
+
+class ReaderCata (ReaderCataCommun):
+
+   def __init__(self,QWParent, appliEficas):
+      self.QWParent=QWParent
+      self.appliEficas=appliEficas
+      self.VERSION_EFICAS=self.appliEficas.VERSION_EFICAS
+      self.code=self.appliEficas.code
+      self.ssCode=self.appliEficas.ssCode
+      self.appliEficas.format_fichier='python'
+      self.appliEficas.format_fichier_in ='xml'
+      self.modeNouvCommande=self.appliEficas.maConfiguration.modeNouvCommande
+      self.versionCode=self.appliEficas.versionCode
+      self.version_cata=None
+      self.fic_cata=None
+      self.OpenCata()
+      self.cataitem=None
+      self.titre='Eficas XML'
+      self.Ordre_Des_Commandes=None
+      self.Classement_Commandes_Ds_Arbre=()
+      self.demandeCatalogue=False
+
+      #self.traiteIcones()
+      #self.creeDicoInverse()
+
+
+   def OpenCata(self):
+
+      #self.fic_cata = 'Cata_MED_FAM.xml'
+      #xml = open('/home/A96028/QT5GitEficasTravail/eficas/Med/Cata_MED_FAM.xml').read()
+      #xml = open('/home/A96028/QT5GitEficasTravail/eficas/CataTestXSD/cata_test1.xml').read()
+      self.choisitCata()
+      xml=open(self.fic_cata).read()
+      SchemaMed = readerEfiXsd.efficas.CreateFromDocument(xml)
+      SchemaMed.exploreCata() 
+      self.cata=SchemaMed
+      uiinfo.traite_UIinfo(self.cata)
+      self.Commandes_Ordre_Catalogue=[]
+      self.cata_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyseCatalogue(self.cata)
+      self.liste_groupes=None
+
+   def dumpToXml(self):
+      # pour compatibilite
+       pass
index 73fdb9b0e0cac7a4826743f9886ee3e0d48f1743..f9e2e944269d4696ffe1bbfa95d0bd3ce77b95af 100644 (file)
@@ -27,13 +27,10 @@ from PyQt5.QtWidgets import QAction, QMenu, QMessageBox
 from Extensions.i18n import tr
 import types
 
-
-
 #---------------------------#
 class PopUpMenuRacine(object) :
 #---------------------------#
 
-
     def createPopUpMenu(self):
         #print "createPopUpMenu"
         self.ParamApres = QAction(tr('Parametre'),self.tree)
@@ -53,7 +50,7 @@ class PopUpMenuNodeMinimal(object) :
 #---------------------------#
 
     def createPopUpMenu(self):
-        #print "createPopUpMenu"
+        #print ("createPopUpMenu")
         #self.appliEficas.salome=True
         self.createActions()
         self.menu = QMenu(self.tree)
@@ -65,12 +62,12 @@ class PopUpMenuNodeMinimal(object) :
         if hasattr(self.appliEficas, 'mesScripts'):
             if self.editor.code in  self.editor.appliEficas.mesScripts :
                self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
-               if self.tree.currentItem().item.get_nom() in self.dict_commandes_mesScripts : 
+               if self.tree.currentItem().item.getNom() in self.dict_commandes_mesScripts : 
                    self.ajoutScript()
     
     def ajoutScript(self):
-
     # cochon mais je n arrive pas a faire mieux avec le mecanisme de plugin
+    # a revoir avec un menu et un connect sur le triggered sur le menu ?
         if hasattr(self.appliEficas, 'mesScripts'):
             if self.editor.code in  self.editor.appliEficas.mesScripts :
                self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
@@ -79,7 +76,7 @@ class PopUpMenuNodeMinimal(object) :
         from Extensions import jdc_include
         if isinstance(self.item.jdc,jdc_include.JDC_INCLUDE) : return
 
-        listeCommandes=self.dict_commandes_mesScripts[self.tree.currentItem().item.get_nom()]
+        listeCommandes=self.dict_commandes_mesScripts[self.tree.currentItem().item.getNom()]
         if type(listeCommandes) != tuple: listeCommandes=(listeCommandes,)
         numero=0
         for commande in listeCommandes :
@@ -89,33 +86,32 @@ class PopUpMenuNodeMinimal(object) :
            tip=commande[5]
            self.action=QAction(label,self.tree)
            self.action.setStatusTip(tip)
-           if numero==4: self.action.triggered.connect(self.AppelleFonction4)
-           if numero==3: self.action.triggered.connect(self.AppelleFonction3); numero=4
-           if numero==2: self.action.triggered.connect(self.AppelleFonction2); numero=3
-           if numero==1: self.action.triggered.connect(self.AppelleFonction1); numero=2
-           if numero==0: self.action.triggered.connect(self.AppelleFonction0); numero=1
+           if numero==4: self.action.triggered.connect(self.appelleFonction4)
+           if numero==3: self.action.triggered.connect(self.appelleFonction3); numero=4
+           if numero==2: self.action.triggered.connect(self.appelleFonction2); numero=3
+           if numero==1: self.action.triggered.connect(self.appelleFonction1); numero=2
+           if numero==0: self.action.triggered.connect(self.appelleFonction0); numero=1
            self.menu.addAction(self.action)
 
 
-    def AppelleFonction0(self):
-        self.AppelleFonction(0)
-
-    def AppelleFonction1(self):
-        self.AppelleFonction(1)
+    def appelleFonction0(self):
+        self.appelleFonction(0)
 
-    def AppelleFonction2(self):
-        self.AppelleFonction(2)
+    def appelleFonction1(self):
+        self.appelleFonction(1)
 
-    def AppelleFonction3(self):
-        self.AppelleFonction(3)
+    def appelleFonction2(self):
+        self.appelleFonction(2)
 
-    def AppelleFonction4(self):
-        self.AppelleFonction(4)
+    def appelleFonction3(self):
+        self.appelleFonction(3)
 
+    def appelleFonction4(self):
+        self.appelleFonction(4)
 
-    def AppelleFonction(self,numero,nodeTraite=None):
+    def appelleFonction(self,numero,nodeTraite=None):
         if nodeTraite==None : nodeTraite=self.tree.currentItem()
-        nomCmd=nodeTraite.item.get_nom()
+        nomCmd=nodeTraite.item.getNom()
         if hasattr(self.appliEficas, 'mesScripts'):
             if self.editor.code in  self.editor.appliEficas.mesScripts :
                self.dict_commandes_mesScripts=self.appliEficas.mesScripts[self.editor.code].dict_commandes
@@ -125,7 +121,7 @@ class PopUpMenuNodeMinimal(object) :
         conditionValid=commande[4]
 
 
-        if (nodeTraite.item.isvalid() == 0 and conditionValid == True):
+        if (nodeTraite.item.isValid() == 0 and conditionValid == True):
                  QMessageBox.warning( None, 
                              tr("item invalide"),
                              tr("l item doit etre valide"),)
@@ -150,26 +146,6 @@ class PopUpMenuNodeMinimal(object) :
         
 
 
-    def createActionsQT4(self):
-        self.CommApres = QAction(tr('apres'),self.tree)
-        self.tree.connect(self.CommApres,SIGNAL("triggered()"),self.addCommApres)
-        self.CommApres.setStatusTip(tr("Insere un commentaire apres la commande "))
-        self.CommAvant = QAction(tr('avant'),self.tree)
-        self.tree.connect(self.CommAvant,SIGNAL("triggered()"),self.addCommAvant)
-        self.CommAvant.setStatusTip(tr("Insere un commentaire avant la commande "))
-
-        self.ParamApres = QAction(tr('apres'),self.tree)
-        self.tree.connect(self.ParamApres,SIGNAL("triggered()"),self.addParametersApres)
-        self.ParamApres.setStatusTip(tr("Insere un parametre apres la commande "))
-        self.ParamAvant = QAction(tr('avant'),self.tree)
-        self.tree.connect(self.ParamAvant,SIGNAL("triggered()"),self.addParametersAvant)
-        self.ParamAvant.setStatusTip(tr("Insere un parametre avant la commande "))
-
-        self.Supprime = QAction(tr('Supprimer'),self.tree)
-        self.tree.connect(self.Supprime,SIGNAL("triggered()"),self.supprimeNoeud)
-        self.Supprime.setStatusTip(tr("supprime le mot clef "))
-        self.Documentation = QAction(tr('Documentation'),self.tree)
-        self.tree.connect(self.Documentation,SIGNAL("triggered()"),self.viewDoc)
 
     def createActions(self):
         self.CommApres = QAction(tr('apres'),self.tree)
@@ -199,12 +175,12 @@ class PopUpMenuNodeMinimal(object) :
 
     def viewDoc(self):
         self.node=self.tree.currentItem()
-        cle_doc = self.node.item.get_docu()
+        cle_doc = self.node.item.getDocu()
         if cle_doc == None :
             QMessageBox.information( self.editor,tr( "Documentation Vide"), \
                                     tr("Aucune documentation n'est associee a ce noeud"))
             return
-        commande = self.editor.appliEficas.CONFIGURATION.exec_acrobat
+        commande = self.editor.appliEficas.maConfiguration.exec_acrobat
         try :
             f=open(commande,"rb")
         except :
@@ -215,7 +191,7 @@ class PopUpMenuNodeMinimal(object) :
         if cle_doc.startswith('http:'):
            fichier = cle_doc
         else :
-            fichier = os.path.abspath(os.path.join(self.editor.CONFIGURATION.path_doc,
+            fichier = os.path.abspath(os.path.join(self.editor.maConfiguration.path_doc,
                                        cle_doc))
             try :
                f=open(fichier,"rb")
@@ -247,6 +223,10 @@ class PopUpMenuNodeMinimal(object) :
         item= self.tree.currentItem()
         item.addComment(False)
 
+    def deplieCeNiveau(self):
+        item= self.tree.currentItem()
+        item.deplieCeNiveau()
+
 #--------------------------------------------#
 class PopUpMenuNodePartiel (PopUpMenuNodeMinimal):
 #---------------------------------------------#
@@ -271,12 +251,12 @@ class PopUpMenuNode(PopUpMenuNodePartiel) :
     def createPopUpMenu(self):
         PopUpMenuNodePartiel.createPopUpMenu(self)
         self.Commente = QAction(tr('ce noeud'),self.tree)
-        self.Commente.triggered.connect(self.Commenter)
+        self.Commente.triggered.connect(self.commenter)
         self.Commente.setStatusTip(tr("commente le noeud "))
         self.commentMenu.addAction(self.Commente)
         self.menu.removeAction(self.Supprime)
         self.menu.addAction(self.Supprime)
 
-    def Commenter(self):
+    def commenter(self):
         item= self.tree.currentItem()
         item.commentIt()
index 19e6ca0bbff7cfd1937ce41a598e4ed146ef9a6f..0050a29420b4c98d9e33917b41e46e17a66d8467 100644 (file)
@@ -31,7 +31,7 @@ from  PyQt5.QtWidgets  import QFileDialog, QMessageBox
 from  PyQt5.QtCore     import QFileInfo
 
 DictExtensions= {"MAP" : ".map"}
-class MyTabview(object):
+class MyViewManager(object):
 
    def __init__(self,appliEficas):
        self.appliEficas=appliEficas
@@ -52,8 +52,8 @@ class MyTabview(object):
        index=self.myQtab.currentIndex()
        if index in self.dict_editors:
            editor=self.dict_editors[index]
-           self.appliEficas.CONFIGURATION=editor.CONFIGURATION
-           self.appliEficas.code=editor.CONFIGURATION.code
+           self.appliEficas.maConfiguration=editor.maConfiguration
+           self.appliEficas.code=editor.maConfiguration.code
            self.appliEficas.setWindowTitle(editor.titre)
            self.appliEficas.construitMenu()
 
@@ -73,12 +73,12 @@ class MyTabview(object):
 
             fichier = QFileDialog.getOpenFileName(self.appliEficas,
                         tr('Ouvrir Fichier'),
-                        self.appliEficas.CONFIGURATION.savedir,
+                        self.appliEficas.maConfiguration.savedir,
                          extensions)
             fichier=fichier[0]
        fichier = os.path.abspath(six.text_type(fichier))
        ulfile = os.path.abspath(six.text_type(fichier))
-       self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
+       self.appliEficas.maConfiguration.savedir=os.path.split(ulfile)[0]
        self.appliEficas.addToRecentList(fichier)
        maPage=self.getEditor( fichier,units=units)
        if maPage: result = maPage
@@ -176,6 +176,13 @@ class MyTabview(object):
        editor=self.dict_editors[index]
        editor.handleSupprimer()
 
+   def handleAjoutEtape(self,nomEtape):
+       index=self.myQtab.currentIndex()
+       if index < 0 : return
+       editor=self.dict_editors[index]
+       editor.handleAjoutEtape(nomEtape)
+
+
    def newEditor(self,include=0):
        if self.appliEficas.demande==True : 
            self.appliEficas.definitCode(None,None)
@@ -211,7 +218,7 @@ class MyTabview(object):
        if index < 0 : return
        self.dict_editors[index].viewJdcRegles()
 
-   def handlegestionParam(self):
+   def handleGestionParam(self):
        index=self.myQtab.currentIndex()
        if index < 0 : 
           QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
@@ -244,11 +251,11 @@ class MyTabview(object):
            self.myQtab.setTabText(index,fileName)
        return ok
 
-   def saveLegerCurrentEditor(self):
+   def saveCompleteCurrentEditor(self):
        index=self.myQtab.currentIndex()
        if index < 0 : return
        editor=self.dict_editors[index]
-       ok, newName = editor.saveFileLeger()
+       ok, newName = editor.saveCompleteFile()
        return ok
 
    def sauveLigneCurrentEditor(self):
@@ -298,7 +305,7 @@ class MyTabview(object):
        indexEditor=0
        for indexEditor in self.dict_editors :
            editor=self.dict_editors[indexEditor]
-           if self.samepath(fichier, editor.getFileName()):
+           if self.samePath(fichier, editor.getFileName()):
               msgBox = QMessageBox()
               msgBox.setWindowTitle(tr("Fichier"))
               msgBox.setText(tr("Le fichier <b>%s</b> est deja ouvert", str(fichier)))
@@ -309,8 +316,7 @@ class MyTabview(object):
               double=editor
        else :
             from .editor import JDCEditor
-            editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,vm = self,include=include)
-
+            editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,include=include)
             if double != None : 
                self.doubles[editor]=double
             if editor.jdc: # le fichier est bien un jdc
@@ -333,7 +339,7 @@ class MyTabview(object):
 #PNPNPNPN --> a affiner
         if fichier is None:
             self.untitledCount += 1
-            self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
+            self.myQtab.addTab(win, tr("Fichier non encore nomme  " + self.appliEficas.readercata.versionCode, self.untitledCount))
             #self.myQtab.addTab(win, str(self.appliEficas.code))
         else:
             liste=fichier.split('/')
@@ -353,7 +359,7 @@ class MyTabview(object):
         except :
             return ""
 
-   def samepath(self,f1, f2):
+   def samePath(self,f1, f2):
     """
     compare two paths.
     """
@@ -404,3 +410,23 @@ class MyTabview(object):
        if index < 0 : return
        editor=self.dict_editors[index]
        editor.handleAjoutGroup(listeGroup)
+  
+   def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments):
+       # Peut-etre a blinder un peu plus sur le nb d argument
+       index=self.myQtab.currentIndex()
+       if index < 0 : return
+       editor=self.dict_editors[index]
+       if editor.getEtapeCourante() == None :
+          QMessageBox.information( self.appliEficas,
+                      tr("Selectionner une etape"),
+                      tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres"))
+          return
+
+       listeParam = [] 
+       for p in lesArguments:
+          print (p)
+          if hasattr(editor,p): listeParam.append(getattr(editor,p))
+          if p=="editor"      : listeParam.append(editor)
+          if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante())
+       apply(laFonctionUtilisateur,listeParam)
+
diff --git a/InterfaceQT4/viewManagerSsIhm.py b/InterfaceQT4/viewManagerSsIhm.py
new file mode 100644 (file)
index 0000000..a588c79
--- /dev/null
@@ -0,0 +1,416 @@
+# -*- 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
+try :
+   from builtins import str
+   from builtins import object
+except : pass
+
+import os
+from Extensions.i18n import tr
+import six
+from  PyQt5.QtWidgets  import QFileDialog, QMessageBox
+from  PyQt5.QtCore     import QFileInfo
+
+# --------------------------------
+class JdcSsIhmHandler(object):
+# --------------------------------
+# retourne a l utilisateur
+
+   def __init__(self,viewManager):
+#  --------------------------------------
+       self.viewManagerSsIhm=viewManager
+
+   def viewJdcPy(self) :
+#  ---------------------
+       self.viewManagerSsIhm.handleViewJdcPy(self)
+
+   def viewJdcSource(self) :
+#  ---------------------
+       self.viewManagerSsIhm.handleViewJdcSource(self)
+
+   def getFileName(self):
+#  ---------------------
+       self.viewManagerSsIhm.getFileName(self)
+
+   def viewJdcRapport(self) :
+#  ---------------------
+       self.viewManagerSsIhm.handleViewJdcRapport(self)
+
+   def getJdcRapport(self) :
+#  ---------------------
+       return self.viewManagerSsIhm.handleGetJdcRapport(self)
+
+   def getDicoPython(self) :
+#  -------------------------
+       return self.viewManagerSsIhm.generDico(self)
+
+   def isJdcValid(self) :
+#  -------------------------
+       return self.viewManagerSsIhm.isJdcValid(self)
+
+   def fileSaveAs(self,fileName):
+#  -------------------------
+       return self.viewManagerSsIhm.fileSaveAs(self,fileName)
+
+   def fileLegerSaveAs(self,fileName):
+#  -----------------------------------
+       return self.viewManagerSsIhm.fileLegerSaveAs(self,fileName)
+
+
+
+#--------------------------------
+class MyViewManagerSsIhm(object):
+#--------------------------------
+# Symetrique de ViewManager mais pas d heritage entre les 2
+# dans le viewManager pas de souci pour savoir qui est le jdc sur lequel on travaille
+# ici en revanche.... c est moins sur
+
+#  --------------------------------
+   def __init__(self,appliEficas):
+#  --------------------------------
+       self.appliEficas=appliEficas
+       self.tabWidgets = []
+       self.mesIndexes = {}
+       self.dictEditors={}
+       self.untitledCount = 0
+       self.doubles = {}
+
+#  ------------------------------------------------------
+   def handleOpen(self,fichier=None, units=None):
+#  ------------------------------------------------------
+       result = None
+       if fichier is None: 
+             print ('nom de fichier obligatoire')
+             return None
+
+       for handler in self.dictEditors :
+           editor=self.dictEditors[handler]
+           if self.samePath(fichier, editor.getFileName()):
+              print ('fichier deja ouvert . pas de nouvel editor')
+              return handler
+
+       monNewHandler = self.getNewEditor(fichier,units)
+       return monNewHandler
+
+#  ----------------------------------------------------------------------
+   def getNewEditor(self,fichier = None,jdc = None, units = None,include=0):
+#  ----------------------------------------------------------------------
+
+       from InterfaceQT4.editorSsIhm import JDCEditorSsIhm
+       editor = JDCEditorSsIhm(self.appliEficas,fichier,jdc, units=units,include=include)
+
+       if editor.jdc: # le fichier est bien un jdc
+          monHandler = JdcSsIhmHandler(self)
+          self.dictEditors[monHandler]=editor
+          return monHandler
+       else:
+          print ('impossible de construire le jdc') 
+          return None
+
+#  -----------------------------
+   def samePath(self,f1, f2):
+#  ------------------------------
+    """
+    compare two paths.
+    """
+    if f1 is None or f2 is None: return 0
+    if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
+    return 0
+
+#  ---------------------------------
+   def handleViewJdcPy(self,handler):
+#  ---------------------------------
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        self.dictEditors[handler].viewJdcPy()
+
+#  ---------------------------------
+   def getFileName(self,handler):
+#  ---------------------------------
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        return self.dictEditors[handler].getFileName()
+
+
+#  ---------------------------------------------
+   def handleViewJdcSource(self,handler):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        self.dictEditors[handler].viewJdcSource()
+
+
+#  ---------------------------------------------
+   def handleViewJdcRapport(self,handler):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        self.dictEditors[handler].viewJdcRapport()
+
+#  ---------------------------------------------
+   def handleGetJdcRapport(self,handler):
+#  ---------------------------------------------
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        return self.dictEditors[handler].getJdcRapport()
+
+#  ---------------------------------------------
+   def handleViewJdcRapport(self,handler):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        self.dictEditors[handler].viewJdcRapport()
+
+
+#  ---------------------------------------------
+   def generDico(self,handler):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        return self.dictEditors[handler].generDico()
+
+
+#  ---------------------------------------------
+   def isJdcValid(self,handler):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        return self.dictEditors[handler].jdc.isValid()
+
+
+#  ---------------------------------------------
+   def fileSaveAs(self,handler,fileName):
+#  ---------------------------------------------
+        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        return self.dictEditors[handler].saveFile(fileName)
+
+#  ---------------------------------------------
+   def fileLegerSaveAs(self, handler,fileName):
+#  ---------------------------------------------
+#        print (handler)
+        if not (handler in self.dictEditors) :
+           print ('editor non trouve')
+           return
+        self.dictEditors[handler].saveFileLegerAs(fileName)
+
+
+#   def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter')):
+#       if doitSauverRecent : self.appliEficas.sauveRecents()
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       res=self.checkDirty(self.dict_editors[index],texte)
+#       if res == 2 : return 2             # l utilisateur a annule
+#       index=self.myQtab.currentIndex()
+#       idx=index
+#       while idx < len(self.dict_editors) -1 :
+#             self.dict_editors[idx]=self.dict_editors[idx+1]
+#             idx = idx + 1
+#       del self.dict_editors[len (self.dict_editors) -1]
+#       try :
+#           del self.doubles[self.dict_editors[index]]
+#       except :
+#           pass
+#       self.myQtab.removeTab(index)
+#       return res
+#       
+
+#
+#   def handleCloseAll(self,texte=tr('Quitter')):
+#       res=0
+#       self.appliEficas.sauveRecents()
+#       while len(self.dict_editors) > 0 :
+#             self.myQtab.setCurrentIndex(0)
+#             res=self.handleClose(0,texte)
+#             if res==2 : return res   # l utilsateur a annule
+#       return res
+#        
+#
+#
+#   def newEditor(self,include=0):
+#       if self.appliEficas.demande==True : 
+#           self.appliEficas.definitCode(None,None)
+#           if self.appliEficas.code == None:return
+#       maPage=self.getEditor(include=include)
+#
+
+#
+#   def handleViewJdcRegles(self):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       self.dict_editors[index].viewJdcRegles()
+#
+#   def handleGestionParam(self):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : 
+#          QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees"))
+#          return
+#       self.dict_editors[index].gestionParam()
+#
+#
+#
+#   def saveCurrentEditor(self):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       editor=self.dict_editors[index]
+#       if editor in self.doubles :
+#           QMessageBox.warning(
+#                     None,
+#                     tr("Fichier Duplique"),
+#                     tr("Le fichier ne sera pas sauvegarde."),)
+#           return
+#       ok, newName = editor.saveFile()
+#       if ok :
+#           fileName=os.path.basename(six.text_type(newName))
+#           self.myQtab.setTabText(index,fileName)
+#       return ok
+#
+#   def saveLegerCurrentEditor(self):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       editor=self.dict_editors[index]
+#       ok, newName = editor.saveFileLeger()
+#       return ok
+#
+#   def sauveLigneCurrentEditor(self):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       editor=self.dict_editors[index]
+#       if editor in self.doubles :
+#           QMessageBox.warning(
+#                     None,
+#                     tr("Fichier Duplique"),
+#                     tr("Le fichier ne sera pas sauvegarde."),)
+#           return
+#       ok, newName = editor.sauveLigneFile()
+#       if ok :
+#           fileName=os.path.basename(six.text_type(newName))
+#           self.myQtab.setTabText(index,fileName)
+#       return ok
+#
+#
+#   def saveAsCurrentEditor(self):
+#       index=self.myQtab.currentIndex()
+#       editor=self.dict_editors[index]
+#       oldName=editor.fichier
+#       ok,newName = editor.saveFileAs()
+#       if ok :
+#           fileName=os.path.basename(six.text_type(newName))
+#           self.myQtab.setTabText(index,fileName)
+#       if editor in self.doubles :
+#          if oldName != newName :
+#             del self.doubles[editor]
+#       return ok
+#
+#   def displayJDC(self,jdc,fn=None):
+#        """
+#        Public slot to display a file in an editor.
+#        @param fn name of file to be opened
+#        # insert filename into list of recently opened files
+#        """
+#        titre=None
+#        if fn != None : titre=fn.split("/")[-1]
+#        editor = self.getEditor(fichier= fn, jdc = jdc ,include=1)
+#        self.appliEficas.addToRecentList(editor.getFileName())
+#
+
+##PNPNPNPN --> a affiner
+#        if fichier is None:
+#            self.untitledCount += 1
+#            self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount))
+#            #self.myQtab.addTab(win, str(self.appliEficas.code))
+#        else:
+#            liste=fichier.split('/')
+#            txt =  liste[-1]
+#            if not QFileInfo(fichier).isWritable():
+#                txt = '%s (ro)' % txt
+#            self.myQtab.addTab(win,txt )
+#        self.myQtab.setCurrentWidget(win)
+#        self.currentEditor=win
+#        win.setFocus()
+#
+#   def getOpenStartDir(self) :
+#       #PN --> Les Preferences
+#        try :
+#            userDir=os.path.expanduser("~/Eficas_install/")
+#            return userDir
+#        except :
+#            return ""
+#
+#
+#   def checkDirty(self, editor,texte):
+#        """
+#        Private method to check dirty status and open a message window.
+#        
+#        @param editor editor window to check
+#        @return flag indicating successful reset of the dirty flag (boolean)
+#        """        
+#        res=1 
+#        if (editor.modified) and (editor in self.doubles) :
+#            msgBox = QMessageBox(None)
+#            msgBox.setWindowTitle(tr("Fichier Duplique"))
+#            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+#            msgBox.addButton(texte,0)
+#            msgBox.addButton(tr("&Annuler"),1)
+#            res=msgBox.exec_()
+#            if res == 0 : return 1
+#            return 2
+#        if editor.modified:
+#            fn = editor.getFileName()
+#            if fn is None: fn = tr('Noname')
+#            msgBox = QMessageBox(None)
+#            msgBox.setWindowTitle(tr("Fichier Modifie"))
+#            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+#            msgBox.addButton(tr("&Sauvegarder"),1)
+#            msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+#            msgBox.addButton(tr("&Annuler"),2)
+#            res=msgBox.exec_()
+#            if res == 2 : return res
+#            if res == 0:
+#                (ok, newName) = editor.saveFile()
+#                if ok:
+#                    fileName=os.path.basename(six.text_type(newName))
+#                    index=self.myQtab.currentIndex()
+#                    self.myQtab.setTabText(index,fileName)
+#                return ok
+#        return res
+#
+#   def handleAjoutGroup(self,listeGroup):
+#       index=self.myQtab.currentIndex()
+#       if index < 0 : return
+#       editor=self.dict_editors[index]
+#       editor.handleAjoutGroup(listeGroup)
index cee339dc48cab455f5e042e618c1e252571e802d..a7fae98121cc158834d12a3c9c3cdfd35a1fafb8 100644 (file)
@@ -48,16 +48,16 @@ class ASSD(object):
         if etape:
             self.parent = etape.parent
         else:
-            self.parent = CONTEXT.get_current_step()
+            self.parent = CONTEXT.getCurrentStep()
         if self.parent:
-            self.jdc = self.parent.get_jdc_root()
+            self.jdc = self.parent.getJdcRoot()
         else:
             self.jdc = None
 
         if not self.parent:
             self.id = None
         elif reg == 'oui':
-            self.id = self.parent.reg_sd(self)
+            self.id = self.parent.regSD(self)
         else:
             self.id = self.parent.o_register(self)
         # permet de savoir si le concept a été calculé (1) ou non (0)
@@ -74,7 +74,7 @@ class ASSD(object):
         # 0 : assd normal, 1 : type CO, 2 : type CO typé
         self._as_co = 0
 
-    def _get_sdj(self):
+    def _getSdj(self):
         """Retourne le catalogue de SD associé au concept."""
         if self.ptr_sdj is None:
             cata_sdj = getattr(self, 'cata_sdj', None)
@@ -82,7 +82,7 @@ class ASSD(object):
                 % self.__class__.__name__
             assert self.nom, "The attribute 'nom' has not been filled!"
             if self.ptr_class_sdj is None:
-                self.ptr_class_sdj = import_object(cata_sdj)
+                self.ptr_class_sdj = importObject(cata_sdj)
             self.ptr_sdj = self.ptr_class_sdj(nomj=self.nom)
         return self.ptr_sdj
 
@@ -93,7 +93,7 @@ class ASSD(object):
             self.ptr_sdj = None
         self.ptr_class_sdj = None
 
-    sdj = property(_get_sdj, None, _del_sdj)
+    sdj = property(_getSdj, None, _del_sdj)
 
     def __getitem__(self, key):
         text_error = "ASSD.__getitem__ est déprécié car la référence a l'objet ETAPE parent sera supprimée."
@@ -101,12 +101,12 @@ class ASSD(object):
         warn(text_error, DeprecationWarning, stacklevel=2)
         return self.etape[key]
 
-    def set_name(self, nom):
+    def setName(self, nom):
         """Positionne le nom de self (et appelle sd_init)
         """
         self.nom = nom
 
-    def is_typco(self):
+    def isTypCO(self):
         """Permet de savoir si l'ASSD est issu d'un type CO.
         Retourne:
            0 : ce n'est pas un type CO
@@ -115,19 +115,19 @@ class ASSD(object):
         """
         return self._as_co
 
-    def change_type(self, new_type):
+    def changeType(self, new_type):
         """Type connu a posteriori (type CO)."""
         self.__class__ = new_type
         assert self._as_co != 0, 'it should only be called on CO object.'
         self._as_co = 2
 
-    def get_name(self):
+    def getName(self):
         """
             Retourne le nom de self, éventuellement en le demandant au JDC
         """
         if not self.nom:
             try:
-                self.nom = self.parent.get_name(self) or self.id
+                self.nom = self.parent.getName(self) or self.id
             except:
                 self.nom = ""
         if self.nom.find('sansnom') != -1 or self.nom == '':
@@ -140,15 +140,15 @@ class ASSD(object):
         'force' est utilisée pour faire des suppressions complémentaires
         (voir les formules dans N_FONCTION).
         """
-        self.supprime_sd()
+        self.supprimeSd()
         self.etape = None
         self.sd = None
         self.jdc = None
         self.parent = None
 
-    def supprime_sd(self):
+    def supprimeSd(self):
         """Supprime la partie du catalogue de SD."""
-        # 'del self.sdj' appellerait la méthode '_get_sdj()'...
+        # 'del self.sdj' appellerait la méthode '_getSdj()'...
         self._del_sdj()
 
 
@@ -183,7 +183,7 @@ class ASSD(object):
         """
         if CONTEXT.debug:
             print(('| accessible ?', self.nom))
-        is_accessible = CONTEXT.get_current_step().sd_accessible()
+        is_accessible = CONTEXT.getCurrentStep().sdAccessible()
         if CONTEXT.debug:
             print(('  `- is_accessible =', repr(is_accessible)))
         return is_accessible
@@ -205,13 +205,13 @@ class ASSD(object):
             ctxt[key] = value
         return ctxt
 
-    def par_lot(self):
+    def parLot(self):
         """Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas."""
         # XXX eficas
         if not hasattr(self, 'jdc') or self.jdc == None:
             val = None
         else:
-            val = self.jdc.par_lot
+            val = self.jdc.parLot
         return val == 'OUI'
 
     def rebuild_sd(self):
index 9343b65b1be02ea460ece26bee2b34bc14df9647..b1315229002ad5cdfa332ec277a2bbf26665f863 100644 (file)
@@ -32,7 +32,7 @@ import traceback
 from . import N_ENTITE
 from . import N_MCBLOC
 from .N_Exception import AsException
-from .N_types import force_list
+from .N_types import forceList
 
 
 class BLOC(N_ENTITE.ENTITE):
@@ -70,6 +70,7 @@ class BLOC(N_ENTITE.ENTITE):
         self.fr = fr
         self.ang = ang
         self.docu = docu
+        self.fenetreIhm=None
         if type(regles) == tuple:
             self.regles = regles
         else:
@@ -79,26 +80,26 @@ class BLOC(N_ENTITE.ENTITE):
         self.entites = args
         self.affecter_parente()
 
-    def __call__(self, val, nom, parent=None):
+    def __call__(self, val, nom, parent=None, dicoPyxbDeConstruction=None):
         """
             Construit un objet MCBLOC a partir de sa definition (self)
             de sa valeur (val), de son nom (nom) et de son parent dans l arboresence (parent)
         """
-        return self.class_instance(nom=nom, definition=self, val=val, parent=parent)
+        return self.class_instance(nom=nom, definition=self, val=val, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
 
-    def verif_cata(self):
+    def verifCata(self):
         """
            Cette méthode vérifie si les attributs de définition sont valides.
            Les éventuels messages d'erreur sont écrits dans l'objet compte-rendu (self.cr).
         """
-        self.check_fr()
-        self.check_docu()
-        self.check_regles()
-        self.check_statut(into=('f', 'o'))
-        self.check_condition()
-        self.verif_cata_regles()
-
-    def verif_presence(self, dict, globs):
+        self.checkFr()
+        self.checkDocu()
+        self.checkRegles()
+        self.checkStatut(into=('f', 'o'))
+        self.checkCondition()
+        self.verifCataRegles()
+
+    def verifPresence(self, dict, globs):
         """
            Cette méthode vérifie si le dictionnaire passé en argument (dict)
            est susceptible de contenir un bloc de mots-clés conforme à la
@@ -112,7 +113,7 @@ class BLOC(N_ENTITE.ENTITE):
            les valeurs des mots-clés
         """
         # On recopie le dictionnaire pour protéger l'original
-        dico = bloc_utils()
+        dico = blocUtils()
         dico.update(dict)
         if self.condition != None:
             try:
@@ -142,17 +143,22 @@ class BLOC(N_ENTITE.ENTITE):
                     '\n', "Erreur dans la condition : ", self.condition, ''.join(l))
         else:
             return 0
-
-
-def bloc_utils():
+    
+    def longueurDsArbre(self):
+      longueur=0
+      for mc in self.mcListe : 
+         longueur = longueur + longueurDsArbre(mc)
+      return longueur
+
+def blocUtils():
     """Définit un ensemble de fonctions utilisables pour écrire les
     conditions de BLOC."""
     def au_moins_un(mcsimp, valeurs):
         """Valide si la (ou une) valeur de 'mcsimp' est au moins une fois dans
         la ou les 'valeurs'. Similaire à la règle AU_MOINS_UN, 'mcsimp' peut
         contenir plusieurs valeurs."""
-        test = set(force_list(mcsimp))
-        valeurs = set(force_list(valeurs))
+        test = set(forceList(mcsimp))
+        valeurs = set(forceList(valeurs))
         return not test.isdisjoint(valeurs)
 
     def aucun(mcsimp, valeurs):
index 1d73d0f6f793ca570d3037849207c9c2ffedf611..c46cd58dddd7c523dbd5269997b9da5bfe76ec55 100644 (file)
@@ -40,14 +40,14 @@ class CO(ASSD) :
             try:
                 self.parent.NommerSdprod(self, nom)
             except AsException as e:
-                appel = N_utils.callee_where(niveau=2)
+                appel = N_utils.calleeWhere(niveau=2)
                 raise AsException(
                     "Concept CO, fichier: ", appel[1], " ligne : ", appel[0], '\n', e)
         else:
             self.nom = nom
 
     def __convert__(cls, valeur):
-        if valeur.is_typco():
+        if valeur.isTypCO():
             return valeur
         raise ValError("Pas un concept CO")
     __convert__ = classmethod(__convert__)
index 981a02f0d192d5cb9237e9513f5f5d569a6f58ed..3a89a528c055298ab8dd250fab51843edde21d44 100644 (file)
@@ -26,10 +26,10 @@ try:
    from builtins import object
 except : pass
 
-from .N_types import is_int, is_float, is_sequence
+from .N_types import isInt, isFloat, isSequence
 
 
-def has_int_value(real):
+def hasIntValue(real):
     """Est-ce que 'real' a une valeur entière ?
     """
     return abs(int(real) - real) < 1.e-12
@@ -47,7 +47,7 @@ class Conversion(object):
     def convert(self, obj):
         """Filtre liste
         """
-        in_as_seq = is_sequence(obj)
+        in_as_seq = isSequence(obj)
         if not in_as_seq:
             obj = (obj,)
 
@@ -84,7 +84,7 @@ class IntConversion(TypeConversion):
         TypeConversion.__init__(self, 'I')
 
     def function(self, o):
-        if is_float(o) and has_int_value(o):
+        if isFloat(o) and hasIntValue(o):
             o = int(o)
         return o
 
@@ -98,7 +98,7 @@ class FloatConversion(TypeConversion):
         TypeConversion.__init__(self, 'R')
 
     def function(self, o):
-        if is_float(o):
+        if isFloat(o):
             o = float(o)
         return o
 
index fcaed07c5060ef919ecb71fd56ce6b33c9f35df5..95aa455a633cb99e08866a03772377e0c3537cc9 100644 (file)
@@ -101,7 +101,7 @@ class CR(object):
         self.crfatal = []
         self.subcr = []
 
-    def beautifie_messages(self):
+    def beautifieMessages(self):
         """
           Beautifie les messages stockés dans crok,crfatal,crexception et crwarn
         """
@@ -111,15 +111,15 @@ class CR(object):
         self.crok_belle = l
         l = []
         for mess in self.crwarn:
-            l.append(encadre_message(mess, '*'))
+            l.append(encadreMessage(mess, '*'))
         self.crwarn_belle = l
         l = []
         for mess in self.crfatal:
-            l.append(encadre_message(mess, '!'))
+            l.append(encadreMessage(mess, '!'))
         self.crfatal_belle = l
         l = []
         for mess in self.crexception:
-            l.append(encadre_message(mess, '!'))
+            l.append(encadreMessage(mess, '!'))
         self.crexception_belle = l
 
     def indent(self, s):
@@ -135,7 +135,7 @@ class CR(object):
           Retourne une chaine de caractères décorée et représentative de self
         """
         s = ''
-        self.beautifie_messages()
+        self.beautifieMessages()
         s = s + ''.join(self.crok_belle)
         s = s + ''.join(self.crwarn_belle)
         s = s + ''.join(self.crfatal_belle)
@@ -181,7 +181,7 @@ class CR(object):
                 (decalage - 1) * self.dec + self.fin + '\n'
         return s
 
-    def get_mess_fatal(self):
+    def getMessFatal(self):
         """
             Retourne une chaine de caractères contenant les messages de
             la liste crfatal (du dernier au premier)
@@ -193,7 +193,7 @@ class CR(object):
         self.crfatal.reverse()
         return s
 
-    def get_mess_exception(self):
+    def getMessException(self):
         """
             Retourne une chaine de caractères contenant les messages
             de la liste crexception (du dernier au premier)
@@ -228,7 +228,7 @@ def split(ligne, cesure):
             return ligne[:coupure + 1] + '\n' + split(ligne[coupure + 1:], cesure)
 
 
-def justify_text(texte='', cesure=50):
+def justifyText(texte='', cesure=50):
     if not isinstance (texte,str) :  texte = ''.join(texte)
     texte = texte.strip()
     liste_lignes = texte.split('\n')
@@ -237,12 +237,12 @@ def justify_text(texte='', cesure=50):
     return texte_justifie
 
 
-def encadre_message(texte, motif):
+def encadreMessage(texte, motif):
     """
        Retourne la chaine de caractères texte entourée d'un cadre formés
        d'éléments 'motif'
     """
-    texte = justify_text(texte, cesure=80)
+    texte = justifyText(texte, cesure=80)
     if texte.strip() == "" : return ''
     lignes = texte.split( '\n')
     longueur = 0
index ba6a01593d2857331b7966c63487a1ee4d06bf3a..4735edd3fad71c904a78be20972cf19037d1dfcb 100644 (file)
@@ -79,17 +79,18 @@ class ENTITE(object):
             v.pere = self
             v.nom = k
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Cette methode sert à valider les attributs de l'objet de définition
         """
-        raise NotImplementedError("La méthode verif_cata de la classe %s doit être implémentée"
+        raise NotImplementedError("La méthode verifCata de la classe %s doit être implémentée"
                                   % self.__class__.__name__)
 
     def __call__(self):
         """
             Cette methode doit retourner un objet dérivé de la classe OBJECT
         """
+     
         raise NotImplementedError("La méthode __call__ de la classe %s doit être implémentée"
                                   % self.__class__.__name__)
 
@@ -99,7 +100,7 @@ class ENTITE(object):
            rapport de validation de la définition portée par cet objet
         """
         self.cr = self.CR()
-        self.verif_cata()
+        self.verifCata()
         for k, v in list(self.entites.items()):
             try:
                 cr = v.report()
@@ -112,7 +113,7 @@ class ENTITE(object):
                 print(("père =", self))
         return self.cr
 
-    def verif_cata_regles(self):
+    def verifCataRegles(self):
         """
            Cette méthode vérifie pour tous les objets dérivés de ENTITE que
            les objets REGLES associés ne portent que sur des sous-entités
@@ -128,7 +129,7 @@ class ENTITE(object):
                 self.cr.fatal(
                     _(u"Argument(s) non permis : %r pour la règle : %s"), l, txt)
 
-    def check_definition(self, parent):
+    def checkDefinition(self, parent):
         """Verifie la definition d'un objet composite (commande, fact, bloc)."""
         args = self.entites.copy()
         mcs = set()
@@ -139,7 +140,7 @@ class ENTITE(object):
                 # if val.max != 1 and val.type == 'TXM':
                     # print "#CMD", parent, nom
             elif val.label == 'FACT':
-                val.check_definition(parent)
+                val.checkDefinition(parent)
                 # CALC_SPEC !
                 # assert self.label != 'FACT', \
                    #'Commande %s : Mot-clef facteur present sous un mot-clef facteur : interdit !' \
@@ -151,67 +152,67 @@ class ENTITE(object):
         # niveau
         for nom, val in list(args.items()):
             if val.label == 'BLOC':
-                mcbloc = val.check_definition(parent)
+                mcbloc = val.checkDefinition(parent)
                 # XXX
                 # print "#BLOC", parent, re.sub('\s+', ' ', val.condition)
                 assert mcs.isdisjoint(mcbloc), "Commande %s : Mot(s)-clef(s) vu(s) plusieurs fois : %s" \
                     % (parent, tuple(mcs.intersection(mcbloc)))
         return mcs
 
-    def check_op(self, valmin=-9999, valmax=9999):
+    def checkOp(self, valmin=-9999, valmax=9999):
         """Vérifie l'attribut op."""
         if self.op is not None and \
            (type(self.op) is not int or self.op < valmin or self.op > valmax):
             self.cr.fatal(_(u"L'attribut 'op' doit être un entier "
                             u"compris entre %d et %d : %r"), valmin, valmax, self.op)
 
-    def check_proc(self):
+    def checkProc(self):
         """Vérifie l'attribut proc."""
         if self.proc is not None and not isinstance(self.proc, N_OPS.OPS):
             self.cr.fatal(
                 _(u"L'attribut op doit être une instance d'OPS : %r"), self.proc)
 
-    def check_regles(self):
+    def checkRegles(self):
         """Vérifie l'attribut regles."""
         if type(self.regles) is not tuple:
             self.cr.fatal(_(u"L'attribut 'regles' doit être un tuple : %r"),
                           self.regles)
 
-    def check_fr(self):
+    def checkFr(self):
         """Vérifie l'attribut fr."""
         if type(self.fr) not in stringTypes:
             self.cr.fatal(
                 _(u"L'attribut 'fr' doit être une chaine de caractères : %r"),
                 self.fr)
 
-    def check_docu(self):
+    def checkDocu(self):
         """Vérifie l'attribut docu."""
         if type(self.docu) not in stringTypes:
             self.cr.fatal(
                 _(u"L'attribut 'docu' doit être une chaine de caractères : %r"),
                 self.docu)
 
-    def check_nom(self):
+    def checkNom(self):
         """Vérifie l'attribut proc."""
         if type(self.nom) is not str:
             self.cr.fatal(
                 _(u"L'attribut 'nom' doit être une chaine de caractères : %r"),
                 self.nom)
 
-    def check_reentrant(self):
+    def checkReentrant(self):
         """Vérifie l'attribut reentrant."""
         if self.reentrant not in ('o', 'n', 'f'):
             self.cr.fatal(
                 _(u"L'attribut 'reentrant' doit valoir 'o','n' ou 'f' : %r"),
                 self.reentrant)
 
-    def check_statut(self, into=('o', 'f', 'c', 'd')):
+    def checkStatut(self, into=('o', 'f', 'c', 'd')):
         """Vérifie l'attribut statut."""
         if self.statut not in into:
             self.cr.fatal(_(u"L'attribut 'statut' doit être parmi %s : %r"),
                           into, self.statut)
 
-    def check_condition(self):
+    def checkCondition(self):
         """Vérifie l'attribut condition."""
         if self.condition != None:
             if type(self.condition) is not str:
@@ -221,7 +222,7 @@ class ENTITE(object):
         else:
             self.cr.fatal(_(u"La condition ne doit pas valoir None !"))
 
-    def check_min_max(self):
+    def checkMinMax(self):
         """Vérifie les attributs min/max."""
         if type(self.min) != int:
             if self.min != '**'and self.min != float('-inf'):
@@ -236,27 +237,42 @@ class ENTITE(object):
                 _(u"Nombres d'occurrence min et max invalides : %r %r"),
                 self.min, self.max)
 
-    def check_validators(self):
+    def checkValidators(self):
         """Vérifie les validateurs supplémentaires"""
-        if self.validators and not self.validators.verif_cata():
+        if self.validators and not self.validators.verifCata():
             self.cr.fatal(_(u"Un des validateurs est incorrect. Raison : %s"),
                           self.validators.cata_info)
 
-    def check_homo(self):
+    def checkHomo(self):
         """Vérifie l'attribut homo."""
         if self.homo != 0 and self.homo != 1:
             self.cr.fatal(
                 _(u"L'attribut 'homo' doit valoir 0 ou 1 : %r"), self.homo)
 
-    def check_into(self):
+    def checkInto(self):
         """Vérifie l'attribut into."""
         if self.into != None:
             if (type(self.into) not in (list, tuple)) and (type(self.into) != types.FunctionType) :
                 self.cr.fatal(
                     _(u"L'attribut 'into' doit être un tuple : %r"), self.into)
 
-    def check_position(self):
+    def checkPosition(self):
         """Vérifie l'attribut position."""
         if self.position not in ('local', 'global', 'global_jdc'):
             self.cr.fatal(_(u"L'attribut 'position' doit valoir 'local', 'global' "
                             u"ou 'global_jdc' : %r"), self.position)
+
+    def dumpXSD(self):
+        args = self.entites.copy()
+        mcs = set()
+        for nom, val in list(args.items()):
+            if val.label == 'SIMP':
+                mcs.add(nom)
+                # XXX
+                # if val.max != 1 and val.type == 'TXM':
+                    # print "#CMD", parent, nom
+            elif val.label == 'FACT':
+                liste=val.dumpXSD()
+                mcs.update(liste)
+        print (self.nom, mcs) 
+        return mcs
index a5988282086823cd404c9af50c3c8962d1e2c20d..052bd5280149b7e005406c738f378daac8daab85 100644 (file)
@@ -66,29 +66,41 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
          - reuse : indique le concept d'entree reutilise. Il se trouvera donc en sortie
                    si les conditions d'execution de l'operateur l'autorise
          - valeur : arguments d'entree de type mot-cle=valeur. Initialise avec l'argument args.
-        """
+         - objPyxbDeConstruction
+        """
+        # faut il le faire ds MC_Build ?
+        # traitement de Pyxb si Pyxb
+        self.dicoPyxbDeConstruction = args.get('dicoPyxbDeConstruction', None)
+        if self.dicoPyxbDeConstruction : 
+            del args['dicoPyxbDeConstruction']
+            self.objPyxbDeConstruction=self.dicoPyxbDeConstruction['objEnPyxb']
+        else : 
+            self.objPyxbDeConstruction=None
         self.definition = oper
         self.reuse = reuse
         self.valeur = args
         self.nettoiargs()
-        self.parent = CONTEXT.get_current_step()
+        self.parent = CONTEXT.getCurrentStep()
         self.etape = self
         self.nom = oper.nom
         self.idracine = oper.label
-        self.appel = N_utils.callee_where(niveau)
+        self.appel = N_utils.calleeWhere(niveau)
         self.mc_globaux = {}
         self.sd = None
         self.actif = 1
-        self.make_register()
+        self.makeRegister()
         self.icmd = None
+        print ('uuuuuuuuuuuuuuu fin init de ETAPE', self,oper)
 
-    def make_register(self):
+    def makeRegister(self):
         """
         Initialise les attributs jdc, id, niveau et realise les
         enregistrements necessaires
+        surcharge dans Ihm
         """
+        print ('makeRegister de  ETAPE')
         if self.parent:
-            self.jdc = self.parent.get_jdc_root()
+            self.jdc = self.parent.getJdcRoot()
             self.id = self.parent.register(self)
             self.niveau = None
         else:
@@ -105,14 +117,14 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
             if self.valeur[k] == None:
                 del self.valeur[k]
 
-    def McBuild(self):
+    def MCBuild(self):
         """
            Demande la construction des sous-objets et les stocke dans l'attribut
-           mc_liste.
+           mcListe.
         """
-        self.mc_liste = self.build_mc()
+        self.mcListe = self.buildMc()
 
-    def Build_sd(self, nom):
+    def buildSd(self, nom):
         """
            Construit le concept produit de l'operateur. Deux cas
            peuvent se presenter :
@@ -127,18 +139,18 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
         self.sdnom = nom
         try:
             if self.parent:
-                sd = self.parent.create_sdprod(self, nom)
+                sd = self.parent.createSdprod(self, nom)
                 if type(self.definition.op_init) == types.FunctionType:
                     self.definition.op_init(*(
                         self, self.parent.g_context))
             else:
-                sd = self.get_sd_prod()
+                sd = self.getSdProd()
                 # On n'utilise pas self.definition.op_init car self.parent
                 # n'existe pas
                 if sd != None and self.reuse == None:
                     # On ne nomme le concept que dans le cas de non reutilisation
                     # d un concept
-                    sd.set_name(nom)
+                    sd.setName(nom)
         except AsException as e:
             raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
                               'fichier : ', self.appel[1], e)
@@ -162,7 +174,7 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
         """
         return
 
-    def get_sd_prod(self):
+    def getSdProd(self):
         """
             Retourne le concept resultat de l'etape
             Deux cas :
@@ -171,12 +183,12 @@ class ETAPE(N_MCCOMPO.MCCOMPO):
                        on construit le sd a partir de cette classe
                        et on le retourne
                      - cas 2 : il s'agit d'une fonction
-                       on l'evalue avec les mots-cles de l'etape (mc_liste)
+                       on l'evalue avec les mots-cles de l'etape (mcListe)
                        on construit le sd a partir de la classe obtenue
                        et on le retourne
         """
         if type(self.definition.sd_prod) == types.FunctionType:
-            d = self.cree_dict_valeurs(self.mc_liste)
+            d = self.creeDictValeurs(self.mcListe)
             try:
                 sd_prod = self.definition.sd_prod(*(), **d)
             except EOFError:
@@ -207,13 +219,13 @@ Causes possibles :
    Developpeur : La fonction "sd_prod" retourne un type invalide.""")
         return self.sd
 
-    def get_type_produit(self):
+    def getType_produit(self):
         try:
-            return self.get_type_produit_brut()
+            return self.getType_produit_brut()
         except:
             return None
 
-    def get_type_produit_brut(self):
+    def getType_produit_brut(self):
         """
             Retourne le type du concept resultat de l'etape
             Deux cas :
@@ -221,17 +233,17 @@ Causes possibles :
                 il s'agit d'une sous classe de ASSD
                 on retourne le nom de la classe
               - cas 2 : il s'agit d'une fonction
-                on l'evalue avec les mots-cles de l'etape (mc_liste)
+                on l'evalue avec les mots-cles de l'etape (mcListe)
                 et on retourne son resultat
         """
         if type(self.definition.sd_prod) == types.FunctionType:
-            d = self.cree_dict_valeurs(self.mc_liste)
+            d = self.creeDictValeurs(self.mcListe)
             sd_prod = self.definition.sd_prod(*(), **d)
         else:
             sd_prod = self.definition.sd_prod
         return sd_prod
 
-    def get_etape(self):
+    def getEtape(self):
         """
            Retourne l'etape a laquelle appartient self
            Un objet de la categorie etape doit retourner self pour indiquer que
@@ -256,7 +268,7 @@ Causes possibles :
     def __del__(self):
         pass
 
-    def get_created_sd(self):
+    def getCreated_sd(self):
         """Retourne la liste des sd reellement produites par l'etape.
         Si reuse est present, `self.sd` a ete creee avant, donc n'est pas dans
         cette liste."""
@@ -264,37 +276,37 @@ Causes possibles :
             return [self.sd, ]
         return []
 
-    def isactif(self):
+    def isActif(self):
         """
            Indique si l'etape est active (1) ou inactive (0)
         """
         return self.actif
 
-    def set_current_step(self):
+    def setCurrentStep(self):
         """
             Methode utilisee pour que l etape self se declare etape
             courante. Utilise par les macros
         """
-        cs = CONTEXT.get_current_step()
+        cs = CONTEXT.getCurrentStep()
         if self.parent != cs:
             raise AsException("L'etape courante", cs.nom, cs,
                               "devrait etre le parent de", self.nom, self)
         else:
-            CONTEXT.unset_current_step()
-            CONTEXT.set_current_step(self)
+            CONTEXT.unsetCurrentStep()
+            CONTEXT.setCurrentStep(self)
 
-    def reset_current_step(self):
+    def resetCurrentStep(self):
         """
               Methode utilisee par l'etape self qui remet son etape parent comme
               etape courante
         """
-        cs = CONTEXT.get_current_step()
+        cs = CONTEXT.getCurrentStep()
         if self != cs:
             raise AsException("L'etape courante", cs.nom, cs,
                               "devrait etre", self.nom, self)
         else:
-            CONTEXT.unset_current_step()
-            CONTEXT.set_current_step(self.parent)
+            CONTEXT.unsetCurrentStep()
+            CONTEXT.setCurrentStep(self.parent)
 
     def issubstep(self, etape):
         """
@@ -306,13 +318,13 @@ Causes possibles :
         """
         return 0
 
-    def get_file(self, unite=None, fic_origine='', fname=None):
+    def getFile(self, unite=None, fic_origine='', fname=None):
         """
             Retourne le nom du fichier correspondant a un numero d'unite
             logique (entier) ainsi que le source contenu dans le fichier
         """
         if self.jdc:
-            return self.jdc.get_file(unite=unite, fic_origine=fic_origine, fname=fname)
+            return self.jdc.getFile(unite=unite, fic_origine=fic_origine, fname=fname)
         else:
             if unite != None:
                 if os.path.exists("fort." + str(unite)):
@@ -336,7 +348,7 @@ Causes possibles :
         """
         visitor.visitETAPE(self)
 
-    def update_context(self, d):
+    def updateContext(self, d):
         """
             Cette methode doit updater le contexte fournit par
             l'appelant en argument (d) en fonction de sa definition
@@ -356,20 +368,20 @@ Causes possibles :
         etape.reuse = None
         etape.sdnom = None
         etape.etape = etape
-        etape.mc_liste = []
-        for objet in self.mc_liste:
+        etape.mcListe = []
+        for objet in self.mcListe:
             new_obj = objet.copy()
             new_obj.reparent(etape)
-            etape.mc_liste.append(new_obj)
+            etape.mcListe.append(new_obj)
         return etape
 
-    def copy_reuse(self, old_etape):
+    def copyReuse(self, old_etape):
         """ Methode qui copie le reuse d'une autre etape.
         """
         if hasattr(old_etape, "reuse"):
             self.reuse = old_etape.reuse
 
-    def copy_sdnom(self, old_etape):
+    def copySdnom(self, old_etape):
         """ Methode qui copie le sdnom d'une autre etape.
         """
         if hasattr(old_etape, "sdnom"):
@@ -380,30 +392,30 @@ Causes possibles :
             Cette methode sert a reinitialiser la parente de l'objet
         """
         self.parent = parent
-        self.jdc = parent.get_jdc_root()
+        self.jdc = parent.getJdcRoot()
         self.etape = self
-        for mocle in self.mc_liste:
+        for mocle in self.mcListe:
             mocle.reparent(self)
         if self.sd and self.reuse == None:
             self.sd.jdc = self.jdc
 
-    def get_cmd(self, nomcmd):
+    def getCmd(self, nomcmd):
         """
             Methode pour recuperer la definition d'une commande
             donnee par son nom dans les catalogues declares
             au niveau du jdc
             Appele par un ops d'une macro en Python
         """
-        return self.jdc.get_cmd(nomcmd)
+        return self.jdc.getCmd(nomcmd)
 
-    def copy_intern(self, etape):
+    def copyIntern(self, etape):
         """
             Methode permettant lors du processus de recopie de copier
             les elements internes d'une etape dans une autre
         """
         return
 
-    def full_copy(self, parent=None):
+    def fullCopy(self, parent=None):
         """
            Methode permettant d'effectuer une copie complète
            d'une etape (y compris concept produit, elements internes)
@@ -411,8 +423,8 @@ Causes possibles :
            aura cet objet comme parent.
         """
         new_etape = self.copy()
-        new_etape.copy_reuse(self)
-        new_etape.copy_sdnom(self)
+        new_etape.copyReuse(self)
+        new_etape.copySdnom(self)
         if parent:
             new_etape.reparent(parent)
         if self.sd:
@@ -421,34 +433,34 @@ Causes possibles :
             if self.reuse == None:
                 new_etape.parent.NommerSdprod(new_sd, self.sd.nom)
             else:
-                new_sd.set_name(self.sd.nom)
-        new_etape.copy_intern(self)
+                new_sd.setName(self.sd.nom)
+        new_etape.copyIntern(self)
         return new_etape
 
-    def reset_jdc(self, new_jdc):
+    def resetJdc(self, new_jdc):
         """
            Reinitialise le nommage du concept de l'etape lors d'un changement de jdc
         """
         if self.sd and self.reuse == None:
             self.parent.NommerSdprod(self.sd, self.sd.nom)
 
-    def is_include(self):
+    def isInclude(self):
         """Permet savoir si on a affaire a la commande INCLUDE
         car le comportement de ces macros est particulier.
         """
         return self.nom.startswith('INCLUDE')
 
-    def sd_accessible(self):
+    def sdAccessible(self):
         """Dit si on peut acceder aux "valeurs" (jeveux) de l'ASSD produite par l'etape.
         """
         if CONTEXT.debug:
-            print(('`- ETAPE sd_accessible :', self.nom))
-        return self.parent.sd_accessible()
+            print(('`- ETAPE sdAccessible :', self.nom))
+        return self.parent.sdAccessible()
 
-    def get_concept(self, nomsd):
+    def getConcept(self, nomsd):
         """
             Methode pour recuperer un concept a partir de son nom
         """
         # pourrait etre appelee par une commande fortran faisant appel a des fonctions python
         # on passe la main au parent
-        return self.parent.get_concept(nomsd)
+        return self.parent.getConcept(nomsd)
index 4d2462bde714d6e6b81e99cc62caed04c0b88426..459c5b1732a3595f25e9cfa7228a9a37e56706fb 100644 (file)
@@ -24,7 +24,7 @@
 
 # Modules EFICAS
 from __future__ import absolute_import
-from .strfunc import get_encoding, to_unicode
+from .strfunc import getEncoding, toUnicode
 import six
 
 
@@ -33,17 +33,17 @@ class AsException(Exception):
     def __unicode__(self):
         args = []
         for x in self.args:
-            ustr = to_unicode(x)
+            ustr = toUnicode(x)
             if type(ustr) is not six.text_type:
                 ustr = six.text_type( repr(x) )
             args.append(ustr)
         return " ".join(args)
 
     def __str__(self):
-        return six.text_type(self).encode(get_encoding())
+        return six.text_type(self).encode(getEncoding())
 
 
 class InterruptParsingError(Exception):
 
     """Exception used to interrupt the parsing of the command file
-    without raising an error (see N_JDC.exec_compile for usage)"""
+    without raising an error (see N_JDC.execCompile for usage)"""
index 14ed38ad66a0cf70ad7e516cef6b5d7a3170ef71..6de7e4045debd4d0f12911e7423f4fffcdfc0a14 100644 (file)
@@ -30,7 +30,7 @@ from . import N_ENTITE
 from . import N_MCFACT
 from . import N_MCLIST
 from .N__F import _F
-from .N_types import is_sequence
+from .N_types import isSequence
 
 from . import N_OBJECT
 
@@ -54,7 +54,7 @@ class FACT(N_ENTITE.ENTITE):
     list_instance = N_MCLIST.MCList
     label = 'FACT'
 
-    def __init__(self, fr="", docu="", regles=(), statut='f', defaut=None,ang="",
+    def __init__(self, fr="", docu="", regles=(), statut='f', defaut=None,ang="",fenetreIhm=None, 
                  min=0, max=1, validators=None, **args):
         """
             Un mot-clé facteur est caractérisé par les attributs suivants :
@@ -67,6 +67,7 @@ class FACT(N_ENTITE.ENTITE):
               - max
               - position
               - docu
+              - fenetreIhm
         """
         N_ENTITE.ENTITE.__init__(self, validators)
         # Initialisation des attributs
@@ -86,8 +87,9 @@ class FACT(N_ENTITE.ENTITE):
         self.entites = args
         self.position = None
         self.affecter_parente()
+        self.fenetreIhm = fenetreIhm
 
-    def __call__(self, val, nom, parent):
+    def __call__(self, val, nom, parent, dicoPyxbDeConstruction = None):
         """
             Construit la structure de donnee pour un mot cle facteur a partir
             de sa definition (self) de sa valeur (val), de son nom (nom) et de
@@ -118,7 +120,7 @@ class FACT(N_ENTITE.ENTITE):
                 # On ne devrait jamais passer par la
                 print ("On ne devrait jamais passer par la")
                 return None
-        elif is_sequence(val) and len(val) == 0 and self.statut == 'o':
+        elif isSequence(val) and len(val) == 0 and self.statut == 'o':
                 # On est dans le cas où le mcfact est présent mais est une liste/tuple
                 # vide. Il est obligatoire donc on l'initialise. Les règles, mots-clés
                 # obligatoires diront si un mcfact vide est accepté.
@@ -128,31 +130,37 @@ class FACT(N_ENTITE.ENTITE):
         l = self.list_instance()
         l.init(nom=nom, parent=parent)
         if type(val) in (tuple, list, self.list_instance):
+            indice=0
             for v in val:
                 if type(v) == dict or isinstance(v, _F):
                     objet = self.class_instance(
-                        nom=nom, definition=self, val=v, parent=parent)
+                        nom=nom, definition=self, val=v, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction[indice])
+                    indice=indice+1
                     l.append(objet)
                 elif isinstance(v, self.class_instance):
+# if faut gerer ici --> on passe la avec une liste de concept ? 
+# PNPN --> si pyxb
                     l.append(v)
                 else:
                     l.append(N_OBJECT.ErrorObj(self, v, parent, nom))
         elif type(val) == dict or isinstance(val, _F):
             objet = self.class_instance(
-                nom=nom, definition=self, val=val, parent=parent)
+                nom=nom, definition=self, val=val, parent=parent,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
             l.append(objet)
         elif isinstance(val, self.class_instance):
+# idem --> quand passe t on la 
             l.append(val)
         else:
             l.append(N_OBJECT.ErrorObj(self, val, parent, nom))
-
+        l.cata=l.jdc.cata
+        l.buildObjPyxb(l)
         return l
 
-    def verif_cata(self):
-        self.check_min_max()
-        self.check_fr()
-        self.check_regles()
-        self.check_statut()
-        self.check_docu()
-        self.check_validators()
-        self.verif_cata_regles()
+    def verifCata(self):
+        self.checkMinMax()
+        self.checkFr()
+        self.checkRegles()
+        self.checkStatut()
+        self.checkDocu()
+        self.checkValidators()
+        self.verifCataRegles()
index 459eca65ef60955e9af4060b164e4e973c05ff65..2638cccd399a5f2cabcabb998724b426487f9759 100644 (file)
@@ -121,7 +121,7 @@ class formule(ASSD):
         if self.accessible():
             TypeProl = {
                 'E': 'EXCLU', 'L': 'LINEAIRE', 'C': 'CONSTANT', 'I': 'INTERPRE'}
-            sd = sd_formule(self.get_name())
+            sd = sd_formule(self.getName())
             prol = sd.PROL.get()
             nova = sd.NOVA.get()
             if prol is None or nova is None:
index b87ce9a96b7f135c8bf423a59eb0b171676035b6..2bde47a3ba3439be2e00486c9901f69bce345247 100644 (file)
@@ -42,19 +42,19 @@ class GEOM(ASSD):
         if etape:
             self.parent = etape.parent
         else:
-            self.parent = CONTEXT.get_current_step()
+            self.parent = CONTEXT.getCurrentStep()
         if self.parent:
-            self.jdc = self.parent.get_jdc_root()
+            self.jdc = self.parent.getJdcRoot()
         else:
             self.jdc = None
 
         if not self.parent:
             self.id = None
         elif reg == 'oui':
-            self.id = self.parent.reg_sd(self)
+            self.id = self.parent.regSD(self)
         self.nom = nom
 
-    def get_name(self):
+    def getName(self):
         return self.nom
 
     def __convert__(cls, valeur):
index 9783089d56417002cfffa5888db7d06fd88725e6..172ed05ac2b258a757c7f54ff7dfa3b8d72e1b53 100644 (file)
@@ -40,7 +40,7 @@ from . import N_OBJECT
 from . import N_CR
 from .N_Exception import AsException, InterruptParsingError
 from .N_ASSD import ASSD
-from .strfunc import get_encoding
+from .strfunc import getEncoding
 from six.moves import range
 
 
@@ -92,8 +92,9 @@ NONE = None
         self.procedure = procedure
         self.definition = definition
         self.cata = cata
-        if type(self.cata) != tuple and cata != None:
-            self.cata = (self.cata,)
+        # PN pourquoi ?
+        #if type(self.cata) != tuple and cata != None:
+        #    self.cata = (self.cata,)
         self._build_reserved_kw_list()
         self.cata_ordonne_dico = cata_ord_dico
         self.nom = nom
@@ -111,8 +112,8 @@ NONE = None
         self.args.update(args)
         self.nstep = 0
         self.nsd = 0
-        self.par_lot = 'OUI'
-        self.par_lot_user = None
+        self.parLot = 'OUI'
+        self.parLot_user = None
         if definition:
             self.regles = definition.regles
             self.code = definition.code
@@ -149,12 +150,12 @@ NONE = None
         """
         try:
             if self.appli != None:
-                self.appli.affiche_infos(
+                self.appli.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
-            encoded_filename = self.nom.encode(get_encoding())
+            encoded_filename = self.nom.encode(getEncoding())
             self.proc_compile = compile(
                 self.procedure, encoded_filename, 'exec')
         except SyntaxError as e:
@@ -176,12 +177,18 @@ Causes possibles :
             self.cr.exception("Compilation impossible : " + ''.join(l))
         return
 
-    def exec_compile(self):
+    def setCurrentContext(self):
+        # beaucoup trop simple Ne tient pas compte des imports
+        # et des include
+        # ne sert que pour le POC
+        CONTEXT.setCurrentStep(self)
+
+    def execCompile(self):
         """
            Cette methode execute le jeu de commandes compile dans le contexte
            self.g_context de l'objet JDC
         """
-        CONTEXT.set_current_step(self)
+        CONTEXT.setCurrentStep(self)
         # Le module nommage utilise le module linecache pour acceder
         # au source des commandes du jeu de commandes.
         # Dans le cas d'un fichier, on accède au contenu de ce fichier
@@ -191,11 +198,15 @@ Causes possibles :
         linecache.cache[self.nom] = 0, 0, self.procedure.split('\n'), self.nom
         try:
             exec(self.exec_init, self.g_context)
-            for obj_cata in self.cata:
+            for obj_cata in (self.cata,):
                 if type(obj_cata) == types.ModuleType:
                     init2 = "from " + obj_cata.__name__ + " import *"
                     exec(init2, self.g_context)
-
+                else :
+                   # ici on a un catalogue en grammaire Eficas XML
+                   # il faut ajouter ce qu on a construit au contexte
+                   for (k,v) in obj_cata.contexteXML.items() :
+                       self.g_context[k]=v
             # Initialisation du contexte global pour l'evaluation des conditions de BLOC
             # On utilise une copie de l'initialisation du contexte du jdc
             self.condition_context = self.g_context.copy()
@@ -211,7 +222,7 @@ Causes possibles :
                         self.sds_dict[sdnom] = sd
 
             if self.appli != None:
-                self.appli.affiche_infos(
+                self.appli.afficheInfos(
                     'Interpretation du fichier de commandes en cours ...')
             # On sauve le contexte pour garder la memoire des constantes
             # En mode edition (EFICAS) ou lors des verifications le contexte
@@ -220,9 +231,9 @@ Causes possibles :
             self.const_context = self.g_context
             exec(self.proc_compile, self.g_context)
 
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
             if self.appli != None:
-                self.appli.affiche_infos('')
+                self.appli.afficheInfos('')
 
         except InterruptParsingError:
             # interrupt the command file parsing used by FIN to ignore the end
@@ -234,9 +245,9 @@ Causes possibles :
             # de commandes avant la fin
             # Fonctionnement normal, ne doit pas etre considere comme une
             # erreur
-            CONTEXT.unset_current_step()
-            self.affiche_fin_exec()
-            self.traiter_fin_exec('commande')
+            CONTEXT.unsetCurrentStep()
+            self.afficheFinExec()
+            self.traiterFinExec('commande')
 
         except AsException as e:
             # une erreur a ete identifiee
@@ -248,7 +259,7 @@ Causes possibles :
             if txt.find('MemoryError') >= 0:
                 txt = MemoryErrorMsg
             self.cr.exception(txt)
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
 
         except NameError as e:
             etype, value, tb = sys.exc_info()
@@ -258,13 +269,13 @@ Causes possibles :
             if CONTEXT.debug:
                 traceback.print_exc()
             self.cr.exception(msg)
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
 
        # except self.UserError as exc_val:
-       #     self.traiter_user_exception(exc_val)
-       #     CONTEXT.unset_current_step()
-       #     self.affiche_fin_exec()
-       #     self.traiter_fin_exec('commande')
+       #     self.traiterUserException(exc_val)
+       #     CONTEXT.unsetCurrentStep()
+       #     self.afficheFinExec()
+       #     self.traiterFinExec('commande')
 
         except:
             # erreur inattendue
@@ -280,9 +291,9 @@ Causes possibles :
             self.cr.exception(
                 "erreur non prevue et non traitee prevenir la maintenance " + '\n' + ''.join(l))
             del exc_typ, exc_val, exc_fr
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
 
-    def affiche_fin_exec(self):
+    def afficheFinExec(self):
         """
            Cette methode realise l'affichage final des statistiques de temps
            apres l'execution de toutes
@@ -291,7 +302,7 @@ Causes possibles :
         """
         return
 
-    def traiter_fin_exec(self, mode, etape=None):
+    def traiterFinExec(self, mode, etape=None):
         """
            Cette methode realise un traitement final apres l'execution de toutes
            les commandes en mode commande par commande ou par lot
@@ -300,7 +311,7 @@ Causes possibles :
         """
         print ( "FIN D'EXECUTION %s %s" %s( mode, etape))
 
-    def traiter_user_exception(self, exc_val):
+    def traiterUserException(self, exc_val):
         """Cette methode realise un traitement sur les exceptions utilisateur
            Par defaut il n'y a pas de traitement. La methode doit etre
            surchargee pour en introduire un.
@@ -314,7 +325,7 @@ Causes possibles :
         """
         self.etapes.append(etape)
         self.index_etapes[etape] = len(self.etapes) - 1
-        return self.g_register(etape)
+        return self.gRegister(etape)
 
     def o_register(self, sd):
         """
@@ -324,7 +335,7 @@ Causes possibles :
         nom = sd.idracine + self.SEP + repr(self.nsd)
         return nom
 
-    def g_register(self, etape):
+    def gRegister(self, etape):
         """
             Retourne un identificateur pour etape
         """
@@ -332,7 +343,7 @@ Causes possibles :
         idetape = etape.idracine + self.SEP + repr(self.nstep)
         return idetape
 
-    def create_sdprod(self, etape, nomsd):
+    def createSdprod(self, etape, nomsd):
         """
             Cette methode doit fabriquer le concept produit retourne
             par l'etape etape et le nommer.
@@ -353,7 +364,7 @@ Causes possibles :
                             etape.
             Dans le cas du JDC, le deuxième cas ne peut pas se produire.
         """
-        sd = etape.get_sd_prod()
+        sd = etape.getSdProd()
         if sd != None and (etape.definition.reentrant == 'n' or etape.reuse is None):
             # ATTENTION : On ne nomme la SD que dans le cas de non reutilisation
             # d un concept. Commande non reentrante ou reuse absent.
@@ -374,23 +385,23 @@ Causes possibles :
             raise AsException(
                 "Nom de concept invalide. '%s' est un mot-cle reserve." % sdnom)
 
-        # Ajoute a la creation (appel de reg_sd).
+        # Ajoute a la creation (appel de regSD).
         self.sds_dict[sdnom] = sd
-        sd.set_name(sdnom)
+        sd.setName(sdnom)
 
         # En plus si restrict vaut 'non', on insere le concept dans le contexte
         # du JDC
         if restrict == 'non':
             self.g_context[sdnom] = sd
 
-    def reg_sd(self, sd):
+    def regSD(self, sd):
         """
             Methode appelee dans l __init__ d un ASSD lors de sa creation
             pour s enregistrer
         """
         return self.o_register(sd)
 
-    def delete_concept_after_etape(self, etape, sd):
+    def deleteConceptAfterEtape(self, etape, sd):
         """
             Met a jour les etapes du JDC qui sont après etape suite a
             la disparition du concept sd
@@ -419,7 +430,7 @@ Causes possibles :
             e.jdc = jdc
             del self.index_etapes[e]
 
-    def get_file(self, unite=None, fic_origine='', fname=None):
+    def getFile(self, unite=None, fic_origine='', fname=None):
         """
             Retourne le nom du fichier correspondant a un numero d'unite
             logique (entier) ainsi que le source contenu dans le fichier
@@ -427,7 +438,7 @@ Causes possibles :
         if self.appli:
             # Si le JDC est relie a une application maitre, on delègue la
             # recherche
-            return self.appli.get_file(unite, fic_origine)
+            return self.appli.getFile(unite, fic_origine)
         else:
             if unite != None:
                 if os.path.exists("fort." + str(unite)):
@@ -444,7 +455,7 @@ Causes possibles :
             linecache.cache[fname] = 0, 0, text.split('\n'), fname
             return fname, text
 
-    def set_par_lot(self, par_lot, user_value=False):
+    def set_parLot(self, parLot, user_value=False):
         """
         Met le mode de traitement a PAR LOT
         ou a COMMANDE par COMMANDE
@@ -454,16 +465,16 @@ Causes possibles :
         En PAR_LOT='NON', il n'y a pas d'ambiguite.
         d'analyse et juste avant la phase d'execution.
         `user_value` : permet de stocker la valeur choisie par l'utilisateur
-        pour l'interroger plus tard (par exemple dans `get_contexte_avant`).
+        pour l'interroger plus tard (par exemple dans `getContexteAvant`).
         """
         if user_value:
-            self.par_lot_user = par_lot
+            self.parLot_user = parLot
         if self.appli == None:
             # Pas d application maitre
-            self.par_lot = par_lot
+            self.parLot = parLot
         else:
             # Avec application maitre
-            self.par_lot = 'OUI'
+            self.parLot = 'OUI'
 
     def accept(self, visitor):
         """
@@ -477,7 +488,7 @@ Causes possibles :
             Cette methode a pour fonction d'ouvrir un interpreteur
             pour que l'utilisateur entre des commandes interactivement
         """
-        CONTEXT.set_current_step(self)
+        CONTEXT.setCurrentStep(self)
         try:
             # Le module nommage utilise le module linecache pour acceder
             # au source des commandes du jeu de commandes.
@@ -495,9 +506,9 @@ Causes possibles :
             console.interact(banner)
         finally:
             console = None
-            CONTEXT.unset_current_step()
+            CONTEXT.unsetCurrentStep()
 
-    def get_contexte_avant(self, etape):
+    def getContexteAvant(self, etape):
         """
            Retourne le dictionnaire des concepts connus avant etape
            On tient compte des commandes qui modifient le contexte
@@ -512,12 +523,12 @@ Causes possibles :
         # Si on insère des commandes (par ex, dans EFICAS), il faut prealablement
         # remettre ce pointeur a 0
         # self.current_context.items() if isinstance(v, ASSD)])
-        if self.par_lot_user == 'NON':
+        if self.parLot_user == 'NON':
             d = self.current_context = self.g_context.copy()
             if etape is None:
                 return d
             # retirer les sd produites par 'etape'
-            sd_names = [sd.nom for sd in etape.get_created_sd()]
+            sd_names = [sd.nom for sd in etape.getCreated_sd()]
             for nom in sd_names:
                 try:
                     del d[nom]
@@ -547,48 +558,48 @@ Causes possibles :
         for e in liste_etapes:
             if e is etape:
                 break
-            if e.isactif():
-                e.update_context(d)
+            if e.isActif():
+                e.updateContext(d)
         self.index_etape_courante = index_etape
         return d
 
-    def get_global_contexte(self):
+    def getGlobalContexte(self):
         """Retourne "un" contexte global ;-)"""
         # N'est utilise que par INCLUDE (sauf erreur).
         # g_context est remis a {} en PAR_LOT='OUI'. const_context permet
-        # de retrouver ce qui y a ete mis par exec_compile.
+        # de retrouver ce qui y a ete mis par execCompile.
         # Les concepts n'y sont pas en PAR_LOT='OUI'. Ils sont ajoutes
-        # par get_global_contexte de la MACRO.
+        # par getGlobalContexte de la MACRO.
         d = self.const_context.copy()
         d.update(self.g_context)
         return d
 
-    def get_contexte_courant(self, etape_courante=None):
+    def getContexteCourant(self, etape_courante=None):
         """
            Retourne le contexte tel qu'il est (ou 'sera' si on est en phase
            de construction) au moment de l'execution de l'etape courante.
         """
         if etape_courante is None:
-            etape_courante = CONTEXT.get_current_step()
-        return self.get_contexte_avant(etape_courante)
+            etape_courante = CONTEXT.getCurrentStep()
+        return self.getContexteAvant(etape_courante)
 
-    def get_concept(self, nomsd):
+    def getConcept(self, nomsd):
         """
             Methode pour recuperer un concept a partir de son nom
         """
-        co = self.get_contexte_courant().get(nomsd.strip(), None)
+        co = self.getContexteCourant().get(nomsd.strip(), None)
         if not isinstance(co, ASSD):
             co = None
         return co
 
-    def get_concept_by_type(self, nomsd, typesd, etape):
+    def getConceptByType(self, nomsd, typesd, etape):
         """
             Methode pour recuperer un concept a partir de son nom et de son type.
             Il aura comme père 'etape'.
         """
         assert issubclass(typesd, ASSD), typesd
         co = typesd(etape=etape)
-        co.set_name(nomsd)
+        co.setName(nomsd)
         co.executed = 1
         return co
 
@@ -602,13 +613,13 @@ Causes possibles :
         except:
             pass
 
-    def get_cmd(self, nomcmd):
+    def getCmd(self, nomcmd):
         """
             Methode pour recuperer la definition d'une commande
             donnee par son nom dans les catalogues declares
             au niveau du jdc
         """
-        for cata in self.cata:
+        for cata in (self.cata,):
             if hasattr(cata, nomcmd):
                 return getattr(cata, nomcmd)
 
@@ -620,21 +631,22 @@ Causes possibles :
         self.etapes.append(etape)
         self.index_etapes[etape] = len(self.etapes) - 1
         etape.reparent(self)
-        etape.reset_jdc(self)
+        etape.resetJdc(self)
 
-    def sd_accessible(self):
+    def sdAccessible(self):
         """On peut acceder aux "valeurs" (jeveux) des ASSD si le JDC est en PAR_LOT="NON".
         """
         if CONTEXT.debug:
-            print((' `- JDC sd_accessible : PAR_LOT =', self.par_lot))
-        return self.par_lot == 'NON'
+            print((' `- JDC sdAccessible : PAR_LOT =', self.parLot))
+        return self.parLot == 'NON'
 
     def _build_reserved_kw_list(self):
         """Construit la liste des mots-cles reserves (interdits pour le
         nommage des concepts)."""
         self._reserved_kw = set()
-        for cat in self.cata:
-            self._reserved_kw.update(
+        #for cat in self.cata:
+        cat=self.cata
+        self._reserved_kw.update(
                 [kw for kw in dir(cat) if len(kw) <= 8 and kw == kw.upper()])
         self._reserved_kw.difference_update(
             ['OPER', 'MACRO', 'BLOC', 'SIMP', 'FACT', 'FORM',
index b748240535c7ff8c2c76bb7cea3f4b9f517a6d5d..27a76e8f8dd5dfc8e59f1e292804b28f4ca57243 100644 (file)
@@ -67,9 +67,11 @@ class JDC_CATA(N_ENTITE.ENTITE):
             self.d_niveaux[niveau.nom] = niveau
         # On change d'objet catalogue. Il faut d'abord mettre le catalogue
         # courant à None
-        CONTEXT.unset_current_cata()
-        CONTEXT.set_current_cata(self)
-
+        CONTEXT.unsetCurrentCata()
+        CONTEXT.setCurrentCata(self)
+        self.fenetreIhm=None
+        self.dictTypesXSD={}
     def __call__(self, procedure=None, cata=None, cata_ord_dico=None,
                  nom='SansNom', parent=None, **args):
         """
@@ -89,14 +91,14 @@ class JDC_CATA(N_ENTITE.ENTITE):
         """
         self.commandes.append(commande)
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Méthode de vérification des attributs de définition
         """
-        self.check_regles()
-        self.verif_cata_regles()
+        self.checkRegles()
+        self.verifCataRegles()
 
-    def verif_cata_regles(self):
+    def verifCataRegles(self):
         """
            Cette méthode vérifie pour tous les objets stockés dans la liste entités
            respectent les REGLES associés  à self
@@ -110,7 +112,7 @@ class JDC_CATA(N_ENTITE.ENTITE):
         self.cr = self.CR(
             debut=u"Compte-rendu de validation du catalogue " + self.code,
             fin=u"Fin Compte-rendu de validation du catalogue " + self.code)
-        self.verif_cata()
+        self.verifCata()
         for commande in self.commandes:
             cr = commande.report()
             cr.debut = u"Début Commande :" + commande.nom
@@ -126,7 +128,7 @@ class JDC_CATA(N_ENTITE.ENTITE):
         for commande in self.commandes:
             commande.supprime()
 
-    def get_niveau(self, nom_niveau):
+    def getNiveau(self, nom_niveau):
         """
              Retourne l'objet de type NIVEAU de nom nom_niveau
              ou None s'il n'existe pas
index 5f8a727bf635fb5330ea128e6cb2d5d1b8fb8f63..a80f98e489cd3d144b48db3b912e11503dd72f8c 100644 (file)
@@ -87,7 +87,7 @@ class MACRO(N_ENTITE.ENTITE):
     nommage = nommage
 
     def __init__(
-        self, nom, op, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",
+        self, nom, op, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",fenetreIhm=None,
             docu="", regles=(), op_init=None, niveau = None, fichier_ini=0, UIinfo=None, **args):
         """
            Méthode d'initialisation de l'objet MACRO. Les arguments sont utilisés pour initialiser
@@ -113,6 +113,7 @@ class MACRO(N_ENTITE.ENTITE):
         self.ang=ang
         self.repetable = repetable
         self.docu = docu
+        self.fenetreIhm=fenetreIhm
         if type(regles) == tuple:
             self.regles = regles
         else:
@@ -122,26 +123,26 @@ class MACRO(N_ENTITE.ENTITE):
         # operateur sauf si == None
         self.op_init = op_init
         self.entites = args
-        current_cata = CONTEXT.get_current_cata()
+        current_cata = CONTEXT.getCurrentCata()
         if niveau == None:
             self.niveau = None
             current_cata.enregistre(self)
         else:
-            self.niveau = current_cata.get_niveau(niveau)
+            self.niveau = current_cata.getNiveau(niveau)
             self.niveau.enregistre(self)
         self.UIinfo = UIinfo
         self.affecter_parente()
-        self.check_definition(self.nom)
+        self.checkDefinition(self.nom)
 
     def __call__(self, reuse=None, **args):
         """
             Construit l'objet MACRO_ETAPE a partir de sa definition (self),
             puis demande la construction de ses sous-objets et du concept produit.
         """
-        nomsd = self.nommage.GetNomConceptResultat(self.nom)
+        nomsd = self.nommage.getNomConceptResultat(self.nom)
         etape = self.class_instance(oper=self, reuse=reuse, args=args)
-        etape.McBuild()
-        return etape.Build_sd(nomsd)
+        etape.MCBuild()
+        return etape.buildSd(nomsd)
 
     def make_objet(self, mc_list='oui'):
         """
@@ -153,21 +154,21 @@ class MACRO(N_ENTITE.ENTITE):
         """
         etape = self.class_instance(oper=self, reuse=None, args={})
         if mc_list == 'oui':
-            etape.McBuild()
+            etape.MCBuild()
         return etape
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Méthode de vérification des attributs de définition
         """
-        self.check_op(valmax=0)
-        self.check_proc()
-        self.check_regles()
-        self.check_fr()
-        self.check_docu()
-        self.check_nom()
-        self.check_reentrant()
-        self.verif_cata_regles()
+        self.checkOp(valmax=0)
+        self.checkProc()
+        self.checkRegles()
+        self.checkFr()
+        self.checkDocu()
+        self.checkNom()
+        self.checkReentrant()
+        self.verifCataRegles()
 
     def supprime(self):
         """
index 64092785928ba1f0a8a78b4cfbaeab22344d54f0..793fe07e1261e2308b6ae6f0895856879fd61168 100644 (file)
@@ -83,18 +83,18 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
         # permet de stocker le nom du dernier concept nomme dans la macro
         self.last = None
 
-    def make_register(self):
+    def makeRegister(self):
         """
         Initialise les attributs jdc, id, niveau et realise les enregistrements
         necessaires
         """
-        N_ETAPE.ETAPE.make_register(self)
+        N_ETAPE.ETAPE.makeRegister(self)
         if self.parent:
             self.UserError = self.jdc.UserError
         else:
             self.UserError = "UserError"
 
-    def Build_sd(self, nom):
+    def buildSd(self, nom):
         """
            Construit le concept produit de l'operateur. Deux cas
            peuvent se presenter :
@@ -111,31 +111,31 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
             # On positionne la macro self en tant que current_step pour que les
             # etapes creees lors de l'appel a sd_prod et a op_init aient la macro
             #  comme parent
-            self.set_current_step()
+            self.setCurrentStep()
             if self.parent:
-                sd = self.parent.create_sdprod(self, nom)
+                sd = self.parent.createSdprod(self, nom)
                 if type(self.definition.op_init) == types.FunctionType:
                     self.definition.op_init(*(
                         self, self.parent.g_context))
             else:
-                sd = self.get_sd_prod()
+                sd = self.getSdProd()
                 if sd != None and self.reuse == None:
                     # On ne nomme le concept que dans le cas de non reutilisation
                     # d un concept
-                    sd.set_name(nom)
-            self.reset_current_step()
+                    sd.setName(nom)
+            self.resetCurrentStep()
         except AsException as e:
-            self.reset_current_step()
+            self.resetCurrentStep()
             raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
                               'fichier : ', self.appel[1], e)
         #except (EOFError, self.UserError):
         except (EOFError):
             # Le retablissement du step courant n'est pas strictement
             # necessaire. On le fait pour des raisons de coherence
-            self.reset_current_step()
+            self.resetCurrentStep()
             raise
         except:
-            self.reset_current_step()
+            self.resetCurrentStep()
             l = traceback.format_exception(
                 sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])
             raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0],
@@ -145,7 +145,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
         self.Execute()
         return sd
 
-    def get_sd_prod(self):
+    def getSdProd(self):
         """
           Retourne le concept resultat d'une macro etape
           La difference avec une etape ou une proc-etape tient a ce que
@@ -159,7 +159,7 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
                    on construit le sd a partir de cette classe
                    et on le retourne
            - cas 2 : sd_prod est une fonction
-                   on l'evalue avec les mots-cles de l'etape (mc_liste)
+                   on l'evalue avec les mots-cles de l'etape (mcListe)
                    on construit le sd a partir de la classe obtenue
                    et on le retourne
         """
@@ -167,10 +167,10 @@ class MACRO_ETAPE(N_ETAPE.ETAPE):
         self.typret = None
 
         if type(self.definition.sd_prod) == types.FunctionType:
-            d = self.cree_dict_valeurs(self.mc_liste)
+            d = self.creeDictValeurs(self.mcListe)
             try:
                 # la sd_prod d'une macro a l'objet macro_etape lui meme en premier argument
-                # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+                # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
                 # les concepts produits dans self.sdprods, il faut le mettre a
                 # zero avant de l'appeler
                 self.sdprods = []
@@ -207,14 +207,14 @@ Causes possibles :
    Developpeur : La fonction "sd_prod" retourne un type invalide.""")
         return self.sd
 
-    def get_type_produit(self, force=0):
+    def getType_produit(self, force=0):
         try:
-            return self.get_type_produit_brut(force)
+            return self.getType_produit_brut(force)
         except:
             # traceback.print_exc()
             return None
 
-    def get_type_produit_brut(self, force=0):
+    def getType_produit_brut(self, force=0):
         """
              Retourne le type du concept resultat de l'etape et eventuellement type
              les concepts produits "a droite" du signe egal (en entree)
@@ -224,15 +224,15 @@ Causes possibles :
                       il s'agit d'une sous classe de ASSD
                       on retourne le nom de la classe
                - cas 2 : il s'agit d'une fonction
-                      on l'evalue avec les mots-cles de l'etape (mc_liste)
+                      on l'evalue avec les mots-cles de l'etape (mcListe)
                       et on retourne son resultat
         """
         if not force and hasattr(self, 'typret'):
             return self.typret
 
         if type(self.definition.sd_prod) == types.FunctionType:
-            d = self.cree_dict_valeurs(self.mc_liste)
-            # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+            d = self.creeDictValeurs(self.mcListe)
+            # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
             # les concepts produits dans self.sdprods, il faut le mettre a zero
             self.sdprods = []
             sd_prod = self.definition.sd_prod(*(self,), **d)
@@ -240,7 +240,7 @@ Causes possibles :
             sd_prod = self.definition.sd_prod
         return sd_prod
 
-    def get_contexte_avant(self, etape):
+    def getContexteAvant(self, etape):
         """
             Retourne le dictionnaire des concepts connus avant etape
             pour les commandes internes a la macro
@@ -254,7 +254,7 @@ Causes possibles :
         if etape is None:
             return d
         # retirer les sd produites par 'etape'
-        sd_names = [sd.nom for sd in etape.get_created_sd()]
+        sd_names = [sd.nom for sd in etape.getCreated_sd()]
         for nom in sd_names:
             try:
                 del d[nom]
@@ -296,7 +296,7 @@ Causes possibles :
             e.jdc = jdc
             del self.index_etapes[e]
 
-    def type_sdprod(self, co, t):
+    def typeSDProd(self, co, t):
         """
              Cette methode a pour fonction de typer le concept co avec le type t
              dans les conditions suivantes :
@@ -312,17 +312,17 @@ Causes possibles :
         #
         # On cherche a discriminer les differents cas de typage d'un concept
         # produit par une macro qui est specifie dans un mot cle simple.
-        # On peut passer plusieurs fois par type_sdprod ce qui explique
+        # On peut passer plusieurs fois par typeSDProd ce qui explique
         # le nombre important de cas.
         #
         # Cas 1 : Le concept est libre. Il vient d'etre cree par CO(nom)
-        # Cas 2 : Le concept est produit par la macro. On est deja passe par type_sdprod.
+        # Cas 2 : Le concept est produit par la macro. On est deja passe par typeSDProd.
         #         Cas semblable a Cas 1.
         # Cas 3 : Le concept est produit par la macro englobante (parent). On transfere
         #         la propriete du concept de la macro parent a la macro courante (self)
         #         en verifiant que le type est valide
         # Cas 4 : La concept est la propriete d'une etape fille. Ceci veut dire qu'on est
-        #         deja passe par type_sdprod et que la propriete a ete transfere a une
+        #         deja passe par typeSDProd et que la propriete a ete transfere a une
         #         etape fille. Cas semblable a Cas 3.
         # Cas 5 : Le concept est produit par une etape externe a la macro.
         #
@@ -330,7 +330,7 @@ Causes possibles :
             # Cas 1 : le concept est libre
             # On l'attache a la macro et on change son type dans le type demande
             # Recherche du mot cle simple associe au concept
-            mcs = self.get_mcs_with_co(co)
+            mcs = self.getMcsWithCo(co)
             if len(mcs) != 1:
                 raise AsException("""Erreur interne.
 Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co)
@@ -340,19 +340,19 @@ Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co)
 Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pas CO mais seulement (%s)""" % (co, mcs.definition.type))
             co.etape = self
             # affectation du bon type du concept
-            co.change_type(t)
+            co.changeType(t)
             self.sdprods.append(co)
 
         elif co.etape == self:
             # Cas 2 : le concept est produit par la macro (self)
-            # On est deja passe par type_sdprod (Cas 1 ou 3).
+            # On est deja passe par typeSDProd (Cas 1 ou 3).
             # XXX Peut-il etre creer par une autre macro ?
             #    On verifie juste que c'est un vrai CO non deja type
             # if co.etape == co._etape:
-            if co.is_typco() == 1:
+            if co.isTypCO() == 1:
                 # Le concept a ete cree par la macro (self)
                 # On peut changer son type
-                co.change_type(t)
+                co.changeType(t)
             else:
                 # Le concept a ete cree par une macro parente
                 # Le type du concept doit etre coherent avec le type demande
@@ -375,7 +375,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
                 raise AsException("""
 Impossible de changer le type du concept produit (%s) en (%s).
 Le type actuel (%s) devrait etre une classe derivee du nouveau type (%s)""" % (co, t, co.__class__, t))
-            mcs = self.get_mcs_with_co(co)
+            mcs = self.getMcsWithCo(co)
             if len(mcs) != 1:
                 raise AsException("""Erreur interne.
 Il ne devrait y avoir qu'un seul mot cle porteur du concept CO (%s)""" % co)
@@ -390,7 +390,7 @@ Impossible de changer le type du concept (%s). Le mot cle associe ne supporte pa
 
         elif self.issubstep(co.etape):
             # Cas 4 : Le concept est propriete d'une sous etape de la macro (self).
-            # On est deja passe par type_sdprod (Cas 3 ou 1).
+            # On est deja passe par typeSDProd (Cas 3 ou 1).
             # Il suffit de le mettre dans la liste des concepts produits (self.sdprods)
             # Le type du concept et t doivent etre derives.
             # Il n'y a aucune raison pour que la condition ne soit pas
@@ -426,17 +426,17 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         """
         self.etapes.append(etape)
         self.index_etapes[etape] = len(self.etapes) - 1
-        idetape = self.jdc.g_register(etape)
+        idetape = self.jdc.gRegister(etape)
         return idetape
 
-    def reg_sd(self, sd):
+    def regSD(self, sd):
         """
              Methode appelee dans l __init__ d un ASSD a sa creation pour
              s enregistrer (reserve aux ASSD crees au sein d'une MACRO)
         """
         return self.jdc.o_register(sd)
 
-    def create_sdprod(self, etape, nomsd):
+    def createSdprod(self, etape, nomsd):
         """
             Cette methode doit fabriquer le concept produit retourne
             par l'etape etape et le nommer.
@@ -454,9 +454,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         if nomsd in self.Outputs:
             # Il s'agit d'un concept de sortie de la macro. Il ne faut pas le creer
             # Il faut quand meme appeler la fonction sd_prod si elle existe.
-            # get_type_produit le fait et donne le type attendu par la commande
+            # getType_produit le fait et donne le type attendu par la commande
             # pour verification ulterieure.
-            sdprod = etape.get_type_produit_brut()
+            sdprod = etape.getType_produit_brut()
             sd = self.Outputs[nomsd]
             # On verifie que le type du concept existant sd.__class__ est un sur type de celui attendu
             # Cette règle est normalement coherente avec les règles de
@@ -486,9 +486,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             self.g_context[sd.nom] = sd
         elif etape.definition.reentrant != 'n' and etape.reuse != None:
             # On est dans le cas d'une commande avec reutilisation d'un concept existant
-            # get_sd_prod fait le necessaire : verifications, associations, etc. mais ne cree
+            # getSdProd fait le necessaire : verifications, associations, etc. mais ne cree
             # pas un nouveau concept. Il retourne le concept reutilise
-            sd = etape.get_sd_prod()
+            sd = etape.getSdProd()
             # Dans le cas d'un concept nomme automatiquement : _xxx, __xxx,
             # On force le nom stocke dans l'attribut sdnom  de l'objet etape : on lui donne le nom
             # du concept  reutilise (sd ou etape.reuse c'est pareil)
@@ -501,7 +501,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
                 etape.sdnom = sd.nom
         else:
             # On est dans le cas de la creation d'un nouveau concept
-            sd = etape.get_sd_prod()
+            sd = etape.getSdProd()
             if sd != None:
                 self.NommerSdprod(sd, nomsd)
         return sd
@@ -517,7 +517,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         """
         # Normalement, lorsqu'on appelle cette methode, on ne veut nommer que des concepts nouvellement crees.
         # Le filtrage sur les concepts a creer ou a ne pas creer est fait dans la methode
-        # create_sdprod. La seule chose a verifier apres conversion eventuelle du nom
+        # createSdprod. La seule chose a verifier apres conversion eventuelle du nom
         # est de verifier que le nom n'est pas deja attribue. Ceci est fait en delegant
         # au JDC par l'intermediaire du parent.
         if sdnom in self.Outputs :
@@ -545,7 +545,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             else:
                 # On est dans le cas d'un nom de concept global
                 # XXX a voir, creation de CO() dans CALC_ESSAI (sdls139a)
-                if not sd.is_typco():
+                if not sd.isTypCO():
                     raise AsException(
                         "Resultat non declare par la macro %s : %s" % (self.nom, sdnom))
         self.last = sdnom
@@ -561,7 +561,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             # le concept dans son contexte. On ne traite plus que le nommage (restrict="oui")
             self.parent.NommerSdprod(sd, sdnom, restrict='oui')
 
-    def delete_concept_after_etape(self, etape, sd):
+    def deleteConceptAfterEtape(self, etape, sd):
         """
             Met a jour les etapes de la MACRO  qui sont après etape suite a
             la disparition du concept sd
@@ -571,7 +571,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         # Dans d'autres conditions, il faudrait surcharger cette methode.
         return
 
-    def get_created_sd(self):
+    def getCreated_sd(self):
         """Retourne la liste des sd reellement produites par l'etape.
         Si reuse est present, `self.sd` a ete creee avant, donc n'est pas dans
         cette liste."""
@@ -580,7 +580,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             sdprods.append(self.sd)
         return sdprods
 
-    def get_last_concept(self):
+    def getLastConcept(self):
         """Retourne le dernier concept produit dans la macro.
         Peut-etre utile pour acceder au contenu 'fortran' dans une
         clause 'except'."""
@@ -593,7 +593,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         """
         visitor.visitMACRO_ETAPE(self)
 
-    def update_context(self, d):
+    def updateContext(self, d):
         """
            Met a jour le contexte contenu dans le dictionnaire d
            Une MACRO_ETAPE peut ajouter plusieurs concepts dans le contexte
@@ -606,7 +606,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         for co in self.sdprods:
             d[co.nom] = co
 
-    def make_include(self, unite=None, fname=None):
+    def makeInclude(self, unite=None, fname=None):
         """Inclut un fichier dont l'unite logique est `unite` ou de nom `fname`"""
         if unite is not None:
             warn("'unite' is deprecated, please use 'fname' instead",
@@ -614,17 +614,17 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
             fname = 'fort.%s' % unite
         if not fname:
             return
-        f, text = self.get_file(fic_origine=self.parent.nom, fname=fname)
+        f, text = self.getFile(fic_origine=self.parent.nom, fname=fname)
         self.fichier_init = f
         if f == None:
             return
-        self.make_contexte(f, text)
+        self.makeContexte(f, text)
 
-    def make_poursuite(self):
+    def makePoursuite(self):
         """Inclut un fichier poursuite"""
         raise NotImplementedError('this method must be derivated (in Eficas)')
 
-    def make_contexte(self, f, text):
+    def makeContexte(self, f, text):
         """
             Interprete le texte fourni (text) issu du fichier f
             dans le contexte du parent.
@@ -636,13 +636,13 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         # et le contexte de l etape (local au sens Python)
         code = compile(text, f, 'exec')
         d = self.g_context = self.macro_const_context
-        globs = self.get_global_contexte()
+        globs = self.getGlobalContexte()
         d.update(globs)
         exec(code, globs, d)
         # pour ne pas conserver des references sur tout
         self.macro_const_context = {}
 
-    def get_global_contexte(self):
+    def getGlobalContexte(self):
         """
             Cette methode retourne le contexte global fourni
             par le parent(self) a une etape fille (l'appelant) pour
@@ -651,45 +651,45 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         # Le contexte global est forme par concatenation du contexte
         # du parent de self et de celui de l'etape elle meme (self)
         # Pour les concepts, cela ne doit rien changer. Mais pour les constantes,
-        # les valeurs de get_contexte_avant sont moins recentes que dans
-        # get_global_contexte. On prend donc la precaution de ne pas ecraser
+        # les valeurs de getContexteAvant sont moins recentes que dans
+        # getGlobalContexte. On prend donc la precaution de ne pas ecraser
         # ce qui y est deja.
-        d = self.parent.get_global_contexte()
+        d = self.parent.getGlobalContexte()
         d.update(self.g_context)
-        d.update([(k, v) for k, v in list(self.parent.get_contexte_avant(self).items())
+        d.update([(k, v) for k, v in list(self.parent.getContexteAvant(self).items())
                   if d.get(k) is None])
         return d
 
-    def get_contexte_courant(self, etape_fille_du_jdc=None):
+    def getContexteCourant(self, etape_fille_du_jdc=None):
         """
            Retourne le contexte tel qu'il est au moment de l'execution de
            l'etape courante.
         """
         ctx = {}
         # update car par ricochet on modifierait jdc.current_context
-        ctx.update(self.parent.get_contexte_courant(self))
+        ctx.update(self.parent.getContexteCourant(self))
         # on peut mettre None car toujours en PAR_LOT='NON', donc la dernière
-        ctx.update(self.get_contexte_avant(None))
+        ctx.update(self.getContexteAvant(None))
         return ctx
 
-    def get_concept(self, nomsd):
+    def getConcept(self, nomsd):
         """
             Methode pour recuperer un concept a partir de son nom
             dans le contexte du jdc connu avant l'execution de la macro courante.
         """
-        # chercher dans self.get_contexte_avant, puis si non trouve
-        # self.parent.get_concept est peut-etre plus performant
-        co = self.get_contexte_courant().get(nomsd.strip(), None)
+        # chercher dans self.getContexteAvant, puis si non trouve
+        # self.parent.getConcept est peut-etre plus performant
+        co = self.getContexteCourant().get(nomsd.strip(), None)
         if not isinstance(co, ASSD):
             co = None
         return co
 
-    def get_concept_by_type(self, nomsd, typesd, etape=None):
+    def getConceptByType(self, nomsd, typesd, etape=None):
         """
             Methode pour recuperer un concept a partir de son nom et de son type.
             Il aura comme père 'etape' (ou la macro courante si etape est absente).
         """
-        return self.parent.get_concept_by_type(nomsd, typesd, etape=etape or self)
+        return self.parent.getConceptByType(nomsd, typesd, etape=etape or self)
 
     def copy(self):
         """ Methode qui retourne une copie de self non enregistree auprès du JDC
@@ -702,7 +702,7 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         etape.sdprods = []
         return etape
 
-    def copy_intern(self, etape):
+    def copyIntern(self, etape):
         """ Cette methode effectue la recopie des etapes internes d'une macro
             passee en argument (etape)
         """
@@ -710,21 +710,21 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         self.index_etapes = {}
         for etp in etape.etapes:
             new_etp = etp.copy()
-            new_etp.copy_reuse(etp)
-            new_etp.copy_sdnom(etp)
+            new_etp.copyReuse(etp)
+            new_etp.copySdnom(etp)
             new_etp.reparent(self)
             if etp.sd:
                 new_sd = etp.sd.__class__(etape=new_etp)
                 new_etp.sd = new_sd
                 if etp.reuse:
-                    new_sd.set_name(etp.sd.nom)
+                    new_sd.setName(etp.sd.nom)
                 else:
                     self.NommerSdprod(new_sd, etp.sd.nom)
-            new_etp.copy_intern(etp)
+            new_etp.copyIntern(etp)
             self.etapes.append(new_etp)
             self.index_etapes[new_etp] = len(self.etapes) - 1
 
-    def reset_jdc(self, new_jdc):
+    def resetJdc(self, new_jdc):
         """
            Reinitialise l'etape avec un nouveau jdc parent new_jdc
         """
@@ -745,22 +745,22 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" % (t,
         for e in self.etapes:
             e.reparent(self)
 
-    def update_const_context(self, d):
+    def updateConstContext(self, d):
         """
            Met a jour le contexte des constantes pour l'evaluation de
            formules dans la macro.
         """
-        # Dans le jdc, const_context est mis a jour par exec_compile
+        # Dans le jdc, const_context est mis a jour par execCompile
         # Dans la macro, on n'a pas le code a compiler pour recupèrer les
         # constantes locales a la macro. On demande donc explicitement de
         # definir les constantes "locales".
         self.macro_const_context.update(d)
 
-    def sd_accessible(self):
+    def sdAccessible(self):
         """On peut acceder aux "valeurs" (jeveux) des ASSD dans
         les macro-commandes qui sont localement en PAR_LOT="NON"
         sauf pour INCLUDE.
         """
         if CONTEXT.debug:
-            print((' `- MACRO sd_accessible :', self.nom))
-        return self.parent.sd_accessible() or not self.is_include()
+            print((' `- MACRO sdAccessible :', self.nom))
+        return self.parent.sdAccessible() or not self.isInclude()
index 1a3cd0add761dc287a22f3733c197d7399258e68..a03054144ef4ef73b35304a08dcd4438116e31f4 100644 (file)
@@ -39,7 +39,7 @@ class MCBLOC(N_MCCOMPO.MCCOMPO):
 
     nature = "MCBLOC"
 
-    def __init__(self, val, definition, nom, parent):
+    def __init__(self, val, definition, nom, parent,dicoPyxbDeConstruction=None):
         """
            Attributs :
 
@@ -53,14 +53,17 @@ class MCBLOC(N_MCCOMPO.MCCOMPO):
             - parent : le créateur du bloc. Ce peut etre un mot-clé facteur ou un autre objet composite de type
                        OBJECT. Si parent vaut None, le bloc ne possède pas de contexte englobant.
 
-            - mc_liste : liste des sous-objets du bloc construite par appel à la méthode build_mc
+            - mcListe : liste des sous-objets du bloc construite par appel à la méthode buildMc
 
         """
+        #print ('MCBLOC' ,  val, definition, nom, parent)
         self.definition = definition
         self.nom = nom
         self.val = val
         self.parent = parent
         self.valeur = val
+        self.objPyxbDeConstruction=None
+        self.dicoPyxbDeConstruction=dicoPyxbDeConstruction
         if parent:
             self.jdc = self.parent.jdc
             self.niveau = self.parent.niveau
@@ -70,29 +73,29 @@ class MCBLOC(N_MCCOMPO.MCCOMPO):
             self.jdc = None
             self.niveau = None
             self.etape = None
-        self.mc_liste = self.build_mc()
+        self.mcListe = self.buildMc()
 
-    def get_valeur(self):
+    def getValeur(self):
         """
            Retourne la "valeur" de l'objet bloc. Il s'agit d'un dictionnaire dont
-           les clés seront les noms des objets de self.mc_liste et les valeurs
-           les valeurs des objets de self.mc_liste obtenues par application de
-           la méthode get_valeur.
+           les clés seront les noms des objets de self.mcListe et les valeurs
+           les valeurs des objets de self.mcListe obtenues par application de
+           la méthode getValeur.
 
            Dans le cas particulier d'un objet bloc les éléments du dictionnaire
-           obtenu par appel de la méthode get_valeur sont intégrés au niveau
+           obtenu par appel de la méthode getValeur sont intégrés au niveau
            supérieur.
 
         """
         dico = {}
-        for mocle in self.mc_liste:
+        for mocle in self.mcListe:
             if mocle.isBLOC():
                 # Si mocle est un BLOC, on inclut ses items dans le dictionnaire
                 # représentatif de la valeur de self. Les mots-clés fils de blocs sont
                 # donc remontés au niveau supérieur.
-                dico.update(mocle.get_valeur())
+                dico.update(mocle.getValeur())
             else:
-                dico[mocle.nom] = mocle.get_valeur()
+                dico[mocle.nom] = mocle.getValeur()
 
         # On rajoute tous les autres mots-clés locaux possibles avec la valeur
         # par défaut ou None
index 2fa8f61cd9b36d2e7efa92cdd9684dde3c575cbe..c4d641fd3adca053071278b7921d00bb7ae9a5fe 100644 (file)
@@ -36,22 +36,27 @@ class MCCOMPO(N_OBJECT.OBJECT):
 
     """
 
-    def build_mc(self):
+    def buildMc(self):
         """
             Construit la liste des sous-entites du MCCOMPO
             à partir du dictionnaire des arguments (valeur)
         """
+        
+        #import traceback
+        #traceback.print_stack()
+        #print(("MCCOMPO.buildMc _____________________________________", self.nom))
+        #print (self.dicoPyxbDeConstruction)
         if CONTEXT.debug:
-            print(("MCCOMPO.build_mc ", self.nom))
+            print(("MCCOMPO.buildMc ", self.nom))
         # Dans la phase de reconstruction args peut contenir des mots-clés
         # qui ne sont pas dans le dictionnaire des entites de definition (self.definition.entites)
         # de l'objet courant (self)
         # mais qui sont malgré tout des descendants de l'objet courant
         # (petits-fils, ...)
         args = self.valeur
-        if args == None:
-            args = {}
-        mc_liste = []
+        if args == None: args = {}
+        mcListe = []
+        
 
         # On recopie le dictionnaire des arguments pour protéger l'original des
         # delete (del args[k])
@@ -63,6 +68,9 @@ class MCCOMPO(N_OBJECT.OBJECT):
         # 2- les entités non présentes dans les arguments, présentes dans la définition avec un défaut
         # Phase 1.1 : on traite d'abord les SIMP pour enregistrer les mots cles
         # globaux
+        # PN ligne suivante uniquement pour commodite
+        # a detruire quand cela fonctionne recursivement
+        if not hasattr(self, 'dicoPyxbDeConstruction') : self.dicoPyxbDeConstruction = {}
         for k, v in list(self.definition.entites.items()):
             if v.label != 'SIMP':
                 continue
@@ -72,8 +80,13 @@ class MCCOMPO(N_OBJECT.OBJECT):
                 # si une valeur existe dans args ou est obligatoire (generique si toutes les
                 # entites ont l attribut statut )
                 #
-                objet = v(val=args.get(k, None), nom=k, parent=self)
-                mc_liste.append(objet)
+                if self.dicoPyxbDeConstruction and  k in self.dicoPyxbDeConstruction : 
+                   objPyxbDeConstruction=self.dicoPyxbDeConstruction[k]
+                   del self.dicoPyxbDeConstruction[k]
+                else :
+                   objPyxbDeConstruction=None
+                objet = v(val=args.get(k, None), nom=k, parent=self,objPyxbDeConstruction=objPyxbDeConstruction)
+                mcListe.append(objet)
                 # Si l'objet a une position globale on l'ajoute aux listes
                 # correspondantes
                 if hasattr(objet.definition, 'position'):
@@ -95,14 +108,19 @@ class MCCOMPO(N_OBJECT.OBJECT):
                 # si une valeur existe dans args ou est obligatoire (generique si toutes les
                 # entites ont l attribut statut )
                 #
-                objet = v(val=args.get(k, None), nom=k, parent=self)
-                mc_liste.append(objet)
+                if self.dicoPyxbDeConstruction and  k in self.dicoPyxbDeConstruction : 
+                   dicoPyxbDeConstruction=self.dicoPyxbDeConstruction[k]
+                   del self.dicoPyxbDeConstruction[k]
+                else :
+                   dicoPyxbDeConstruction=None
+                objet = v(val=args.get(k, None), nom=k, parent=self,dicoPyxbDeConstruction=dicoPyxbDeConstruction)
+                mcListe.append(objet)
             if k in args:
                 del args[k]
 
         # Phase 2:
         # On construit les objets (en général, blocs) conditionnés par les mots-clés précédemment créés.
-        # A ce stade, mc_liste ne contient que les fils de l'objet courant
+        # A ce stade, mcListe ne contient que les fils de l'objet courant
         # args ne contient plus que des mots-clés qui n'ont pas été attribués car ils sont
         #      à attribuer à des blocs du niveau inférieur ou bien sont des mots-clés erronés
         for k, v in list(self.definition.entites.items()):
@@ -114,42 +132,48 @@ class MCCOMPO(N_OBJECT.OBJECT):
             #PNPN on recalcule dico_valeurs dans le for
             # pour les globaux imbriques (exple Telemac Advection)
             # avant le calcul etait avant le for
-            dico_valeurs = self.cree_dict_condition(mc_liste, condition=1)
+            dico_valeurs = self.creeDictCondition(mcListe, condition=1)
             globs = self.jdc and self.jdc.condition_context or {}
-            if v.verif_presence(dico_valeurs, globs):
+            if v.verifPresence(dico_valeurs, globs):
                     # Si le bloc existe :
                     #        1- on le construit
-                    #        2- on l'ajoute à mc_liste
+                    #        2- on l'ajoute à mcListe
                     #        3- on récupère les arguments restant
-                    # 4- on reconstruit le dictionnaire équivalent à mc_liste
-                bloc = v(nom=k, val=args, parent=self)
-                mc_liste.append(bloc)
+                    # 4- on reconstruit le dictionnaire équivalent à mcListe
+                bloc = v(nom=k, val=args, parent=self,dicoPyxbDeConstruction=self.dicoPyxbDeConstruction)
+                mcListe.append(bloc)
                 args = bloc.reste_val
                 # On ne recalcule pas le contexte car on ne tient pas compte des blocs
                 # pour évaluer les conditions de présence des blocs
-                # dico_valeurs = self.cree_dict_valeurs(mc_liste)
+                # dico_valeurs = self.creeDictValeurs(mcListe)
 
         # On conserve les arguments superflus dans l'attribut reste_val
         self.reste_val = args
         # On ordonne la liste ainsi créée suivant l'ordre du catalogue
         # (utile seulement pour IHM graphique)
-        mc_liste = self.ordonne_liste(mc_liste)
+        mcListe = self.ordonneListe(mcListe)
         # on retourne la liste ainsi construite
-        return mc_liste
+        if self.jdc  : self.cata=self.jdc.cata
+        else : self.cata = None
+        self.buildObjPyxb(mcListe)
+        #else : print ('pas de construction pour ', self.nom, self.objPyxbDeConstruction)
+        #print ('buildObjPyxb : ' , self.nom)
+        #print(("MCCOMPO.buildMc fin_____________________________________", self.nom))
+        return mcListe
 
-    def ordonne_liste(self, mc_liste):
+    def ordonneListe(self, mcListe):
         """
            Ordonne la liste suivant l'ordre du catalogue.
            Seulement pour IHM graphique
         """
         if self.jdc and self.jdc.cata_ordonne_dico != None:
-            liste_noms_mc_ordonnee = self.get_liste_mc_ordonnee_brute(
-                self.get_genealogie(), self.jdc.cata_ordonne_dico)
-            return self.ordonne_liste_mc(mc_liste, liste_noms_mc_ordonnee)
+            liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute(
+                self.getGenealogie(), self.jdc.cata_ordonne_dico)
+            return self.ordonneListeMc(mcListe, liste_noms_mc_ordonnee)
         else:
-            return mc_liste
+            return mcListe
 
-    def cree_dict_valeurs(self, liste=[], condition=0):
+    def creeDictValeurs(self, liste=[], condition=0):
         """
           Cette méthode crée un contexte (sous la forme d'un dictionnaire)
           à partir des valeurs des mots clés contenus dans l'argument liste.
@@ -171,7 +195,7 @@ class MCCOMPO(N_OBJECT.OBJECT):
              - ajouter tous les mots-clés globaux (attribut position = 'global'
                et 'global_jdc')
 
-          L'argument liste est, en général, une mc_liste en cours de
+          L'argument liste est, en général, une mcListe en cours de
           construction, contenant les mots-clés locaux et les blocs déjà créés.
 
         """
@@ -179,16 +203,16 @@ class MCCOMPO(N_OBJECT.OBJECT):
         for v in liste:
             if v.isBLOC():
                 # Si v est un BLOC, on inclut ses items dans le dictionnaire
-                # représentatif du contexte. Les blocs sont retournés par get_valeur
+                # représentatif du contexte. Les blocs sont retournés par getValeur
                 # sous la forme d'un dictionnaire : les mots-clés fils de blocs sont
                 # donc remontés au niveau du contexte.
                 if not condition:
-                    dadd = v.get_valeur()
+                    dadd = v.getValeur()
                     assert intersection_vide(dico, dadd)
                     dico.update(dadd)
             else:
                 assert not v.nom in dico, "deja vu : %s" % v.nom
-                dico[v.nom] = v.get_valeur()
+                dico[v.nom] = v.getValeur()
 
         # On rajoute tous les autres mots-clés locaux possibles avec la valeur
         # par défaut ou None
@@ -216,26 +240,26 @@ class MCCOMPO(N_OBJECT.OBJECT):
         # valeur par défaut ou la valeur None
 
         # On rajoute les mots-clés globaux sans écraser les clés existantes
-        dico_mc = self.recherche_mc_globaux()
+        dico_mc = self.rechercheMcGlobaux()
         dico_mc.update(dico)
         dico = dico_mc
 
         return dico
 
-    def cree_dict_toutes_valeurs(self):
-        """Semblable à `cree_dict_valeurs(liste=self.mc_liste)` en supprimant les
+    def creeDictToutesValeurs(self):
+        """Semblable à `creeDictValeurs(liste=self.mcListe)` en supprimant les
         valeurs None."""
-        dico = self.cree_dict_valeurs(self.mc_liste, condition=0)
+        dico = self.creeDictValeurs(self.mcListe, condition=0)
         dico = dict([(k, v) for k, v in list(dico.items()) if v is not None])
         return dico
 
-    def cree_dict_condition(self, liste=[], condition=0):
+    def creeDictCondition(self, liste=[], condition=0):
         """
             Methode pour construire un contexte qui servira dans l'évaluation
             des conditions de présence de blocs. Si une commande a un concept
             produit réutilisé, on ajoute la clé 'reuse'
         """
-        dico = self.cree_dict_valeurs(liste, condition=1)
+        dico = self.creeDictValeurs(liste, condition=1)
         # On ajoute la cle "reuse" pour les MCCOMPO qui ont un attribut reuse. A destination
         # uniquement des commandes. Ne devrait pas etre dans cette classe mais
         # dans une classe dérivée
@@ -243,31 +267,31 @@ class MCCOMPO(N_OBJECT.OBJECT):
             dico['reuse'] = self.reuse
         return dico
 
-    def recherche_mc_globaux(self):
+    def rechercheMcGlobaux(self):
         """
             Retourne la liste des mots-clés globaux de l'étape à laquelle appartient self
             et des mots-clés globaux du jdc
         """
-        etape = self.get_etape()
+        etape = self.getEtape()
         if etape:
-            dict_mc_globaux_fac = self.recherche_mc_globaux_facultatifs()
+            dict_mc_globaux_fac = self.rechercheMcGlobauxFacultatifs()
             for k, v in list(etape.mc_globaux.items()):
-                dict_mc_globaux_fac[k] = v.get_valeur()
+                dict_mc_globaux_fac[k] = v.getValeur()
             if self.jdc:
                 for k, v in list(self.jdc.mc_globaux.items()):
-                    dict_mc_globaux_fac[k] = v.get_valeur()
+                    dict_mc_globaux_fac[k] = v.getValeur()
             return dict_mc_globaux_fac
         else:
             return {}
 
-    def recherche_mc_globaux_facultatifs(self):
+    def rechercheMcGlobauxFacultatifs(self):
         """
             Cette méthode interroge la définition de self et retourne la liste des mots-clés fils
             directs de self de type 'global'.
             position='global' n'est donc possible (et n'a de sens) qu'au plus haut niveau.
         """
         dico = {}
-        etape = self.get_etape()
+        etape = self.getEtape()
         if not etape:
             return {}
         for k, v in list(etape.definition.entites.items()):
@@ -278,7 +302,7 @@ class MCCOMPO(N_OBJECT.OBJECT):
             if v.statut == 'o':
                 continue
             obj = v(val=None, nom=k, parent=etape)
-            dico[k] = obj.get_valeur()
+            dico[k] = obj.getValeur()
         return dico
 
     def supprime(self):
@@ -287,26 +311,26 @@ class MCCOMPO(N_OBJECT.OBJECT):
            etre correctement détruit par le garbage collector
         """
         N_OBJECT.OBJECT.supprime(self)
-        for child in self.mc_liste:
+        for child in self.mcListe:
             child.supprime()
 
     def __getitem__(self, key):
         """
            Cette méthode retourne la valeur d'un sous mot-clé (key)
         """
-        return self.get_mocle(key)
+        return self.getMocle(key)
 
-    def get_mocle(self, key):
+    def getMocle(self, key):
         """
             Retourne la valeur du sous mot-clé key
             Ce sous mot-clé peut exister, avoir une valeur par defaut ou etre
             dans un BLOC fils de self
         """
         # on cherche dans les mots cles presents, le mot cle de nom key
-        # s'il est là on retourne sa valeur (méthode get_val)
-        for child in self.mc_liste:
+        # s'il est là on retourne sa valeur (méthode getVal)
+        for child in self.mcListe:
             if child.nom == key:
-                return child.get_valeur()
+                return child.getValeur()
         #  Si on n a pas trouve de mot cle present on retourne le defaut
         #  eventuel pour les mots cles accessibles dans la definition
         #  a ce niveau
@@ -329,11 +353,11 @@ class MCCOMPO(N_OBJECT.OBJECT):
         #  Si on a toujours rien trouve, on cherche dans les blocs presents
         #  On suppose que tous les blocs possibles ont ete crees meme ceux
         #  induits par un mot cle simple absent avec defaut (???)
-        for mc in self.mc_liste:
+        for mc in self.mcListe:
             if not mc.isBLOC():
                 continue
             try:
-                return mc.get_mocle(key)
+                return mc.getMocle(key)
             except:
                 # On n a rien trouve dans ce bloc, on passe au suivant
                 pass
@@ -341,14 +365,14 @@ class MCCOMPO(N_OBJECT.OBJECT):
         #  On leve une exception
         raise IndexError("Le mot cle %s n existe pas dans %s" % (key, self))
 
-    def get_child(self, name, restreint='non'):
+    def getChild(self, name, restreint='non'):
         """
             Retourne le fils de self de nom name ou None s'il n'existe pas
-            Si restreint vaut oui : ne regarde que dans la mc_liste
+            Si restreint vaut oui : ne regarde que dans la mcListe
             Si restreint vaut non : regarde aussi dans les entites possibles
             avec defaut (Ce dernier cas n'est utilisé que dans le catalogue)
         """
-        for v in self.mc_liste:
+        for v in self.mcListe:
             if v.nom == name:
                 return v
         if restreint == 'non':
@@ -365,7 +389,7 @@ class MCCOMPO(N_OBJECT.OBJECT):
         """
            Ajoute le mot-clé mc à la liste des mots-clés globaux de l'étape
         """
-        etape = self.get_etape()
+        etape = self.getEtape()
         if etape:
             nom = mc.nom
             etape.mc_globaux[nom] = mc
@@ -389,11 +413,11 @@ class MCCOMPO(N_OBJECT.OBJECT):
         # est acceptee
         objet.valeur = copy(self.valeur)
         objet.val = copy(self.val)
-        objet.mc_liste = []
-        for obj in self.mc_liste:
+        objet.mcListe = []
+        for obj in self.mcListe:
             new_obj = obj.copy()
             new_obj.reparent(objet)
-            objet.mc_liste.append(new_obj)
+            objet.mcListe.append(new_obj)
         return objet
 
     def reparent(self, parent):
@@ -401,22 +425,22 @@ class MCCOMPO(N_OBJECT.OBJECT):
             Cette methode sert a reinitialiser la parente de l'objet
         """
         self.parent = parent
-        self.jdc = parent.get_jdc_root()
+        self.jdc = parent.getJdcRoot()
         self.etape = parent.etape
-        for mocle in self.mc_liste:
+        for mocle in self.mcListe:
             mocle.reparent(self)
 
-    def get_sd_utilisees(self):
+    def getSd_utilisees(self):
         """
           Retourne la liste des concepts qui sont utilisés à l'intérieur de self
           ( comme valorisation d'un MCS)
         """
         l = []
-        for child in self.mc_liste:
-            l.extend(child.get_sd_utilisees())
+        for child in self.mcListe:
+            l.extend(child.getSd_utilisees())
         return l
 
-    def get_sd_mcs_utilisees(self):
+    def getSd_mcs_utilisees(self):
         """
             Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
               - Si aucune sd n'est utilisée, le dictionnaire est vide.
@@ -429,14 +453,14 @@ class MCCOMPO(N_OBJECT.OBJECT):
                     'MODELE': [<Cata.cata.modele instance at 0x941550c>] }
         """
         dico = {}
-        for child in self.mc_liste:
-            daux = child.get_sd_mcs_utilisees()
+        for child in self.mcListe:
+            daux = child.getSd_mcs_utilisees()
             for cle in daux:
                 dico[cle] = dico.get(cle, [])
                 dico[cle].extend(daux[cle])
         return dico
 
-    def get_mcs_with_co(self, co):
+    def getMcsWithCo(self, co):
         """
            Cette methode retourne l'objet MCSIMP fils de self
            qui a le concept co comme valeur.
@@ -444,17 +468,17 @@ class MCCOMPO(N_OBJECT.OBJECT):
            instances de la classe CO
         """
         l = []
-        for child in self.mc_liste:
-            l.extend(child.get_mcs_with_co(co))
+        for child in self.mcListe:
+            l.extend(child.getMcsWithCo(co))
         return l
 
-    def get_all_co(self):
+    def getAllCo(self):
         """
            Cette methode retourne tous les concepts instances de CO
         """
         l = []
-        for child in self.mc_liste:
-            l.extend(child.get_all_co())
+        for child in self.mcListe:
+            l.extend(child.getAllCo())
         return l
 
 
index 4ee33569812b276eb91f20dd2a06e9a652faaf5d..52be431306d321b9e7ce88d3dc5b54abe2f01cf4 100644 (file)
@@ -34,7 +34,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
     """
     nature = "MCFACT"
 
-    def __init__(self, val, definition, nom, parent):
+    def __init__(self, val, definition, nom, parent,dicoPyxbDeConstruction):
         """
            Attributs :
             - val : valeur du mot clé simple
@@ -42,6 +42,16 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
             - nom
             - parent
         """
+        #print ('MCFACT', self, val, definition, nom, parent, objPyxbDeConstruction)
+        import traceback
+        #traceback.print_stack()
+        #if nom == 'experience' : print ('MCFACT', self, parent, dicoPyxbDeConstruction); exit()
+        self.dicoPyxbDeConstruction=dicoPyxbDeConstruction
+        if self.dicoPyxbDeConstruction :
+           self.objPyxbDeConstruction=self.dicoPyxbDeConstruction['objEnPyxb']
+           del self.dicoPyxbDeConstruction['objEnPyxb']
+        else :
+           self.objPyxbDeConstruction=None
         self.definition = definition
         self.nom = nom
         self.val = val
@@ -56,7 +66,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
             self.jdc = None
             self.niveau = None
             self.etape = None
-        self.mc_liste = self.build_mc()
+        self.mcListe = self.buildMc()
 
     def GETVAL(self, val):
         """
@@ -68,7 +78,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
         else:
             return val
 
-    def get_valeur(self):
+    def getValeur(self):
         """
             Retourne la "valeur" d'un mot-clé facteur qui est l'objet lui-meme.
             Cette valeur est utilisée lors de la création d'un contexte
@@ -76,10 +86,10 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
         """
         return self
 
-    def get_val(self):
+    def getVal(self):
         """
             Une autre méthode qui retourne une "autre" valeur du mot clé facteur.
-            Elle est utilisée par la méthode get_mocle
+            Elle est utilisée par la méthode getMocle
         """
         return [self]
 
@@ -90,7 +100,7 @@ class MCFACT(N_MCCOMPO.MCCOMPO):
         """
         if key == 0:
             return self
-        return self.get_mocle(key)
+        return self.getMocle(key)
 
     def accept(self, visitor):
         """
index dc26369d473f2c462c1ebbf49550c1e892583eef..5d693ed98e017bf5db2c0bac7c06385bb626ac5d 100644 (file)
@@ -50,6 +50,7 @@ class MCList(UserList):
     nature = 'MCList'
 
     def init(self, nom, parent):
+        self.objPyxbDeConstruction=None
         self.definition = None
         self.nom = nom
         self.parent = parent
@@ -63,7 +64,7 @@ class MCList(UserList):
             self.niveau = None
             self.etape = None
 
-    def get_valeur(self):
+    def getValeur(self):
         """
            Retourne la "valeur" d'un objet MCList. Sert à construire
            un contexte d'évaluation pour une expression Python.
@@ -71,10 +72,10 @@ class MCList(UserList):
         """
         return self
 
-    def get_val(self):
+    def getVal(self):
         """
             Une autre méthode qui retourne une "autre" valeur d'une MCList
-            Elle est utilisée par la méthode get_mocle
+            Elle est utilisée par la méthode getMocle
         """
         return self
 
@@ -90,20 +91,20 @@ class MCList(UserList):
         for child in self.data:
             child.supprime()
 
-    def get_child(self, name,restreint='non'):
+    def getChild(self, name,restreint='non'):
         """
             Retourne le fils de nom name s'il est contenu dans self
             Par défaut retourne le fils du premier de la liste
         """
         obj = self.data[0]
         # Phase 1 : on cherche dans les fils directs de obj
-        for child in obj.mc_liste:
+        for child in obj.mcListe:
             if child.nom == name:
                 return child
         # Phase 2 : on cherche dans les blocs de self
-        for child in obj.mc_liste:
+        for child in obj.mcListe:
             if child.isBLOC():
-                resu = child.get_child(name)
+                resu = child.getChild(name)
                 if resu != None:
                     return resu
         # Phase 3 : on cherche dans les entites possibles pour les défauts
@@ -129,17 +130,17 @@ class MCList(UserList):
         """
         visitor.visitMCList(self)
 
-    def get_sd_utilisees(self):
+    def getSd_utilisees(self):
         """
           Retourne la liste des concepts qui sont utilisés à l'intérieur de self
           ( comme valorisation d'un MCS)
         """
         l = []
         for child in self.data:
-            l.extend(child.get_sd_utilisees())
+            l.extend(child.getSd_utilisees())
         return l
 
-    def get_sd_mcs_utilisees(self):
+    def getSd_mcs_utilisees(self):
         """
             Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
               - Si aucune sd n'est utilisée, le dictionnaire est vide.
@@ -154,13 +155,13 @@ class MCList(UserList):
         """
         dico = {}
         for child in self.data:
-            daux = child.get_sd_mcs_utilisees()
+            daux = child.getSd_mcs_utilisees()
             for cle in daux:
                 dico[cle] = dico.get(cle, [])
                 dico[cle].extend(daux[cle])
         return dico
 
-    def get_mcs_with_co(self, co):
+    def getMcsWithCo(self, co):
         """
            Cette methode retourne l'objet MCSIMP fils de self
            qui a le concept co comme valeur.
@@ -169,16 +170,16 @@ class MCList(UserList):
         """
         l = []
         for child in self.data:
-            l.extend(child.get_mcs_with_co(co))
+            l.extend(child.getMcsWithCo(co))
         return l
 
-    def get_all_co(self):
+    def getAllCo(self):
         """
            Cette methode retourne tous les concepts instances de CO
         """
         l = []
         for child in self.data:
-            l.extend(child.get_all_co())
+            l.extend(child.getAllCo())
         return l
 
     def copy(self):
@@ -208,7 +209,7 @@ class MCList(UserList):
         for mcfact in self.data:
             mcfact.reparent(parent)
 
-    def get_etape(self):
+    def getEtape(self):
         """
            Retourne l'étape à laquelle appartient self
            Un objet de la catégorie etape doit retourner self pour indiquer que
@@ -217,14 +218,14 @@ class MCList(UserList):
         """
         if self.parent == None:
             return None
-        return self.parent.get_etape()
+        return self.parent.getEtape()
 
     def __getitem__(self, key):
         """
            Dans le cas d un mot cle facteur de longueur 1 on simule un scalaire
         """
         if type(key) != int and len(self) == 1:
-            return self.data[0].get_mocle(key)
+            return self.data[0].getMocle(key)
         else:
             return self.data[key]
 
@@ -235,9 +236,13 @@ class MCList(UserList):
         """
         dresu = []
         for mcf in self:
-            dico = mcf.cree_dict_valeurs(mcf.mc_liste)
+            dico = mcf.creeDictValeurs(mcf.mcListe)
             for i in list(dico.keys()):
                 if dico[i] == None:
                     del dico[i]
             dresu.append(dico)
         return dresu
+    
+    def longueurDsArbre(self):
+    # pour Pyxb : longueur  dans le orderedcontent de pyxb
+        return len(self)
index a4b9134b28c93fd9a0d4a465dc8ac5dc1ad0a1b0..73d018721541b4d6fea9c9522bfbf9a831679434 100644 (file)
@@ -31,7 +31,7 @@ from Noyau.N_ASSD import ASSD
 from Noyau.N_CO import CO
 from . import N_OBJECT
 from .N_CONVERT import ConversionFactory
-from .N_types import force_list, is_sequence
+from .N_types import forceList, isSequence
 
 
 class MCSIMP(N_OBJECT.OBJECT):
@@ -40,7 +40,7 @@ class MCSIMP(N_OBJECT.OBJECT):
     """
     nature = 'MCSIMP'
 
-    def __init__(self, val, definition, nom, parent):
+    def __init__(self, val, definition, nom, parent,objPyxbDeConstruction):
         """
            Attributs :
 
@@ -57,19 +57,29 @@ class MCSIMP(N_OBJECT.OBJECT):
             - valeur : valeur du mot-clé simple en tenant compte de la valeur par défaut
 
         """
+        #print ("MCSIMP, ------------------------")
+        #print (self, val, definition, nom, parent)
+        #print ("MCSIMP, ------------------------")
         self.definition = definition
         self.nom = nom
         self.val = val
         self.parent = parent
         self.convProto = ConversionFactory('type', typ=self.definition.type)
         self.valeur = self.GETVAL(self.val)
+        self.objPyxbDeConstruction=objPyxbDeConstruction
         if parent:
-            self.jdc = self.parent.jdc
+            self.jdc  = self.parent.jdc
+            if self.jdc : self.cata = self.jdc.cata
+            else : self.cata = None
             self.niveau = self.parent.niveau
             self.etape = self.parent.etape
+            self.buildObjPyxb()
         else:
             # Le mot cle simple a été créé sans parent
+            # est-ce possible ?
+            print ('je suis dans le else sans parent du build')
             self.jdc = None
+            self.cata = None
             self.niveau = None
             self.etape = None
 
@@ -84,7 +94,7 @@ class MCSIMP(N_OBJECT.OBJECT):
             val = self.convProto.convert(val)
         return val
 
-    def get_valeur(self):
+    def getValeur(self):
         """
             Retourne la "valeur" d'un mot-clé simple.
             Cette valeur est utilisée lors de la création d'un contexte
@@ -98,19 +108,19 @@ class MCSIMP(N_OBJECT.OBJECT):
         # par "not has_attr(v, '__iter__')".
         if v is None:
             pass
-        elif is_sequence(v) and len(v) == 1 and self.definition.max == 1:
+        elif isSequence(v) and len(v) == 1 and self.definition.max == 1:
             v = v[0]
-        elif not is_sequence(v) and self.definition.max != 1:
+        elif not isSequence(v) and self.definition.max != 1:
             v = (v, )
         # traitement particulier pour les complexes ('RI', r, i)
         if 'C' in self.definition.type and self.definition.max != 1 and v != None and v[0] in ('RI', 'MP'):
             v = (v, )
         return v
 
-    def get_val(self):
+    def getVal(self):
         """
             Une autre méthode qui retourne une "autre" valeur du mot clé simple.
-            Elle est utilisée par la méthode get_mocle
+            Elle est utilisée par la méthode getMocle
         """
         return self.valeur
 
@@ -144,7 +154,7 @@ class MCSIMP(N_OBJECT.OBJECT):
         self.jdc = parent.jdc
         self.etape = parent.etape
 
-    def get_sd_utilisees(self):
+    def getSd_utilisees(self):
         """
             Retourne une liste qui contient la ou les SD utilisée par self si c'est le cas
             ou alors une liste vide
@@ -158,7 +168,7 @@ class MCSIMP(N_OBJECT.OBJECT):
                     l.append(val)
         return l
 
-    def get_sd_mcs_utilisees(self):
+    def getSd_mcs_utilisees(self):
         """
             Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
               - Si aucune sd n'est utilisée, le dictionnaire est vide.
@@ -169,25 +179,25 @@ class MCSIMP(N_OBJECT.OBJECT):
                         { 'VALE_F': [ <Cata.cata.fonction_sdaster instance at 0x9419854>,
                                       <Cata.cata.fonction_sdaster instance at 0x941a204> ] }
         """
-        l = self.get_sd_utilisees()
+        l = self.getSd_utilisees()
         dico = {}
         if len(l) > 0:
             dico[self.nom] = l
         return dico
 
-    def get_mcs_with_co(self, co):
+    def getMcsWithCo(self, co):
         """
             Cette methode retourne l'objet MCSIMP self s'il a le concept co
             comme valeur.
         """
-        if co in force_list(self.valeur):
+        if co in forceList(self.valeur):
             return [self, ]
         return []
 
-    def get_all_co(self):
+    def getAllCo(self):
         """
             Cette methode retourne la liste de tous les concepts co
             associés au mot cle simple
         """
-        return [co for co in force_list(self.valeur)
-                if isinstance(co, CO) and co.is_typco()]
+        return [co for co in forceList(self.valeur)
+                if isinstance(co, CO) and co.isTypCO()]
index d17e552234ee21220f4683c28eb59a45626f49c0..8765539fa91a44d93224a6c988de53efc375b508 100644 (file)
@@ -42,7 +42,7 @@ class OBJECT(object):
 
     """
 
-    def get_etape(self):
+    def getEtape(self):
         """
            Retourne l'étape à laquelle appartient self
            Un objet de la catégorie etape doit retourner self pour indiquer que
@@ -51,7 +51,7 @@ class OBJECT(object):
         """
         if self.parent == None:
             return None
-        return self.parent.get_etape()
+        return self.parent.getEtape()
 
     def supprime(self):
         """
@@ -64,7 +64,7 @@ class OBJECT(object):
         self.jdc = None
         self.niveau = None
 
-    def get_val(self):
+    def getVal(self):
         """
             Retourne la valeur de l'objet. Cette méthode fournit
             une valeur par defaut. Elle doit etre dérivée pour chaque
@@ -72,19 +72,14 @@ class OBJECT(object):
         """
         return self
 
-    def isBLOC(self):
-        """
-            Indique si l'objet est un BLOC
-        """
-        return 0
 
-    def get_jdc_root(self):
+    def getJdcRoot(self):
         """
             Cette méthode doit retourner l'objet racine c'est à dire celui qui
             n'a pas de parent
         """
         if self.parent:
-            return self.parent.get_jdc_root()
+            return self.parent.getJdcRoot()
         else:
             return self
 
@@ -105,6 +100,16 @@ class OBJECT(object):
         self.parent = parent
         self.jdc = parent.jdc
 
+    def isBLOC(self):
+        """
+            Indique si l'objet est un BLOC
+            surcharge dans MCBLOC
+        """
+        return 0
+
+    def longueurDsArbre(self):
+      return 1
+
 
 class ErrorObj(OBJECT):
 
@@ -116,7 +121,7 @@ class ErrorObj(OBJECT):
         self.definition = definition
         self.valeur = valeur
         self.parent = parent
-        self.mc_liste = []
+        self.mcListe = []
         if parent:
             self.jdc = self.parent.jdc
             # self.niveau = self.parent.niveau
@@ -127,7 +132,7 @@ class ErrorObj(OBJECT):
             # self.niveau = None
             # self.etape = None
 
-    def isvalid(self, cr='non'):
+    def isValid(self, cr='non'):
         return 0
 
     def report(self):
@@ -138,3 +143,5 @@ class ErrorObj(OBJECT):
         self.cr.fatal(_(u"Type non autorisé pour le mot-clé %s : '%s'"),
                       self.nom, self.valeur)
         return self.cr
+
+
index 956929709cc571eb9bbb4935dc65045bf5812bf0..955b0897a2ae9b39d42e3185b0d563619ca879c9 100644 (file)
@@ -86,7 +86,7 @@ class OPER(N_ENTITE.ENTITE):
     label = 'OPER'
     nommage = nommage
 
-    def __init__(self, nom, op, sd_prod, reentrant='n', repetable='o', fr="",ang="",
+    def __init__(self, nom, op=None, sd_prod=None, reentrant='n', repetable='o', fr="",ang="",fenetreIhm=None,
                  docu="", regles=(), op_init=None, niveau = None, UIinfo=None, **args):
         """
            Méthode d'initialisation de l'objet OPER. Les arguments sont utilisés pour initialiser
@@ -100,6 +100,7 @@ class OPER(N_ENTITE.ENTITE):
         self.ang = ang
         self.repetable = repetable
         self.docu = docu
+        self.fenetreIhm= fenetreIhm
         if type(regles) == tuple:
             self.regles = regles
         else:
@@ -108,26 +109,26 @@ class OPER(N_ENTITE.ENTITE):
         # operateur sauf si == None
         self.op_init = op_init
         self.entites = args
-        current_cata = CONTEXT.get_current_cata()
+        current_cata = CONTEXT.getCurrentCata()
         if niveau == None:
             self.niveau = None
             current_cata.enregistre(self)
         else:
-            self.niveau = current_cata.get_niveau(niveau)
+            self.niveau = current_cata.getNiveau(niveau)
             self.niveau.enregistre(self)
         self.UIinfo = UIinfo
         self.affecter_parente()
-        self.check_definition(self.nom)
+        self.checkDefinition(self.nom)
 
     def __call__(self, reuse=None, **args):
         """
             Construit l'objet ETAPE a partir de sa definition (self),
             puis demande la construction de ses sous-objets et du concept produit.
         """
-        nomsd = self.nommage.GetNomConceptResultat(self.nom)
+        nomsd = self.nommage.getNomConceptResultat(self.nom)
         etape = self.class_instance(oper=self, reuse=reuse, args=args)
-        etape.McBuild()
-        return etape.Build_sd(nomsd)
+        etape.MCBuild()
+        return etape.buildSd(nomsd)
 
     def make_objet(self, mc_list='oui'):
         """
@@ -138,20 +139,20 @@ class OPER(N_ENTITE.ENTITE):
         """
         etape = self.class_instance(oper=self, reuse=None, args={})
         if mc_list == 'oui':
-            etape.McBuild()
+            etape.MCBuild()
         return etape
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Méthode de vérification des attributs de définition
         """
-        self.check_regles()
-        self.check_fr()
-        self.check_reentrant()
-        self.check_docu()
-        self.check_nom()
-        self.check_op(valmin=0)
-        self.verif_cata_regles()
+        self.checkRegles()
+        self.checkFr()
+        self.checkReentrant()
+        self.checkDocu()
+        self.checkNom()
+        self.checkOp(valmin=0)
+        self.verifCataRegles()
 
     def supprime(self):
         """
index 0662637f8ce8f0616a0bbd4155aba6e85924c8b5..d835a6a474b96ba3b040ff5f159ab1e607a4fafb 100644 (file)
@@ -22,7 +22,7 @@ try :
    from builtins import object
 except :
    pass
-from .N_utils import import_object
+from .N_utils import importObject
 
 
 class OPS(object):
@@ -36,7 +36,7 @@ class OPS(object):
 
     def __call__(self, *args, **kwargs):
         """Import the real function and call it."""
-        func = import_object(self.uri)
+        func = importObject(self.uri)
         return func(*args, **kwargs)
 
 
index 7b20ae828ba54bcaa9d823a4186b287649fa45a4..97c120df3eb8059cfbe040561bac3963693aa3d9 100644 (file)
@@ -71,6 +71,8 @@ class PROC(N_ENTITE.ENTITE):
                       rangés par niveau. Ils apparaissent alors exclusivement dans leur niveau de rangement.
                       Si niveau vaut None, l'opérateur est rangé au niveau global.
 
+     - fenetreIhm : specification de la fenetre
+
      - entites : dictionnaire dans lequel sont stockés les sous entités de l'opérateur. Il s'agit
                        des entités de définition pour les mots-clés : FACT, BLOC, SIMP. Cet attribut
                        est initialisé avec args, c'est à dire les arguments d'appel restants.
@@ -80,38 +82,39 @@ class PROC(N_ENTITE.ENTITE):
     class_instance = N_PROC_ETAPE.PROC_ETAPE
     label = 'PROC'
 
-    def __init__(self, nom, op=None, reentrant='n', repetable='o', fr="",ang="",
+    def __init__(self, nom, op=None, reentrant='n', repetable='o', fr="",ang="", fenetreIhm=None,
                  docu="", regles=(), op_init=None, niveau = None, UIinfo=None, **args):
         """
            Méthode d'initialisation de l'objet PROC. Les arguments sont utilisés pour initialiser
            les attributs de meme nom
         """
-        self.nom = nom
-        self.op = op
-        self.reentrant = reentrant
-        self.repetable = repetable
-        self.fr = fr
+        self.nom        = nom
+        self.op         = op
+        self.reentrant  = reentrant
+        self.repetable  = repetable
+        self.fenetreIhm = fenetreIhm
+        self.fr         = fr
         #self.ang=""
-        self.ang=ang
-        self.docu = docu
+        self.ang        = ang
+        self.docu       = docu
         if type(regles) == tuple:
             self.regles = regles
         else:
             self.regles = (regles,)
         # Attribut op_init : Fonction a appeler a la construction de l
         # operateur sauf si == None
-        self.op_init = op_init
-        self.entites = args
-        current_cata = CONTEXT.get_current_cata()
+        self.op_init    = op_init
+        self.entites    = args
+        current_cata    = CONTEXT.getCurrentCata()
         if niveau == None:
             self.niveau = None
             current_cata.enregistre(self)
         else:
-            self.niveau = current_cata.get_niveau(niveau)
+            self.niveau = current_cata.getNiveau(niveau)
             self.niveau.enregistre(self)
         self.UIinfo = UIinfo
         self.affecter_parente()
-        self.check_definition(self.nom)
+        self.checkDefinition(self.nom)
 
     def __call__(self, **args):
         """
@@ -119,8 +122,8 @@ class PROC(N_ENTITE.ENTITE):
             puis demande la construction de ses sous-objets et du concept produit.
         """
         etape = self.class_instance(oper=self, args=args)
-        etape.McBuild()
-        return etape.Build_sd()
+        etape.MCBuild()
+        return etape.buildSd()
 
     def make_objet(self, mc_list='oui'):
         """
@@ -131,20 +134,20 @@ class PROC(N_ENTITE.ENTITE):
         """
         etape = self.class_instance(oper=self, args={})
         if mc_list == 'oui':
-            etape.McBuild()
+            etape.MCBuild()
         return etape
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Méthode de vérification des attributs de définition
         """
-        self.check_regles()
-        self.check_fr()
-        self.check_reentrant()
-        self.check_docu()
-        self.check_nom()
-        self.check_op(valmin=0)
-        self.verif_cata_regles()
+        self.checkRegles()
+        self.checkFr()
+        self.checkReentrant()
+        self.checkDocu()
+        self.checkNom()
+        self.checkOp(valmin=0)
+        self.verifCataRegles()
 
     def supprime(self):
         """
index 274f97a18f7437f4b44f08eccccd2ad5a100042a..7611d57b2afabdf862d4f0cf514ae280dd6b7a45 100644 (file)
@@ -56,14 +56,14 @@ class PROC_ETAPE(N_ETAPE.ETAPE):
         N_ETAPE.ETAPE.__init__(self, oper, reuse=None, args=args, niveau=5)
         self.reuse = None
 
-    def Build_sd(self):
+    def buildSd(self):
         """
             Cette methode applique la fonction op_init au contexte du parent
             et lance l'exécution en cas de traitement commande par commande
             Elle doit retourner le concept produit qui pour une PROC est toujours None
             En cas d'erreur, elle leve une exception : AsException ou EOFError
         """
-        if not self.isactif():
+        if not self.isActif():
             return
         try:
             if self.parent:
@@ -103,7 +103,7 @@ class PROC_ETAPE(N_ETAPE.ETAPE):
         """
         visitor.visitPROC_ETAPE(self)
 
-    def update_context(self, d):
+    def updateContext(self, d):
         """
            Met à jour le contexte de l'appelant passé en argument (d)
            Une PROC_ETAPE n ajoute pas directement de concept dans le contexte
index 3d91c49833bbd17aae29a2089c4ad45d763b6d8c..4f09b7f6c071da08679924adfb1d9a08ffd34c7d 100644 (file)
@@ -66,7 +66,7 @@ class REGLE(object):
         """
         raise NotImplementedError('class REGLE should be derived')
 
-    def liste_to_dico(self, args):
+    def listeToDico(self, args):
         """
            Cette méthode est utilitaire pour les seuls besoins
            des classes dérivées.
index da5473c62eb974a4f7fddb064885ae1f2e3d6fa5..bd6fbd5e3b677e16d8f410710d6d20876e9eaf0e 100644 (file)
@@ -46,7 +46,7 @@ class CONCEPT_SENSIBLE(REGLE):
       self._modes = { 'ENSEMBLE' : 0, 'SEPARE' : 1 }
       self.mode = self._modes.get(mode, self._modes['ENSEMBLE'])
 
-   def gettext(self):
+   def getText(self):
       """Pour EFICAS
       """
       return ''
@@ -77,8 +77,8 @@ class CONCEPT_SENSIBLE(REGLE):
       if not type(valeur) in (list, tuple):
          valeur = [valeur,]
       for v in valeur:
-         if not v.get_name() in etape.sd.sensi:
-            etape.sd.sensi[v.get_name()] = id_etape
+         if not v.getName() in etape.sd.sensi:
+            etape.sd.sensi[v.getName()] = id_etape
       return '', 1
 
 
@@ -97,7 +97,7 @@ class REUSE_SENSIBLE(REGLE):
       REGLE.__init__(self)
       self.mocle = mocle
 
-   def gettext(self):
+   def getText(self):
       """Pour EFICAS
       """
       return ''
@@ -144,7 +144,7 @@ class DERIVABLE(REGLE):
       REGLE.__init__(self)
       self.mocle = mocle
 
-   def gettext(self):
+   def getText(self):
       """Pour EFICAS
       """
       return ''
index 07fb133dfc2a841ff0593a5c220ec134f18a432e..9606f3513e498b1b193591e307f401d50d40958b 100644 (file)
@@ -25,8 +25,8 @@
 from __future__ import absolute_import
 import types
 
-from . import N_ENTITE
-from . import N_MCSIMP
+from Noyau import N_ENTITE
+from Noyau import N_MCSIMP
 
 
 class SIMP(N_ENTITE.ENTITE):
@@ -49,7 +49,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,
-                 sug=None):
+                 sug=None,fenetreIhm=None):
         """
             Un mot-clé simple est caractérisé par les attributs suivants :
             - type : cet attribut est obligatoire et indique le type de valeur attendue
@@ -60,14 +60,19 @@ class SIMP(N_ENTITE.ENTITE):
             - defaut : valeur par défaut
             - min : nombre minimal de valeurs
             - max : nombre maximal de valeurs
-            - homo : ?
+            - homo : un certatin nb de choses qui il faut redispacher ailleurs (information, constant)
             - ang : doc
             - position : si global, le mot-clé peut-être lu n'importe où dans la commande
             - val_min : valeur minimale autorisée
             - val_max : valeur maximale autorisée
-            - docu : ?
-            - sug : ?
+            - docu : clef sur de la documentation utilisateur
+            - sug : valeur suggere
+            - fenetreIhm=None 
         """
+        #print (self)
+        #import traceback
+        #traceback.print_stack()
+        #print (self)
         N_ENTITE.ENTITE.__init__(self, validators)
         # Initialisation des attributs
         if type(typ) == tuple:
@@ -93,23 +98,61 @@ class SIMP(N_ENTITE.ENTITE):
         if self.val_max == '**' : self.val_max = float('inf')
         if self.min     == '**' : self.min     = float('-inf')
         if self.val_min == '**' : self.val_min = float('-inf')
+        self.fenetreIhm=fenetreIhm
+        #self.creeT_SIMP()
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Cette methode sert à valider les attributs de l'objet de définition
             de la classe SIMP
         """
-        self.check_min_max()
-        self.check_fr()
-        self.check_statut()
-        self.check_homo()
-        self.check_into()
-        self.check_position()
-        self.check_validators()
-
-    def __call__(self, val, nom, parent=None):
+        self.checkMinMax()
+        self.checkFr()
+        self.checkStatut()
+        self.checkHomo()
+        self.checkInto()
+        self.checkPosition()
+        self.checkValidators()
+
+    def __call__(self, val, nom, parent=None, objPyxbDeConstruction = None):
         """
             Construit un objet mot cle simple (MCSIMP) a partir de sa definition (self)
             de sa valeur (val), de son nom (nom) et de son parent dans l arboresence (parent)
         """
-        return self.class_instance(nom=nom, definition=self, val=val, parent=parent)
+        return self.class_instance(nom=nom, definition=self, val=val, parent=parent, objPyxbDeConstruction=objPyxbDeConstruction)
+
+#    def creeT_SIMP(self):
+#        from Efi2Xsd.readerEfficas import monSIMP
+#        from Efi2Xsd.mapDesTypes import dictSIMPEficasXML
+#        self.objXML=monSIMP()
+#        for nomEficasArg in dictSIMPEficasXML :
+#           argu=getattr(self,nomEficasArg)
+#           nomXMLarg=dictSIMPEficasXML[nomEficasArg]
+#           if not isinstance(nomXMLarg, (list, tuple)) :
+#              print(nomXMLarg, argu)
+              #if nomEficasArg  in listeParamDeTypeTypeAttendu:
+              #   typeAttendu = self.typ
+#                 
+#              setattr(self.objXML, nomXMLarg, argu)
+           
+
+
+# for nomXMLArg in dir(self) :
+#          if nomXMLArg in self.dictATraiter :
+#              nomEficasArg=self.dictATraiter[nomXMLArg]
+#              argu=getattr(self,nomXMLArg)
+#              if argu==None : continue
+#
+#              if type(nomEficasArg) == types.DictionaryType:
+#                 for nomXML in list(nomEficasArg.keys()):
+#                      arguDecoupe=getattr(argu,nomXML)
+#                      nomEficasDecoupe=nomEficasArg[nomXML]
+#                      if arguDecoupe == None : continue
+#                      self.dictArgsEficas[nomEficasDecoupe]=arguDecoupe
+#              else :
+#                self.dictArgsEficas[nomEficasArg] = argu
+#
+# 
+#        
+#       
+#
index 9430c0ce8acc08b28fefdec584d4b05f82ccf4bc..2989000f887a53efbcd1d2cd0b7ab71999a4b4b8 100644 (file)
@@ -36,7 +36,7 @@ import types
 import traceback
 import re
 from .N_ASSD import ASSD
-from .N_types import is_int, is_float_or_int, is_complex, is_number, is_str, is_sequence
+from .N_types import isInt, isFloat_or_int, isComplex, isNumber, isStr, isSequence
 from Extensions.i18n import tr
 import six
 from six.moves import range
@@ -119,7 +119,7 @@ class ListProtocol(Protocol):
         elif obj == None:
             # pas de valeur affecte. La cardinalite vaut 0
             return obj
-        elif is_str(obj):
+        elif isStr(obj):
             # il s'agit d'une chaine. La cardinalite vaut 1
             return (obj,)
         else:
@@ -150,19 +150,19 @@ class TypeProtocol(PProtocol):
         err = ""
         for type_permis in typ:
             if type_permis == 'R':
-                if is_float_or_int(obj):
+                if isFloat_or_int(obj):
                     return obj
             elif type_permis == 'I':
-                if is_int(obj):
+                if isInt(obj):
                     return obj
             elif type_permis == 'C':
-                if self.is_complexe(obj):
+                if self.isComplexe(obj):
                     return obj
             elif type_permis == 'TXM':
-                if is_str(obj): 
+                if isStr(obj): 
                    return obj
             elif type_permis == 'shell':
-                if is_str(obj):
+                if isStr(obj):
                     return obj
             elif type_permis == 'Fichier':
                 import os
@@ -197,7 +197,7 @@ class TypeProtocol(PProtocol):
                   raise ValError( "%s n'est pas un fichier ou un repertoire valide" % repr(obj))
             elif type(type_permis) == type or isinstance(type_permis, type):
                 try:
-                    if self.is_object_from(obj, type_permis):
+                    if self.isObjectFrom(obj, type_permis):
                         return obj
                 except Exception as err:
                     pass
@@ -212,9 +212,9 @@ class TypeProtocol(PProtocol):
         raise ValError(
             tr("%s (de type %s) n'est pas d'un type autorise: %s %s") % (repr(obj), type(obj), typ, err))
 
-    def is_complexe(self, valeur):
+    def isComplexe(self, valeur):
         """ Retourne 1 si valeur est un complexe, 0 sinon """
-        if is_number(valeur):
+        if isNumber(valeur):
             # Pour permettre l'utilisation de complexes Python (accepte les
             # entiers et réels)
             return 1
@@ -235,7 +235,7 @@ class TypeProtocol(PProtocol):
             else:
                 return 0
 
-    def is_object_from(self, objet, classe):
+    def isObjectFrom(self, objet, classe):
         """
            Retourne 1 si objet est une instance de la classe classe, 0 sinon
         """
@@ -296,7 +296,7 @@ class IntoProtocol(PProtocol):
         else:
             # on est dans le cas d'un ensemble continu de valeurs possibles
             # (intervalle)
-            if is_float_or_int(obj):
+            if isFloat_or_int(obj):
                 if val_min == '**':
                     val_min = obj - 1
                 if val_max == '**':
@@ -317,7 +317,7 @@ class MinStr(object):
         self.max = max
 
     def __convert__(self, valeur):
-        if is_str(valeur) and self.min <= len(valeur) <= self.max: return valeur
+        if isStr(valeur) and self.min <= len(valeur) <= self.max: return valeur
         raise ValError(
             "%s n'est pas une chaine de longueur comprise entre %s et %s" % (valeur, self.min, self.max))
 
@@ -358,7 +358,7 @@ class Valid(PProtocol):
         """
         return self.info()
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         """
            Cette méthode permet d'avoir un message d'erreur pour un item
            dans une liste dans le cas ou le validateur fait des vérifications
@@ -368,10 +368,10 @@ class Valid(PProtocol):
         """
         return " "
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         """
            Cette méthode a un comportement complémentaire de celui de
-           info_erreur_item. Elle retourne un message d'erreur lié uniquement
+           infoErreurItem. Elle retourne un message d'erreur lié uniquement
            aux vérifications sur la liste elle meme et pas sur ses items.
            Dans le cas où le validateur ne fait pas de vérification sur des
            listes, elle retourne une chaine vide
@@ -391,19 +391,19 @@ class Valid(PProtocol):
         """
         raise NotImplementedError("Must be implemented")
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         """
            La methode verif du validateur effectue une validation complete de
            la valeur. valeur peut etre un scalaire ou une liste. Le validateur
            doit traiter les 2 aspects s'il accepte des listes (dans ce cas la
-           methode is_list doit retourner 1).
+           methode isList doit retourner 1).
            La methode valid_item sert pour effectuer des validations partielles
            de liste. Elle doit uniquement verifier la validite d'un item de
            liste mais pas les caracteristiques de la liste.
         """
         return 0
 
-    def valide_liste_partielle(self, liste_courante):
+    def valideListePartielle(self, liste_courante):
         """
            Cette methode retourne un entier qui indique si liste_courante est partiellement valide (valeur 1)
            ou invalide (valeur 0). La validation partielle concerne les listes en cours de construction : on
@@ -414,7 +414,7 @@ class Valid(PProtocol):
         """
         return self.verif(liste_courante)
 
-    def verif_cata(self):
+    def verifCata(self):
         """
             Cette methode sert a realiser des verifications du validateur lui meme.
             Elle est facultative et retourne 1 (valide) par defaut.
@@ -427,7 +427,7 @@ class Valid(PProtocol):
         """
         return 1
 
-    def is_list(self):
+    def isList(self):
         """
            Cette méthode retourne un entier qui indique si le validateur
            permet les listes (valeur 1) ou ne les permet pas (valeur 0).
@@ -435,7 +435,7 @@ class Valid(PProtocol):
         """
         return 0
 
-    def has_into(self):
+    def hasInto(self):
         """
            Cette méthode retourne un entier qui indique si le validateur
            propose une liste de choix (valeur 1) ou n'en propose pas.
@@ -443,25 +443,25 @@ class Valid(PProtocol):
         """
         return 0
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
            Cette méthode retourne la liste de choix proposée par le validateur.
            Si le validateur ne propose pas de liste de choix, la méthode
            retourne None.
            L'argument d'entrée liste_courante, s'il est différent de None, donne
            la liste des choix déjà effectués par l'utilisateur. Dans ce cas, la
-           méthode get_into doit calculer la liste des choix en en tenant
+           méthode getInto doit calculer la liste des choix en en tenant
            compte. Par exemple, si le validateur n'autorise pas les répétitions,
            la liste des choix retournée ne doit pas contenir les choix déjà
            contenus dans liste_courante.
            L'argument d'entrée into_courant, s'il est différent de None, donne
            la liste des choix proposés par d'autres validateurs. Dans ce cas,
-           la méthode get_into doit calculer la liste des choix à retourner
+           la méthode getInto doit calculer la liste des choix à retourner
            en se limitant à cette liste initiale. Par exemple, si into_courant
            vaut (1,2,3) et que le validateur propose la liste de choix (3,4,5),
            la méthode ne doit retourner que (3,).
 
-           La méthode get_into peut retourner une liste vide [], ce qui veut
+           La méthode getInto peut retourner une liste vide [], ce qui veut
            dire qu'il n'y a pas (ou plus) de choix possible. Cette situation
            peut etre normale : l''utilisateur a utilisé tous les choix, ou
            résulter d'une incohérence des validateurs :
@@ -478,12 +478,12 @@ class ListVal(Valid):
         des listes.
     """
 
-    def is_list(self):
+    def isList(self):
         return 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
-           Cette méthode get_into effectue un traitement général qui consiste
+           Cette méthode getInto effectue un traitement général qui consiste
            a filtrer la liste de choix into_courant, si elle existe, en ne
            conservant que les valeurs valides (appel de la méthode valid).
         """
@@ -499,30 +499,30 @@ class ListVal(Valid):
     def convert(self, valeur):
         """
            Méthode convert pour les validateurs de listes. Cette méthode
-           fait appel à la méthode convert_item sur chaque élément de la
+           fait appel à la méthode convertItem sur chaque élément de la
            liste.
         """
-        if is_sequence(valeur):
+        if isSequence(valeur):
             for val in valeur:
-                self.convert_item(val)
+                self.convertItem(val)
             return valeur
         else:
-            return self.convert_item(valeur)
+            return self.convertItem(valeur)
 
     def verif(self, valeur):
         """
            Méthode verif pour les validateurs de listes. Cette méthode
-           fait appel à la méthode verif_item sur chaque élément de la
+           fait appel à la méthode verifItem sur chaque élément de la
            liste. Si valeur est un paramètre, on utilise sa valeur effective
            valeur.valeur.
         """
-        if is_sequence(valeur):
+        if isSequence(valeur):
             for val in valeur:
-                if not self.verif_item(val):
+                if not self.verifItem(val):
                     return 0
             return 1
         else:
-            return self.verif_item(valeur)
+            return self.verifItem(valeur)
 
 
 class Compulsory(ListVal):
@@ -533,7 +533,7 @@ class Compulsory(ListVal):
     registry = {}
 
     def __init__(self, elem=()):
-        if not is_sequence(elem):
+        if not isSequence(elem):
             elem = (elem,)
         Valid.__init__(self, elem=elem)
         self.elem = elem
@@ -545,7 +545,7 @@ class Compulsory(ListVal):
     def default(self, valeur, elem):
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def convert(self, valeur):
@@ -559,11 +559,11 @@ class Compulsory(ListVal):
                 tr("%s ne contient pas les elements obligatoires : %s ") % (valeur, elem))
         return valeur
 
-    def has_into(self):
+    def hasInto(self):
         return 1
 
     def verif(self, valeur):
-        if not is_sequence(valeur):
+        if not isSequence(valeur):
             liste = list(valeur)
         else:
             liste = valeur
@@ -572,7 +572,7 @@ class Compulsory(ListVal):
                 return 0
         return 1
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("La valeur n'est pas dans la liste des choix possibles")
 
 
@@ -584,7 +584,7 @@ class Together(ListVal):
     registry = {}
 
     def __init__(self, elem=()):
-        if not is_sequence(elem):
+        if not isSequence(elem):
             elem = (elem,)
         Valid.__init__(self, elem=elem)
         self.elem = elem
@@ -596,7 +596,7 @@ class Together(ListVal):
     def default(self, valeur, elem):
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def convert(self, valeur):
@@ -609,11 +609,11 @@ class Together(ListVal):
             raise ValError(tr("%s ne contient pas les elements devant etre presents ensemble: %s ") %( valeur, elem))
         return valeur
 
-    def has_into(self):
+    def hasInto(self):
         return 1
 
     def verif(self, valeur):
-        if not is_sequence(valeur):
+        if not isSequence(valeur):
             liste = list(valeur)
         else:
             liste = valeur
@@ -624,7 +624,7 @@ class Together(ListVal):
         if ( compte != len( list(self.elem) ) ): return 0
         return 1
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("La valeur n'est pas dans la liste des choix possibles")
 
 
@@ -636,7 +636,7 @@ class Absent(ListVal):
     registry = {}
 
     def __init__(self, elem=()):
-        if not is_sequence(elem):
+        if not isSequence(elem):
             elem = (elem,)
         Valid.__init__(self, elem=elem)
         self.elem = elem
@@ -648,7 +648,7 @@ class Absent(ListVal):
     def default(self, valeur, elem):
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def convert(self, valeur):
@@ -659,11 +659,11 @@ class Absent(ListVal):
                 raise ValError(tr("%s n'est pas autorise : %s ")% (v, elem))
         return valeur
 
-    def has_into(self):
+    def hasInto(self):
         return 1
 
     def verif(self, valeur):
-        if not is_sequence(valeur):
+        if not isSequence(valeur):
             liste = list(valeur)
         else:
             liste = valeur
@@ -671,7 +671,7 @@ class Absent(ListVal):
             if val in liste: return 0
         return 1
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("La valeur n'est pas dans la liste des choix possibles")
 
 
@@ -687,7 +687,7 @@ class NoRepeat(ListVal):
     def info(self):
         return tr("Pas de doublon dans la liste")
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         return tr("Les doublons ne sont pas permis")
 
     def default(self, valeur):
@@ -702,11 +702,11 @@ class NoRepeat(ListVal):
             self.liste.append(v)
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def verif(self, valeur):
-        if is_sequence(valeur):
+        if isSequence(valeur):
             liste = list(valeur)
             for val in liste:
                 if liste.count(val) != 1:
@@ -715,9 +715,9 @@ class NoRepeat(ListVal):
         else:
             return 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
-        Methode get_into spécifique pour validateur NoRepeat, on retourne
+        Methode getInto spécifique pour validateur NoRepeat, on retourne
         une liste de choix qui ne contient aucune valeur de into_courant
         déjà contenue dans liste_courante
         """
@@ -750,7 +750,7 @@ class LongStr(ListVal):
     def info(self):
         return (tr("longueur de la chaine entre %s et %s") %( self.low, self.high))
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("Longueur de la chaine incorrecte")
 
     def convert(self, valeur):
@@ -758,7 +758,7 @@ class LongStr(ListVal):
             v = self.adapt(val)
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         try:
             self.adapt(valeur)
             return 1
@@ -766,7 +766,7 @@ class LongStr(ListVal):
             return 0
 
     def default(self, valeur, low, high):
-        if not is_str(valeur):
+        if not isStr(valeur):
             raise ValError ("%s n'est pas une chaine" % repr(valeur))
         if valeur[0] == "'" and valeur[-1] == "'":
             low = low + 2
@@ -791,7 +791,7 @@ class OnlyStr(ListVal):
     def info(self):
         return tr("regarde si c'est une chaine")
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("Ce n'est pas une chaine")
 
     def convert(self, valeur):
@@ -799,7 +799,7 @@ class OnlyStr(ListVal):
             v = self.adapt(val)
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         try:
             self.adapt(valeur)
             return 1
@@ -807,7 +807,7 @@ class OnlyStr(ListVal):
             return 0
 
     def default(self, valeur):
-        if not is_str(valeur):
+        if not isStr(valeur):
             raise ValError (tr("%s n'est pas une chaine") % repr(valeur))
         return valeur
 
@@ -827,7 +827,7 @@ class OrdList(ListVal):
     def info(self):
         return ("liste %s" % self.ord)
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         return (tr("La liste doit etre en ordre %s") % self.ord)
 
     def convert(self, valeur):
@@ -849,12 +849,12 @@ class OrdList(ListVal):
         self.val = valeur
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
-        Methode get_into spécifique pour validateur OrdList, on retourne
+        Methode getInto spécifique pour validateur OrdList, on retourne
         une liste de choix qui ne contient aucune valeur de into_courant
         dont la valeur est inférieure à la dernière valeur de
         liste_courante, si elle est différente de None.
@@ -884,7 +884,7 @@ class OrVal(Valid):
     """
 
     def __init__(self, validators=()):
-        if not is_sequence(validators):
+        if not isSequence(validators):
             validators = (validators,)
         self.validators = []
         for validator in validators:
@@ -905,32 +905,32 @@ class OrVal(Valid):
                 pass
         raise ValError(tr("%s n'est pas du bon type")% repr(valeur))
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         l = []
         for v in self.validators:
-            err = v.info_erreur_item()
+            err = v.infoErreurItem()
             if err != " ":
                 l.append(err)
         chaine = " \n ou ".join(l)
         return chaine
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         l = []
         for v in self.validators:
-            err = v.info_erreur_liste()
+            err = v.infoErreurListe()
             if err != " ":
                 l.append(err)
         chaine = " \n ou ".join(l)
         return chaine
 
-    def is_list(self):
+    def isList(self):
         """
            Si plusieurs validateurs sont reliés par un OU
            il suffit qu'un seul des validateurs attende une liste
            pour qu'on considère que leur union attend une liste.
         """
         for validator in self.validators:
-            v = validator.is_list()
+            v = validator.isList()
             if v:
                 return 1
         return 0
@@ -942,17 +942,17 @@ class OrVal(Valid):
                 return 1
         return 0
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         for validator in self.validators:
-            v = validator.verif_item(valeur)
+            v = validator.verifItem(valeur)
             if v:
                 return 1
         return 0
 
-    def verif_cata(self):
+    def verifCata(self):
         infos = []
         for validator in self.validators:
-            v = validator.verif_cata()
+            v = validator.verifCata()
             if not v:
                 infos.append(validator.cata_info)
         if infos:
@@ -961,7 +961,7 @@ class OrVal(Valid):
         self.cata_info = ""
         return 1
 
-    def has_into(self):
+    def hasInto(self):
         """
         Dans le cas ou plusieurs validateurs sont reliés par un OU
         il faut que tous les validateurs proposent un choix pour
@@ -970,12 +970,12 @@ class OrVal(Valid):
         En revanche, Enum(1,2,3) OU Enum(4,5,6) propose un choix (1,2,3,4,5,6)
         """
         for validator in self.validators:
-            v = validator.has_into()
+            v = validator.hasInto()
             if not v:
                 return 0
         return 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
         Dans le cas ou plusieurs validateurs sont reliés par un OU
         tous les validateurs doivent proposer un choix pour
@@ -987,20 +987,20 @@ class OrVal(Valid):
         """
         validator_into = []
         for validator in self.validators:
-            v_into = validator.get_into(liste_courante, into_courant)
+            v_into = validator.getInto(liste_courante, into_courant)
             if v_into is None:
                 return v_into
             validator_into.extend(v_into)
         return validator_into
 
-    def valide_liste_partielle(self, liste_courante=None):
+    def valideListePartielle(self, liste_courante=None):
         """
          Méthode de validation de liste partielle pour le validateur Or.
          Si un des validateurs gérés par le validateur Or considère la
          liste comme valide, le validateur Or la considère comme valide.
         """
         for validator in self.validators:
-            v = validator.valide_liste_partielle(liste_courante)
+            v = validator.valideListePartielle(liste_courante)
             if v:
                 return 1
         return 0
@@ -1015,7 +1015,7 @@ class AndVal(Valid):
     """
 
     def __init__(self, validators=()):
-        if not is_sequence(validators):
+        if not isSequence(validators):
             validators = (validators,)
         self.validators = []
         for validator in validators:
@@ -1037,28 +1037,28 @@ class AndVal(Valid):
             valeur = validator.convert(valeur)
         return valeur
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         chaine = ""
         a = 1
         for v in self.validators:
-            if v.info_erreur_item() != " ":
+            if v.infoErreurItem() != " ":
                 if a == 1:
-                    chaine = v.info_erreur_item()
+                    chaine = v.infoErreurItem()
                     a = 0
                 else:
-                    chaine = chaine + " \n et " + v.info_erreur_item()
+                    chaine = chaine + " \n et " + v.infoErreurItem()
         return chaine
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         chaine=""
         a = 1
         for v in self.validators:
-            if v.info_erreur_liste() != " ":
+            if v.infoErreurListe() != " ":
                 if a == 1:
-                    chaine = v.info_erreur_liste()
+                    chaine = v.infoErreurListe()
                     a = 0
                 else:
-                    chaine = chaine + " \n et " + v.info_erreur_liste()
+                    chaine = chaine + " \n et " + v.infoErreurListe()
         return chaine
 
     def verif(self, valeur):
@@ -1069,19 +1069,19 @@ class AndVal(Valid):
                 return 0
         return 1
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         for validator in self.validators:
-            v = validator.verif_item(valeur)
+            v = validator.verifItem(valeur)
             if not v:
                 # L'info n'est probablement pas la meme que pour verif ???
                 self.local_info = validator.info()
                 return 0
         return 1
 
-    def verif_cata(self):
+    def verifCata(self):
         infos = []
         for validator in self.validators:
-            v = validator.verif_cata()
+            v = validator.verifCata()
             if not v:
                 infos.append(validator.cata_info)
         if infos:
@@ -1090,7 +1090,7 @@ class AndVal(Valid):
         self.cata_info = ""
         return 1
 
-    def valide_liste_partielle(self, liste_courante=None):
+    def valideListePartielle(self, liste_courante=None):
         """
          Méthode de validation de liste partielle pour le validateur And.
          Tous les validateurs gérés par le validateur And doivent considérer
@@ -1098,12 +1098,12 @@ class AndVal(Valid):
          comme valide.
         """
         for validator in self.validators:
-            v = validator.valide_liste_partielle(liste_courante)
+            v = validator.valideListePartielle(liste_courante)
             if not v:
                 return 0
         return 1
 
-    def is_list(self):
+    def isList(self):
         """
         Si plusieurs validateurs sont reliés par un ET
         il faut que tous les validateurs attendent une liste
@@ -1112,12 +1112,12 @@ class AndVal(Valid):
         Range(2,5) ET Pair attend une liste
         """
         for validator in self.validators:
-            v = validator.is_list()
+            v = validator.isList()
             if v == 0:
                 return 0
         return 1
 
-    def has_into(self):
+    def hasInto(self):
         """
         Dans le cas ou plusieurs validateurs sont reliés par un ET
         il suffit qu'un seul validateur propose un choix pour
@@ -1126,12 +1126,12 @@ class AndVal(Valid):
         En revanche, entier pair ET superieur à 10 ne propose pas de choix
         """
         for validator in self.validators:
-            v = validator.has_into()
+            v = validator.hasInto()
             if v:
                 return 1
         return 0
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         """
         Dans le cas ou plusieurs validateurs sont reliés par un ET
         il suffit qu'un seul validateur propose un choix pour
@@ -1142,7 +1142,7 @@ class AndVal(Valid):
         En revanche, Enum(1,2,3) ET Enum(4,5,6) ne propose pas de choix.
         """
         for validator in self.validators:
-            into_courant = validator.get_into(liste_courante, into_courant)
+            into_courant = validator.getInto(liste_courante, into_courant)
             if into_courant in ([], None):
                 break
         return into_courant
@@ -1198,19 +1198,19 @@ class RangeVal(ListVal):
     def info(self):
         return (tr("valeur dans l'intervalle %s , %s") %( self.low, self.high))
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         if valeur > self.low and valeur < self.high:
             return valeur
         raise ValError(tr("%s devrait etre comprise entre %s et %s") % (valeur, self.low, self.high))
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return valeur > self.low and valeur < self.high
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return (tr("la valeur %s doit etre comprise entre %s et %s") % (valeur, self.low, self.high))
 
 
-    def verif_cata(self):
+    def verifCata(self):
         if self.low > self.high:
             return 0
         return 1
@@ -1234,13 +1234,13 @@ class CardVal(Valid):
     def info(self):
         return (tr("longueur de liste comprise entre  %s et %s") %(self.min, self.max))
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         return (tr("Le cardinal de la liste doit etre compris entre %s et %s") % (self.min, self.max))
 
-    def is_list(self):
+    def isList(self):
         return self.max == '**' or self.max > 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         if into_courant is None:
             return None
         elif liste_courante is None:
@@ -1253,7 +1253,7 @@ class CardVal(Valid):
             return []
 
     def convert(self, valeur):
-        if is_sequence(valeur):
+        if isSequence(valeur):
             l = len(valeur)
         elif valeur is None:
             l = 0
@@ -1267,11 +1267,11 @@ class CardVal(Valid):
                 tr("%s devrait etre de longueur superieure a %s") % (valeur, self.min))
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def verif(self, valeur):
-        if is_sequence(valeur):
+        if isSequence(valeur):
             if self.max != '**' and len(valeur) > self.max:
                 return 0
             if self.min != '**' and len(valeur) < self.min:
@@ -1284,12 +1284,12 @@ class CardVal(Valid):
                 return 0
             return 1
 
-    def verif_cata(self):
+    def verifCata(self):
         if self.min != '**' and self.max != '**' and self.min > self.max:
             return 0
         return 1
 
-    def valide_liste_partielle(self, liste_courante=None):
+    def valideListePartielle(self, liste_courante=None):
         validite = 1
         if liste_courante != None:
             if len(liste_courante) > self.max:
@@ -1313,7 +1313,7 @@ class PairVal(ListVal):
     def info(self):
         return _(u"valeur paire")
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("La valeur saisie doit etre paire")
 
     def convert(self, valeur):
@@ -1327,13 +1327,13 @@ class PairVal(ListVal):
     def default(self, valeur):
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         if type(valeur) not in six.integer_types:
             return 0
         return valeur % 2 == 0
 
     def verif(self, valeur):
-        if is_sequence(valeur):
+        if isSequence(valeur):
             for val in valeur:
                 if val % 2 != 0:
                     return 0
@@ -1353,7 +1353,7 @@ class EnumVal(ListVal):
     """
 
     def __init__(self, into=()):
-        if not is_sequence(into):
+        if not isSequence(into):
             into = (into,)
         self.into = into
         self.cata_info = ""
@@ -1361,21 +1361,21 @@ class EnumVal(ListVal):
     def info(self):
         return ("valeur dans %s" % self.into)
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         if valeur in self.into:
             return valeur
         raise ValError(
             tr("%s contient des valeurs hors des choix possibles: %s ") % (valeur, self.into))
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         if valeur not in self.into:
             return 0
         return 1
 
-    def has_into(self):
+    def hasInto(self):
         return 1
 
-    def get_into(self, liste_courante=None, into_courant=None):
+    def getInto(self, liste_courante=None, into_courant=None):
         if into_courant is None:
             liste_choix = list(self.into)
         else:
@@ -1385,7 +1385,7 @@ class EnumVal(ListVal):
                     liste_choix.append(e)
         return liste_choix
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr("La valeur n'est pas dans la liste des choix possibles")
 
 
@@ -1395,7 +1395,7 @@ def ImpairVal(valeur):
         Cette fonction est un validateur. Elle verifie que la valeur passee
         est bien un nombre impair.
     """
-    if is_sequence(valeur):
+    if isSequence(valeur):
         for val in valeur:
             if val % 2 != 1:
                 return 0
@@ -1425,7 +1425,7 @@ class F1Val(Valid):
         return (tr("valeur %s pour la somme des cles A et B ") % self.somme)
 
     def verif(self, valeur):
-        if is_sequence(valeur):
+        if isSequence(valeur):
             for val in valeur:
                 if not "A" in val:
                     return 0
@@ -1457,13 +1457,13 @@ class FunctionVal(Valid):
     def info(self):
         return self.function.info
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return self.function.info
 
     def verif(self, valeur):
         return self.function(valeur)
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return self.function(valeur)
 
     def convert(self, valeur):
@@ -1510,10 +1510,10 @@ class TypeVal(ListVal):
             return value
         raise ValError
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         return self.coerce(valeur)
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         try:
             self.coerce(valeur)
         except:
@@ -1553,7 +1553,7 @@ class InstanceVal(ListVal):
     def info(self):
         return (tr("valeur d'instance de %s") % self.aClass.__name__)
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         if not isinstance(valeur, self.aClass):
             return 0
         return 1
@@ -1567,18 +1567,18 @@ class VerifTypeTuple(ListVal):
         self.cata_info = ""
 
     def info(self):
-        return tr(": verifie les types dans un tuple")
+        return tr(": verifie les \ntypes dans un tuple")
 
-    def info_erreur_liste(self):
+    def infoErreurListe(self):
         return tr("Les types entres ne sont pas permis")
 
     def default(self, valeur):
         return valeur
 
-    def is_list(self):
+    def isList(self):
         return 1
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         if len(valeur) != len(self.typeDesTuples):
             raise ValError(
                 tr("%s devrait etre de type  %s ") %( valeur, self.typeDesTuples))
@@ -1589,7 +1589,7 @@ class VerifTypeTuple(ListVal):
                     tr("%s devrait etre de type  %s ") % (valeur, self.typeDesTuples))
         return valeur
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         try:
             if len(valeur) != len(self.typeDesTuples):
                 return 0
@@ -1609,7 +1609,7 @@ class VerifTypeTuple(ListVal):
             if type(valeur) in (int, int):
                 return 1
         elif type_permis == 'C':
-            if self.is_complexe(valeur):
+            if self.isComplexe(valeur):
                 return 1
         elif type_permis == 'TXM':
             if type(valeur) == bytes:
@@ -1622,7 +1622,7 @@ class VerifTypeTuple(ListVal):
         if type(valeur) in (list, tuple):
             liste = list(valeur)
             for val in liste:
-                if self.verif_item(val) != 1:
+                if self.verifItem(val) != 1:
                     return 0
             return 1
 
@@ -1647,19 +1647,19 @@ class VerifExiste(ListVal):
         self.niveauVerif = niveauVerif
         self.MCSimp = None
         self.listeDesFreres = ()
-        self.fonctions = ('verifie_liste', 'set_MCSimp')
+        self.fonctions = ('verifieListe', 'set_MCSimp')
 
-    def is_list(self):
+    def isList(self):
         return 1
 
-    def verifie_liste(self, liste):
+    def verifieListe(self, liste):
         self.set_MCSimp(self.MCSimp)
         for item in liste:
             if not(item in self.listeDesFreres):
                 return 0
         return 1
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         self.set_MCSimp(self.MCSimp)
         if valeur in self.listeDesFreres:
             return 1
@@ -1675,9 +1675,9 @@ class VerifExiste(ListVal):
             k = k - 1
         # on met la liste à jour
         parent.forceRecalcul = self.niveauVerif
-        self.listeDesFreres = parent.liste_mc_presents()
+        self.listeDesFreres = parent.listeMcPresents()
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         if valeur in self.listeDesFreres:
             return valeur
         raise ValError(
@@ -1699,16 +1699,16 @@ class RegExpVal(ListVal):
     def info(self):
         return tr('Une chaîne correspondant au motif ') + str(self.pattern) + tr(" est attendue")
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return tr('Une chaîne correspondant au motif ') + str(self.pattern) + tr(" est attendue")
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         if self.compiled_regexp.match(valeur):
             return 1
         else:
             return (0, self.errormsg % {"value": valeur, "pattern": self.pattern})
 
-    def convert_item(self, valeur):
+    def convertItem(self, valeur):
         if self.compiled_regexp.match(valeur):
             return valeur
         else:
@@ -1733,7 +1733,7 @@ class FileExtVal(RegExpVal):
     def info(self):
         return ('Un nom de fichier se terminant par ".%s" est attendu.' % self.ext)
 
-    def info_erreur_item(self):
+    def infoErreurItem(self):
         return ('Un nom de fichier se terminant par ".%s" est attendu.' % self.ext)
 
 class CreeMotClef(object):
@@ -1749,30 +1749,30 @@ class CreeMotClef(object):
         if hasattr(parent, 'inhibeValidator') and parent.inhibeValidator: return lval
 
 
-        if parent.get_child(self.MotClef) == None : longueur=0
-        else : longueur=len(parent.get_child(self.MotClef))
+        if parent.getChild(self.MotClef) == None : longueur=0
+        else : longueur=len(parent.getChild(self.MotClef))
 
-        pos=parent.get_index_child(self.MCSimp.nom)+1
+        pos=parent.getIndexChild(self.MCSimp.nom)+1
         while longueur < valeur : 
            parent.inhibeValidator=1
-           parent.addentite(self.MotClef,pos)
+           parent.addEntite(self.MotClef,pos)
            pos=pos+1
            parent.inhibeValidator=0
-           longueur=len(parent.get_child(self.MotClef))
+           longueur=len(parent.getChild(self.MotClef))
 
         if longueur > valeur : 
            parent.inhibeValide=1
-           parentObj=parent.get_child(self.MotClef)
-           obj=parent.get_child(self.MotClef)[-1]
-           parentObj.suppentite(obj)
-           longueur=len(parent.get_child(self.MotClef))
+           parentObj=parent.getChild(self.MotClef)
+           obj=parent.getChild(self.MotClef)[-1]
+           parentObj.suppEntite(obj)
+           longueur=len(parent.getChild(self.MotClef))
            parent.inhibeValide=0
         return lval
 
     def info(self):
         return "Cree le bon nombre de Mot %s"  % self.MotClef
 
-    def verif_item(self, valeur):
+    def verifItem(self, valeur):
         return 1
 
     def set_MCSimp(self, MCSimp):
index 50f5a49b38142e73844430708f2f12fd8586fa67..fdc0af773a4e1d25708577ab3e40aceeafb6fcb7 100644 (file)
@@ -34,74 +34,74 @@ except ImportError:
 # inherit from python scalars but are numpy.float64 or numpy.int32...
 
 
-def is_int(obj):
+def isInt(obj):
     return isinstance(obj, int) or type(obj) is int
 
 
-def is_float(obj):
+def isFloat(obj):
     return isinstance(obj, float)
 
 
-def is_complex(obj):
+def isComplex(obj):
     return isinstance(obj, complex)
 
 from decimal import Decimal
 
 
-def is_float_or_int(obj):
-    return is_float(obj) or is_int(obj) or isinstance(obj, Decimal)
+def isFloat_or_int(obj):
+    return isFloat(obj) or isInt(obj) or isinstance(obj, Decimal)
 
 
-def is_number(obj):
-    return is_float_or_int(obj) or is_complex(obj)
+def isNumber(obj):
+    return isFloat_or_int(obj) or isComplex(obj)
 
 
-def is_str(obj):
+def isStr(obj):
     return isinstance(obj, (str, six.text_type))
 
 
-def is_list(obj):
+def isList(obj):
     return type(obj) is list
 
 
-def is_tuple(obj):
+def isTuple(obj):
     return type(obj) is tuple
 
 
-def is_array(obj):
+def isArray(obj):
     """a numpy array ?"""
     return type(obj) is _np_arr
 
 
-def is_sequence(obj):
+def isSequence(obj):
     """a sequence (allow iteration, not a string) ?"""
-    return is_list(obj) or is_tuple(obj) or is_array(obj)
+    return isList(obj) or isTuple(obj) or isArray(obj)
 
 
-def is_assd(obj):
+def isASSD(obj):
     from .N_ASSD import ASSD
     return isinstance(obj, ASSD)
 
 
-def force_list(obj):
+def forceList(obj):
     """Retourne `obj` si c'est une liste ou un tuple,
     sinon retourne [obj,] (en tant que list).
     """
-    if not is_sequence(obj):
+    if not isSequence(obj):
         obj = [obj, ]
     return list(obj)
 
 
-def force_tuple(obj):
+def forceTuple(obj):
     """Return `obj` as a tuple."""
-    return tuple(force_list(obj))
+    return tuple(forceList(obj))
 
 # backward compatibility
 from warnings import warn
 
 
-def is_enum(obj):
-    """same as is_sequence"""
-    warn("'is_enum' is deprecated, use 'is_sequence'",
+def isEnum(obj):
+    """same as isSequence"""
+    warn("'isEnum' is deprecated, use 'isSequence'",
          DeprecationWarning, stacklevel=2)
-    return is_sequence(obj)
+    return isSequence(obj)
index f9e2ee571c8ba9c93c5dc97012ac2e4b91857d01..a0415268258bb0763df100ac90499c6570c2c442 100644 (file)
@@ -35,8 +35,8 @@ import sys
 
 # Modules EFICAS
 from .N_Exception import AsException
-from .N_types import is_int, is_float, is_complex, is_str, is_sequence, is_assd
-from .strfunc import get_encoding
+from .N_types import isInt, isFloat, isComplex, isStr, isSequence, isASSD
+from .strfunc import getEncoding
 import six
 
 SEP = '_'
@@ -46,7 +46,7 @@ try :
 except :
   print ('pb avec la version de python pour cur_frame = sys._getframe')
 
-def callee_where(niveau=4):
+def calleeWhere(niveau=4):
     """
        recupere la position de l appel
     """
@@ -57,8 +57,8 @@ def callee_where(niveau=4):
         # Python 2.7 compile function does not accept unicode filename, so we encode it
         # with the current locale encoding in order to have a correct traceback.
         # Here, we convert it back to unicode.
-        filename = six.text_type(frame.f_code.co_filename, get_encoding())
-        return frame.f_lineno, filename, frame.f_code.co_firstlineno, frame.f_locals
+        filename = six.text_type(frame.f_code.co_filename, getEncoding())
+        return frame.fLineNo, filename, frame.f_code.co_firstlineno, frame.f_locals
     except:
         return 0, "inconnu", 0, {}
 
@@ -68,15 +68,15 @@ def AsType(a):
        Retourne le type d'un concept (a) à partir
        des caractéristiques de l'objet Python
     """
-    if is_sequence(a):
+    if isSequence(a):
         return AsType(a[0])
-    if is_assd(a):
+    if isASSD(a):
         return type(a)
-    if is_float(a):
+    if isFloat(a):
         return "R"
-    if is_int(a):
+    if isInt(a):
         return "I"
-    if is_str(a):
+    if isStr(a):
         return "TXM"
     if a == None:
         return None
@@ -158,7 +158,7 @@ def repr_float(valeur):
     return s
 
 
-def import_object(uri):
+def importObject(uri):
     """Load and return a python object (class, function...).
     Its `uri` looks like "mainpkg.subpkg.module.object", this means
     that "mainpkg.subpkg.module" is imported and "object" is
@@ -215,8 +215,8 @@ class Enum(object):
 
     def exists(self, value):
         """Tell if value is in the enumeration"""
-        return self.get_id(value) is not None
+        return self.getId(value) is not None
 
-    def get_id(self, value):
+    def getId(self, value):
         """Return the key associated to the given value"""
         return self._dict_keys.get(value, None)
index f83c7acfb8698f07f0bc38569da684fd72e9ed4a..f2ab7062d05d87654c63fff378a688f4ffcfdea5 100644 (file)
@@ -29,7 +29,7 @@
 """
 # Avant toutes choses, on met le module context dans le global de l'interpreteur (__builtin__)
 # sous le nom CONTEXT afin d'avoir acces aux fonctions
-# get_current_step, set_current_step et unset_current_step de n'importe ou
+# getCurrentStep, setCurrentStep et unsetCurrentStep de n'importe ou
 
 from __future__ import absolute_import
 from . import context
index cab36b36cc473723b84e5f6a7d2daaf0aaec602a..4e0833e034cde375684a340fca870fe97bf60e22 100644 (file)
@@ -30,7 +30,7 @@ debug = 0
 # (Build ne fait rien pour une etape)
 
 
-def set_current_step(step):
+def setCurrentStep(step):
     """
        Fonction qui permet de changer la valeur de l'etape courante
     """
@@ -40,14 +40,14 @@ def set_current_step(step):
     _root = step
 
 
-def get_current_step():
+def getCurrentStep():
     """
        Fonction qui permet d'obtenir la valeur de l'etape courante
     """
     return _root
 
 
-def unset_current_step():
+def unsetCurrentStep():
     """
        Fonction qui permet de remettre a None l'etape courante
     """
@@ -55,7 +55,7 @@ def unset_current_step():
     _root = None
 
 
-def set_current_cata(cata):
+def setCurrentCata(cata):
     """
        Fonction qui permet de changer l'objet catalogue courant
     """
@@ -65,14 +65,14 @@ def set_current_cata(cata):
     _cata = cata
 
 
-def get_current_cata():
+def getCurrentCata():
     """
        Fonction qui retourne l'objet catalogue courant
     """
     return _cata
 
 
-def unset_current_cata():
+def unsetCurrentCata():
     """
        Fonction qui permet de remettre a None le catalogue courant
     """
index 1f70a272adb4cf92fbb1fd9961b2e211c5f08602..72b4ceed414bb7c7205a6a660d9a4199eb18b90e 100644 (file)
@@ -20,7 +20,7 @@
 
 """
    Ce module sert à nommer les concepts produits par les commandes.
-   Le nom du concept est obtenu en appelant la fonction GetNomConceptResultat
+   Le nom du concept est obtenu en appelant la fonction getNomConceptResultat
    du module avec le nom de la commande en argument.
 
    Cette fonction parcourt le source dans lequel la commande se trouve, parse le
@@ -46,7 +46,7 @@ from functools import partial
 
 # Modules EFICAS
 from . import N_utils
-from .strfunc import get_encoding
+from .strfunc import getEncoding
 import six
 from six.moves import range
 
@@ -56,7 +56,7 @@ regex1 = '=?\s*%s\s*\('
 pattern_comment = re.compile(r"^\s*#.*")
 
 
-def _GetNomConceptResultat(ope, level=2):
+def _getNomConceptResultat(ope, level=2):
     """
        Cette fonction recherche dans la pile des appels, l'appel à la commande
        qui doit etre situé à 2 niveaux au-dessus (cur_frame(2)).
@@ -77,7 +77,7 @@ def _GetNomConceptResultat(ope, level=2):
     lineno = f.f_lineno     # XXX Too bad if -O is used
     # lineno = f_lineno(f)  # Ne marche pas toujours
     co = f.f_code
-    filename = six.text_type(co.co_filename, get_encoding())
+    filename = six.text_type(co.co_filename, getEncoding())
     name = co.co_name
     # pattern pour identifier le debut de la commande
     pattern_oper = re.compile(regex1 % ope)
@@ -166,14 +166,14 @@ class NamingSystem(N_utils.Singleton):
 
     def __init__(self):
         """Initialisation"""
-        self.native = _GetNomConceptResultat
-        self.use_global_naming()
+        self.native = _getNomConceptResultat
+        self.useGlobalNaming()
 
-    def use_naming_function(self, function):
+    def useNamingFunction(self, function):
         """Utilise une fonction particulière de nommage."""
         self.naming_func = function
 
-    def use_global_naming(self):
+    def useGlobalNaming(self):
         """Utilise la fonction native de nommage."""
         self.naming_func = partial(self.native, level=3)
 
@@ -181,4 +181,4 @@ class NamingSystem(N_utils.Singleton):
         """Appel à la fonction de nommage."""
         return self.naming_func(*args)
 
-GetNomConceptResultat = NamingSystem()
+getNomConceptResultat = NamingSystem()
index 2bc5ad7d363595c83d0640203982c616aea59c16..1cb1f51d53343c5fece38c3cf5202fa55a632bac 100644 (file)
@@ -33,7 +33,7 @@ import six
 _encoding = None
 
 
-def get_encoding():
+def getEncoding():
     """Return local encoding
     """
     global _encoding
@@ -45,19 +45,19 @@ def get_encoding():
     return _encoding
 
 
-def to_unicode(string):
+def toUnicode(string):
     """Try to convert string into a unicode string."""
     if type(string) is six.text_type:
         return string
     elif type(string) is dict:
         new = {}
         for k, v in list(string.items()):
-            new[k] = to_unicode(v)
+            new[k] = toUnicode(v)
         return new
     elif type(string) is list:
-        return [to_unicode(elt) for elt in string]
+        return [toUnicode(elt) for elt in string]
     elif type(string) is tuple:
-        return tuple(to_unicode(list(string)))
+        return tuple(toUnicode(list(string)))
     elif type(string) is not str:
         return string
     assert type(string) is str, u"unsupported object: %s" % string
@@ -70,7 +70,7 @@ def to_unicode(string):
     return six.text_type(string, 'utf-8', 'replace')
 
 
-#def from_unicode(ustring, encoding, errors='replace'):
+#def fromUnicode(ustring, encoding, errors='replace'):
 #    """Try to encode a unicode string using encoding."""
 #    try:
 #        return ustring.encode(encoding)
@@ -84,23 +84,23 @@ def to_unicode(string):
 #    if type(content) not in (str, six.text_type):
 #        content = six.text_type(content)
 #    if type(content) == str:
-#        content = to_unicode(content)
-#    return from_unicode(content, encoding or get_encoding(), errors)
+#        content = toUnicode(content)
+#    return fromUnicode(content, encoding or getEncoding(), errors)
 #
 #
 #def ufmt(uformat, *args):
 #    """Helper function to format a string by converting all its arguments to unicode"""
 #    if type(uformat) is not six.text_type:
-#        uformat = to_unicode(uformat)
+#        uformat = toUnicode(uformat)
 #    if len(args) == 1 and type(args[0]) is dict:
-#        arguments = to_unicode(args[0])
+#        arguments = toUnicode(args[0])
 #    else:
 #        nargs = []
 #        for arg in args:
 #            if type(arg) in (str, six.text_type, list, tuple, dict):
-#                nargs.append(to_unicode(arg))
+#                nargs.append(toUnicode(arg))
 #            elif type(arg) not in (int, int, float):
-#                nargs.append(to_unicode(str(arg)))
+#                nargs.append(toUnicode(str(arg)))
 #            else:
 #                nargs.append(arg)
 #        arguments = tuple(nargs)
index 07a040c752c929f9cd3ba8359e315d1b125b68dc..f913001627838adc41a7297fe04eac2b2040c2a8 100644 (file)
@@ -19,7 +19,7 @@
 #
 from Traducteur.utils import lineToDict
 import logging
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
 from Traducteur.load import jdcSet 
 from Traducteur.renamemocle import decaleLignesdeNBlancs
 from Traducteur.removemocle import removeMotCleInFact
@@ -27,7 +27,7 @@ from Traducteur import regles
 
 
 #--------------------------------------------------------------------------
-def ChangementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
+def changementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
 #--------------------------------------------------------------------------
     if command  not in jdcSet : return
     boolChange=0
@@ -61,18 +61,18 @@ def ChangementValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
                    MaLigneTexte=Nouveau # raccourci honteux mais ...
                    MaLigneGlob=Nouveau
                    if Valeur in liste :
-                      EcritErreur((command,motcle,Valeur),indexLigneGlob)
+                      ecritErreur((command,motcle,Valeur),indexLigneGlob)
                    else :
                       logging.info("Changement de %s par %s dans %s ligne %d",Valeur,DictNouvVal[Valeur],command,indexLigneGlob)
                    boolChange=1
              indexLigneGlob=indexLigneGlob+1
              indexTexteMC=indexTexteMC+1
        if (trouveUnMC == 0) and ( defaut == 1):
-          EcritErreur((command,motcle,"DEFAUT"),c.lineno)
+          ecritErreur((command,motcle,"DEFAUT"),c.lineno)
     if boolChange : jdc.reset(jdc.getSource())
              
 #--------------------------------------------------------------------------------
-def ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=regles.SansRegle,defaut=0):
+def changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=regles.SansRegle,defaut=0):
 #--------------------------------------------------------------------------------
 
     if command  not in jdcSet : return
@@ -113,7 +113,7 @@ def ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=
                                 MaLigneTexte=Nouveau # raccourci honteux mais ...
                                 MaLigneGlob=Nouveau
                                 if Valeur in liste :
-                                   EcritErreur((command,fact,motcle,Valeur),indexLigneGlob)
+                                   ecritErreur((command,fact,motcle,Valeur),indexLigneGlob)
                                 else :
                                    logging.info("Changement de %s par %s dans %s ligne %d",Valeur,DictNouvVal[Valeur],command,indexLigneGlob)
                         boolChange=1
@@ -121,37 +121,37 @@ def ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste=(),ensemble=
                         indexTexteMC=indexTexteMC+1
                 if (trouveUnMC == 0) and ( defaut == 1):
                    logging.warning("OPTION  (defaut) de CALCG à verifier ligne %s" ,c.lineno )                     
-                   EcritErreur((command,fact,motcle,"DEFAUT"),c.lineno)
+                   ecritErreur((command,fact,motcle,"DEFAUT"),c.lineno)
     if boolChange : jdc.reset(jdc.getSource())
              
 #--------------------------------------------------------------------------------
-def ChangementValeurDsMCFSiRegle(jdc,command,fact,motcle,DictNouvVal,liste_regles,defaut=0):
+def changementValeurDsMCFSiRegle(jdc,command,fact,motcle,DictNouvVal,liste_regles,defaut=0):
 #--------------------------------------------------------------------------------
     if command not in jdcSet : return
     mesRegles=regles.ensembleRegles(liste_regles)
     liste=()
-    ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,mesRegles,defaut)
+    changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,mesRegles,defaut)
              
 #---------------------------------------------------------------------------------------
-def ChangementValeurDsMCFAvecAvertissement(jdc, command, fact,motcle,DictNouvVal,liste):
+def changementValeurDsMCFAvecAvertissement(jdc, command, fact,motcle,DictNouvVal,liste):
 #---------------------------------------------------------------------------------------
     if command  not in jdcSet : return
     defaut=0
     if liste[-1] == "defaut" : 
        defaut=1
-    ChangementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,defaut)
+    changementValeurDsMCF(jdc,command,fact,motcle,DictNouvVal,liste,defaut)
 
 #--------------------------------------------------------------------------
-def ChangementValeurAvecAvertissement(jdc, command,motcle,DictNouvVal,liste):
+def changementValeurAvecAvertissement(jdc, command,motcle,DictNouvVal,liste):
 #--------------------------------------------------------------------------
     if command  not in jdcSet : return
     defaut=0
     if liste[-1] == "defaut" : 
        defaut=1
-    ChangementValeur(jdc,command,motcle,DictNouvVal,liste,defaut)
+    changementValeur(jdc,command,motcle,DictNouvVal,liste,defaut)
 
 #--------------------------------------------------------------------------
-def SuppressionValeurs(jdc, command,motcle,liste):
+def suppressionValeurs(jdc, command,motcle,liste):
 #--------------------------------------------------------------------------
 
     if command not in jdcSet : return
@@ -192,7 +192,7 @@ def SuppressionValeurs(jdc, command,motcle,liste):
                    if premier == 1 and chercheLigne[fin] == ',': fin = fin + 1 # on supprime la ,
                    finLigne = chercheLigne[fin:]
                    MaLigne_tmp=debLigne+finLigne
-                   # Traitement ligne commancant par ,
+                   # traitement ligne commancant par ,
                    if len(MaLigne_tmp.strip()) > 0 :
                       if MaLigne_tmp.strip()[0]==',' :
                          MaLigne=MaLigne_tmp.strip()[1:]
@@ -206,7 +206,7 @@ def SuppressionValeurs(jdc, command,motcle,liste):
     if boolChange : jdc.reset(jdc.getSource())
 
 #----------------------------------------------
-def AppelleMacroSelonValeurConcept(jdc,macro,genea):
+def appelleMacroSelonValeurConcept(jdc,macro,genea):
 #----------------------------------------------
     if macro  not in jdcSet : return
     boolChange=0
@@ -311,7 +311,7 @@ def AppelleMacroSelonValeurConcept(jdc,macro,genea):
     if boolChange : jdc.reset(jdc.getSource())
 
 #----------------------------------------------
-def ChangeTouteValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
+def changeTouteValeur(jdc,command,motcle,DictNouvVal,liste=(),defaut=0):
 #----------------------------------------------
     if macro  not in jdcSet : return
     boolChange=0
index 4ba0671cf5ba557ff6ea6f85156fe0c6225b4d20..1f057c3ef35d6ec30d0a3217e09a01a1e8a85f5a 100644 (file)
@@ -22,7 +22,7 @@ import logging
 from Traducteur.load import jdcSet 
 
 
-def EcritErreur(listeGena,ligne=None) :
+def ecritErreur(listeGena,ligne=None) :
     from sys import dict_erreurs
     maCle=""
     for Mot in listeGena :
@@ -49,19 +49,19 @@ def EcritErreur(listeGena,ligne=None) :
     #except :
     #    pass
 
-def GenereErreurPourCommande(jdc,listeCommande) :
+def genereErreurPourCommande(jdc,listeCommande) :
     commands= jdc.root.childNodes[:]
     commands.reverse()
     for c in commands:
         if type(listeCommande)==list: 
             for Mot in listeCommande :
                if c.name != Mot :continue
-               EcritErreur((Mot,),c.lineno)
+               ecritErreur((Mot,),c.lineno)
         else:
             if c.name != listeCommande :continue
-            EcritErreur((listeCommande,),c.lineno)
+            ecritErreur((listeCommande,),c.lineno)
 
-def GenereErreurMotCleInFact(jdc,command,fact,mocle):
+def genereErreurMotCleInFact(jdc,command,fact,mocle):
     for c in jdc.root.childNodes:
         if c.name != command:continue
         for mc in c.childNodes:
@@ -72,18 +72,18 @@ def GenereErreurMotCleInFact(jdc,command,fact,mocle):
                     if n.name != mocle:
                        continue
                    else :
-                       EcritErreur((command,fact,mocle,),c.lineno)
+                       ecritErreur((command,fact,mocle,),c.lineno)
 
-def GenereErreurMCF(jdc,command,fact):
+def genereErreurMCF(jdc,command,fact):
     for c in jdc.root.childNodes:
         if c.name != command:continue
         for mc in c.childNodes:
             if mc.name != fact:
                 continue
             else : 
-                EcritErreur((command,fact,),c.lineno)
+                ecritErreur((command,fact,),c.lineno)
 
-def GenereErreurValeur(jdc,command,fact,list_valeur):
+def genereErreurValeur(jdc,command,fact,list_valeur):
     for c in jdc.root.childNodes:
         if c.name != command:continue
         for mc in c.childNodes:
@@ -94,7 +94,7 @@ def GenereErreurValeur(jdc,command,fact,list_valeur):
                if trouve > -1 :  
                   logging.warning("%s doit etre supprimee ou modifiee dans %s : ligne %d",valeur,c.name,mc.lineno)
 
-def GenereErreurValeurDsMCF(jdc,command,fact,mocle,list_valeur):
+def genereErreurValeurDsMCF(jdc,command,fact,mocle,list_valeur):
     for c in jdc.root.childNodes:
         if c.name != command:continue
         for mc in c.childNodes:
index 9d52d6b0b3e79d91d31bb05049182c2bec9d584b..98448b9949babe8e48ff0338a14de293e4a05755 100644 (file)
@@ -20,7 +20,7 @@
 import logging
 from Traducteur.parseur import FactNode
 from Traducteur.load import jdcSet 
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
 from Traducteur import regles
 debug=0
 
@@ -195,7 +195,7 @@ def chercheOperInsereFacteur(jdc,nomcommande,nouveau,ensemble=regles.SansRegle,
     for c in commands:
         if c.name != nomcommande:continue
         if ensemble.verif(c) == 0 : continue
-        if erreur : EcritErreur((nomcommande,nouveau),c.lineno)
+        if erreur : ecritErreur((nomcommande,nouveau),c.lineno)
         boolChange=1
         insereMotCle(jdc,c,texte)
     if boolChange : jdc.reset(jdc.getSource())
@@ -227,7 +227,7 @@ def chercheOperInsereFacteurSiRegleAvecAvertissement(jdc,nomcommande,nouveau,lis
     chercheOperInsereFacteur(jdc,nomcommande,nouveau,mesRegles,estunFacteur,erreur=1)
 
 #-------------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,ensemble=regles.SansRegle, estunFacteur=0):
+def ajouteMotClefDansFacteur(jdc,commande,fact,nouveau,ensemble=regles.SansRegle, estunFacteur=0):
 #-------------------------------------------------------------------------------------------------
 # Cherche la commande
 # Cherche le MCF
@@ -252,15 +252,15 @@ def AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,ensemble=regles.SansRegle
     if boolChange : jdc.reset(jdc.getSource())
 
 #-------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteurSiRegle(jdc,commande,fact,nouveau,liste_regles,estunFacteur=0):
+def ajouteMotClefDansFacteurSiRegle(jdc,commande,fact,nouveau,liste_regles,estunFacteur=0):
 #-------------------------------------------------------------------------------------------
 #
     if commande  not in jdcSet : return
     mesRegles=regles.ensembleRegles(liste_regles)
-    AjouteMotClefDansFacteur(jdc,commande,fact,nouveau,mesRegles,estunFacteur)
+    ajouteMotClefDansFacteur(jdc,commande,fact,nouveau,mesRegles,estunFacteur)
 
 #-------------------------------------------------------------------------------------------
-def AjouteMotClefDansFacteurCourantSiRegle(jdc,commande,fact,nouveau,liste_regles):
+def ajouteMotClefDansFacteurCourantSiRegle(jdc,commande,fact,nouveau,liste_regles):
 #-------------------------------------------------------------------------------------------
 #
     if commande  not in jdcSet : return
index b81ff2e202c930b3c37d84ea6ec9cd8ebb8b9903..2375e805ca503a3be4266843f9b15e4a7dd755dd 100644 (file)
@@ -42,7 +42,7 @@ class JDCTrad:
     def init(self,src,atraiter):
     #---------------------------
     # construction de self.lines
-        self.root=parseur.Parser(src,atraiter)
+        self.root=parseur.parser(src,atraiter)
         self.lines=src.splitlines(1)
 
     def parseKeywords(self):
index aae93d40556def30ae0a627a20c9b40bf3a06809..08b2c76502a3c79998d3aa9823956e2a6a554c80 100644 (file)
@@ -20,9 +20,9 @@
 
 import compiler
 import types
-from Traducteur.parseur  import Keyword, FactNode, lastparen, lastparen2,maskStringsAndComments
+from Traducteur.parseur  import Keyword, FactNode, lastParen, lastParen2,maskStringsAndComments
 from Traducteur.visiteur import KeywordFinder, visitor
-from Traducteur.utils import indexToCoordinates, lineToDict, DictToLine
+from Traducteur.utils import indexToCoordinates, lineToDict, dictToLine
 
 debug=0
 
@@ -30,7 +30,7 @@ debug=0
 def parseFact(match,c,kw):
 #------------------------
     submatch=match[2]
-    lastpar=match[0]+lastparen(c.src[match[0]:])
+    lastpar=match[0]+lastParen(c.src[match[0]:])
     if type(submatch[0][0]) ==types.IntType:
         #mot cle facteur isolé
         no=FactNode()
@@ -57,7 +57,7 @@ def parseFact(match,c,kw):
         #mot cle facteur multiple
         ii=0
         for l in submatch:
-            lastpar=l[0][0]+lastparen2(c.src[l[0][0]:])
+            lastpar=l[0][0]+lastParen2(c.src[l[0][0]:])
             ii=ii+1
             no=FactNode()
             kw.addChild(no)
@@ -125,13 +125,13 @@ def parseKeywords(root):
             # dernier mocle : 
             #   il commence au debut du dernier keyword 
             #   (matchFinder.matches[i+1][0]) et
-            #   finit avant la parenthese fermante de la commande (c.lastparen)
+            #   finit avant la parenthese fermante de la commande (c.lastParen)
 
-            if debug:print "texte:",c.src[matchFinder.matches[i+1][0]:c.lastparen]
+            if debug:print "texte:",c.src[matchFinder.matches[i+1][0]:c.lastParen]
             x,y=indexToCoordinates(c.src,matchFinder.matches[i+1][0])
             lineno=y+c.lineno
             colno=x
-            x,y=indexToCoordinates(c.src,c.lastparen)
+            x,y=indexToCoordinates(c.src,c.lastParen)
             endline=y+c.lineno
             endcol=x
             if debug:print matchFinder.matches[i+1][0],matchFinder.matches[i+1][1],lineno,colno,endline,endcol
@@ -145,12 +145,12 @@ def parseKeywords(root):
             #un seul mocle trouve : 
             # il commence au début du keyword (matchFinder.matches[0][0]) et 
             # finit juste avant la parenthese fermante de la 
-            # commande (c.lastparen)
-            if debug:print "texte:",c.src[matchFinder.matches[0][0]:c.lastparen]
+            # commande (c.lastParen)
+            if debug:print "texte:",c.src[matchFinder.matches[0][0]:c.lastParen]
             x,y=indexToCoordinates(c.src,matchFinder.matches[0][0])
             lineno=y+c.lineno
             colno=x
-            x,y=indexToCoordinates(c.src,c.lastparen)
+            x,y=indexToCoordinates(c.src,c.lastParen)
             endline=y+c.lineno
             endcol=x
             if debug:print matchFinder.matches[0][0],matchFinder.matches[0][1],lineno,colno,endline,endcol
index b65d8b1d0d4561207cdc4a27d4fd96369fc58f95..d75ae999372b7a11aa21594b6959037f77086f87 100644 (file)
@@ -21,7 +21,7 @@
 import logging
 from Traducteur import removemocle
 from Traducteur import inseremocle
-from Traducteur.parseur import lastparen
+from Traducteur.parseur import lastParen
 from Traducteur.load import jdcSet
 debug=0
 
@@ -214,7 +214,7 @@ def moveMCFToCommand(jdc,command,factsource,commandcible,factcible):
         jdcSet.add(commandcible)
 
 #-----------------------------------------------------
-def FusionMotCleToFact(jdc,command,liste_mc,factcible,defaut=0):
+def fusionMotCleToFact(jdc,command,listeMc,factcible,defaut=0):
 #-----------------------------------------------------
     if command  not in jdcSet : return
     boolChange=0
@@ -225,7 +225,7 @@ def FusionMotCleToFact(jdc,command,liste_mc,factcible,defaut=0):
        list_val=[]
        trouveUnMC=0
        for mc in c.childNodes:
-           if mc.name not in liste_mc : continue
+           if mc.name not in listeMc : continue
            val=mc.getText(jdc).split("=")[1].split(",")[0]
            list_val.append(val)
            trouveUnMC=1
@@ -238,12 +238,12 @@ def FusionMotCleToFact(jdc,command,liste_mc,factcible,defaut=0):
            boolChange=1
     if boolChange :
         jdc.reset(jdc.getSource())
-        for mc in liste_mc : 
+        for mc in listeMc : 
            removemocle.removeMotCle(jdc,command,mc)
            jdc.reset(jdc.getSource())
 
 #-----------------------------------------------------
-def FusionMotCleInFact(jdc,command,fact,liste_mc,new_name,defaut=0):
+def fusionMotCleInFact(jdc,command,fact,listeMc,new_name,defaut=0):
 #-----------------------------------------------------
     if command  not in jdcSet : return
     boolChange=0
@@ -257,7 +257,7 @@ def FusionMotCleInFact(jdc,command,fact,liste_mc,new_name,defaut=0):
             if mcF.name != fact: continue
             for ll in mcF.childNodes[:]:
                 for mc in ll.childNodes:
-                    if mc.name not in liste_mc : continue
+                    if mc.name not in listeMc : continue
                     val=mc.getText(jdc).split("=")[1].split(",")[0]
                     list_val.append(val)
                     trouveUnMC=1
@@ -268,12 +268,12 @@ def FusionMotCleInFact(jdc,command,fact,liste_mc,new_name,defaut=0):
                     boolChange=1
     if boolChange :
         jdc.reset(jdc.getSource())
-        for mc in liste_mc : 
+        for mc in listeMc : 
            removemocle.removeMotCleInFact(jdc,command,fact,mc)
            jdc.reset(jdc.getSource())
 
 #-----------------------------------------------------
-def FusionMCFToMCF(jdc,command,liste_mcf,factcible,defaut=0):
+def fusionMCFToMCF(jdc,command,listeMcF,factcible,defaut=0):
 #-----------------------------------------------------
     if command  not in jdcSet : return
     boolChange=0
@@ -287,7 +287,7 @@ def FusionMCFToMCF(jdc,command,liste_mcf,factcible,defaut=0):
         esp1=' '*len(TexteMC)
         pp=0
         for mcF in c.childNodes:
-            if mcF.name not in liste_mcf : continue
+            if mcF.name not in listeMcF : continue
             trouveUnMC=1
             val=mcF.getText(jdc)
             # esp=esp1+(inseremocle.chercheDebutFacteur(jdc,mcF)-len(mcF.name))*' '
@@ -312,14 +312,14 @@ def FusionMCFToMCF(jdc,command,liste_mcf,factcible,defaut=0):
             boolChange=1
     if boolChange :
         jdc.reset(jdc.getSource())
-        for mcF in liste_mcf : 
+        for mcF in listeMcF : 
             removemocle.removeMotCle(jdc,command,mcF)
             jdc.reset(jdc.getSource())
 
 
 
 #--------------------------------------------------------------------
-def EclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0):
+def eclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0):
 #--------------------------------------------------------------------------
 #  exemple STA10 pesanteur devient MCF avec eclatement des valeurs dans les MC
 # On suppose que le MC est sur une seule ligne
@@ -338,7 +338,7 @@ def EclaMotCleToFact(jdc,command,motcle,mot1,mot2,defaut=0):
            motcle1=mot1+"="+Ligne[0]
            motcle2=mot2+"=("+Ligne[1]+','+Ligne[2]+','+Ligne[3]+')'
            texte=motcle+'=_F('+motcle1+','+motcle2+')'
-           num=lastparen(TexteMC)
+           num=lastParen(TexteMC)
            Nouveau=MaLigneGlob.replace(TexteMC[0:num],texte)
            jdc.getLines()[indexLigneGlob]=Nouveau
            logging.info("Transformation de %s dans %s ligne %s",motcle,command,c.lineno)
index 395dee31403573d693f30b78c38c50c97854d732..e715f2a9691374da2bbac8ec9e504403bcd2d285 100644 (file)
@@ -143,7 +143,7 @@ def printNode(node):
         printNode(c)
 
 #------------------------
-def Parser(src,atraiter):
+def parser(src,atraiter):
 #------------------------
     """Parse le texte src et retourne un arbre syntaxique (root).
 
@@ -216,7 +216,7 @@ def Parser(src,atraiter):
                 c.src=src
                 c.endline=linenum
                 decal=len(line)-line.rindex(')')
-                c.lastparen=len(src)-decal
+                c.lastParen=len(src)-decal
                 if debug:print "logical line %s %s:" % (c.lineno,c.endline),src
                 break
             line=iterlines.next()
@@ -226,7 +226,7 @@ def Parser(src,atraiter):
 
 
 #-----------------
-def lastparen(src):
+def lastParen(src):
 #-----------------
     """Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
 
@@ -250,7 +250,7 @@ def lastparen(src):
                 return i
 
 #-------------------
-def lastparen2(src):
+def lastParen2(src):
 #-------------------
     """Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
 
index b2dce22c289f307e732c0c4081256c35c00e347a..dd11ff2984cdfacb5d4ca8cc96b81ed7d433f6a2 100644 (file)
@@ -210,7 +210,7 @@ class existe :
     def __init__(self, list_arg):
         self.genea = list_arg
 
-    def cherche_mot(self, niveau, commande):
+    def chercheMot(self, niveau, commande):
         """
         Recherche du mot
         """
@@ -220,14 +220,14 @@ class existe :
         for c in commande.childNodes :
             if c.name == texte : 
                 niveau = niveau+1
-                return self.cherche_mot(niveau, c)
+                return self.chercheMot(niveau, c)
         return None
 
     def verif(self, commande):
         """
         Vérification
         """
-        bool = self.cherche_mot(0, commande)
+        bool = self.chercheMot(0, commande)
         if bool == None : bool = 0
         return bool
 
@@ -240,7 +240,7 @@ class nexistepas :
     def __init__(self, list_arg):
         self.genea = list_arg
 
-    def cherche_mot(self, niveau, commande):
+    def chercheMot(self, niveau, commande):
         """
         Recherche du mot
         """
@@ -250,14 +250,14 @@ class nexistepas :
         for c in commande.childNodes :
             if c.name == texte : 
                 niveau = niveau+1
-                return self.cherche_mot(niveau, c)
+                return self.chercheMot(niveau, c)
         return None
 
     def verif(self, commande):
         """
         Vérification
         """
-        bool = self.cherche_mot(0, commande)
+        bool = self.chercheMot(0, commande)
         if bool : return 0
         return 1
 
index b989f41da6ad820011ddd007553d806d01998044..f9da53458aab7eaf6ef9e8d55b6d71512a2903c6 100644 (file)
@@ -20,7 +20,7 @@
 import logging
 from Traducteur import regles
 from Traducteur.parseur import FactNode
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
 from Traducteur.load import jdcSet
 
 debug=0
@@ -42,7 +42,7 @@ def removeMotCle(jdc,command,mocle,ensemble=regles.SansRegle,erreur = 0):
         for mc in c.childNodes:
             if mc.name != mocle:continue
             if ensemble.verif(c) == 0 : continue
-            if erreur : EcritErreur((command,mocle),c.lineno)
+            if erreur : ecritErreur((command,mocle),c.lineno)
             boolChange=1
             removeMC(jdc,c,mc)
 
@@ -80,7 +80,7 @@ def removeCommande(jdc,command,ensemble=regles.SansRegle,erreur=0):
         if c.name != command:continue
         if ensemble.verif(c) == 0 : continue
         boolChange=1
-        if erreur : EcritErreur((command,),c.lineno)
+        if erreur : ecritErreur((command,),c.lineno)
         jdc.supLignes(c.lineno,c.endline)
         logging.warning("Suppression de %s ligne %s",c.name,c.lineno)
     if boolChange : jdc.reset(jdc.getSource())
@@ -137,7 +137,7 @@ def removeMotCleInFact(jdc,command,fact,mocle,ensemble=regles.SansRegle,erreur=0
                 for n in ll.childNodes:
                     if n.name != mocle:continue
                     if ensemble.verif(c) == 0 : continue
-                    if erreur : EcritErreur((command,fact,mocle),c.lineno)
+                    if erreur : ecritErreur((command,fact,mocle),c.lineno)
                     boolChange=1
                     removeMC(jdc,c,n)
 
@@ -178,7 +178,7 @@ def removeMotCleInFactCourantSiRegle(jdc,command,fact,mocle,liste_regles,erreur=
                 if ensemble.verif(ll) == 0 : continue
                 for n in ll.childNodes:
                     if n.name != mocle:continue
-                    if erreur : EcritErreur((command,fact,mocle),c.lineno)
+                    if erreur : ecritErreur((command,fact,mocle),c.lineno)
                     boolChange=1
                     removeMC(jdc,c,n)
 
index 19677be703e0b866cc21af649525bbc8455a93d7..188a24a6ca7578e56219943893046071a45403f8 100644 (file)
@@ -22,7 +22,7 @@ import sys
 from Traducteur.parseur import FactNode
 from Traducteur.load import jdcSet 
 from Traducteur import regles
-from Traducteur.dictErreurs import EcritErreur
+from Traducteur.dictErreurs import ecritErreur
 #debug=1
 debug=0
 
@@ -42,7 +42,7 @@ def renameMotCle(jdc,command,mocle,new_name, erreur=0,ensemble=regles.SansRegle)
             boolChange=1
             if debug:print "Renommage de:",c.name,mc.name,mc.lineno,mc.colno
             if erreur :
-               EcritErreur((command,mocle),c.lineno)
+               ecritErreur((command,mocle),c.lineno)
             else :
                logging.info("Renommage de: %s  %s ligne %d en %s",c.name,mc.name,mc.lineno,new_name)
             s=jdc.getLines()[mc.lineno-1]
@@ -116,7 +116,7 @@ def renameMotCleInFact(jdc,command,fact,mocle,new_name, ensemble=regles.SansRegl
                     jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
                     boolChange=1
                     if erreur :
-                       EcritErreur((command,fact,mocle),c.lineno)
+                       ecritErreur((command,fact,mocle),c.lineno)
                     else :
                        logging.info("Renommage de: %s, ligne %s, en %s",n.name,n.lineno,new_name)
 
@@ -149,7 +149,7 @@ def renameMotCleInFactCourantSiRegle(jdc,command,fact,mocle,new_name,liste_regle
                     jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
                     boolChange=1
                     if erreur :
-                       EcritErreur((command,fact,mocle),c.lineno)
+                       ecritErreur((command,fact,mocle),c.lineno)
                     else :
                        logging.info("Renommage de: %s, ligne %s, en %s",n.name,n.lineno,new_name)
 
@@ -165,9 +165,9 @@ def renameCommande(jdc,command,new_name,ensemble=regles.SansRegle):
     boolChange=0
     if debug :
         if ensemble != regles.SansRegle :
-          logging.info("Traitement de %s renomme en %s sous conditions", command, new_name)
+          logging.info("traitement de %s renomme en %s sous conditions", command, new_name)
         else  :
-          logging.info("Traitement de %s renomme en %s ", command, new_name)
+          logging.info("traitement de %s renomme en %s ", command, new_name)
     for c in jdc.root.childNodes:
         if c.name != command:continue
         if ensemble.verif(c) == 0 : continue
index 20ef4fbb4e0451d88b2971522eb3ee075235f4d3..aeb62ea8e1f2b6a13260d372edfa0e43f2084428 100755 (executable)
@@ -274,10 +274,10 @@ def traduc(infile,outfile,flog=None):
     #Parse les mocles des commandes
     parseKeywords(root)
 
-    GenereErreurPourCommande(jdc,("CALC_SENSI",))
+    genereErreurPourCommande(jdc,("CALC_SENSI",))
 
 
-    ####  Traitement des cas particuliers   ##############################
+    ####  traitement des cas particuliers   ##############################
     #  On ne traite pas les commandes TEST*
     removeCommande(jdc,"TEST_COMPOR")
     removeCommande(jdc,"TEST_FICHIER")
@@ -286,52 +286,52 @@ def traduc(infile,outfile,flog=None):
     removeCommande(jdc,"TEST_TABLE")
     removeCommande(jdc,"TEST_TEMPS")
 
-    ####   Traitement de AFFE_CARA_ELEM   ##############################
+    ####   traitement de AFFE_CARA_ELEM   ##############################
     # Déplacement de PREC_AIRE et PREC_INERTIE dans MULTIFIBRE
     moveMotCleFromFactToFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_AIRE","MULTIFIBRE")
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_AIRE",pasDeRegle(),0)
     moveMotCleFromFactToFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_INERTIE","MULTIFIBRE")
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","POUTRE","PREC_INERTIE",pasDeRegle(),0)
     # Résorption de la sensibilité
-    GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","COQUE","EPAIS_F")
-    GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","VALE_F")
-    GenereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","VALE_F")
+    genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","COQUE","EPAIS_F")
+    genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","VALE_F")
+    genereErreurMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","VALE_F")
     # Suppression de GRILLE_NCOU
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","GRILLE","GRILLE_NCOU",pasDeRegle(),0)
     # Suppression de ORIG_AXE
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","GRILLE","ORIG_AXE",pasDeRegle(),0)
 
-    ####   Traitement de AFFE_CHAR_MECA/_F  ##############################
+    ####   traitement de AFFE_CHAR_MECA/_F  ##############################
     renameMotCle(jdc,"AFFE_CHAR_MECA","SIGM_INTERNE","PRE_SIGM")
     renameMotCle(jdc,"AFFE_CHAR_MECA","EPSI_INIT","PRE_EPSI")
     renameMotCle(jdc,"AFFE_CHAR_MECA_F","SIGM_INTERNE","PRE_SIGM")
     renameMotCle(jdc,"AFFE_CHAR_MECA_F","EPSI_INIT","PRE_EPSI")
 
-    ####   Traitement de AFFE_CHAR_OPS011   ##############################
-    GenereErreurPourCommande(jdc,("AFFE_CHAR_OPS011",))
+    ####   traitement de AFFE_CHAR_OPS011   ##############################
+    genereErreurPourCommande(jdc,("AFFE_CHAR_OPS011",))
 
-    ####   Traitement de AFFE_CHAR_THER/_F  ##############################
+    ####   traitement de AFFE_CHAR_THER/_F  ##############################
     renameMotCle(jdc,"AFFE_CHAR_THER","GRAD_TEMP_INIT","PRE_GRAD_TEMP")
     renameMotCle(jdc,"AFFE_CHAR_THER_F","GRAD_TEMP_INIT","PRE_GRAD_TEMP")
 
-    ####   Traitement de AFFE_MATERIAU   ##############################
+    ####   traitement de AFFE_MATERIAU   ##############################
     # VALE_REF obligatoire si NOM_VARC in ('TEMP', 'SECH')
     lNOMVARC=["CORR","IRRA","HYDR","EPSA","M_ACIER","M_ZIRC","NEUT1","NEUT2"]
     removeMotCleInFactSiRegle(jdc,"AFFE_MATERIAU","AFFE_VARC","VALE_REF",((("NOM_VARC",lNOMVARC,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
     # renommage CHAMP_GD en CHAM_GD
     renameMotCleInFact(jdc,"AFFE_MATERIAU","AFFE_VARC","CHAMP_GD","CHAM_GD",pasDeRegle(),0)
 
-    ####   Traitement de AFFE_MODELE   ##############################
+    ####   traitement de AFFE_MODELE   ##############################
     dXFEMCONT={"3D_XFEM_CONT":"3D","C_PLAN_XFEM_CONT":"C_PLAN","D_PLAN_XFEM_CONT":"D_PLAN"}
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEMCONT)
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEMCONT)
 
-    ####   Traitement de ASSE_ELEM_SSD   ##############################
+    ####   traitement de ASSE_ELEM_SSD   ##############################
     # Rien à faire
 
-    ####   Traitement de ASSEMBLAGE   ##############################
+    ####   traitement de ASSEMBLAGE   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de C_COMP_INCR   ##############################
+    ####   traitement de C_COMP_INCR   ##############################
     # Suppression de ALGO_C_PLAN et ALGO_1D
     lCOMMANDE=["CALC_FORC_NONL","CALC_IFS_DNL","CALC_POINT_MAT",
                "CALC_PRECONT","CALCUL","DYNA_NON_LINE","LIRE_RESU",
@@ -344,16 +344,16 @@ def traduc(infile,outfile,flog=None):
         renameMotCleInFact(jdc,com,"COMP_INCR","RESI_DEBO_RELA","RESI_CPLAN_RELA",pasDeRegle(),0)
         renameMotCleInFact(jdc,com,"COMP_INCR","ITER_MAXI_DEBORST","ITER_CPLAN_MAXI",pasDeRegle(),0)
 
-    ####   Traitement de C_NEWTON   ##############################
+    ####   traitement de C_NEWTON   ##############################
     # Renommage de EXTRAPOL en EXTRAPOLE
     lCOMMANDE=["CALC_IFS_DNL","CALC_POINT_MAT","CALC_PRECONT",
                "DYNA_NON_LINE","MACR_ASCOUF_CALC","MACR_ASPIC_CALC",
                "SIMU_POINT_MAT","STAT_NON_LINE","TEST_COMPOR",]
     dPRED={"EXTRAPOL":"EXTRAPOLE"}
     for com in lCOMMANDE :
-        ChangementValeurDsMCF(jdc,com,"NEWTON","PREDICTION",dPRED)
+        changementValeurDsMCF(jdc,com,"NEWTON","PREDICTION",dPRED)
 
-    ####   Traitement de C_SOLVEUR   ##############################
+    ####   traitement de C_SOLVEUR   ##############################
     # Renommage de EXTRAPOL en EXTRAPOLE
     lCOMMANDE=["CALC_ELEM","CALC_FORC_AJOU","CALC_IFS_DNL",
                "CALC_MATR_AJOU","CALC_PRECONT","CREA_ELEM_SSD",
@@ -369,13 +369,13 @@ def traduc(infile,outfile,flog=None):
         removeMotCleInFact(jdc,com,"SOLVEUR","OUT_OF_CORE",pasDeRegle(),0)
         removeMotCleInFact(jdc,com,"SOLVEUR","LIBERE_MEMOIRE",pasDeRegle(),0)
 
-    ####   Traitement de CALC_CHAMP   ##############################
+    ####   traitement de CALC_CHAMP   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de CALC_ECREVISSE   ##############################
+    ####   traitement de CALC_ECREVISSE   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_ELEM   ##############################
+    ####   traitement de CALC_ELEM   ##############################
     # renommage de la commande
     renameCommande(jdc,"CALC_ELEM","CALC_CHAMP", )
     # Suppression des types de charges
@@ -438,9 +438,9 @@ def traduc(infile,outfile,flog=None):
     lMETA=["DURT_ELNO"]
     #SPMX_ELGA / NOM_CHAM / NOM_CMP
     ## Erreur pour les options supprimées
-    GenereErreurValeur(jdc,"CALC_ELEM","OPTION",("'SICA_ELNO'","'EFCA_ELNO'","'PMPB_ELNO'","'PMPB_ELGA'",))
+    genereErreurValeur(jdc,"CALC_ELEM","OPTION",("'SICA_ELNO'","'EFCA_ELNO'","'PMPB_ELNO'","'PMPB_ELGA'",))
     lCHANOPT={"SICO_ELNO":"SIGM_ELNO","EPTU_ELNO":"EPSI_ELNO","SITU_ELNO":"SIGM_ELNO","SITQ_ELNO":"SIGM_ELNO","EPTQ_ELNO":"EPSI_ELNO"}
-    ChangementValeur(jdc,"CALC_ELEM","OPTION",lCHANOPT)
+    changementValeur(jdc,"CALC_ELEM","OPTION",lCHANOPT)
     ## copie de OPTION dans MCF TEMPORAIRE pour chaque type
     chercheOperInsereFacteur(jdc,"CALC_CHAMP","TEMPORAIRE")
     copyMotClefInOperToFact(jdc,"CALC_CHAMP","OPTION","TEMPORAIRE")
@@ -487,16 +487,16 @@ def traduc(infile,outfile,flog=None):
     removeMotCleSiRegle(jdc,"CALC_CHAMP","ERREUR",((("ERREUR",lERREUR,jdc),"MCnaPasPourValeurDansListe"),))
     removeMotCleSiRegle(jdc,"CALC_CHAMP","META",((("META",lMETA,jdc),"MCnaPasPourValeurDansListe"),))
     ## suppression des valeurs non-licites
-    SuppressionValeurs(jdc,"CALC_CHAMP","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","CRITERES",list(set(lTOUT)-set(lCRITERES)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","HYDRAULIQUE",list(set(lTOUT)-set(lHYDRAULIQUE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","ERREUR",list(set(lTOUT)-set(lERREUR)))
-    SuppressionValeurs(jdc,"CALC_CHAMP","META",list(set(lTOUT)-set(lMETA)))
+    suppressionValeurs(jdc,"CALC_CHAMP","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
+    suppressionValeurs(jdc,"CALC_CHAMP","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","CRITERES",list(set(lTOUT)-set(lCRITERES)))
+    suppressionValeurs(jdc,"CALC_CHAMP","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","HYDRAULIQUE",list(set(lTOUT)-set(lHYDRAULIQUE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
+    suppressionValeurs(jdc,"CALC_CHAMP","ERREUR",list(set(lTOUT)-set(lERREUR)))
+    suppressionValeurs(jdc,"CALC_CHAMP","META",list(set(lTOUT)-set(lMETA)))
     ## ajout CALC_META ou CALC_ERREUR   
     lMOTCLE=[]
     lMOTCLE=["reuse","RESULTAT","TOUT_ORDRE","NUME_ORDRE","NUME_MODE","NOEUD_CMP","NOM_CAS",
@@ -534,28 +534,28 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"CALC_CHAMP","META",pasDeRegle(),0)
     removeMotCle(jdc,"CALC_CHAMP","ERREUR",pasDeRegle(),0)
 
-    ####   Traitement de CALC_ERREUR   ##############################
+    ####   traitement de CALC_ERREUR   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de CALC_ESSAI   ##############################
+    ####   traitement de CALC_ESSAI   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_EUROPLEXUS   ##############################
+    ####   traitement de CALC_EUROPLEXUS   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_FATIGUE   ##############################
+    ####   traitement de CALC_FATIGUE   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_FERRAILLAGE   ##############################
+    ####   traitement de CALC_FERRAILLAGE   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_FONCTION   ##############################
+    ####   traitement de CALC_FONCTION   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_FORC_AJOU   ##############################
+    ####   traitement de CALC_FORC_AJOU   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_G   ##############################
+    ####   traitement de CALC_G   ##############################
     # Suppression SYME_CHAR
     removeMotCle(jdc,"CALC_G","SYME_CHAR",pasDeRegle(),0)
     # Règle sur DEGRE
@@ -571,14 +571,14 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFactSiRegle(jdc,"CALC_G","COMP_INCR","SIGM_INIT",((("RELATION","ELAS",jdc),"MCnaPasPourValeur"),))
     removeMotCle(jdc,"CALC_G","ETAT_INIT",pasDeRegle(),0)
     # Renommage de l'option K_G_MODA en CALC_K_G
-    ChangementValeur(jdc,"CALC_G","OPTION",{"K_G_MODA":"CALC_K_G",})
+    changementValeur(jdc,"CALC_G","OPTION",{"K_G_MODA":"CALC_K_G",})
     # Suppression de EXCIT dans le cas elas_mult
     removeMotCleSiRegle(jdc,"CALC_G","EXCIT",((("NOM_CAS",),"existe"),))
     # Ajout règle UN_PARMI('THETA','FOND_FISS','FISSURE')
     removeMotCleInFactSiRegle(jdc,"CALC_G","THETA","THETA",((("THETA","FOND_FISS",),"existeMCsousMCF"),))
     removeMotCleInFactSiRegle(jdc,"CALC_G","THETA","THETA",((("THETA","FISSURE",),"existeMCsousMCF"),))
 
-    ####   Traitement de CALC_IFS_DNL   ##############################
+    ####   traitement de CALC_IFS_DNL   ##############################
     # Renommage CRIT_FLAMB en CRIT_STAB
     renameMotCle(jdc,"CALC_IFS_DNL","CRIT_FLAMB","CRIT_STAB")
     removeMotCleInFact(jdc,"CALC_IFS_DNL","CRIT_FLAMB","INST_CALCUL",pasDeRegle(),1)
@@ -587,37 +587,37 @@ def traduc(infile,outfile,flog=None):
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"CALC_IFS_DNL","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de CALC_INTE_SPEC   ##############################
+    ####   traitement de CALC_INTE_SPEC   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_MAC3COEUR   ##############################
+    ####   traitement de CALC_MAC3COEUR   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de CALC_MATR_AJOU   ##############################
+    ####   traitement de CALC_MATR_AJOU   ##############################
     # Suppression d'algo pour PETSc
     removeMotCleSiRegle(jdc,"RESOUDRE","ALGORITHME",((("BCGS","BICG","TFQMR",),"MCaPourValeur"),))
 
-    ####   Traitement de CALC_MATR_ELEM   ##############################
+    ####   traitement de CALC_MATR_ELEM   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_META   ##############################
+    ####   traitement de CALC_META   ##############################
     # OPTION est obligatoire
     chercheOperInsereFacteurSiRegle(jdc,"CALC_META","OPTION='META_ELNO'",((("OPTION",),"nexistepas"),),0)
 
-    ####   Traitement de CALC_MISS   ##############################
+    ####   traitement de CALC_MISS   ##############################
     # Suppression de TYPE_CHARGE
     removeMotCle(jdc,"CALC_MISS","TYPE_CHARGE",pasDeRegle(),0)
 
-    ####   Traitement de CALC_MODAL   ##############################
+    ####   traitement de CALC_MODAL   ##############################
     # renommage de STOP_FREQ_VIDE
     renameMotCle(jdc,"CALC_MODAL","STOP_FREQ_VIDE","STOP_BANDE_VIDE")
 
-    ####   Traitement de CALC_MODE_ROTATION   ##############################
+    ####   traitement de CALC_MODE_ROTATION   ##############################
     # renommage de MATR_A et MATR_B
     renameMotCle(jdc,"CALC_MODE_ROTATION","MATR_A","MATR_RIGI")
     renameMotCle(jdc,"CALC_MODE_ROTATION","MATR_B","MATR_MASS")
 
-    ####   Traitement de CALC_NO   ##############################
+    ####   traitement de CALC_NO   ##############################
     # renommage de la commande
     renameCommande(jdc,"CALC_NO","CALC_CHAMPNO", )
     # Suppression des types de charges
@@ -645,8 +645,8 @@ def traduc(infile,outfile,flog=None):
     lERREUR=["ERME_NOEU","ERTH_NOEU","QIRE_NOEU",]
     lMETA=["DURT_NOEU","META_NOEU",]
     ## Erreur pour les options supprimées
-    GenereErreurValeur(jdc,"CALC_CHAMPNO","OPTION",("'SICA_NOEU'","'EFCA_NOEU'","'PMPB_NOEU'",))
-    ChangementValeur(jdc,"CALC_CHAMPNO","OPTION",{"SICO_NOEU":"SIGM_NOEU",})
+    genereErreurValeur(jdc,"CALC_CHAMPNO","OPTION",("'SICA_NOEU'","'EFCA_NOEU'","'PMPB_NOEU'",))
+    changementValeur(jdc,"CALC_CHAMPNO","OPTION",{"SICO_NOEU":"SIGM_NOEU",})
     ## copie de OPTION dans MCF TEMPORAIRE pour chaque type
     chercheOperInsereFacteur(jdc,"CALC_CHAMPNO","TEMPORAIRE")
     copyMotClefInOperToFact(jdc,"CALC_CHAMPNO","OPTION","TEMPORAIRE")
@@ -693,16 +693,16 @@ def traduc(infile,outfile,flog=None):
     removeMotCleSiRegle(jdc,"CALC_CHAMPNO","ERREUR",((("ERREUR",lERREUR,jdc),"MCnaPasPourValeurDansListe"),))
     removeMotCleSiRegle(jdc,"CALC_CHAMPNO","META",((("META",lMETA,jdc),"MCnaPasPourValeurDansListe"),))
     ## suppression des valeurs non-licites
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","CRITERES",list(set(lTOUT)-set(lCRITERES)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","FORCE",list(set(lTOUT)-set(lFORCE)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","ERREUR",list(set(lTOUT)-set(lERREUR)))
-    SuppressionValeurs(jdc,"CALC_CHAMPNO","META",list(set(lTOUT)-set(lMETA)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","CONTRAINTE",list(set(lTOUT)-set(lCONTRAINTE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","DEFORMATION",list(set(lTOUT)-set(lDEFORMATION)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","ENERGIE",list(set(lTOUT)-set(lENERGIE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","CRITERES",list(set(lTOUT)-set(lCRITERES)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","VARI_INTERNE",list(set(lTOUT)-set(lVARI_INTERNE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","THERMIQUE",list(set(lTOUT)-set(lTHERMIQUE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","ACOUSTIQUE",list(set(lTOUT)-set(lACOUSTIQUE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","FORCE",list(set(lTOUT)-set(lFORCE)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","ERREUR",list(set(lTOUT)-set(lERREUR)))
+    suppressionValeurs(jdc,"CALC_CHAMPNO","META",list(set(lTOUT)-set(lMETA)))
     ## ajout CALC_METANO ou CALC_ERREURNO   
     lMOTCLE=[]
     lMOTCLE=["reuse","RESULTAT","TOUT_ORDRE","NUME_ORDRE","NUME_MODE","NOEUD_CMP","NOM_CAS",
@@ -741,20 +741,20 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"CALC_CHAMP","METANO",pasDeRegle(),0)
     removeMotCle(jdc,"CALC_CHAMP","ERREURNO",pasDeRegle(),0)
 
-    ####   Traitement de CALC_POINT_MAT   ##############################
+    ####   traitement de CALC_POINT_MAT   ##############################
     # Rien à faire
 
-    ####   Traitement de CALC_PRECONT   ##############################
+    ####   traitement de CALC_PRECONT   ##############################
     # Renommage de IMPLEX
-    ChangementValeur(jdc,"CALC_PRECONT","METHODE",{"IMPL_EX":"IMPLEX"})
+    changementValeur(jdc,"CALC_PRECONT","METHODE",{"IMPL_EX":"IMPLEX"})
     removeMotCle(jdc,"CALC_PRECONT","IMPL_EX",pasDeRegle(),0)
 
-    ####   Traitement de CALC_SENSI   ##############################
+    ####   traitement de CALC_SENSI   ##############################
     # Résorption de la sensibilité
     removeCommande(jdc,"CALC_SENSI")
-    #GenereErreurPourCommande(jdc,("CALC_SENSI",))
+    #genereErreurPourCommande(jdc,("CALC_SENSI",))
 
-    ####   Traitement de CALC_SPEC   ##############################
+    ####   traitement de CALC_SPEC   ##############################
     # Déplacement d'un mot-clé facteur facteur
     moveMotCleFromFactToFather(jdc,"CALC_SPEC","TAB_ECHANT","LONGUEUR_ECH")
     moveMotCleFromFactToFather(jdc,"CALC_SPEC","LONGUEUR_ECH","DUREE")
@@ -779,37 +779,37 @@ def traduc(infile,outfile,flog=None):
     moveMotClefInOperToFact(jdc,"CALC_SPEC","RECOUVREMENT_POURCENT","TAB_ECHANT")
     moveMotClefInOperToFact(jdc,"CALC_SPEC","RECOUVREMENT_NB_PTS","TAB_ECHANT")
 
-    ####   Traitement de CALC_TABLE   ##############################
+    ####   traitement de CALC_TABLE   ##############################
     # Renommage de AJOUT en AJOUT_LIGNE
     dOPE={"AJOUT":"AJOUT_LIGNE",}
-    ChangementValeurDsMCF(jdc,"CALC_TABLE","ACTION","OPERATION",dOPE)
+    changementValeurDsMCF(jdc,"CALC_TABLE","ACTION","OPERATION",dOPE)
     # Résorption de la sensibilité
     removeMotCle(jdc,"CALC_TABLE","SENSIBILITE",pasDeRegle(),0)
     # Renommage critere table
     dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
-    ChangementValeurDsMCF(jdc,"CALC_TABLE","FILTRE","CRIT_COMP",dCRIT)
+    changementValeurDsMCF(jdc,"CALC_TABLE","FILTRE","CRIT_COMP",dCRIT)
 
-    ####   Traitement de CALC_THETA   ##############################
+    ####   traitement de CALC_THETA   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"CALC_THETA","OPTION",pasDeRegle(),0)
     removeMotCle(jdc,"CALC_THETA","THETA_BANDE",pasDeRegle(),1)
     removeMotCle(jdc,"CALC_THETA","GRAD_NOEU_THETA",pasDeRegle(),0)
 
-    ####   Traitement de COMB_FOURIER  ##############################
+    ####   traitement de COMB_FOURIER  ##############################
     # Homogénéisation de ANGLE
     renameMotCle(jdc,"COMB_FOURIER","ANGL","ANGLE")
 
-    ####   Traitement de COMB_SISM_MODAL   ##############################
-    GenereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",("'EFCA_ELNO'",))
+    ####   traitement de COMB_SISM_MODAL   ##############################
+    genereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",("'EFCA_ELNO'",))
 
-    ####   Traitement de CREA_CHAMP   ##############################
+    ####   traitement de CREA_CHAMP   ##############################
     removeMotCle(jdc,"CREA_CHAMP","SENSIBILITE",pasDeRegle(),0)
     removeMotCle(jdc,"CREA_CHAMP","PROL_ZERO",pasDeRegle(),0)
 
-    ####   Traitement de CREA_ELEM_SSD   ##############################
+    ####   traitement de CREA_ELEM_SSD   ##############################
     # Rien à faire
 
-    ####   Traitement de CREA_MAILLAGE   ##############################
+    ####   traitement de CREA_MAILLAGE   ##############################
     # Suppression de la possibilité de copier un maillage
     lFACTEUR=['COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
                         'DETR_GROUP_MA', 'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE',
@@ -817,13 +817,13 @@ def traduc(infile,outfile,flog=None):
     renameCommandeSiRegle(jdc,"CREA_MAILLAGE","COPIER",(((lFACTEUR),"nexistepasMCFParmi"),))
     renameMotCle(jdc,"COPIER","MAILLAGE","CONCEPT")
 
-    ####   Traitement de CREA_RESU   ##############################
+    ####   traitement de CREA_RESU   ##############################
     # Rien à faire
 
-    ####   Traitement de CREA_TABLE   ##############################
+    ####   traitement de CREA_TABLE   ##############################
     removeMotCle(jdc,"CREA_TABLE","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de DEBUT   ##############################
+    ####   traitement de DEBUT   ##############################
     # Suppression du mot-clé TITRE
     removeMotCleInFact(jdc,"DEBUT","CATALOGUE","TITRE",pasDeRegle(),0)
     # Suppression du mot-clé IMPRESSION
@@ -835,46 +835,46 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"DEBUT","MEMOIRE","PARTITION",pasDeRegle(),0)
     removeMotCleInFact(jdc,"DEBUT","MEMOIRE","DYNAMIQUE",pasDeRegle(),0)
 
-    ####   Traitement de DEFI_BASE_MODALE   ##############################
+    ####   traitement de DEFI_BASE_MODALE   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_CABLE_BP   ##############################
+    ####   traitement de DEFI_CABLE_BP   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_COMPOR   ##############################
+    ####   traitement de DEFI_COMPOR   ##############################
     # Suppression famille de sytèmes de glissement
     lFAMGLIS=["'BASAL'", "'PRISMATIQUE'","'PYRAMIDAL1'","'PYRAMIDAL2'","'MACLAGE'",]
-    GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","FAMI_SYST_GLIS",lFAMGLIS)
+    genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","FAMI_SYST_GLIS",lFAMGLIS)
     # Suppression famille de sytèmes de glissement
-    GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",("'MONO_VISC3'",))
+    genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",("'MONO_VISC3'",))
     # Suppression de ALGO_1D
     removeMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","ALGO_1D",pasDeRegle(),0)
      # Suppression de DEFORMATION
-    GenereErreurMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION")
+    genereErreurMotCleInFact(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION")
 
-    ####   Traitement de DEFI_CONTACT  ##############################
-    GenereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT",("'AVANCE'",))
-    GenereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT",("'AVANCE'",))
+    ####   traitement de DEFI_CONTACT  ##############################
+    genereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT",("'AVANCE'",))
+    genereErreurValeurDsMCF(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT",("'AVANCE'",))
     # résorption de RACCORD_LINE_QUAD et éléments de Barsoum
-    GenereErreurMCF(jdc,"DEFI_CONTACT","FOND_FISSURE")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_FOND")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_FOND")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","MAILLE_FOND")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_MA_FOND")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","RACCORD_LINE_QUAD")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_RACC")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_RACC")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","EXCLUSION_PIV_NUL")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","COEF_ECHELLE")
+    genereErreurMCF(jdc,"DEFI_CONTACT","FOND_FISSURE")
+    genereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_FOND")
+    genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_FOND")
+    genereErreurMCF(jdc,"DEFI_CONTACT","MAILLE_FOND")
+    genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_MA_FOND")
+    genereErreurMCF(jdc,"DEFI_CONTACT","RACCORD_LINE_QUAD")
+    genereErreurMCF(jdc,"DEFI_CONTACT","NOEUD_RACC")
+    genereErreurMCF(jdc,"DEFI_CONTACT","GROUP_NO_RACC")
+    genereErreurMCF(jdc,"DEFI_CONTACT","EXCLUSION_PIV_NUL")
+    genereErreurMCF(jdc,"DEFI_CONTACT","COEF_ECHELLE")
     # résorption de COMPLIANCE
-    GenereErreurMCF(jdc,"DEFI_CONTACT","COMPLIANCE")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","ASPERITE")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","E_N")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","E_V")
+    genereErreurMCF(jdc,"DEFI_CONTACT","COMPLIANCE")
+    genereErreurMCF(jdc,"DEFI_CONTACT","ASPERITE")
+    genereErreurMCF(jdc,"DEFI_CONTACT","E_N")
+    genereErreurMCF(jdc,"DEFI_CONTACT","E_V")
     # résorption de l'usure
-    GenereErreurMCF(jdc,"DEFI_CONTACT","USURE")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","K")
-    GenereErreurMCF(jdc,"DEFI_CONTACT","H")
+    genereErreurMCF(jdc,"DEFI_CONTACT","USURE")
+    genereErreurMCF(jdc,"DEFI_CONTACT","K")
+    genereErreurMCF(jdc,"DEFI_CONTACT","H")
     # Suppression de schémas d'inégration pour XFEM
     lSCHEMA=["FPG2","FPG3","FPG4","FPG6","FPG7","SIMPSON1","NCOTES1","NCOTES2"]
     removeMotCleInFactSiRegle(jdc,"DEFI_CONTACT","ZONE","INTEGRATION",((("FORMULATION","XFEM",jdc),"MCaPourValeur")and(("ZONE","INTEGRATION",lSCHEMA,jdc),"MCsousMCFaPourValeurDansListe"),),)
@@ -886,26 +886,26 @@ def traduc(infile,outfile,flog=None):
     # Ajout règle sur REAC_GEOM
     removeMotCleSiRegle(jdc,"DEFI_CONTACT","REAC_GEOM",((("ALGO_RESO_GEOM","NEWTON",jdc),"MCaPourValeur"),))
 
-    ####   Traitement de DEFI_COQU_MULT   ##############################
+    ####   traitement de DEFI_COQU_MULT   ##############################
     renameCommande(jdc,"DEFI_COQU_MULT","DEFI_COMPOSITE", )
 
-    ####   Traitement de DEFI_FICHIER   ##############################
+    ####   traitement de DEFI_FICHIER   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_FISS_XFEM   ##############################
+    ####   traitement de DEFI_FISS_XFEM   ##############################
     # Suppression de ORIE_FOND
     removeMotCle(jdc,"DEFI_FISS_XFEM","ORIE_FOND",pasDeRegle(),0)
     # Fusion FORM_FISS='ELLIPSE' et FORM_FISS='INCLUSION'
     dFORME={"INCLUSION":"ELLIPSE",}
-    ChangementValeurDsMCF(jdc,"DEFI_FISS_XFEM","DEFI_FISS","FORM_FISS",dOPE)
+    changementValeurDsMCF(jdc,"DEFI_FISS_XFEM","DEFI_FISS","FORM_FISS",dOPE)
 
-    ####   Traitement de DEFI_FONC_ELEC   ##############################
+    ####   traitement de DEFI_FONC_ELEC   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_FOND_FISS   ##############################
+    ####   traitement de DEFI_FOND_FISS   ##############################
     renameMotCle(jdc,"DEFI_FOND_FISS","FOND_FISS","FONDFISS")
     # Cas FOND OUVERT
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_FOND_FISS","FONDFISS","TYPE_FOND='OUVERT'",((("FONDFISS",),"existe"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_FOND_FISS","FONDFISS","TYPE_FOND='OUVERT'",((("FONDFISS",),"existe"),))
     # Cas FOND FERME
     chercheOperInsereFacteurSiRegle(jdc,"DEFI_FOND_FISS","TYPE_FOND='FERME'",((("FOND_FERME",),"existe"),),0)
     renameMotCle(jdc,"DEFI_FOND_FISS","FOND_FERME","FONDFISS")
@@ -927,86 +927,86 @@ def traduc(infile,outfile,flog=None):
     #
     renameMotCle(jdc,"DEFI_FOND_FISS","FONDFISS","FOND_FISS")
 
-    ####   Traitement de DEFI_GLRC   ##############################
+    ####   traitement de DEFI_GLRC   ##############################
     # Renommage de mot-clés
     renameMotCle(jdc,"DEFI_GLRC","GC","GAMMA_C")
     renameMotCle(jdc,"DEFI_GLRC","SYC","NYC")
     renameMotCle(jdc,"DEFI_GLRC","EPSI_FLEX","KAPPA_FLEX")
 
-    ####   Traitement de DEFI_GROUPE   ##############################
+    ####   traitement de DEFI_GROUPE   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_INTE_SPEC   ##############################
+    ####   traitement de DEFI_INTE_SPEC   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_LIST_INST   ##############################
+    ####   traitement de DEFI_LIST_INST   ##############################
     dMETHODE={"UNIFORME":"MANUEL","EXTRAPOLE":"MANUEL","AUCUNE":"AUTO"}
-    ChangementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","SUBD_METHODE",dMETHODE)
+    changementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","SUBD_METHODE",dMETHODE)
     removeMotCleInFact(jdc,"DEFI_LIST_INST","ECHEC","SUBD_COEF_PAS_1",pasDeRegle(),0)
 
-    ####   Traitement de DEFI_MATER_GC   ##############################
+    ####   traitement de DEFI_MATER_GC   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de DEFI_MATERIAU   ##############################
+    ####   traitement de DEFI_MATERIAU   ##############################
     # Suppression des critères pour les poutres
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","ECRO_FLEJOU")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE_FO")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","ECRO_FLEJOU")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","VMIS_POUTRE_FO")
     # Modification de la loi de grandissement
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_A")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_B")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_S")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_A")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_B")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_S")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_A")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_B")
-    GenereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_S")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_A")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_B")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LEMAITRE_IRRA","GRAN_S")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_A")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_B")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","LMARC_IRRA","GRAN_S")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_A")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_B")
+    genereErreurMotCleInFact(jdc,"DEFI_MATERIAU","GRAN_IRRA_LOG","GRAN_S")
     # Modification des paramètres de la loi ENDO_SCALAIRE
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","ENDO_SCALAIRE")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","ENDO_SCALAIRE")
     # Modification des paramètres de la loi MAZARS
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS_FO")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","MAZARS_FO")
     # Modification des paramètres de la loi GLRC_DM
     renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYT","NYT",pasDeRegle(),0)
     renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYC","NYC",pasDeRegle(),0)
     renameMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","SYF","NYF",pasDeRegle(),0)
     # Suppression de la loi MONO_VISC3
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","MONO_VISC3")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","MONO_VISC3")
     # Suppression de la loi MONO_DD_CC
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","MONO_DD_CC")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","MONO_DD_CC")
 
-    ####   Traitement de DEFI_NAPPE   ##############################
+    ####   traitement de DEFI_NAPPE   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_PARA_SENSI   ##############################
+    ####   traitement de DEFI_PARA_SENSI   ##############################
     # Résorption de la sensibilité
     removeCommande(jdc,"DEFI_PARA_SENSI")
-    #GenereErreurPourCommande(jdc,("DEFI_PARA_SENSI",))
+    #genereErreurPourCommande(jdc,("DEFI_PARA_SENSI",))
 
-    ####   Traitement de DEFI_PART_FETI   ##############################
+    ####   traitement de DEFI_PART_FETI   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_SOL_MISS   ##############################
+    ####   traitement de DEFI_SOL_MISS   ##############################
     # Rien à faire
 
-    ####   Traitement de DEFI_SPEC_TURB  ##############################
+    ####   traitement de DEFI_SPEC_TURB  ##############################
     # Homogénéisation de ANGLE
     renameMotCleInFact(jdc,"DEFI_SPEC_TURB","SPEC_EXCI_POINT","ANGL","ANGLE",pasDeRegle(),0)
 
-    ####   Traitement de DETRUIRE  ##############################
+    ####   traitement de DETRUIRE  ##############################
     # Résorption de la sensibilité
     removeMotCleInFact(jdc,"DETRUIRE","CONCEPT","SENSIBILITE",pasDeRegle(),0)
     # Suppression mot-clé ALARME
     removeMotCle(jdc,"DETRUIRE","ALARME",pasDeRegle(),0)
 
-    ####   Traitement de DYNA_ALEA_MODAL   ##############################
+    ####   traitement de DYNA_ALEA_MODAL   ##############################
     # Rien à faire
 
-    ####   Traitement de DYNA_ISS_VARI   ##############################
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_ISS_VARI","MATR_COHE","TYPE='MITA_LUCO'",((("MATR_COHE",),"existe"),))
+    ####   traitement de DYNA_ISS_VARI   ##############################
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_ISS_VARI","MATR_COHE","TYPE='MITA_LUCO'",((("MATR_COHE",),"existe"),))
 
-    ####   Traitement de DYNA_LINE_HARM   ##############################
+    ####   traitement de DYNA_LINE_HARM   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"DYNA_LINE_HARM","SENSIBILITE",pasDeRegle(),0)
     # Suppression mot-clé TYPE_CHARGE
@@ -1016,23 +1016,23 @@ def traduc(infile,outfile,flog=None):
     moveMotClefInOperToFact(jdc,"DYNA_LINE_HARM","AMOR_REDUIT","AMOR_MODAL")
     moveMotClefInOperToFact(jdc,"DYNA_LINE_HARM","LIST_AMOR","AMOR_MODAL")
 
-    ####   Traitement de DYNA_LINE_TRAN   ##############################
+    ####   traitement de DYNA_LINE_TRAN   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"DYNA_LINE_TRAN","SENSIBILITE",pasDeRegle(),0)
     # Ajout SCHEMA_TEMPS
     chercheOperInsereFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS",((("NEWMARK","WILSON","DIFF_CENTRE","ADAPT",),"existeMCFParmi"),),1)
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
     moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","NEWMARK","ALPHA","SCHEMA_TEMPS")
     moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","NEWMARK","DELTA","SCHEMA_TEMPS")
     renameMotCleInFact(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","ALPHA","BETA",pasDeRegle(),0)
     renameMotCleInFact(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","DELTA","GAMMA",pasDeRegle(),0)
     removeMotCle(jdc,"DYNA_LINE_TRAN","NEWMARK",pasDeRegle(),0)
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='WILSON'",((("WILSON",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='WILSON'",((("WILSON",),"existeMCFParmi"),))
     moveMotCleFromFactToFact(jdc,"DYNA_LINE_TRAN","WILSON","THETA","SCHEMA_TEMPS")
     removeMotCle(jdc,"DYNA_LINE_TRAN","WILSON",pasDeRegle(),0)
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='DIFF_CENTRE'",((("DIFF_CENTRE",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='DIFF_CENTRE'",((("DIFF_CENTRE",),"existeMCFParmi"),))
     removeMotCle(jdc,"DYNA_LINE_TRAN","DIFF_CENTRE",pasDeRegle(),0)
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='ADAPT_ORDRE2'",((("ADAPT",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_LINE_TRAN","SCHEMA_TEMPS","SCHEMA='ADAPT_ORDRE2'",((("ADAPT",),"existeMCFParmi"),))
     removeMotCle(jdc,"DYNA_LINE_TRAN","ADAPT",pasDeRegle(),0)
     # Renommage dans ETAT_INIT
     renameMotCleInFact(jdc,"DYNA_LINE_TRAN","ETAT_INIT","DYNA_TRANS","RESULTAT",pasDeRegle(),0)
@@ -1043,13 +1043,13 @@ def traduc(infile,outfile,flog=None):
     # Suppression mot-clé TYPE_CHARGE
     removeMotCleInFact(jdc,"DYNA_LINE_TRAN","EXCIT","TYPE_CHARGE",pasDeRegle(),0)
     # Suppression mot-clé FONC_INST
-    GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","FONC_INST")
+    genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","FONC_INST")
     # Suppression mot-clé PAS_CALCUL
     removeMotCleInFact(jdc,"DYNA_LINE_TRAN","INCREMENT","PAS_CALCUL",pasDeRegle(),0)
     # Renommage dans ARCHIVAGE
     renameMotCleInFact(jdc,"DYNA_LINE_TRAN","ARCHIVAGE","LIST_ARCH","LIST_INST",pasDeRegle(),0)
 
-    ####   Traitement de DYNA_NON_LINE   ##############################
+    ####   traitement de DYNA_NON_LINE   ##############################
     # Renommage CRIT_FLAMB en CRIT_STAB
     renameMotCle(jdc,"DYNA_NON_LINE","CRIT_FLAMB","CRIT_STAB")
     # Résorption de la sensibilité
@@ -1057,10 +1057,10 @@ def traduc(infile,outfile,flog=None):
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"DYNA_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de DYNA_SPEC_MODAL   ##############################
+    ####   traitement de DYNA_SPEC_MODAL   ##############################
     # Rien à faire
 
-    ####   Traitement de DYNA_TRAN_MODAL   ##############################
+    ####   traitement de DYNA_TRAN_MODAL   ##############################
     # Ajout SCHEMA_TEMPS
     chercheOperInsereFacteur(jdc,"DYNA_TRAN_MODAL","SCHEMA_TEMPS")
     chercheOperInsereMotCleSiRegle(jdc,"DYNA_TRAN_MODAL","METHODE='EULER'",((("METHODE",),"nexistepas"),),)
@@ -1099,22 +1099,22 @@ def traduc(infile,outfile,flog=None):
     moveMotClefInOperToFact(jdc,"DYNA_TRAN_MODAL","LAMBDA","PARA_LAMEFLUI")
     renameMotCle(jdc,"DYNA_TRAN_MODAL","PARA_LAMEFLUI","PARA_LAME_FLUI")
 
-    ####   Traitement de DYNA_VIBRA   ##############################
+    ####   traitement de DYNA_VIBRA   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de EXEC_LOGICIEL   ##############################
+    ####   traitement de EXEC_LOGICIEL   ##############################
     # Rien à faire
 
-    ####   Traitement de EXTR_RESU   ##############################
+    ####   traitement de EXTR_RESU   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"EXTR_RESU","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de EXTR_TABLE   ##############################
+    ####   traitement de EXTR_TABLE   ##############################
     # Renommage critere table
     dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
-    ChangementValeurDsMCF(jdc,"RECU_TABLE","FILTRE","CRIT_COMP",dCRIT)
+    changementValeurDsMCF(jdc,"RECU_TABLE","FILTRE","CRIT_COMP",dCRIT)
 
-    ####   Traitement de FACTORISER   ##############################
+    ####   traitement de FACTORISER   ##############################
     # Suppression de RENUM
     removeMotCleSiRegle(jdc,"FACTORISER","RENUM",((("PRE_COND","LDLT_INC",jdc),"MCaPourValeur"),))
     removeMotCleSiRegle(jdc,"FACTORISER","RENUM",((("PRE_COND","LDLT_SP",jdc),"MCaPourValeur"),))
@@ -1122,47 +1122,47 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"FACTORISER","LIBERE_MEMOIRE",pasDeRegle(),0)
     renameMotCle(jdc,"FACTORISER","OUT_OF_CORE","GESTION_MEMOIRE")
     dMEM={"OUI":"OUT_OF_CORE","NON":"IN_CORE"}
-    ChangementValeur(jdc,"FACTORISER","GESTION_MEMOIRE",dCRIT)
+    changementValeur(jdc,"FACTORISER","GESTION_MEMOIRE",dCRIT)
 
-    ####   Traitement de FORMULE   ##############################
+    ####   traitement de FORMULE   ##############################
     # Rien à faire
     
-    ####   Traitement de GENE_ACCE_SEISME   ##############################
+    ####   traitement de GENE_ACCE_SEISME   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de GENE_FONC_ALEA   ##############################
+    ####   traitement de GENE_FONC_ALEA   ##############################
     # Rien à faire
 
-    ####   Traitement de GENE_VARI_ALEA   ##############################
+    ####   traitement de GENE_VARI_ALEA   ##############################
     # Rien à faire
 
-    ####   Traitement de IMPR_CO  ##############################
+    ####   traitement de IMPR_CO  ##############################
     # Résorption de la sensibilité
     removeMotCleInFact(jdc,"IMPR_CO","CONCEPT","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de IMPR_DIAG_CAMPBELL   ##############################
+    ####   traitement de IMPR_DIAG_CAMPBELL   ##############################
     # Rien à faire
 
-    ####   Traitement de IMPR_FONCTION   ##############################
+    ####   traitement de IMPR_FONCTION   ##############################
     # Rien à faire
 
-    ####   Traitement de IMPR_GENE   ##############################
+    ####   traitement de IMPR_GENE   ##############################
     # Rien à faire
 
-    ####   Traitement de IMPR_OAR   ##############################
+    ####   traitement de IMPR_OAR   ##############################
     # Rien à faire
 
-    ####   Traitement de IMPR_RESU   ##############################
+    ####   traitement de IMPR_RESU   ##############################
     # Résorption de la sensibilité
     removeMotCleInFact(jdc,"IMPR_RESU","RESU","SENSIBILITE",pasDeRegle(),0)
     # Suppression de l'écriture au format ENSIGHT
-    GenereErreurValeur(jdc,"IMPR_RESU","FORMAT",("'ENSIGHT'",))
+    genereErreurValeur(jdc,"IMPR_RESU","FORMAT",("'ENSIGHT'",))
     # Homogénéisation de ANGLE
     renameMotCleInFact(jdc,"IMPR_RESU","FORMAT","ANGL","ANGLE",pasDeRegle(),0)
     # Suppression mot-clé MODELE
     removeMotCle(jdc,"IMPR_RESU","MODELE",pasDeRegle(),0)
 
-    ####   Traitement de IMPR_STURM   ##############################
+    ####   traitement de IMPR_STURM   ##############################
     renameMotCle(jdc,"IMPR_STURM","TYPE_RESU","TYPE_MODE")
     # renommage de MATR_A, MATR_B et MATR_C
     renameMotCleSiRegle(jdc,"IMPR_STURM","MATR_A","MATR_RIGI",((("TYPE_MODE","DYNAMIQUE",jdc),"MCaPourValeur"),),1)
@@ -1173,8 +1173,8 @@ def traduc(infile,outfile,flog=None):
     renameMotCle(jdc,"IMPR_STURM","MATR_B","MATR_MASS")
     #
     chercheOperInsereMotCleSiRegle(jdc,"IMPR_STURM","FREQ_MIN=0.",((("FREQ_MIN",),"nexistepas")and(("FREQ_MAX",),"existeMCFParmi"),),)
-    FusionMotCleToFact(jdc,"IMPR_STURM",("FREQ_MIN","FREQ_MAX"),"FREQ")
-    FusionMotCleToFact(jdc,"IMPR_STURM",("CHAR_CRIT_MIN","CHAR_CRIT_MAX"),"CHAR_CRIT")
+    fusionMotCleToFact(jdc,"IMPR_STURM",("FREQ_MIN","FREQ_MAX"),"FREQ")
+    fusionMotCleToFact(jdc,"IMPR_STURM",("CHAR_CRIT_MIN","CHAR_CRIT_MAX"),"CHAR_CRIT")
     # Ajout COMPTAGE
     chercheOperInsereFacteurSiRegle(jdc,"IMPR_STURM","COMPTAGE",((("NMAX_ITER_SHIFT","PREC_SHIFT","SEUIL_FREQ"),"existeMCFParmi"),),1)
     moveMotClefInOperToFact(jdc,"IMPR_STURM","NMAX_ITER_SHIFT","COMPTAGE")
@@ -1186,48 +1186,48 @@ def traduc(infile,outfile,flog=None):
     # Renommage de la commande
     renameCommande(jdc,"IMPR_STURM","INFO_MODE", )
 
-    ####   Traitement de IMPR_TABLE   ##############################
+    ####   traitement de IMPR_TABLE   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"IMPR_TABLE","SENSIBILITE",pasDeRegle(),0)
     # Renommage critere table
     dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
-    ChangementValeurDsMCF(jdc,"IMPR_TABLE","FILTRE","CRIT_COMP",dCRIT)
+    changementValeurDsMCF(jdc,"IMPR_TABLE","FILTRE","CRIT_COMP",dCRIT)
     # Suppression de FORMAT_C
-    GenereErreurMCF(jdc,"IMPR_TABLE","FORMAT_C")
+    genereErreurMCF(jdc,"IMPR_TABLE","FORMAT_C")
 
-    ####   Traitement de INCLUDE   ##############################
+    ####   traitement de INCLUDE   ##############################
     # Rien à faire
 
-    ####   Traitement de INCLUDE_MATERIAU   ##############################
+    ####   traitement de INCLUDE_MATERIAU   ##############################
     # Rien à faire
 
-    ####   Traitement de INFO_EXEC_ASTER   ##############################
+    ####   traitement de INFO_EXEC_ASTER   ##############################
     # Rien à faire
 
-    ####   Traitement de INFO_FONCTION   ##############################
+    ####   traitement de INFO_FONCTION   ##############################
     # Rien à faire
 
-    ####   Traitement de INFO_MODE   ##############################
+    ####   traitement de INFO_MODE   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de LIRE_CHAMP   ##############################
+    ####   traitement de LIRE_CHAMP   ##############################
     # Rien à faire
 
-    ####   Traitement de LIRE_FONCTION   ##############################
+    ####   traitement de LIRE_FONCTION   ##############################
     # Rien à faire
 
-    ####   Traitement de LIRE_IMPE_MISS   ##############################
+    ####   traitement de LIRE_IMPE_MISS   ##############################
     # Rien à faire
 
-    ####   Traitement de LIRE_INTE_SPEC   ##############################
+    ####   traitement de LIRE_INTE_SPEC   ##############################
     # Rien à faire
 
-    ####   Traitement de LIRE_MAILLAGE   ##############################
+    ####   traitement de LIRE_MAILLAGE   ##############################
     # Rien à faire
 
-    ####   Traitement de LIRE_RESU   ##############################
+    ####   traitement de LIRE_RESU   ##############################
     # Suppression du type HARM_GENE
-    GenereErreurValeur(jdc,"LIRE_RESU","TYPE_RESU",("'HARM_GENE'",))
+    genereErreurValeur(jdc,"LIRE_RESU","TYPE_RESU",("'HARM_GENE'",))
     # renommage de MATR_A et MATR_B
     renameMotCle(jdc,"LIRE_RESU","MATR_A","MATR_RIGI")
     renameMotCle(jdc,"LIRE_RESU","MATR_B","MATR_MASS")
@@ -1237,72 +1237,72 @@ def traduc(infile,outfile,flog=None):
                 "'PMPB_ELNO'","'PMPB_NOEU'","'SITQ_ELNO'","'SICA_ELNO'",
                 "'SICO_ELNO'","'SITU_ELNO'","'SICA_NOEU'","'SICO_NOEU'",
                 "'SPMX_ELGA'","'VACO_ELNO'","'VATU_ELNO'",]
-    GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",lSUPCHAMPS)
-    GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",lSUPCHAMPS)
-    GenereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",lSUPCHAMPS)
+    genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",lSUPCHAMPS)
+    genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",lSUPCHAMPS)
+    genereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",lSUPCHAMPS)
 
-    ####   Traitement de LIRE_TABLE   ##############################
+    ####   traitement de LIRE_TABLE   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_ADAP_MAIL   ##############################
+    ####   traitement de MACR_ADAP_MAIL   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"MACR_ADAP_MAIL","SENSIBILITE",pasDeRegle(),0)
     # Changement de version
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
+    changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
     # Changement d'adaptation
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",{"RAFFINEMENT_ZONE":"RAFF_DERA_ZONE"})
+    changementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",{"RAFFINEMENT_ZONE":"RAFF_DERA_ZONE"})
     # Renommage du mot-clé ELEMENTS_NON_HOMARD
     renameMotCle(jdc,"MACR_ADAP_MAIL","ELEMENTS_NON_HOMARD","ELEMENTS_ACCEPTES")
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
+    changementValeur(jdc,"MACR_ADAP_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
 
-    ####   Traitement de MACR_ASCOUF_CALC   ##############################
+    ####   traitement de MACR_ASCOUF_CALC   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_ASCOUF_MAIL   ##############################
+    ####   traitement de MACR_ASCOUF_MAIL   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_ASPIC_CALC   ##############################
+    ####   traitement de MACR_ASPIC_CALC   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_ASPIC_MAIL   ##############################
+    ####   traitement de MACR_ASPIC_MAIL   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_CARA_POUTRE   ##############################
+    ####   traitement de MACR_CARA_POUTRE   ##############################
     renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_Y","SYME_ZZ")
     renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_X","SYME_Y")
     renameMotCle(jdc,"MACR_CARA_POUTRE","SYME_ZZ","SYME_Z")
 
-    ####   Traitement de MACR_ECLA_PG   ##############################
+    ####   traitement de MACR_ECLA_PG   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_ECRE_CALC   ##############################
+    ####   traitement de MACR_ECRE_CALC   ##############################
     # Changement de version
-    ChangementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
+    changementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
 
-    ####   Traitement de MACR_ECREVISSE   ##############################
+    ####   traitement de MACR_ECREVISSE   ##############################
     # Changement de version
-    ChangementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
+    changementValeur(jdc,"MACR_ECRE_CALC","VERSION",{"3.1.1":"3.2.1","3.1.2":"3.2.1","3.2":"3.2.1"})
 
-    ####   Traitement de MACR_ELEM_DYNA   ##############################
+    ####   traitement de MACR_ELEM_DYNA   ##############################
     # Rien à faire
 
-    ####   Traitement de MACR_FIABILITE   ##############################
-    GenereErreurPourCommande(jdc,("MACR_FIABILITE",))
+    ####   traitement de MACR_FIABILITE   ##############################
+    genereErreurPourCommande(jdc,("MACR_FIABILITE",))
 
-    ####   Traitement de MACR_FIAB_IMPR   ##############################
-    GenereErreurPourCommande(jdc,("MACR_FIAB_IMPR",))
+    ####   traitement de MACR_FIAB_IMPR   ##############################
+    genereErreurPourCommande(jdc,("MACR_FIAB_IMPR",))
 
-    ####   Traitement de MACR_INFO_MAIL   ##############################
+    ####   traitement de MACR_INFO_MAIL   ##############################
     # Changement de version
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_1":"V10_6"})
     # Renommage du mot-clé ELEMENTS_NON_HOMARD
     renameMotCle(jdc,"MACR_INFO_MAIL","ELEMENTS_NON_HOMARD","ELEMENTS_ACCEPTES")
-    ChangementValeur(jdc,"MACR_INFO_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
+    changementValeur(jdc,"MACR_INFO_MAIL","ELEMENTS_ACCEPTES",{"REFUSER":"HOMARD","IGNORER":"IGNORE_PYRA"})
 
-    ####   Traitement de MACR_LIGN_COUPE   ##############################
+    ####   traitement de MACR_LIGN_COUPE   ##############################
     # Rien à faire
 
-    ####   Traitement de MACRO_ELAS_MULT   ##############################
+    ####   traitement de MACRO_ELAS_MULT   ##############################
     # Résorption de NUME_COUCHE NIVE_COUCHE
     removeMotCleInFact(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","NUME_COUCHE",pasDeRegle(),0)
     removeMotCleInFact(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","NIVE_COUCHE",pasDeRegle(),0)
@@ -1316,29 +1316,29 @@ def traduc(infile,outfile,flog=None):
           "'QIRE_ELNO'","'QIZ1_ELEM'","'QIZ2_ELEM'","'EPEQ_ELGA'","'FORC_NODA'",
           "'REAC_NODA'","'EPSI_NOEU'","'SIGM_NOEU'","'EFGE_NOEU'","'SIEQ_NOEU'",
           "'EPEQ_NOEU'","'FLUX_NOEU'",]
-    GenereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",lOPT)
+    genereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",lOPT)
 
-    ####   Traitement de MACRO_EXPANS   ##############################
+    ####   traitement de MACRO_EXPANS   ##############################
     # Rien à faire
 
-    ####   Traitement de MACRO_MATR_AJOU   ##############################
+    ####   traitement de MACRO_MATR_AJOU   ##############################
     # Rien à faire
 
-    ####   Traitement de MACRO_MATR_ASSE   ##############################
+    ####   traitement de MACRO_MATR_ASSE   ##############################
     # Suppression de paramètres mémoire
     removeMotCleInFact(jdc,"MACRO_MATR_ASSE","SOLVEUR","OUT_OF_CORE",pasDeRegle(),0)
     removeMotCleInFact(jdc,"MACRO_MATR_ASSE","SOLVEUR","LIBERE_MEMOIRE",pasDeRegle(),0)
     # Suppression de RIGI_MECA_LAGR
-    GenereErreurValeurDsMCF(jdc,"MACRO_MATR_ASSE","MATR_ASSE","OPTION",("'RIGI_MECA_LAGR'",))
-    GenereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","THETA")
-    GenereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","PROPAGATION")
+    genereErreurValeurDsMCF(jdc,"MACRO_MATR_ASSE","MATR_ASSE","OPTION",("'RIGI_MECA_LAGR'",))
+    genereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","THETA")
+    genereErreurMotCleInFact(jdc,"MACRO_MATR_ASSE","MATR_ASSE","PROPAGATION")
     # Renommage de la commande
     renameCommande(jdc,"MACRO_MATR_ASSE","ASSEMBLAGE", )
 
-    ####   Traitement de MACRO_MISS_3D   ##############################
+    ####   traitement de MACRO_MISS_3D   ##############################
     # Rien à faire
 
-    ####   Traitement de MACRO_MODE_MECA   ##############################
+    ####   traitement de MACRO_MODE_MECA   ##############################
     # renommage de MATR_A et MATR_B
     renameMotCle(jdc,"MACRO_MODE_MECA","MATR_A","MATR_RIGI")
     renameMotCle(jdc,"MACRO_MODE_MECA","MATR_B","MATR_MASS")
@@ -1346,30 +1346,30 @@ def traduc(infile,outfile,flog=None):
     renameMotCle(jdc,"MACRO_MODE_MECA","CALC_FREQ","CALCFREQ")
     moveMotCleFromFactToFather(jdc,"MACRO_MODE_MECA","CALCFREQ","FREQ_MIN")
     moveMotCleFromFactToFather(jdc,"MACRO_MODE_MECA","CALCFREQ","FREQ_MAX")
-    FusionMotCleToFact(jdc,"MACRO_MODE_MECA",("FREQ_MIN","FREQ_MAX"),"FREQ")
+    fusionMotCleToFact(jdc,"MACRO_MODE_MECA",("FREQ_MIN","FREQ_MAX"),"FREQ")
     moveMotClefInOperToFact(jdc,"MACRO_MODE_MECA","FREQ","CALCFREQ",)
     renameMotCle(jdc,"MACRO_MODE_MECA","CALCFREQ","CALC_FREQ")
     removeMotCleInFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","NB_BLOC_FREQ",pasDeRegle(),0)
     renameMotCleInFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","STOP_FREQ_VIDE","STOP_BANDE_VIDE",pasDeRegle(),0)
     # Renommage critere de Sturm
-    ChangementValeurDsMCF(jdc,"MACRO_MODE_MECA","VERI_MODE","STURM",{"OUI":"GLOBAL",})
+    changementValeurDsMCF(jdc,"MACRO_MODE_MECA","VERI_MODE","STURM",{"OUI":"GLOBAL",})
  
-    ####   Traitement de MACRO_PROJ_BASE   ##############################
+    ####   traitement de MACRO_PROJ_BASE   ##############################
     renameMotCle(jdc,"MACRO_PROJ_BASE","PROFIL","STOCKAGE")
     # Renommage de la commande
     renameCommande(jdc,"MACRO_PROJ_BASE","PROJ_BASE", )
 
-    ####   Traitement de MACR_RECAL   ##############################
+    ####   traitement de MACR_RECAL   ##############################
     renameMotCle(jdc,"MACR_RECAL","POIDS","LIST_POIDS")
 
-    ####   Traitement de MACR_SPECTRE   ##############################
+    ####   traitement de MACR_SPECTRE   ##############################
     # Rien à faire
 
-    ####   Traitement de MECA_STATIQUE   ##############################
+    ####   traitement de MECA_STATIQUE   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"MECA_STATIQUE","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de MODE_ITER_INV   ##############################
+    ####   traitement de MODE_ITER_INV   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"MODE_ITER_INV","SENSIBILITE",pasDeRegle(),0)
     # renommage de MATR_A, MATR_B et MATR_C
@@ -1384,7 +1384,7 @@ def traduc(infile,outfile,flog=None):
     renameMotCle(jdc,"MODE_ITER_INV","MATR_A","MATR_RIGI")
     renameMotCle(jdc,"MODE_ITER_INV","MATR_B","MATR_MASS")
 
-    ####   Traitement de MODE_ITER_SIMULT   ##############################
+    ####   traitement de MODE_ITER_SIMULT   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"MODE_ITER_SIMULT","SENSIBILITE",pasDeRegle(),0)
     # renommage de MATR_A, MATR_B et MATR_C
@@ -1401,14 +1401,14 @@ def traduc(infile,outfile,flog=None):
     # renommage STOP_FREQ_VIDE
     renameMotCle(jdc,"MODE_ITER_SIMULT","STOP_FREQ_VIDE","STOP_BANDE_VIDE")
 
-    ####   Traitement de MODE_STATIQUE   ##############################
+    ####   traitement de MODE_STATIQUE   ##############################
     # renommage du mot-clé FREQ
     renameMotCleInFact(jdc,"MODE_STATIQUE","MODE_INTERF","FREQ","SHIFT",pasDeRegle(),0)
 
-    ####   Traitement de MODI_MODELE_XFEM   ##############################
-    GenereErreurValeur(jdc,"MODI_MODELE_XFEM","CONTACT",("'P1P1A'",))
+    ####   traitement de MODI_MODELE_XFEM   ##############################
+    genereErreurValeur(jdc,"MODI_MODELE_XFEM","CONTACT",("'P1P1A'",))
 
-    ####   Traitement de MODI_REPERE   ##############################
+    ####   traitement de MODI_REPERE   ##############################
     # renommage de DEFI_REPERE
     renameMotCle(jdc,"MODI_REPERE","DEFI_REPERE","AFFE")
     moveMotCleFromFactToFather(jdc,"MODI_REPERE","AFFE","REPERE")
@@ -1418,58 +1418,58 @@ def traduc(infile,outfile,flog=None):
     moveMotClefInOperToFact(jdc,"MODI_REPERE","MAILLE","AFFE",)
     moveMotClefInOperToFact(jdc,"MODI_REPERE","NOEUD","AFFE",)
 
-    ####   Traitement de NORM_MODE   ##############################
+    ####   traitement de NORM_MODE   ##############################
     removeMotCle(jdc,"NORM_MODE","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de NUME_DDL   ##############################
+    ####   traitement de NUME_DDL   ##############################
     # Rien à faire
 
-    ####   Traitement de NUME_DDL_GENE   ##############################
+    ####   traitement de NUME_DDL_GENE   ##############################
     # Rien à faire
 
-    ####   Traitement de OBSERVATION   ##############################
+    ####   traitement de OBSERVATION   ##############################
     # renommage de MATR_A et MATR_B
     renameMotCle(jdc,"OBSERVATION","MATR_A","MATR_RIGI")
     renameMotCle(jdc,"OBSERVATION","MATR_B","MATR_MASS")
 
-    ####   Traitement de POST_BORDET   ##############################
+    ####   traitement de POST_BORDET   ##############################
     # Rien à faire
     
-    ####   Traitement de POST_CHAMP   ##############################
+    ####   traitement de POST_CHAMP   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de POST_CHAM_XFEM   ##############################
+    ####   traitement de POST_CHAM_XFEM   ##############################
     # Suppression mot-clé MAILLAGE_SAIN
     removeMotCle(jdc,"POST_CHAM_XFEM","MAILLAGE_SAIN",pasDeRegle(),0)
 
-    ####   Traitement de POST_COQUE   ##############################
+    ####   traitement de POST_COQUE   ##############################
     # Rien à faire
 
-    ####   Traitement de POST_DECOLLEMENT   ##############################
+    ####   traitement de POST_DECOLLEMENT   ##############################
     # Rien à faire
 
-    ####   Traitement de POST_DYNA_ALEA   ##############################
+    ####   traitement de POST_DYNA_ALEA   ##############################
     # Suppression du mot-clé NUME_VITE_FLUI
     removeMotCle(jdc,"POST_DYNA_ALEA","NUME_VITE_FLUI",pasDeRegle(),0)
 
-    ####   Traitement de POST_ELEM   ##############################
+    ####   traitement de POST_ELEM   ##############################
     # Rien à faire
 
-    ####   Traitement de POST_ENDO_FISS   ##############################
+    ####   traitement de POST_ENDO_FISS   ##############################
     # Suppression du mot-clé MODELE
     removeMotCle(jdc,"POST_ENDO_FISS","MODELE",pasDeRegle(),0)
     # Renommage de SEUIL
     renameMotCleInFact(jdc,"POST_ENDO_FISS","RECHERCHE","SEUIL","BORNE_MIN",pasDeRegle(),0)
 
-    ####   Traitement de POST_FATIGUE   ##############################
+    ####   traitement de POST_FATIGUE   ##############################
     # Suppression du chargement periodique
-    GenereErreurValeur(jdc,"POST_FATIGUE","CHARGEMENT",("'PERIODIQUE'",))
+    genereErreurValeur(jdc,"POST_FATIGUE","CHARGEMENT",("'PERIODIQUE'",))
 
-    ####   Traitement de POST_GP   ##############################
+    ####   traitement de POST_GP   ##############################
     # Suppression de POST_GP au profit de CALC_GP
-    GenereErreurPourCommande(jdc,("POST_GP",))
+    genereErreurPourCommande(jdc,("POST_GP",))
 
-    ####   Traitement de POST_K1_K2_K3   ##############################
+    ####   traitement de POST_K1_K2_K3   ##############################
     # Suppression de VECT_K1
     removeMotCle(jdc,"POST_K1_K2_K3","VECT_K1",pasDeRegle(),0)
     # Suppression de SYME_CHAR
@@ -1483,31 +1483,31 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"POST_K1_K2_K3","DTAN_ORIG",pasDeRegle(),0)
     removeMotCle(jdc,"POST_K1_K2_K3","DTAN_EXTR",pasDeRegle(),0)
 
-    ####   Traitement de POST_K_TRANS   ##############################
+    ####   traitement de POST_K_TRANS   ##############################
     # Suppression de la possibilité de donner un mode_meca
-    GenereErreurMotCleInFact(jdc,"POST_K_TRANS","K_MODAL","RESU_MODA")
+    genereErreurMotCleInFact(jdc,"POST_K_TRANS","K_MODAL","RESU_MODA")
 
-    ####   Traitement de POST_MAC3COEUR   ##############################
+    ####   traitement de POST_MAC3COEUR   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de POST_MAIL_XFEM   ##############################
+    ####   traitement de POST_MAIL_XFEM   ##############################
     # Suppression du mot-clé MAILLAGE_SAIN
     removeMotCle(jdc,"POST_MAIL_XFEM","MAILLAGE_SAIN",pasDeRegle(),0)
 
-    ####   Traitement de POST_RCCM   ##############################
+    ####   traitement de POST_RCCM   ##############################
     # Rien à faire
 
-    ####   Traitement de POST_RELEVE_T   ##############################
+    ####   traitement de POST_RELEVE_T   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"POST_RELEVE_T","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de POST_RUPTURE   ##############################
+    ####   traitement de POST_RUPTURE   ##############################
     # Rien à faire, n'existe pas en 10
 
-    ####   Traitement de POST_USURE   ##############################
+    ####   traitement de POST_USURE   ##############################
     # Rien à faire
 
-    ####   Traitement de POURSUITE   ##############################
+    ####   traitement de POURSUITE   ##############################
     # Suppression du mot-clé TITRE
     removeMotCleInFact(jdc,"POURSUITE","CATALOGUE","TITRE",pasDeRegle(),0)
     removeMotCle(jdc,"POURSUITE","IMPRESSION",pasDeRegle(),0)
@@ -1518,66 +1518,66 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"POURSUITE","MEMOIRE","PARTITION",pasDeRegle(),0)
     removeMotCleInFact(jdc,"POURSUITE","MEMOIRE","DYNAMIQUE",pasDeRegle(),0)
 
-    ####   Traitement de PROJ_BASE   ##############################
+    ####   traitement de PROJ_BASE   ##############################
     # Suppression de RESU_GENE pour défaut de validation
-    GenereErreurMCF(jdc,"PROJ_BASE","RESU_GENE")
+    genereErreurMCF(jdc,"PROJ_BASE","RESU_GENE")
 
-    ####   Traitement de PROJ_CHAMP   ##############################
+    ####   traitement de PROJ_CHAMP   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"PROJ_CHAMP","SENSIBILITE",pasDeRegle(),0)
 
-    ####   Traitement de PROJ_RESU_BASE   ##############################
+    ####   traitement de PROJ_RESU_BASE   ##############################
     # Suppression de RESU_GENE pour défaut de validation
-    GenereErreurMCF(jdc,"PROJ_RESU_BASE","RESU_GENE")
+    genereErreurMCF(jdc,"PROJ_RESU_BASE","RESU_GENE")
 
-    ####   Traitement de PROJ_SPEC_BASE   ##############################
+    ####   traitement de PROJ_SPEC_BASE   ##############################
     # Rien à faire
 
-    ####   Traitement de PROPA_FISS   ##############################
+    ####   traitement de PROPA_FISS   ##############################
     # Suppression de DTAN_ORIG et DTAN_EXTR pour calcul automatique
     removeMotCleInFact(jdc,"PROPA_FISS","FISSURE","DTAN_ORIG",pasDeRegle(),0)
     removeMotCleInFact(jdc,"PROPA_FISS","FISSURE","DTAN_EXTR",pasDeRegle(),0)
 
-    ####   Traitement de PROPA_XFEM   ##############################
+    ####   traitement de PROPA_XFEM   ##############################
     # Suppression paramètres Loi de Paris
     removeMotCle(jdc,"PROPA_XFEM","NB_POINT_FOND",pasDeRegle(),0)
     removeMotCle(jdc,"PROPA_XFEM","TABLE",pasDeRegle(),0)
     removeMotCle(jdc,"PROPA_XFEM","LOI_PROPA",pasDeRegle(),0)
     removeMotCle(jdc,"PROPA_XFEM","COMP_LINE",pasDeRegle(),0)
 
-    ####   Traitement de RAFF_XFEM   ##############################
+    ####   traitement de RAFF_XFEM   ##############################
     # Rien à faire
 
-    ####   Traitement de RECU_FONCTION   ##############################
+    ####   traitement de RECU_FONCTION   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"RECU_FONCTION","SENSIBILITE",pasDeRegle(),0)
     # Renommage critere table
     dCRIT={"ABS_MAXI":"MAXI_ABS","ABS_MINI":"MINI_ABS"}
-    ChangementValeurDsMCF(jdc,"RECU_FONCTION","FILTRE","CRIT_COMP",dCRIT)
+    changementValeurDsMCF(jdc,"RECU_FONCTION","FILTRE","CRIT_COMP",dCRIT)
 
-    ####   Traitement de RECU_GENE   ##############################
+    ####   traitement de RECU_GENE   ##############################
     # Rien à faire
 
-    ####   Traitement de RESOUDRE   ##############################
+    ####   traitement de RESOUDRE   ##############################
     # Suppression d'algo pour PETSc
     removeMotCleSiRegle(jdc,"RESOUDRE","ALGORITHME",((("BCGS","BICG","TFQMR",),"MCaPourValeur"),))
 
-    ####   Traitement de REST_SPEC_PHYS   ##############################
+    ####   traitement de REST_SPEC_PHYS   ##############################
     # Rien à faire
 
-    ####   Traitement de SIMU_POINT_MAT   ##############################
+    ####   traitement de SIMU_POINT_MAT   ##############################
     # VALE_REF obligatoire si NOM_VARC in ('TEMP', 'SECH')
     lNOMVARC=["CORR","IRRA","HYDR","EPSA","M_ACIER","M_ZIRC","NEUT1","NEUT2"]
     removeMotCleInFactSiRegle(jdc,"SIMU_POINT_MAT","AFFE_VARC","VALE_REF",((("NOM_VARC",lNOMVARC,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"SIMU_POINT_MAT","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de STANLEY   ##############################
+    ####   traitement de STANLEY   ##############################
     # Rien à faire
 
-    ####   Traitement de STAT_NON_LINE   ##############################
+    ####   traitement de STAT_NON_LINE   ##############################
     # Renommage de IMPLEX
-    ChangementValeur(jdc,"STAT_NON_LINE","METHODE",{"IMPL_EX":"IMPLEX"})
+    changementValeur(jdc,"STAT_NON_LINE","METHODE",{"IMPL_EX":"IMPLEX"})
     removeMotCle(jdc,"STAT_NON_LINE","IMPL_EX",pasDeRegle(),0)
     # Renommage CRIT_FLAMB en CRIT_STAB
     renameMotCle(jdc,"STAT_NON_LINE","CRIT_FLAMB","CRIT_STAB")
@@ -1591,14 +1591,14 @@ def traduc(infile,outfile,flog=None):
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"STAT_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de THER_LINEAIRE   ##############################
+    ####   traitement de THER_LINEAIRE   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"THER_LINEAIRE","SENSIBILITE",pasDeRegle(),0)
     removeMotCle(jdc,"THER_LINEAIRE","SENS_INIT",pasDeRegle(),0)
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"THER_LINEAIRE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de THER_NON_LINE   ##############################
+    ####   traitement de THER_NON_LINE   ##############################
     # Résorption de la sensibilité
     removeMotCle(jdc,"THER_NON_LINE","SENSIBILITE",pasDeRegle(),0)
     # Suppression du mot clé OPTION   ######################################
@@ -1606,7 +1606,7 @@ def traduc(infile,outfile,flog=None):
     # Suppression de ARCHIVAGE/DETR_NUME_SUIV
     removeMotCleInFact(jdc,"THER_NON_LINE","ARCHIVAGE","DETR_NUME_SUIV",pasDeRegle(),0)
 
-    ####   Traitement de THER_NON_LINE_MO   ##############################
+    ####   traitement de THER_NON_LINE_MO   ##############################
     # Rien à faire
 
     #################################################################
@@ -1617,7 +1617,7 @@ def traduc(infile,outfile,flog=None):
     log.ferme(hdlr)
 
 def main():
-    parser = optparse.OptionParser(usage=usage)
+    parser = optparse.Optionparser(usage=usage)
 
     parser.add_option('-i','--infile', dest="infile", default='toto.comm',
         help="Le fichier à traduire")
index 7602c8934138d7ddc5d88220f9d70316b10367ee..37212deb7ee37302f89e6a3bb14c9507c33b8a35 100755 (executable)
@@ -163,11 +163,11 @@ def traduc(infile,outfile,flog=None):
     #Parse les mocles des commandes
     parseKeywords(root)
     
-    ####   Traitement de DEFI_PART_PA_OPS   ##############################
-    GenereErreurPourCommande(jdc,"DEFI_PART_PA_OPS")
+    ####   traitement de DEFI_PART_PA_OPS   ##############################
+    genereErreurPourCommande(jdc,"DEFI_PART_PA_OPS")
 
-    ####   Traitement de AFFE_CARA_ELEM   ##############################
-    ChangementValeurDsMCFSiRegle(jdc,"AFFE_CARA_ELEM","POUTRE","CARA",{"R1":"R_DEBUT","R2":"R_FIN",
+    ####   traitement de AFFE_CARA_ELEM   ##############################
+    changementValeurDsMCFSiRegle(jdc,"AFFE_CARA_ELEM","POUTRE","CARA",{"R1":"R_DEBUT","R2":"R_FIN",
                                         "EP1":"EP_DEBUT","EP2":"EP_FIN"},
                                     ((("POUTRE","MAILLE",),"nexistepasMCsousMCF"),
                                     (("POUTRE","SECTION","CERCLE",jdc),"MCsousMCFaPourValeur"),
@@ -175,7 +175,7 @@ def traduc(infile,outfile,flog=None):
                                     ),
                         )
 
-    ####   Traitement de AFFE_CHAR_MECA   ##############################
+    ####   traitement de AFFE_CHAR_MECA   ##############################
     # Suppression du mot-clé METHODE
     removeMotCle(jdc,"AFFE_CHAR_MECA","METHODE",pasDeRegle(),0)    
     # Suppression des mot-clés LIAISON_XFEM
@@ -189,20 +189,20 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_SOLIDE","ANGL_NAUT",pasDeRegle(),0)
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_SOLIDE","CENTRE",pasDeRegle(),0)
 
-    ####   Traitement de AFFE_CHAR_MECA_F   ##############################
+    ####   traitement de AFFE_CHAR_MECA_F   ##############################
     # Suppression du mot-clé METHODE
     removeMotCle(jdc,"AFFE_CHAR_MECA_F","METHODE",pasDeRegle(),0)
     # Résorption des mot-clés ANGLE_NAUT et CENTRE
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_SOLIDE","ANGL_NAUT",pasDeRegle(),0)
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_SOLIDE","CENTRE",pasDeRegle(),0)
 
-    GenereErreurMotCleInFact(jdc,"AFFE_CHAR_MECA_F","ONDE_PLANE","DIRECTION")
+    genereErreurMotCleInFact(jdc,"AFFE_CHAR_MECA_F","ONDE_PLANE","DIRECTION")
 
-    ####   Traitement de AFFE_CHAR_THER   ##############################
+    ####   traitement de AFFE_CHAR_THER   ##############################
     # Suppression du mot-clé METHODE
     removeMotCle(jdc,"AFFE_CHAR_THER","METHODE",pasDeRegle(),0)
 
-    ####   Traitement de AFFE_MODELE   ##############################
+    ####   traitement de AFFE_MODELE   ##############################
     # Suppression des mot-clés GRILLE et VERIF
     removeMotCle(jdc,"AFFE_MODELE","GRILLE",pasDeRegle(),0)
     removeMotCle(jdc,"AFFE_MODELE","VERIF",pasDeRegle(),0)
@@ -220,95 +220,95 @@ def traduc(infile,outfile,flog=None):
     dINCO.update(d3DINCO)
     dINCO.update(dAXIS)
     dINCO.update(dDPLAN)
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dINCO)
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dINCO)
 
-    ####   Traitement de ASSEMBLAGE   ##############################
-    GenereErreurValeurDsMCF(jdc,"ASSEMBLAGE","MATR_ASSE","OPTION",("'MASS_THER'",))
+    ####   traitement de ASSEMBLAGE   ##############################
+    genereErreurValeurDsMCF(jdc,"ASSEMBLAGE","MATR_ASSE","OPTION",("'MASS_THER'",))
 
-    ####   Traitement de CALC_ESSAI_GEOMECA   ##############################
+    ####   traitement de CALC_ESSAI_GEOMECA   ##############################
     renameMotCleInFact(jdc,"CALC_ESSAI_GEOMECA","ESSAI_CISA_C","EPSI_IMPOSE","GAMMA_IMPOSE",pasDeRegle(),0)
     renameMotCleInFact(jdc,"CALC_ESSAI_GEOMECA","ESSAI_CISA_C","EPSI_ELAS","GAMMA_ELAS",pasDeRegle(),0)
 
-    ####   Traitement de CALC_EUROPLEXUS   ##############################
+    ####   traitement de CALC_EUROPLEXUS   ##############################
     removeMotCle(jdc,"CALC_EUROPLEXUS","DIME",pasDeRegle(),0)
-    GenereErreurMCF(jdc,"CALC_EUROPLEXUS","FONC_PARASOL")
+    genereErreurMCF(jdc,"CALC_EUROPLEXUS","FONC_PARASOL")
     removeMotCleInFact(jdc,"CALC_EUROPLEXUS","ARCHIVAGE","CONT_GENER")
 
-    ####   Traitement de CALC_FERRAILLAGE   ##############################
-    GenereErreurPourCommande(jdc,"CALC_FERRAILLAGE")
+    ####   traitement de CALC_FERRAILLAGE   ##############################
+    genereErreurPourCommande(jdc,"CALC_FERRAILLAGE")
 
-    ####   Traitement de CALC_FONCTION   ##############################
-    AjouteMotClefDansFacteur(jdc,"CALC_FONCTION","CORR_ACCE","METHODE='POLYNOME'",pasDeRegle(),0)
-    GenereErreurMotCleInFact(jdc,"CALC_FONCTION","DSP","FREQ")
+    ####   traitement de CALC_FONCTION   ##############################
+    ajouteMotClefDansFacteur(jdc,"CALC_FONCTION","CORR_ACCE","METHODE='POLYNOME'",pasDeRegle(),0)
+    genereErreurMotCleInFact(jdc,"CALC_FONCTION","DSP","FREQ")
 
-    ####   Traitement de CALC_G   ##############################
+    ####   traitement de CALC_G   ##############################
     removeMotCleInFact(jdc,"CALC_G","COMP_ELAS","RESI_INTE_RELA",pasDeRegle(),0)
     removeMotCleInFact(jdc,"CALC_G","COMP_ELAS","ITER_INTE_MAXI",pasDeRegle(),0)
 
-    ####   Traitement de CALC_FATIGUE   ##############################
-    ChangementValeur(jdc,"CALC_FATIGUE","COURBE_GRD_VIE",{"MANSON_C":"MANSON_COFFIN",})
+    ####   traitement de CALC_FATIGUE   ##############################
+    changementValeur(jdc,"CALC_FATIGUE","COURBE_GRD_VIE",{"MANSON_C":"MANSON_COFFIN",})
 
-    ####   Traitement de CALC_IFS_DNL   ##############################
+    ####   traitement de CALC_IFS_DNL   ##############################
     removeMotCle(jdc,"CALC_IFS_DNL","ENERGIE",pasDeRegle(),0)
 
-    ####   Traitement de CALC_MAC3COEUR   ##############################
-    AjouteMotClefDansFacteur(jdc,"CALC_MAC3COEUR","DEFORMATION","ARCHIMEDE = 'OUI'",pasDeRegle())
+    ####   traitement de CALC_MAC3COEUR   ##############################
+    ajouteMotClefDansFacteur(jdc,"CALC_MAC3COEUR","DEFORMATION","ARCHIMEDE = 'OUI'",pasDeRegle())
 
-    ####   Traitement de CALC_MATR_ELEM   ##############################
-    GenereErreurValeur(jdc,"CALC_MATR_ELEM","OPTION",("'MASS_THER'",))
+    ####   traitement de CALC_MATR_ELEM   ##############################
+    genereErreurValeur(jdc,"CALC_MATR_ELEM","OPTION",("'MASS_THER'",))
 
-    ####   Traitement de CALC_MISS   ##############################
-    GenereErreurValeurDsMCF(jdc,"CALC_MISS","PARAMETRE","ISSF",("'OUI'",))
+    ####   traitement de CALC_MISS   ##############################
+    genereErreurValeurDsMCF(jdc,"CALC_MISS","PARAMETRE","ISSF",("'OUI'",))
 
-    ####   Traitement de CALC_MODAL   ##############################
+    ####   traitement de CALC_MODAL   ##############################
     # renameCommande(jdc,"CALC_MODAL","CALC_MODES", )
-    GenereErreurPourCommande(jdc,"CALC_MODAL")
+    genereErreurPourCommande(jdc,"CALC_MODAL")
 
-    ####   Traitement de CALC_VECT_ELEM   ##############################
-    GenereErreurValeur(jdc,"CALC_VECT_ELEM","OPTION",("'FORC_NODA'",))
+    ####   traitement de CALC_VECT_ELEM   ##############################
+    genereErreurValeur(jdc,"CALC_VECT_ELEM","OPTION",("'FORC_NODA'",))
 
-    ####   Traitement de CREA_MAILLAGE   ##############################
+    ####   traitement de CREA_MAILLAGE   ##############################
     renameMotCle(jdc,"CREA_MAILLAGE","CREA_GROUP_MA","CREA_MAILLE")
-    GenereErreurMCF(jdc,"CREA_MAILLAGE","ECLA_PG")
+    genereErreurMCF(jdc,"CREA_MAILLAGE","ECLA_PG")
     
     lMCLEF=['COQU_VOLU', 'CREA_FISS', 'CREA_GROUP_MA', 'CREA_MAILLE', 'CREA_POI1',
     'ECLA_PG', 'HEXA20_27', 'LINE_QUAD', 'MODI_MAILLE','QUAD_LINE', 
     'REPERE','RESTREINT','PENTA15_18']
-    GenereErreurMCF(jdc,"CREA_MAILLAGE","DETR_GROUP_MA")
+    genereErreurMCF(jdc,"CREA_MAILLAGE","DETR_GROUP_MA")
     removeMotCleInFactSiRegle(jdc,"CREA_MAILLAGE","DETR_GROUP_MA","NB_MAILLE",((lMCLEF,"nexistepasMCFParmi"),))
     renameMotCleInFactSiRegle(jdc,"CREA_MAILLAGE","DETR_GROUP_MA","GROUP_MA","NOM",((lMCLEF,"nexistepasMCFParmi"),))
     renameCommandeSiRegle(jdc,"CREA_MAILLAGE","DEFI_GROUP",((lMCLEF,"nexistepasMCFParmi"),))
 
-    ####   Traitement de DEBUT   ##############################
-    # GenereErreurPourCommande(jdc,("DEBUT",))
+    ####   traitement de DEBUT   ##############################
+    # genereErreurPourCommande(jdc,("DEBUT",))
     removeMotCleInFact(jdc,"DEBUT","CODE","NOM",pasDeRegle(),0)
 
-    ####   Traitement de DEFI_COMPOR   ##############################
-    GenereErreurValeur(jdc,"DEFI_COMPOR","LOCALISATION",["'RL'",]) 
-    GenereErreurValeur(jdc,"DEFI_COMPOR","RELATION_KIT",["'RVMIS_ISOT_CINE'",])
-    GenereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","RELATION",["'LABORD_1D'"])
-    GenereErreurMCF(jdc,"DEFI_COMPOR","POLYCRISTAL")
+    ####   traitement de DEFI_COMPOR   ##############################
+    genereErreurValeur(jdc,"DEFI_COMPOR","LOCALISATION",["'RL'",]) 
+    genereErreurValeur(jdc,"DEFI_COMPOR","RELATION_KIT",["'RVMIS_ISOT_CINE'",])
+    genereErreurValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","RELATION",["'LABORD_1D'"])
+    genereErreurMCF(jdc,"DEFI_COMPOR","POLYCRISTAL")
 
-    ####   Traitement de DEFI_FISS_XFEM   ##############################
-    GenereErreurPourCommande(jdc,("DEFI_FISS_XFEM",))
+    ####   traitement de DEFI_FISS_XFEM   ##############################
+    genereErreurPourCommande(jdc,("DEFI_FISS_XFEM",))
     removeMotCle(jdc,"DEFI_FISS_XFEM","MODELE",pasDeRegle(),0)
     removeMotCle(jdc,"DEFI_FISS_XFEM","MODELE_GRILLE",pasDeRegle(),0)
 
-    ####   Traitement de DEFI_LIST_INST   ##############################
-    ChangementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","ACTION",{"REAC_PRECOND":"DECOUPE"})
+    ####   traitement de DEFI_LIST_INST   ##############################
+    changementValeurDsMCF(jdc,"DEFI_LIST_INST","ECHEC","ACTION",{"REAC_PRECOND":"DECOUPE"})
 
-    ####   Traitement de DEFI_MATER_GC   ##############################
-    AjouteMotClefDansFacteur(jdc,"DEFI_MATER_GC","MAZARS","CODIFICATION='ESSAI'",pasDeRegle(),0)
+    ####   traitement de DEFI_MATER_GC   ##############################
+    ajouteMotClefDansFacteur(jdc,"DEFI_MATER_GC","MAZARS","CODIFICATION='ESSAI'",pasDeRegle(),0)
 
     removeMotCleInFactSiRegle(jdc,"DEFI_MATER_GC","MAZARS","UNITE_LONGUEUR",
                                     ((("MAZARS","CODIFICATION",["ESSAI"],jdc),"MCsousMCFaPourValeurDansListe"),),)
     renameMotCleInFact(jdc,"DEFI_MATER_GC","MAZARS","UNITE_LONGUEUR","UNITE_CONTRAINTE")
-    ChangementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"MM":"MPa"})
-    ChangementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"M":"Pa"})
+    changementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"MM":"MPa"})
+    changementValeurDsMCF(jdc,"DEFI_MATER_GC","MAZARS","UNITE_CONTRAINTE",{"M":"Pa"})
 
-    GenereErreurMCF(jdc,"DEFI_MATER_GC","MAZARS")
+    genereErreurMCF(jdc,"DEFI_MATER_GC","MAZARS")
 
-    ####   Traitement de DEFI_MATERIAU   ##############################
+    ####   traitement de DEFI_MATERIAU   ##############################
     lMLA=["F_MRR_RR", "C_MRR_RR", "F_MTT_TT", "C_MTT_TT", "F_MZZ_ZZ", 
            "C_MZZ_ZZ", "F_MRT_RT", "C_MRT_RT", "F_MRZ_RZ", "C_MRZ_RZ", 
            "F_MTZ_TZ", "C_MTZ_TZ",]
@@ -323,13 +323,13 @@ def traduc(infile,outfile,flog=None):
     
     removeMotCleInFact(jdc,"DEFI_MATERIAU","UMAT","NB_VALE",pasDeRegle(),0)
     removeMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO","NB_VALE",pasDeRegle(),0)
-    liste_mc=["C"+str(i) for i in range(1,198)]
-    FusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT",liste_mc,"LISTE_COEF")
-    FusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO",liste_mc,"LISTE_COEF")
+    listeMc=["C"+str(i) for i in range(1,198)]
+    fusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT",listeMc,"LISTE_COEF")
+    fusionMotCleInFact(jdc,"DEFI_MATERIAU","UMAT_FO",listeMc,"LISTE_COEF")
     
     removeMotCle(jdc,"DEFI_MATERIAU","LABORD_1D",pasDeRegle(),0) 
     
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","DIS_VISC")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","DIS_VISC")
     lDISC=["PUIS_DX", "PUIS_DY", "PUIS_DZ", "PUIS_RX", "PUIS_RY", "PUIS_RZ",
      "COEF_DX", "COEF_DY", "COEF_DZ", "COEF_RX", "COEF_RY", "COEF_RZ"]
     for param in lDISC:
@@ -347,14 +347,14 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","EF",pasDeRegle(),0)
     removeMotCleInFact(jdc,"DEFI_MATERIAU","GLRC_DM","NUF",pasDeRegle(),0)
 
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_FO")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_NL")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_HYDR")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE_FO")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","THER_FO")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","THER_NL")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","THER_HYDR")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","THER_COQUE_FO")
 
 
-    ####   Traitement de DEFI_OBSTACLE   ##############################
+    ####   traitement de DEFI_OBSTACLE   ##############################
     lMCLE=("CRAYON_900","CRAYON_1300","GUID_A_CARTE_900",
     "GUID_B_CARTE_900","GUID_C_CARTE_900","GUID_D_CARTE_900","GUID_E_CARTE_900",
     "GUID_F_CARTE_900","GUID_A_CARTE_1300","GUID_B_CARTE_1300","GUID_C_CARTE_1300",
@@ -368,28 +368,28 @@ def traduc(infile,outfile,flog=None):
     "GUID_B_GCOMB_900","GUID_C_GCOMB_900","GUID_D_GCOMB_900","GUID_E_GCOMB_900",
     "GUID_F_GCOMB_900","GUID_A_GCOMB_1300","GUID_B_GCOMB_1300","GUID_C_GCOMB_1300",
     "GUID_D_GCOMB_1300","GUID_E_GCOMB_1300","GUID_F_GCOMB_1300",)
-    GenereErreurValeur(jdc,"DEFI_OBSTACLE","TYPE",lMCLE)
+    genereErreurValeur(jdc,"DEFI_OBSTACLE","TYPE",lMCLE)
 
-    ####   Traitement de DYNA_TRAN_MODAL   ##############################
+    ####   traitement de DYNA_TRAN_MODAL   ##############################
     removeMotCle(jdc,"DYNA_TRAN_MODAL","LAME_FLUIDE",pasDeRegle(),0)
     removeMotCle(jdc,"DYNA_TRAN_MODAL","PARA_LAME_FLUI",pasDeRegle(),0)
     removeMotCle(jdc,"DYNA_TRAN_MODAL","RELA_TRANSIS",pasDeRegle(),0)
 
-    ####   Traitement de DYNA_VIBRA   ##############################
+    ####   traitement de DYNA_VIBRA   ##############################
     removeMotCle(jdc,"DYNA_VIBRA","LAME_FLUIDE",pasDeRegle(),0)
     removeMotCle(jdc,"DYNA_VIBRA","PARA_LAME_FLUI",pasDeRegle(),0)
     removeMotCle(jdc,"DYNA_VIBRA","RELA_TRANSIS",pasDeRegle(),0)
 
-    ####   Traitement de EXTR_TABLE   ##############################
-    ChangementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"MATR_ELEM":"MATR_TANG_ELEM"})
-    ChangementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"CODE_RETOUR":"CODE_RETOUR_INTE"})
+    ####   traitement de EXTR_TABLE   ##############################
+    changementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"MATR_ELEM":"MATR_TANG_ELEM"})
+    changementValeurDsMCF(jdc,"EXTR_TABLE","FILTRE","VALE_K",{"CODE_RETOUR":"CODE_RETOUR_INTE"})
     
-    ####   Traitement de FACTORISER   ##############################
+    ####   traitement de FACTORISER   ##############################
     renameMotCle(jdc,"FACTORISER","ELIM_LAGR2","ELIM_LAGR")
-    ChangementValeur(jdc,"FACTORISER","ELIM_LAGR",{"OUI":"LAGR2",})
+    changementValeur(jdc,"FACTORISER","ELIM_LAGR",{"OUI":"LAGR2",})
 
-    ####   Traitement de GENE_ACCE_SEISME   ##############################
-    GenereErreurMCF(jdc,"GENE_ACCE_SEISME","MODULATION")
+    ####   traitement de GENE_ACCE_SEISME   ##############################
+    genereErreurMCF(jdc,"GENE_ACCE_SEISME","MODULATION")
     moveMotCleFromFactToFather(jdc,"GENE_ACCE_SEISME","MODULATION","DUREE_PHASE_FORTE")
 
 
@@ -398,48 +398,48 @@ def traduc(infile,outfile,flog=None):
 
     removeMotCleInFact(jdc,"GENE_ACCE_SEISME","DSP","FREQ_PENTE")
 
-    ####   Traitement de IMPR_MISS_3D   ##############################
-    GenereErreurPourCommande(jdc,"IMPR_MISS_3D")
+    ####   traitement de IMPR_MISS_3D   ##############################
+    genereErreurPourCommande(jdc,"IMPR_MISS_3D")
     # removeCommande(jdc,"IMPR_MISS_3D")
 
-    ####   Traitement de IMPR_RESU   ##############################
+    ####   traitement de IMPR_RESU   ##############################
     removeMotCle(jdc,"IMPR_RESU","RESTREINT",pasDeRegle(),0)
 
-    ####   Traitement de INFO_FONCTION   ##############################
-    GenereErreurMCF(jdc,"INFO_FONCTION","NOCI_SEISME")
+    ####   traitement de INFO_FONCTION   ##############################
+    genereErreurMCF(jdc,"INFO_FONCTION","NOCI_SEISME")
 
-    ####   Traitement de LIRE_MAILLAGE   ##############################
+    ####   traitement de LIRE_MAILLAGE   ##############################
     removeMotCle(jdc,"LIRE_MAILLAGE","ABSC_CURV",pasDeRegle(),0)
 
-    ####   Traitement de LIRE_MISS_3D   ##############################
-    GenereErreurPourCommande(jdc,"LIRE_MISS_3D")
+    ####   traitement de LIRE_MISS_3D   ##############################
+    genereErreurPourCommande(jdc,"LIRE_MISS_3D")
 
-    ####   Traitement de MACR_ASCOUF_CALC   ##############################
+    ####   traitement de MACR_ASCOUF_CALC   ##############################
     removeMotCle(jdc,"MACR_ASCOUF_CALC","CL_BOL_P2_GV",pasDeRegle(),0)
-    # GenereErreurMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS")
+    # genereErreurMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS")
 
-    ####   Traitement de MACR_ASCOUF_MAIL   ##############################
-    GenereErreurValeurDsMCF(jdc,"MACR_ASCOUF_MAIL","COUDE","BOL_P2",("'GV'",))
+    ####   traitement de MACR_ASCOUF_MAIL   ##############################
+    genereErreurValeurDsMCF(jdc,"MACR_ASCOUF_MAIL","COUDE","BOL_P2",("'GV'",))
 
-    ####   Traitement de MACR_ASPIC_CALC   ##############################
-    # GenereErreurMCF(jdc,"MACR_ASPIC_CALC","COMP_ELAS")
+    ####   traitement de MACR_ASPIC_CALC   ##############################
+    # genereErreurMCF(jdc,"MACR_ASPIC_CALC","COMP_ELAS")
 
-    ####   Traitement de MACR_ECREVISSE   ##############################
-    GenereErreurMCF(jdc,"MACR_ECREVISSE","COMP_INCR")
+    ####   traitement de MACR_ECREVISSE   ##############################
+    genereErreurMCF(jdc,"MACR_ECREVISSE","COMP_INCR")
 
-    ####   Traitement de MACR_INFO_MAIL   ##############################    
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_6":"V11_2"})
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N":"V11_N"})
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N_PERSO":"V11_N_PERSO"})
+    ####   traitement de MACR_INFO_MAIL   ##############################    
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_6":"V11_2"})
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N":"V11_N"})
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V10_N_PERSO":"V11_N_PERSO"})
 
-    ####   Traitement de MACRO_BASCULE_SCHEMA   ##############################
+    ####   traitement de MACRO_BASCULE_SCHEMA   ##############################
     renameMotCle(jdc,"MACRO_BASCULE_SCHEMA","COMP_INCR_IMPL","COMPORTEMENT_IMPL",pasDeRegle())
     renameMotCle(jdc,"MACRO_BASCULE_SCHEMA","COMP_INCR_EXPL","COMPORTEMENT_EXPL",pasDeRegle())
 
-    ####   Traitement de MACRO_MISS_3D   ##############################
-    GenereErreurPourCommande(jdc,"MACRO_MISS_3D")
+    ####   traitement de MACRO_MISS_3D   ##############################
+    genereErreurPourCommande(jdc,"MACRO_MISS_3D")
 
-    ####   Traitement de MACRO_MODE_MECA   ##############################
+    ####   traitement de MACRO_MODE_MECA   ##############################
     # insereMotCleDansCommande(jdc,"MACRO_MODE_MECA","TYPE_RESU='DYNAMIQUE'")
     chercheOperInsereFacteur(jdc,"MACRO_MODE_MECA","SOLVEUR_MODAL",)
     chercheOperInsereFacteur(jdc,"MACRO_MODE_MECA","OPTION='BANDE'",pasDeRegle(),0)
@@ -453,7 +453,7 @@ def traduc(infile,outfile,flog=None):
     moveMotCleFromFactToFact(jdc,"MACRO_MODE_MECA","CALC_FREQ","DIM_SOUS_ESPACE","SOLVEUR_MODAL")
     renameCommande(jdc,"MACRO_MODE_MECA","CALC_MODES", )
 
-    ####   Traitement de MODE_ITER_INV   ##############################
+    ####   traitement de MODE_ITER_INV   ##############################
     chercheOperInsereFacteur(jdc,"MODE_ITER_INV","SOLVEUR_MODAL",)
     moveMotCleFromFactToFather(jdc,"MODE_ITER_INV","CALC_FREQ","OPTION")
     moveMotCleFromFactToFather(jdc,"MODE_ITER_INV","CALC_CHAR_CRIT","OPTION")
@@ -475,12 +475,12 @@ def traduc(infile,outfile,flog=None):
 
     renameCommande(jdc,"MODE_ITER_INV","CALC_MODES", )
 
-    ####   Traitement de MODE_ITER_SIMULT   ##############################
+    ####   traitement de MODE_ITER_SIMULT   ##############################
     chercheOperInsereFacteur(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL",)
     removeMotCleSiRegle(jdc,"MODE_ITER_SIMULT","OPTION",((("METHODE","TRI_DIAG",jdc),"MCnaPasPourValeur"),),)
     removeMotCleSiRegle(jdc,"MODE_ITER_SIMULT","OPTION",((("OPTION","SANS",jdc),"MCaPourValeur"),),)
     moveMotClefInOperToFact(jdc,"MODE_ITER_SIMULT","OPTION","SOLVEUR_MODAL")
-    ChangementValeurDsMCF(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION",{"MODE_RIGIDE":"OUI"})
+    changementValeurDsMCF(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION",{"MODE_RIGIDE":"OUI"})
     renameMotCleInFact(jdc,"MODE_ITER_SIMULT","SOLVEUR_MODAL","OPTION","MODE_RIGIDE")
     moveMotCleFromFactToFather(jdc,"MODE_ITER_SIMULT","CALC_FREQ","OPTION")
     moveMotCleFromFactToFather(jdc,"MODE_ITER_SIMULT","CALC_CHAR_CRIT","OPTION")
@@ -514,17 +514,17 @@ def traduc(infile,outfile,flog=None):
 
     renameCommande(jdc,"MODE_ITER_SIMULT","CALC_MODES", )
 
-    ####   Traitement de MODI_MAILLAGE   ##############################
-    GenereErreurValeurDsMCF(jdc,"MODI_MAILLAGE","DEFORME","OPTION",("'TRAN_APPUI'",))
+    ####   traitement de MODI_MAILLAGE   ##############################
+    genereErreurValeurDsMCF(jdc,"MODI_MAILLAGE","DEFORME","OPTION",("'TRAN_APPUI'",))
     removeMotCleInFact(jdc,"MODI_MAILLAGE","DEFORME",["GROUP_NO_APPUI"],pasDeRegle(),0)
     removeMotCleInFact(jdc,"MODI_MAILLAGE","DEFORME",["GROUP_NO_STRU"],pasDeRegle(),0)
 
-    ####   Traitement de MODI_MODELE_XFEM   ##############################
-    ChangementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P1P1":"STANDARD",})
-    ChangementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P2P1":"STANDARD",})
+    ####   traitement de MODI_MODELE_XFEM   ##############################
+    changementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P1P1":"STANDARD",})
+    changementValeur(jdc,"MODI_MODELE_XFEM","CONTACT",{"P2P1":"STANDARD",})
 
 
-    ####   Traitement de POST_DYNA_ALEA   ##############################
+    ####   traitement de POST_DYNA_ALEA   ##############################
     chercheOperInsereFacteurSiRegle(jdc,"POST_DYNA_ALEA","INTERSPECTRE",((("INTE_SPEC",),"existe"),),1)
     lPDA=["INTE_SPEC", "NUME_ORDRE_I", "NOEUD_I", "OPTION", "NUME_ORDRE_J",
           "NOEUD_J", "NOM_CMP_I", "NOM_CMP_J", "MOMENT", "DUREE"]
@@ -532,28 +532,28 @@ def traduc(infile,outfile,flog=None):
         moveMotClefInOperToFact(jdc,"POST_DYNA_ALEA",mcle,"INTERSPECTRE")
     removeMotCle(jdc,"POST_DYNA_ALEA","TOUT_ORDRE",pasDeRegle(),0)
 
-    AjouteMotClefDansFacteur(jdc,"POST_DYNA_ALEA","FRAGILITE","METHODE = 'EMV'",pasDeRegle())
+    ajouteMotClefDansFacteur(jdc,"POST_DYNA_ALEA","FRAGILITE","METHODE = 'EMV'",pasDeRegle())
 
-    ####   Traitement de POST_ELEM   ##############################
-    AjouteMotClefDansFacteurSiRegle(jdc,"POST_ELEM","VOLUMOGRAMME","NB_INTERV=5",
+    ####   traitement de POST_ELEM   ##############################
+    ajouteMotClefDansFacteurSiRegle(jdc,"POST_ELEM","VOLUMOGRAMME","NB_INTERV=5",
                                 ((("VOLUMOGRAMME","NB_INTERV",),"nexistepasMCsousMCF"),),)
 
-    ####   Traitement de POST_FATIGUE   ##############################
-    ChangementValeur(jdc,"POST_FATIGUE","DOMMAGE",{"MANSON_C":"MANSON_COFFIN",})
+    ####   traitement de POST_FATIGUE   ##############################
+    changementValeur(jdc,"POST_FATIGUE","DOMMAGE",{"MANSON_C":"MANSON_COFFIN",})
 
-    ####   Traitement de POURSUITE   ##############################
+    ####   traitement de POURSUITE   ##############################
     removeMotCle(jdc,"POURSUITE","CODE",)#"NOM",pasDeRegle(),0)
 
-    ####   Traitement de RECU_FONCTION   ##############################
-    GenereErreurMCF(jdc,"RECU_FONCTION","TABLE")
+    ####   traitement de RECU_FONCTION   ##############################
+    genereErreurMCF(jdc,"RECU_FONCTION","TABLE")
 
-    ####   Traitement de C_COMP_INCR et C_COMP_ELAS   ##############################
+    ####   traitement de C_COMP_INCR et C_COMP_ELAS   ##############################
     lCOM=["CALCUL","STAT_NON_LINE","CALC_G", "CALC_PRECONT","DYNA_NON_LINE","CALC_META",
           "TEST_COMPOR","SIMU_POINT_MAT","CALC_ESSAI_GEOMECA","CALC_FORC_NONL","LIRE_RESU",
           "MACR_ASCOUF_CALC","MACR_ASPIC_CALC","CALC_EUROPLEXUS","MACR_ECREVISSE",]
     for com in lCOM:
         # chercheOperInsereFacteurSiRegle(jdc,com,"COMPORTEMENT",(((["COMPORTEMENT"],),"nexistepasMCFParmi"),),1)
-        FusionMCFToMCF(jdc,com,["COMP_ELAS","COMP_INCR"],"COMPORTEMENT")
+        fusionMCFToMCF(jdc,com,["COMP_ELAS","COMP_INCR"],"COMPORTEMENT")
         # renameMotCle(jdc,com,"COMP_ELAS","COMPORTEMENT")
         # renameMotCle(jdc,com,"COMP_INCR","COMPORTEMENT")
         chercheOperInsereFacteurSiRegle(jdc,com,"ETAT_INIT",((("COMPORTEMENT","SIGM_INIT",),"existeMCsousMCF"),),1)
@@ -561,18 +561,18 @@ def traduc(infile,outfile,flog=None):
         renameMotCleInFact(jdc,com,"ETAT_INIT","SIGM_INIT","SIGM",pasDeRegle(),0)
         removeMotCleInFact(jdc,com,"COMPORTEMENT","SIGM_INIT",pasDeRegle(),0)
 
-        ChangementValeur(jdc,com,"OPTION",{"FORC_INT_ELEM":"FORC_INTE_ELEM"})
+        changementValeur(jdc,com,"OPTION",{"FORC_INT_ELEM":"FORC_INTE_ELEM"})
 
         removeMotCleInFactSiRegle(jdc,com,"COMPORTEMENT","NB_VARI",((("COMPORTEMENT","RELATION","'MFRONT'",jdc),"MCsousMCFaPourValeur"),))
         
 
-    ####   Traitement de TEST_COMPOR   ##############################
-    GenereErreurPourCommande(jdc,"TEST_COMPOR")
+    ####   traitement de TEST_COMPOR   ##############################
+    genereErreurPourCommande(jdc,"TEST_COMPOR")
 
-    ####   Traitement de THER_NON_LINE   ##############################
+    ####   traitement de THER_NON_LINE   ##############################
     renameMotCle(jdc,"THER_NON_LINE","COMP_THER_NL","COMPORTEMENT")
 
-    ####   Traitement de C_SOLVEUR   ##############################
+    ####   traitement de C_SOLVEUR   ##############################
     lCOM=['CALC_ERREUR', 'CALC_FORC_AJOU', 'CALC_IFS_DNL', 'CALC_MATR_AJOU', 'CALC_PRECONT',
         'CREA_ELEM_SSD', 'DEFI_BASE_MODALE', 'DYNA_LINE_HARM', 'DYNA_LINE_TRAN', 'DYNA_NON_LINE', 
         'DYNA_TRAN_MODAL', 'INFO_MODE', 'MACR_ASCOUF_CALC', 'MACR_ASPIC_CALC', 'MACRO_BASCULE_SCHEMA', 
@@ -580,21 +580,21 @@ def traduc(infile,outfile,flog=None):
         'STAT_NON_LINE', 'THER_LINEAIRE', 'THER_NON_LINE', 'THER_NON_LINE_MO', 'CALC_ERC_DYN','CALC_MODES',]
     for com in lCOM:
         # Suppression de ELIM_LAGR2
-        ChangementValeurDsMCF(jdc,com,"SOLVEUR","ELIM_LAGR2",{"OUI":"LAGR2"})
+        changementValeurDsMCF(jdc,com,"SOLVEUR","ELIM_LAGR2",{"OUI":"LAGR2"})
         removeMotCleInFactSiRegle(jdc,com,"SOLVEUR","ELIM_LAGR2",((("SOLVEUR","ELIM_LAGR2","NON",jdc),"MCsousMCFaPourValeur"),))
         renameMotCleInFact(jdc,com,"SOLVEUR","ELIM_LAGR2","ELIM_LAGR")
 
         # Suppression de la méthode FETI
-        GenereErreurValeurDsMCF(jdc,com,"SOLVEUR","METHODE",["FETI"])
+        genereErreurValeurDsMCF(jdc,com,"SOLVEUR","METHODE",["FETI"])
         lMCLE=["NB_REORTHO_DD","NMAX_ITER","INFO_FETI","RESI_RELA","PARTITION"]
         for mocle in lMCLE:
-            GenereErreurMotCleInFact(jdc,com,"SOLVEUR",mocle)
+            genereErreurMotCleInFact(jdc,com,"SOLVEUR",mocle)
     
-    ####   Traitement de DEFI_PART_FETI   ##############################
-    GenereErreurMCF(jdc,"DEFI_PART_FETI","EXCIT")
+    ####   traitement de DEFI_PART_FETI   ##############################
+    genereErreurMCF(jdc,"DEFI_PART_FETI","EXCIT")
     removeMotCle(jdc,"DEFI_PART_FETI","EXCIT",pasDeRegle(),0)
     removeMotCle(jdc,"DEFI_PART_FETI","CORRECTION_CONNEX",pasDeRegle(),0)    
-    GenereErreurPourCommande(jdc,"DEFI_PART_FETI")
+    genereErreurPourCommande(jdc,"DEFI_PART_FETI")
     renameCommande(jdc,"DEFI_PART_FETI","DEFI_PARTITION", )
 
     #################################################################
@@ -605,7 +605,7 @@ def traduc(infile,outfile,flog=None):
     log.ferme(hdlr)
 
 def main():
-    parser = optparse.OptionParser(usage=usage)
+    parser = optparse.Optionparser(usage=usage)
 
     parser.add_option('-i','--infile', dest="infile", default='toto.comm',
         help="Le fichier à traduire")
index 69a53d12d674ddf145f546e8aaec2f37e9699071..5f3b688877ba25abe4f8b0c9a595ffa5c8e6da42 100644 (file)
@@ -37,7 +37,7 @@ from renamemocle  import *
 from inseremocle  import *
 from changeValeur import *
 from movemocle    import *
-from dictErreurs  import GenereErreurPourCommande,GenereErreurMotCleInFact
+from dictErreurs  import genereErreurPourCommande,genereErreurMotCleInFact
 
 import calcG
 
@@ -131,7 +131,7 @@ def traduc(infile,outfile,flog=None):
     parseKeywords(root)
     
     ####################### traitement erreurs ########################
-    GenereErreurPourCommande(jdc,("DEBUT","POST_RCCM","DIST_LIGN_3D","IMPR_OAR","COMB_CHAM_NO","COMB_CHAM_ELEM"))
+    genereErreurPourCommande(jdc,("DEBUT","POST_RCCM","DIST_LIGN_3D","IMPR_OAR","COMB_CHAM_NO","COMB_CHAM_ELEM"))
 
     ####################### traitement CALC_META     #######################
     renameMotCleInFact(jdc,"CALC_META","ETAT_INIT","META_INIT","META_INIT_ELNO")
@@ -159,22 +159,22 @@ def traduc(infile,outfile,flog=None):
 
     dStatNonLine={"ELAS":"ELAS_THER"}
     lavertit=("ELAS")
-    ChangementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dStatNonLine,lavertit)
+    changementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dStatNonLine,lavertit)
 
     lavertit=("CHABOCHE","ASSE_COMBU","OHNO","GLRC")
     dchaboche={"CHABOCHE":"VMIS_CIN1_CHAB","ASSE_COMBU":"XXX_IRA","OHNO":"VISC_TAHERI","GLRC":"GLRC_DAMAGE"}
-    ChangementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
-    ChangementValeurDsMCFAvecAvertissement(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
+    changementValeurDsMCFAvecAvertissement(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
+    changementValeurDsMCFAvecAvertissement(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dchaboche,lavertit)
 
     removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegle(jdc,"STAT_NON_LINE","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegleAvecErreur(jdc,"STAT_NON_LINE","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"STAT_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     renameMotCleInFact(jdc,"STAT_NON_LINE","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
     removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegleAvecErreur(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     renameMotCleInFact(jdc,"DYNA_NON_LINE","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
 
     moveMotClefInOperToFact(jdc,"STAT_NON_LINE","PARM_THETA","COMP_INCR")
@@ -207,17 +207,17 @@ def traduc(infile,outfile,flog=None):
     moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","NU", ("ELAS",))
     moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","RHO",("ELAS",))
     moveMotCleFromFactToFactMulti(jdc,"DEFI_MATERIAU","CABLE","ALPHA",("ELAS",))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","ELAS","NU=0.,",((("ELAS","NU"),"nexistepasMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","ELAS","NU=0.,",((("ELAS","NU"),"nexistepasMCsousMCF"),))
 
     removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","POLY_CFC")
     removeMotCleAvecErreur(jdc,"DEFI_MATERIAU","ECOU_PLAS1")
 
     lavertit=("ELAS_THM","SURF_ETAT_SATU","SURF_ETAT_NSAT","CAM_CLAY_THM","LIQU_SATU_GAT","LIQU_NSAT_GAT")
     dTHM={"ELAS_THM":"xxx", "SURF_ETAT_SATU":"xxx", "SURF_ETAT_NSAT":"xxx","CAM_CLAY_THM":"xxx","LIQU_SATU_GAT":"xxx","LIQU_NSAT_GAT":"xxx"}
-    ChangementValeurAvecAvertissement(jdc,"DEFI_MATERIAU","COMP_THM",dTHM,lavertit)
+    changementValeurAvecAvertissement(jdc,"DEFI_MATERIAU","COMP_THM",dTHM,lavertit)
 
     dfatigue={"MATAKE":"MATAKE_MODI_AC", "DOMM_MAXI":"MATAKE_MODI_AV", "FATEMI_SOCIE":"FATESOCI_MODI_AV"}
-    ChangementValeurDsMCF(jdc,"DEFI_MATERIAU","CISA_PLAN_CRIT","CRITERE",dfatigue)
+    changementValeurDsMCF(jdc,"DEFI_MATERIAU","CISA_PLAN_CRIT","CRITERE",dfatigue)
 
     ####################### traitement IMPR_CO       #######################
     chercheOperInsereFacteurSiRegle(jdc,"IMPR_CO","CONCEPT",((("CO",),"existe"),))
@@ -258,12 +258,12 @@ def traduc(infile,outfile,flog=None):
     moveMotClefInOperToFact(jdc,"CALC_G_LOCAL_T","DEGRE","LISSAGE")
     
     dlocal={"CALC_G_LGLO":"G_LAGR", "G_BILINEAIRE":"G_BILI", "CALC_G_MAX":"G_MAX"}
-    ChangementValeur(jdc,"CALC_G_LOCAL_T","OPTION",dlocal)
+    changementValeur(jdc,"CALC_G_LOCAL_T","OPTION",dlocal)
     #
     dtheta={"CALC_G_LAGR":"G_LAGR_GLOB", "G_BILINEAIRE":"G_BILI_GLOB", "CALC_G_MAX":"G_MAX_GLOB","CALC_G":"CALC_G_GLOB"}
     # Attention si le defaut doit generer un avertissement Il faut le mettre comme dernier mot de la liste
     lavertit=("CALC_G_LAGR","CALC_G","defaut")
-    ChangementValeurAvecAvertissement(jdc,"CALC_G_THETA_T","OPTION",dtheta,lavertit)
+    changementValeurAvecAvertissement(jdc,"CALC_G_THETA_T","OPTION",dtheta,lavertit)
     renameOper(jdc,"CALC_G_LOCAL_T","CALC_G")
     renameOper(jdc,"CALC_G_THETA_T","CALC_G")
 
@@ -292,7 +292,7 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement AFFE_MODELE   #######################
     daffeModele={"PLAN_FISSURE":"PLAN_JOINT", "AXIS_FISSURE":"AXIS_JOINT"}
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",daffeModele)
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",daffeModele)
     removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","APPUI_REP",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","ASSE_GRIL",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleSiRegleAvecErreur(jdc,"AFFE_MODELE","AFFE",((("AFFE","MODELISATION","3D_JOINT_CT",jdc),"MCsousMCFaPourValeur"),))
@@ -304,10 +304,10 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement CALC_ELEM / CALC_NO #######################
     dcalcelemno={"ERRE_ELGA_NORE":"ERRE_ELEM_SIGM","ERRE_ELEM_NOZ1":"ERZ1_ELEM_SIGM","ERRE_ELEM_NOZ2":"ERZ2_ELEM_SIGM","ERRE_ELNO_ELGA":"ERRE_ELNO_ELEM","ERRE_NOEU_ELGA":"ERRE_NOEU_ELEM","ERTH_ELEM_TEMP":"ERRE_ELEM_TEMP","ERTH_ELNO_ELEM":"ERRE_ELNO_ELEM","EPGR_ELNO":"EPFP_ELNO","EPGR_ELGA":"EPFP_ELGA","DURT_ELGA_TEMP":"DURT_ELNO_TEMP"}
-    ChangementValeur(jdc,"CALC_ELEM","OPTION",dcalcelemno)
-    ChangementValeur(jdc,"CALC_NO","OPTION",dcalcelemno)
-    ChangementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dcalcelemno)
-    ChangementValeur(jdc,"TEST_RESU","RESU",dcalcelemno)
+    changementValeur(jdc,"CALC_ELEM","OPTION",dcalcelemno)
+    changementValeur(jdc,"CALC_NO","OPTION",dcalcelemno)
+    changementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dcalcelemno)
+    changementValeur(jdc,"TEST_RESU","RESU",dcalcelemno)
     removeMotCleAvecErreur(jdc,"TEST_RESU","UNITE")
 
     chercheOperInsereFacteurSiRegle(jdc,"CALC_ELEM","REPE_COQUE",((("NUME_COUCHE","NIVE_COUCHE","ANGLE","PLAN"),"existeMCFParmi"),))
@@ -318,7 +318,7 @@ def traduc(infile,outfile,flog=None):
 
     
     ####################### traitement EXTR_MODE #######################
-    AjouteMotClefDansFacteurSiRegle(jdc,"EXTR_MODE","FILTRE_MODE","SEUIL=1.E-3", ((("FILTRE_MODE","CRIT_EXTR",),"existeMCsousMCF"),(("FILTRE_MODE","SEUIL",),"nexistepasMCsousMCF")))
+    ajouteMotClefDansFacteurSiRegle(jdc,"EXTR_MODE","FILTRE_MODE","SEUIL=1.E-3", ((("FILTRE_MODE","CRIT_EXTR",),"existeMCsousMCF"),(("FILTRE_MODE","SEUIL",),"nexistepasMCsousMCF")))
 
     ####################### traitement DYNA_TRAN_EXPLI #######################
     removeMotCle(jdc,"DYNA_TRAN_EXPLI","NEWMARK")
@@ -328,18 +328,18 @@ def traduc(infile,outfile,flog=None):
     ####################### traitement CREA_RESU #######################
     dcrearesu={"HYDR_ELGA":"HYDR_NOEU_ELGA"}
     lavertit=("HYDR_ELGA",)
-    ChangementValeur(jdc,"CREA_RESU","NOM_CHAM",dcrearesu,lavertit)
+    changementValeur(jdc,"CREA_RESU","NOM_CHAM",dcrearesu,lavertit)
 
     ####################### traitement CREA_CHAMP #######################
     dcrearesu={"HYDR_ELGA":"HYDR_ELNO_ELGA"}
     lavertit=("HYDR_ELGA",)
-    ChangementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dcrearesu,lavertit)
-    ChangementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dcrearesu,lavertit)
+    changementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dcrearesu,lavertit)
+    changementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dcrearesu,lavertit)
 
     ####################### traitement TEST_RESU #######################
     dcrearesu={"HYDR_ELGA":"HYDR_NOEU_ELGA"}
     lavertit=("HYDR_ELGA",)
-    ChangementValeurDsMCFAvecAvertissement(jdc,"TEST_RESU","RESU","NOM_CHAM",dcrearesu,lavertit)
+    changementValeurDsMCFAvecAvertissement(jdc,"TEST_RESU","RESU","NOM_CHAM",dcrearesu,lavertit)
 
     ####################### traitement DEBUT #######################
     removeMotCleSiRegle(jdc,"DEBUT","BASE",((("BASE","FICHIER","LOCALE",jdc),"MCsousMCFaPourValeur"),))
@@ -351,7 +351,7 @@ def traduc(infile,outfile,flog=None):
     removeCommandeSiRegleAvecErreur(jdc,"CALC_CHAM_ELEM",((("OPTION","SOUR_ELGA_ELEC",jdc),"MCaPourValeur"),))
 
     ####################### traitement MACR_LIGNE_COUPE #######################
-    AppelleMacroSelonValeurConcept(jdc,"MACR_LIGN_COUPE",("LIGN_COUPE","TABLE"))
+    appelleMacroSelonValeurConcept(jdc,"MACR_LIGN_COUPE",("LIGN_COUPE","TABLE"))
     removeMotCleInFact(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TABLE")
 
     ####################### traitement MODI_MAILLAGE #######################
@@ -393,8 +393,8 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"RECU_FONCTION","TYPE_RESU")
     chercheOperInsereFacteurSiRegle(jdc,"RECU_FONCTION","NOM_PARA_TABL='FONCTION',",((("OBSTACLE",),"existe"),),estunFacteur=0)
     chercheOperInsereFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE",((("OBSTACLE",),"existe"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","NOM_PARA='LIEU',",((("OBSTACLE",),"existe"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","VALE_K='DEFIOBST',",((("OBSTACLE",),"existe"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","NOM_PARA='LIEU',",((("OBSTACLE",),"existe"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"RECU_FONCTION","FILTRE","VALE_K='DEFIOBST',",((("OBSTACLE",),"existe"),))
     renameMotCle(jdc,"RECU_FONCTION","OBSTACLE","TABLE")
 
     ####################### traitement DYNA_TRAN_MODAL #######################
@@ -408,7 +408,7 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFactSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_PAS_MINI",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegle(jdc,"CALC_PRECONT","INCREMENT","COEF_SUBD_PAS_1",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
     removeMotCleInFactSiRegleAvecErreur(jdc,"CALC_PRECONT","INCREMENT","SUBD_PAS",((("INCREMENT","SUBD_PAS","1",jdc),"MCsousMCFaPourValeur"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"CALC_PRECONT","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
     moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
     moveMotCleFromFactToFactMulti(jdc,"CALC_PRECONT","CONVERGENCE","ITER_INTE_PAS",("COMP_INCR","COMP_ELAS"))
@@ -426,13 +426,13 @@ def traduc(infile,outfile,flog=None):
     chercheOperInsereFacteur(jdc,"COMB_CHAM_NO","MODELE=xxx,",estunFacteur=0,erreur=1)
     chercheOperInsereFacteur(jdc,"COMB_CHAM_NO","OPERATION='ASSE',",estunFacteur=0,erreur=1)
     renameMotCle(jdc,"COMB_CHAM_NO","COMB_C","ASSE")
-    AjouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","CUMUL='NON',")
-    AjouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","TOUT='OUI',")
+    ajouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","CUMUL='NON',")
+    ajouteMotClefDansFacteur(jdc,"COMB_CHAM_NO","ASSE","TOUT='OUI',")
     renameOper(jdc,"COMB_CHAM_NO","CREA_CHAMP")
 
 
     ####################### traitement MACR_ASCOUF_CALC #######################
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_ASCOUF_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_ASCOUF_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     renameMotCleInFact(jdc,"MACR_ASCOUF_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
     moveMotCleFromFactToFactMulti(jdc,"MACR_ASCOUF_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
     moveMotCleFromFactToFactMulti(jdc,"MACR_ASCOUF_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
@@ -441,7 +441,7 @@ def traduc(infile,outfile,flog=None):
 
 
     ####################### traitement MACR_ASPIC_CALC #######################
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_ASPIC_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_ASPIC_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     renameMotCleInFact(jdc,"MACR_ASPIC_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
     moveMotCleFromFactToFactMulti(jdc,"MACR_ASPIC_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
     moveMotCleFromFactToFactMulti(jdc,"MACR_ASPIC_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
@@ -449,7 +449,7 @@ def traduc(infile,outfile,flog=None):
 
 
     ####################### traitement MACR_CABRI_CALC #######################
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_CABRI_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_CABRI_CALC","INCREMENT","SUBD_METHODE='UNIFORME',",((("INCREMENT","SUBD_PAS"),"existeMCsousMCF"),))
     renameMotCleInFact(jdc,"MACR_CABRI_CALC","INCREMENT","COEF_SUBD_PAS_1","SUBD_COEF_PAS_1")
     moveMotCleFromFactToFactMulti(jdc,"MACR_CABRI_CALC","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
     moveMotCleFromFactToFactMulti(jdc,"MACR_CABRI_CALC","CONVERGENCE","ITER_INTE_MAXI",("COMP_INCR","COMP_ELAS"))
@@ -458,7 +458,7 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement CALC_FATIGUE #######################
     dfatigue={"MATAKE":"MATAKE_MODI_AC", "DOMM_MAXI":"MATAKE_MODI_AV", "FATEMI_SOCIE":"FATESOCI_MODI_AV"}
-    ChangementValeur(jdc,"CALC_FATIGUE","CRITERE",dfatigue)
+    changementValeur(jdc,"CALC_FATIGUE","CRITERE",dfatigue)
 
     ####################### traitement DEFI_PART_FETI #######################
     removeMotCleSiRegle(jdc,"DEFI_PART_FETI","MAILLAGE", ((("MODELE",),"existeMCFParmi"),(("MAILLAGE",),"existeMCFParmi")))
@@ -488,7 +488,7 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"MACR_ADAP_MAIL","ADAPTATION")
     renameMotCle(jdc,"MACR_ADAP_MAIL","ADAPTATIONEW","ADAPTATION")
     dcalcelemno={"ERRE_ELGA_NORE":"ERRE_ELEM_SIGM","ERRE_ELEM_NOZ1":"ERZ1_ELEM_SIGM","ERRE_ELEM_NOZ2":"ERZ2_ELEM_SIGM","ERRE_ELNO_ELGA":"ERRE_ELNO_ELEM","ERRE_NOEU_ELGA":"ERRE_NOEU_ELEM","ERTH_ELEM_TEMP":"ERRE_ELEM_TEMP","ERTH_ELNO_ELEM":"ERRE_ELNO_ELEM","EPGR_ELNO":"EPFP_ELNO","EPGR_ELGA":"EPFP_ELGA","DURT_ELGA_TEMP":"DURT_ELNO_TEMP"}
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",dcalcelemno)
+    changementValeur(jdc,"MACR_ADAP_MAIL","ADAPTATION",dcalcelemno)
 
 
     ####################### traitement IMPR_FICO_HOMARD #######################
@@ -505,7 +505,7 @@ def traduc(infile,outfile,flog=None):
     log.ferme(hdlr)
 
 def main():
-    parser = optparse.OptionParser(usage=usage)
+    parser = optparse.Optionparser(usage=usage)
 
     parser.add_option('-i','--infile', dest="infile", default='toto.comm',
         help="Le fichier à traduire")
index 649f42340ba0d00d284081898d5f042753e162d7..224e781b5e7450ee73c9ff6b77ef403cc759cf3e 100644 (file)
@@ -37,7 +37,7 @@ from renamemocle  import *
 from inseremocle  import *
 from changeValeur import *
 from movemocle    import *
-from dictErreurs  import GenereErreurPourCommande,GenereErreurMotCleInFact
+from dictErreurs  import genereErreurPourCommande,genereErreurMotCleInFact
 
 import calcG
 
@@ -87,7 +87,7 @@ def traduc(infile,outfile,flog=None):
     parseKeywords(root)
     
     ####################### traitement erreurs ########################
-    GenereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE","DEFI_FISS_XFEM","POST_MAIL_XFEM"))
+    genereErreurPourCommande(jdc,("POST_RCCM","DEFI_MATERIAU","TEST_FICHIER","DYNA_NON_LINE","DEFI_FISS_XFEM","POST_MAIL_XFEM"))
 
     ####################### traitement Sous-Structuration  #######################
     renameMotCleInFact(jdc,"DEFI_MAILLAGE","DEFI_SUPER_MAILLE","MACR_ELEM_STAT","MACR_ELEM")
@@ -106,7 +106,7 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement XFEM #######################
     dXFEM={"3D_XFEM":"3D", "C_PLAN_X":"C_PLAN", "D_PLAN_X":"D_PLAN"}
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEM)
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dXFEM)
     renameMotCleInFact(jdc,"DEFI_FISS_XFEM","ORIE_FOND","PT_ORIGIN","POINT_ORIG")
     removeMotCleAvecErreur(jdc,"DEFI_FISS_XFEM","CONTACT")
     #########################################################################
@@ -134,8 +134,8 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NUME_PASSAGE",((("TYPE_RESU_MECA","TUYAUTERIE",jdc),"MCaPourValeur"),))
     chercheOperInsereFacteurSiRegle(jdc,"POST_RCCM","SEISME", ((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
     moveMotCleFromFactToFact(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME","SEISME")
-#    AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+#    ajouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION", "transferez_au_bloc_SEISME_CHAR_ETAT_NB_OCCUR,NUME_SITU,NUME_GROUP_et_eventuellement_NOM_SITU_et_NUME_RESU_THER",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"POST_RCCM","SITUATION","supprimez_a_la_main_ce_bloc",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
 #    removeMotCleInFactSiRegleAvecErreur(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
     removeMotCleInFactSiRegle(jdc,"POST_RCCM","SITUATION","NB_CYCL_SEISME",((("SITUATION","NB_CYCL_SEISME"),"existeMCsousMCF"),))
     removeMotCleInFact(jdc,"POST_RCCM","CHAR_MECA","TYPE_CHAR",)
@@ -189,8 +189,8 @@ def traduc(infile,outfile,flog=None):
     moveMotCleFromFactToFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","BARCELONE")
     renameMotCleInFact(jdc,"DEFI_MATERIAU","CAM_CLAY","PA","KCAM")
     # CAM_CLAY
-#    AjouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
-#    AjouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),))
+#    ajouteMotClefDansFacteur(jdc,"DEFI_MATERIAU","CAM_CLAY","MU=xxx",)
+#    ajouteMotClefDansFacteurSiRegle(jdc,"DEFI_MATERIAU","CAM_CLAY","PTRAC=XXX",((("CAM_CLAY","KCAM"),"existeMCsousMCF"),))
     # VENDOCHAB
     renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","S_VP","S")
     renameMotCleInFact(jdc,"DEFI_MATERIAU","VENDOCHAB","N_VP","N")
@@ -215,8 +215,8 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement MACR_ADAP/INFO_MAIL ######################
     dadap_mail={ "V8_5":"V9_5", "V8_N":"V9_N", "V8_N_PERSO":"V9_N_PERSO"}
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail)
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail)
+    changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",dadap_mail)
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",dadap_mail)
     #########################################################################
 
     ####################### traitement REST_BASE_PHYS ######################
@@ -234,7 +234,7 @@ def traduc(infile,outfile,flog=None):
     #########################################################################
 
     ####################### traitement COMB_SISM_MODAL ######################
-    AjouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"COMB_SISM_MODAL","EXCIT","MULTI_APPUI='DECORRELE'", ((("EXCIT","MONO_APPUI"),"nexistepasMCsousMCF"),))
     #########################################################################
 
     ####################### traitement TEST_FICHIER ######################
@@ -260,22 +260,22 @@ def traduc(infile,outfile,flog=None):
 
     ####################### traitement DYNA_TRAN_EXPLI ######################
     renameOper(jdc,"DYNA_TRAN_EXPLI","DYNA_NON_LINE")
-    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'")
-    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'")
+    ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TCHAMWA","FORMULATION='ACCELERATION'")
+    ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","DIFF_CENT","FORMULATION='ACCELERATION'")
     #########################################################################
 
     ####################### traitement SCHEMA_TEMPS dans DYNA_NON_LINE ######################
-    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'")
-    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'")
-    AjouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'")
+    ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","NEWMARK","FORMULATION='DEPLACEMENT'")
+    ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","HHT","FORMULATION='DEPLACEMENT'")
+    ajouteMotClefDansFacteur(jdc,"DYNA_NON_LINE","TETA_METHODE","FORMULATION='DEPLACEMENT'")
     renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","ALPHA","BETA",)
     renameMotCleInFact(jdc,"DYNA_NON_LINE","NEWMARK","DELTA","GAMMA",)
     renameMotCleInFact(jdc,"DYNA_NON_LINE","TETA_METHODE","TETA","THETA",)
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),))
-    AjouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA='NEWMARK'",((("NEWMARK",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA='THETA_METHODE'",((("TETA_METHODE",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","HHT","SCHEMA='HHT'",((("HHT",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","TCHAMWA","SCHEMA='TCHAMWA'",((("TCHAMWA",),"existeMCFParmi"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"DYNA_NON_LINE","DIFF_CENT","SCHEMA='DIFF_CENT'",((("DIFF_CENT",),"existeMCFParmi"),))
     renameMotCle(jdc,"DYNA_NON_LINE","NEWMARK","SCHEMA_TEMPS")
     renameMotCle(jdc,"DYNA_NON_LINE","TETA_METHODE","SCHEMA_TEMPS")
     renameMotCle(jdc,"DYNA_NON_LINE","HHT","SCHEMA_TEMPS")
@@ -301,13 +301,13 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","MOMENT_4")
     removeMotCleInFact(jdc,"DEFI_MATERIAU","DIS_CONTACT","C_PRAGER_MZ")
     dDis_Choc={"DIS_CONTACT":"DIS_CHOC"}
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dDis_Choc)
     renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_INCR","DIS_CONTACT","DIS_CHOC")
     renameMotCleInFact(jdc,"DYNA_NON_LINE","COMP_INCR","DIS_CONTACT","DIS_CHOC")
     dGrilles={"GRILLE_CRAYONS":"DIS_GRICRA"}
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dGrilles)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dGrilles)
 
     renameCommandeSiRegle(jdc,"AFFE_CHAR_MECA_F","AFFE_CHAR_MECA",((("CONTACT",),"existeMCFParmi"),))
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","RECHERCHE")
@@ -316,15 +316,15 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","VECT_ORIE_POU")
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","MODL_AXIS")
     dAppariement={"MAIT_ESCL_SYME":"MAIT_ESCL"}
-    ChangementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement)
+    changementValeurDsMCF(jdc,"AFFE_CHAR_MECA","CONTACT","APPARIEMENT",dAppariement)
 
-    AjouteMotClefDansFacteurSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","TYPE_APPA='FIXE'",((("CONTACT","DIRE_APPA",),"existeMCsousMCF"),))
+    ajouteMotClefDansFacteurSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","TYPE_APPA='FIXE'",((("CONTACT","DIRE_APPA",),"existeMCsousMCF"),))
     #########################################################################
 
     ####################### traitement CREA_CHAMP ######################
     chercheOperInsereFacteurSiRegle(jdc,"CREA_CHAMP","PRECISION=1.E-3,", ((("PRECISION",),"nexistepas"),(("CRITERE",),"existe"),),0)
     dTypeChamp={"ELEM_ERREUR":"ELEM_ERRE_R"}
-    ChangementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dTypeChamp)
+    changementValeur(jdc,"CREA_CHAMP","TYPE_CHAM",dTypeChamp)
     #########################################################################
 
     ####################### traitement CALC_NO ######################
@@ -332,19 +332,19 @@ def traduc(infile,outfile,flog=None):
     #########################################################################
 
     ######### traitement variables de commandes TEMP_CALCULEE/TEMP_REF ##############
-    GenereErreurMotCleInFact(jdc,"AFFE_MATERIAU","AFFE","TEMP_REF")
+    genereErreurMotCleInFact(jdc,"AFFE_MATERIAU","AFFE","TEMP_REF")
     ################################################################################
 
     ################# traitement LIRE_CHAMP  #######################################
 #    dTypeChamp={"ELEM_ERREUR":"ELEM_ERRE_R"}
-    ChangementValeur(jdc,"LIRE_CHAMP","TYPE_CHAM",dTypeChamp)
+    changementValeur(jdc,"LIRE_CHAMP","TYPE_CHAM",dTypeChamp)
     ################################################################################
 
 
     ######### traitement SUIVI_DDL #################################################
 # en pre-traitement il faudrait une methode qui separe tous les mots clefs facteurs en les dupliquant
 # par exemple ici mettre autant de mots clefs facteurs SUIVI_DDL qu'il a de _F
-    AjouteMotClefDansFacteur(jdc,"STAT_NON_LINE","SUIVI_DDL","SUIVI_DDL='OUI'")
+    ajouteMotClefDansFacteur(jdc,"STAT_NON_LINE","SUIVI_DDL","SUIVI_DDL='OUI'")
     renameMotCle(jdc,"STAT_NON_LINE","SUIVI_DDL","OBSERVATION")
 # en post-traitement il faudrait une methode qui fusionne tous les mots clefs facteurs en double
 # par exemple ici les OBSERVATION
@@ -358,7 +358,7 @@ def traduc(infile,outfile,flog=None):
 
     ######### traitement du MODELE GRILLE ##############################################
     dGrille={"GRILLE":"GRILLE_EXCENTRE"}
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dGrille)
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",dGrille)
     ################################################################################
 
     ######### traitement de MACR_ASPIC/ASCOUF_CALC GRILLE ##########################
@@ -392,26 +392,26 @@ def traduc(infile,outfile,flog=None):
 
     ######### traitement de MACR_LIGN_COUPE  ######################################
 # il y a un probleme s'il y a plusieurs mots clefs facteurs LIGN_COUPE : la regle ne marche qu'une fois par commande
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","REPERE='LOCAL'", ((("LIGN_COUPE","VECT_Y",),"existeMCsousMCF"),),0)
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","REPERE='LOCAL'", ((("LIGN_COUPE","VECT_Y",),"existeMCsousMCF"),),0)
 # autre probleme : s'il y a plusieurs mots clefs facteurs le traducteur peut, dans l'insertion, se tromper de mot clef facteur
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_NO'", ((("LIGN_COUPE","GROUP_NO",),"existeMCsousMCF"),),0)
-    AjouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_MA'", ((("LIGN_COUPE","GROUP_MA",),"existeMCsousMCF"),),0)
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_NO'", ((("LIGN_COUPE","GROUP_NO",),"existeMCsousMCF"),),0)
+    ajouteMotClefDansFacteurSiRegle(jdc,"MACR_LIGN_COUPE","LIGN_COUPE","TYPE='GROUP_MA'", ((("LIGN_COUPE","GROUP_MA",),"existeMCsousMCF"),),0)
     ################################################################################
 
     ####################### traitement DRUCKER_PRAGER #######################
     dPRAGER={"DRUCKER_PRAGER":"DRUCK_PRAGER",}
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dPRAGER)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dPRAGER)
-    ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION",dPRAGER)
-    ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION",dPRAGER)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION",dPRAGER)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION",dPRAGER)
+    changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION",dPRAGER)
+    changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION",dPRAGER)
     #########################################################################
 
     ####################### traitement RELATION_KIT #######################
     dKIT={"ELAS_THER":"ELAS",}
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
-    ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION_KIT",dKIT)
-    ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION_KIT",dKIT)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RELATION_KIT",dKIT)
+    changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RELATION_KIT",dKIT)
+    changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RELATION_KIT",dKIT)
     #########################################################################
 
 
@@ -422,7 +422,7 @@ def traduc(infile,outfile,flog=None):
     log.ferme(hdlr)
 
 def main():
-    parser = optparse.OptionParser(usage=usage)
+    parser = optparse.Optionparser(usage=usage)
 
     parser.add_option('-i','--infile', dest="infile", default='toto.comm',
         help="Le fichier à traduire")
index 35659e419ef14de3882b0867f67da7a3ccba89d6..45570a619820cb12a87e70757cb669fe3c50b982 100755 (executable)
@@ -124,11 +124,11 @@ def traduc(infile,outfile,flog=None):
 
     #####RESORPTION
 
-    GenereErreurPourCommande(jdc,("POST_ZAC",))
-    GenereErreurMCF(jdc,"AFFE_CHAR_MECA","GRAPPE_FLUIDE")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC")
-    GenereErreurMCF(jdc,"DEFI_MATERIAU","LMARC_FO")
-    GenereErreurMCF(jdc,"AFFE_CHAR_MECA","ARLEQUIN")
+    genereErreurPourCommande(jdc,("POST_ZAC",))
+    genereErreurMCF(jdc,"AFFE_CHAR_MECA","GRAPPE_FLUIDE")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","LMARC")
+    genereErreurMCF(jdc,"DEFI_MATERIAU","LMARC_FO")
+    genereErreurMCF(jdc,"AFFE_CHAR_MECA","ARLEQUIN")
 
 
     #####SOLVEUR
@@ -141,34 +141,34 @@ def traduc(infile,outfile,flog=None):
     # */SOLVEUR/PARTITION --> AFFE_MODELE (ou MODI_MODELE)/PARTITION/PARTITION
 
 
-    GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARTITION")
-    GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARALLELISME")
-    GenereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"CALC_PRECONT","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"DYNA_LINE_HARM","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"DYNA_LINE_TRAN","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"DYNA_TRAN_MODAL","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"MACR_ASCOUF_CALC","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"MACR_ASPIQ_CALC","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"MACRO_MATR_AJOU","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"MECA_STATIQUE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"MODE_STATIQUE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"STAT_NON_LINE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"THER_LINEAIRE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"THER_NON_LINE","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"THER_NON_LINE_MO","SOLVEUR","PARTITION")
+    genereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARALLELISME")
+    genereErreurMotCleInFact(jdc,"DYNA_NON_LINE","SOLVEUR","PARTITION")
 
     ####################### traitement mot cle INCREMENT redecoupage en temps #######################
     renameMotCleSiRegle(jdc,"STAT_NON_LINE","INCREMENT","INCREMENT_NEW",((("INCREMENT","SUBD_METHODE"),"existeMCsousMCF"),),1)
@@ -270,7 +270,7 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"CALC_MODAL","SOLVEUR",pasDeRegle())
 
     ##################### traitement DYNA_TRAN-MODAL ADAPT #################
-    ChangementValeur(jdc,"DYNA_TRAN_MODAL","METHODE",{"ADAPT":"ADAPT_ORDRE2"})
+    changementValeur(jdc,"DYNA_TRAN_MODAL","METHODE",{"ADAPT":"ADAPT_ORDRE2"})
 
     #################### traitement STAT/DYNA_NON_LINE OBSERVATION SUIVI_DDL=NON ###########
     removeMotCleInFactCourantSiRegle(jdc,"STAT_NON_LINE","OBSERVATION","SUIVI_DDL",((("SUIVI_DDL","NON",jdc),"MCsousMCFcourantaPourValeur"),))
@@ -288,24 +288,24 @@ def traduc(infile,outfile,flog=None):
     #####COMPORTEMENT/CARA
 
     ###################  traitement AFFE_MODELE/SHB8 ##########################
-    ChangementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",{"SHB8":"SHB"})
+    changementValeurDsMCF(jdc,"AFFE_MODELE","AFFE","MODELISATION",{"SHB8":"SHB"})
     
     ###################  traitement COMP_ELAS et COMP_INCR  DEFORMATION = GREEN ##############"
     dGREEN={"GREEN_GR":"GROT_GDEP","GREEN":"GROT_GDEP","REAC_GEOM":"GROT_GDEP","EULER_ALMANSI":"GROT_GDEP","COROTATIONNEL":"GDEF_HYPO_ELAS"}
-    ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"POST_GP","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"CALC_G","COMP_ELAS","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","DEFORMATION",dGREEN)
-    ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"POST_GP","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"CALC_G","COMP_ELAS","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"CALCUL","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","DEFORMATION",dGREEN)
 
     ###################### traitement COMP_INCR/COMP_ELAS RESO_INTE ##########
     dALGOI={"RUNGE_KUTTA_2":"RUNGE_KUTTA","RUNGE_KUTTA_4":"RUNGE_KUTTA"}
@@ -325,21 +325,21 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFactCourantSiRegle(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),))
     removeMotCleInFactCourantSiRegle(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",((("RESO_INTE","IMPLICITE",jdc),"MCsousMCFcourantaPourValeur"),))
 
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"CALCUL","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",dALGOI)
-    ChangementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_ELAS","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"DYNA_NON_LINE","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"CALCUL","COMP_ELAS","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"CALCUL","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"MACR_ASCOUF_CALC","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"MACR_ASPIQF_CALC","COMP_ELAS","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"MACR_ASPIQ_CALC","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"SIMU_POINT_MAT","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"CALC_PRECONT","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"CALC_NO","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"LIRE_RESU","COMP_INCR","RESO_INTE",dALGOI)
+    changementValeurDsMCF(jdc,"MACR_ECREVISSE","COMP_INCR","RESO_INTE",dALGOI)
 
     renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","RESO_INTE","ALGO_INTE")
     renameMotCleInFact(jdc,"STAT_NON_LINE","COMP_INCR","RESO_INTE","ALGO_INTE")
@@ -363,18 +363,18 @@ def traduc(infile,outfile,flog=None):
     removeMotCleInFact(jdc,"STAT_NON_LINE","COMP_ELAS","ITER_INTE_PAS",pasDeRegle(),0)
 
     ###################### traitement CALC_G/COMP_INCR/RELATION ELAS_VMIS_PUIS ####
-    ChangementValeurDsMCF(jdc,"CALC_G","COMP_INCR","RELATION",{"ELAS_VMIS_PUIS":"VMIS_ISOT_PUIS"})
+    changementValeurDsMCF(jdc,"CALC_G","COMP_INCR","RELATION",{"ELAS_VMIS_PUIS":"VMIS_ISOT_PUIS"})
 
     ########################" traitement DEFI_COMPOR/MULTIFIBRE/DEFORMATION=REAC_GEOM #########
-    ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION",dGREEN)
+    changementValeurDsMCF(jdc,"DEFI_COMPOR","MULTIFIBRE","DEFORMATION",dGREEN)
 
     ####################### traitement DEFI_COMPOR/MONOCRISTAL/ECOULEMENT #############
     dECOULEMENT={"ECOU_VISC1":"MONO_VISC1","ECOU_VISC2":"MONO_VISC2","ECOU_VISC3":"MONO_VISC3","KOCKS_RAUCH":"MONO_DD_KR"}
-    ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",dECOULEMENT)
+    changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECOULEMENT",dECOULEMENT)
     dISOT={"ECRO_ISOT1":"MONO_ISOT1","ECRO_ISOT2":"MONO_ISOT2"}
     dCINE={"ECRO_CINE1":"MONO_CINE1","ECRO_CINE2":"MONO_CINE2"}
-    ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_ISOT",dISOT)
-    ChangementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_CINE",dCINE)
+    changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_ISOT",dISOT)
+    changementValeurDsMCF(jdc,"DEFI_COMPOR","MONOCRISTAL","ECRO_CINE",dCINE)
 
     ################### traitement DEFI_MATERIAU monocristallin #######
     renameMotCle(jdc,"DEFI_MATERIAU","ECOU_VISC1","MONO_VISC1")
@@ -397,10 +397,10 @@ def traduc(infile,outfile,flog=None):
 
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME")
     removeMotCleInFact(jdc,"AFFE_CARA_ELEM","DISCRET","SYME")
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
-    ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET_2D","CARA",dDISCRET)
-    ChangementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET","CARA",dDISCRET)
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CARA_ELEM","DISCRET_2D","SYME='NON'",((("CARA",dlist_DISCRET,jdc),"MCsousMCFcourantaPourValeurDansListe"),))
+    changementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET_2D","CARA",dDISCRET)
+    changementValeurDsMCF(jdc,"AFFE_CARA_ELEM","DISCRET","CARA",dDISCRET)
 
     #####CHARGEMENT
     
@@ -409,21 +409,21 @@ def traduc(infile,outfile,flog=None):
 
     renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","ITER_MULT_MAXI","ITER_CONT_MULT")
     renameMotCleInFact(jdc,"AFFE_CHAR_MECA","CONTACT","NB_REAC_GEOM","NB_ITER_GEOM")
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","RESOLUTION='NON'",((("METHODE","VERIF",jdc),"MCsousMCFcourantaPourValeur"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"AFFE_CHAR_MECA","CONTACT","RESOLUTION='NON'",((("METHODE","VERIF",jdc),"MCsousMCFcourantaPourValeur"),))
     copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","CONTACT")
     moveMCFToCommand(jdc,"AFFE_CHAR_MECA","CONTACT","DEFI_CONTACT","ZONE")
     removeMotCle(jdc,"AFFE_CHAR_MECA","CONTACT",pasDeRegle(),1)
 
     
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE")
-    AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
+    ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
     copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","MODELE","LIAISON_UNILATER")
     moveMCFToCommand(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER","DEFI_CONTACT","ZONE")
     removeMotCle(jdc,"AFFE_CHAR_MECA","LIAISON_UNILATER",pasDeRegle(),1)
     
     removeMotCleInFact(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE")
-    AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
-    AjouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","FORMULATION='LIAISON_UNIL'",pasDeRegle())
+    ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","METHODE='LIAISON_UNIL'",pasDeRegle())
+    ajouteMotClefDansFacteur(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","FORMULATION='LIAISON_UNIL'",pasDeRegle())
     copyMotClefInOperToFact(jdc,"AFFE_CHAR_MECA_F","MODELE","LIAISON_UNILATER")
     moveMCFToCommand(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER","DEFI_CONTACT","ZONE")
     removeMotCle(jdc,"AFFE_CHAR_MECA_F","LIAISON_UNILATER",pasDeRegle(),1)
@@ -434,12 +434,12 @@ def traduc(infile,outfile,flog=None):
     chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='LIAISON_UNIL'",((("ZONE","METHODE","LIAISON_UNIL",jdc),"MCsousMCFaPourValeur"),))
     liste_meth_ZONE=["GCP","CONTRAINTE","LAGRANGIEN","PENALISATION"]
     chercheOperInsereMotCleSiRegle(jdc,"DEFI_CONTACT","FORMULATION='DISCRETE'",((("ZONE","METHODE",liste_meth_ZONE,jdc),"MCsousMCFaPourValeurDansListe"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='GCP'",((("METHODE","GCP",jdc),"MCsousMCFcourantaPourValeur"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='CONTRAINTE'",((("METHODE","CONTRAINTE",jdc),"MCsousMCFcourantaPourValeur"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='LAGRANGIEN'",((("METHODE","LAGRANGIEN",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='GCP'",((("METHODE","GCP",jdc),"MCsousMCFcourantaPourValeur"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_FROT='PENALISATION'",((("METHODE","PENALISATION",jdc),"MCsousMCFcourantaPourValeur"),(("COULOMB",),"existeMCsousMCFcourant"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DEFI_CONTACT","ZONE","ALGO_CONT='CONTRAINTE'",((("METHODE","CONTRAINTE",jdc),"MCsousMCFcourantaPourValeur"),))
     removeMotCleInFact(jdc,"DEFI_CONTACT","ZONE","METHODE")
     
     
@@ -491,11 +491,11 @@ def traduc(infile,outfile,flog=None):
     renameMotCleSiRegle(jdc,"COMB_SISM_MODAL","COMB_MULT_APPUI","GROUP_APPUI",((("MULTI_APPUI","DECORRELE",jdc),"MCaPourValeur"),),1)
 
     ########################  traitement DYNA_TRAN_MODAL ##################
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_TRAN_MODAL","CHOC","FROTTEMENT='COULOMB'",((("COULOMB",),"existeMCsousMCFcourant"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"DYNA_TRAN_MODAL","CHOC","FROTTEMENT='COULOMB'",((("COULOMB",),"existeMCsousMCFcourant"),))
 
     ######################### traitement AFFE_CHAR_MECA PESANTEUR ROTATION#################
-    EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","PESANTEUR","GRAVITE","DIRECTION")
-    EclaMotCleToFact(jdc,"AFFE_CHAR_MECA","ROTATION","VITESSE","AXE")
+    eclaMotCleToFact(jdc,"AFFE_CHAR_MECA","PESANTEUR","GRAVITE","DIRECTION")
+    eclaMotCleToFact(jdc,"AFFE_CHAR_MECA","ROTATION","VITESSE","AXE")
     moveMotClefInOperToFact(jdc,"AFFE_CHAR_MECA","CENTRE","ROTATION")
 
     ######################## traitement DEFI_BASE_MODALE ##############
@@ -516,20 +516,20 @@ def traduc(infile,outfile,flog=None):
 
     #######################  traitement PROJ_CHAMP  #####################
     renameMotCle(jdc,"PROJ_CHAMP","CHAM_NO","CHAM_GD",1,pasDeRegle())
-    ChangementValeur(jdc,"PROJ_CHAMP","METHODE",{ "ELEM":"COLLOCATION"})
+    changementValeur(jdc,"PROJ_CHAMP","METHODE",{ "ELEM":"COLLOCATION"})
 
     ####################### traitement MACR_ADAP_MAIL ##############"
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA",{"V_ABSOLUE":"ABSOLU","V_RELATIVE":"RELATIF"})
+    changementValeur(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA",{"V_ABSOLUE":"ABSOLU","V_RELATIVE":"RELATIF"})
     renameMotCle(jdc,"MACR_ADAP_MAIL","INDICATEUR","NOM_CHAM")
     renameMotCle(jdc,"MACR_ADAP_MAIL","NOM_CMP_INDICA","NOM_CMP")
     renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_OPER_INDICA","USAGE_CHAMP")
     renameMotCle(jdc,"MACR_ADAP_MAIL","TYPE_VALEUR_INDICA","USAGE_CMP")
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='BOITE'",((("RAYON",),"nexistepasMCsousMCFcourant"),))
-    AjouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='SPHERE'",((("RAYON",),"existeMCsousMCFcourant"),))
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
-    ChangementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='BOITE'",((("RAYON",),"nexistepasMCsousMCFcourant"),))
+    ajouteMotClefDansFacteurCourantSiRegle(jdc,"MACR_ADAP_MAIL","ZONE","TYPE='SPHERE'",((("RAYON",),"existeMCsousMCFcourant"),))
+    changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
+    changementValeur(jdc,"MACR_ADAP_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_5":"V10_1"})
+    changementValeur(jdc,"MACR_INFO_MAIL","VERSION_HOMARD",{"V9_N":"V10_1_N"})
 
     ###################### traitement de POST_CHAM_XFEM  #################
     removeMotCle(jdc,"POST_CHAM_XFEM","MODELE",pasDeRegle(),0)
@@ -567,7 +567,7 @@ def traduc(infile,outfile,flog=None):
      ######### traitement CALC_ELEM/TYPE_ESTI ####
     dESTI={"ERRE_ELEM_SIGM":"ERME_ELEM","ERZ1_ELEM_SIGM":"ERZ1_ELEM","ERZ2_ELEM_SIGM":"ERZ2_ELEM",
             "QIRE_ELEM_SIGM":"QIRE_ELEM","QIZ1_ELEM_SIGM":"QIZ1_ELEM","QIZ2_ELEM_SIGM":"QIZ2_ELEM"}
-    ChangementValeur(jdc,"CALC_ELEM","TYPE_ESTI",dESTI)
+    changementValeur(jdc,"CALC_ELEM","TYPE_ESTI",dESTI)
 
     ######### suppression CALC_ELEM/NORME ######
     removeMotCle(jdc,"CALC_ELEM","NORME",pasDeRegle(),0)
@@ -613,42 +613,42 @@ def traduc(infile,outfile,flog=None):
              "VARI_NOEU_ELGA":"VARI_NOEU","VARI_ELNO_ELGA":"VARI_ELNO",
              "INDI_LOCA_ELGA":"INDL_ELGA"}
     #"FORC_NODA":"FORC_NOEU","REAC_NODA":"REAC_NOEU"
-    ChangementValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"COMB_FOURIER","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"CREA_RESU","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"LIRE_RESU","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",dOPTION)    
-    ChangementValeur(jdc,"PROJ_CHAMP","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"RECU_FONCTION","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",dOPTION)
-    ChangementValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",dOPTION)
-    ChangementValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"COMB_FOURIER","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"CREA_CHAMP","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"CREA_RESU","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"LIRE_RESU","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",dOPTION)    
+    changementValeur(jdc,"PROJ_CHAMP","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"RECU_FONCTION","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",dOPTION)
+    changementValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",dOPTION)
+    changementValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",dOPTION)
     
-    ChangementValeur(jdc,"CALC_CHAM_ELEM","OPTION",dOPTION)
-    ChangementValeur(jdc,"CALC_ELEM","OPTION",dOPTION)
-    ChangementValeur(jdc,"CALC_META","OPTION",dOPTION)
-    ChangementValeur(jdc,"CALC_NO","OPTION",dOPTION)
-    ChangementValeur(jdc,"COMB_SISM_MODAL","OPTION",dOPTION)
-    ChangementValeur(jdc,"MECA_STATIQUE","OPTION",dOPTION)
-    ChangementValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",dOPTION)
-    ChangementValeur(jdc,"THER_NON_LINE","OPTION",dOPTION)
-
-    ############ Message si SuppressionValeurs ou Valeurs ambigue CALC_ELEM/OPTION
+    changementValeur(jdc,"CALC_CHAM_ELEM","OPTION",dOPTION)
+    changementValeur(jdc,"CALC_ELEM","OPTION",dOPTION)
+    changementValeur(jdc,"CALC_META","OPTION",dOPTION)
+    changementValeur(jdc,"CALC_NO","OPTION",dOPTION)
+    changementValeur(jdc,"COMB_SISM_MODAL","OPTION",dOPTION)
+    changementValeur(jdc,"MECA_STATIQUE","OPTION",dOPTION)
+    changementValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",dOPTION)
+    changementValeur(jdc,"THER_NON_LINE","OPTION",dOPTION)
+
+    ############ Message si suppressionValeurs ou Valeurs ambigue CALC_ELEM/OPTION
     rOPTION=("'DEUL_ELGA_DEPL'","'DEUL_ELGA_TEMP'","'DURT_ELGA_META'",
              "'ERRE_ELNO_DEPL'", "'ERRE_NOEU_ELEM'", "'ERRE_ELNO_ELEM'","'EPSP_NOEU_ZAC'","'HYDR_ELNO_ELGA'",
              "'SIGM_NOEU_ZAC'","'SIGM_ELNO_SIEF'","'SIGM_NOEU_SIEF'","'SIPO_ELNO_SIEF'","'SIPO_NOEU_SIEF'",
@@ -657,47 +657,47 @@ def traduc(infile,outfile,flog=None):
     # Options ambigue :  PRES_ELNO_DBEL --> prac_elno/prme_elno, ERRE* --> ERME_ELNO ou ERTH_ELNO selon PHENOMENE
     # En commentaires les commandes non concernees par rOPTION
     
-    GenereErreurValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",rOPTION)
-    #GenereErreurValeur(jdc,"COMB_FOURIER","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"CREA_CHAMP","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"CREA_RESU","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",rOPTION)
-    #GenereErreurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",rOPTION)
-    #GenereErreurValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",rOPTION)    
-    GenereErreurValeur(jdc,"PROJ_CHAMP","NOM_CHAM",rOPTION)
-    #GenereErreurValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",rOPTION)
-    GenereErreurValeur(jdc,"RECU_FONCTION","NOM_CHAM",rOPTION)
-    #GenereErreurValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",rOPTION)
-    #GenereErreurValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",rOPTION)
-    #GenereErreurValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"AFFE_MATERIAU","AFFE_VARC","NOM_CHAM",rOPTION)
+    #genereErreurValeur(jdc,"COMB_FOURIER","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"CREA_CHAMP","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"CREA_RESU","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"EXTR_RESU","ARCHIVAGE","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"IMPR_RESU","RESU","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_MED","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"LIRE_RESU","FORMAT_IDEAS","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"LIRE_RESU","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"MACR_ADAP_MAIL","NOM_CHAM",rOPTION)
+    #genereErreurDsMCF(jdc,"MACR_ASPIC_CALC","IMPRESSION","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"MACR_LIGN_COUPE","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"MODI_REPERE","MODI_CHAM","NOM_CHAM",rOPTION)
+    #genereErreurValeurDsMCF(jdc,"POST_RCCM","RESU_MECA","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"POST_ELEM","INTEGRALE","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"POST_ELEM","MINMAX","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"POST_RELEVE_T","ACTION","NOM_CHAM",rOPTION)    
+    genereErreurValeur(jdc,"PROJ_CHAMP","NOM_CHAM",rOPTION)
+    #genereErreurValeurDsMCF(jdc,"PROJ_MESU_MODAL","MODELE_MESURE","NOM_CHAM",rOPTION)
+    genereErreurValeur(jdc,"RECU_FONCTION","NOM_CHAM",rOPTION)
+    #genereErreurValeur(jdc,"REST_GENE_PHYS","NOM_CHAM",rOPTION)
+    #genereErreurValeur(jdc,"REST_SOUS_STRUC","NOM_CHAM",rOPTION)
+    #genereErreurValeur(jdc,"REST_SPEC_PHYS","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"TEST_RESU","RESU","NOM_CHAM",rOPTION)
+    genereErreurValeurDsMCF(jdc,"TEST_RESU","GENE","NOM_CHAM",rOPTION)
     
-    GenereErreurValeur(jdc,"CALC_CHAM_ELEM","OPTION",rOPTION)
-    GenereErreurValeur(jdc,"CALC_ELEM","OPTION",rOPTION)
-    #GenereErreurValeur(jdc,"CALC_META","OPTION",rOPTION)
-    GenereErreurValeur(jdc,"CALC_NO","OPTION",rOPTION)
-    #GenereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",rOPTION)
-    #GenereErreurValeur(jdc,"MECA_STATIQUE","OPTION",rOPTION)
-    GenereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",rOPTION)
-    #GenereErreurValeur(jdc,"THER_NON_LINE","OPTION",rOPTION)        
+    genereErreurValeur(jdc,"CALC_CHAM_ELEM","OPTION",rOPTION)
+    genereErreurValeur(jdc,"CALC_ELEM","OPTION",rOPTION)
+    #genereErreurValeur(jdc,"CALC_META","OPTION",rOPTION)
+    genereErreurValeur(jdc,"CALC_NO","OPTION",rOPTION)
+    #genereErreurValeur(jdc,"COMB_SISM_MODAL","OPTION",rOPTION)
+    #genereErreurValeur(jdc,"MECA_STATIQUE","OPTION",rOPTION)
+    genereErreurValeurDsMCF(jdc,"MACRO_ELAS_MULT","CAS_CHARGE","OPTION",rOPTION)
+    #genereErreurValeur(jdc,"THER_NON_LINE","OPTION",rOPTION)        
     
     ########### Message si CALC_ELEM/SENSIBILITE
-    GenereErreurMCF(jdc,"CALC_ELEM","SENSIBILITE")
+    genereErreurMCF(jdc,"CALC_ELEM","SENSIBILITE")
 
     # non fait CALC_NO OPTION=FORC_NODA_NONL
 
-    ########## Traitement MACRO_MISS_3D --> CALC_MISS
+    ########## traitement MACRO_MISS_3D --> CALC_MISS
     renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF"),"nexistepasMCsousMCF"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),))
     renameCommandeSiRegle(jdc,"MACRO_MISS_3D","CALC_MISS",((("OPTION","MODULE","MISS_IMPE",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","ISSF","NON",jdc),"MCsousMCFaPourValeur"),(("PARAMETRE","DIRE_ONDE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_LISTE"),"nexistepasMCsousMCF"),(("PARAMETRE","CONTR_NB"),"nexistepasMCsousMCF"),))
     removeMotCleInFact(jdc,"CALC_MISS","PARAMETRE","FICH_RESU_IMPE",pasDeRegle(),0)
@@ -706,9 +706,9 @@ def traduc(infile,outfile,flog=None):
     removeMotCle(jdc,"CALC_MISS","UNITE_OPTI_MISS",pasDeRegle())
     removeMotCle(jdc,"CALC_MISS","UNITE_MODELE_SOL",pasDeRegle())
     removeMotCle(jdc,"CALC_MISS","OPTION",pasDeRegle(),1)
-    ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_4":"V6.5"})
-    ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_5":"V6.6"})
-    ChangementValeur(jdc,"CALC_MISS","VERSION",{"V1_3":"V6.5"})
+    changementValeur(jdc,"CALC_MISS","VERSION",{"V1_4":"V6.5"})
+    changementValeur(jdc,"CALC_MISS","VERSION",{"V1_5":"V6.6"})
+    changementValeur(jdc,"CALC_MISS","VERSION",{"V1_3":"V6.5"})
 
     macr=""
     interf=""
@@ -734,7 +734,7 @@ def traduc(infile,outfile,flog=None):
     log.ferme(hdlr)
 
 def main():
-    parser = optparse.OptionParser(usage=usage)
+    parser = optparse.Optionparser(usage=usage)
 
     parser.add_option('-i','--infile', dest="infile", default='toto.comm',
         help="Le fichier à traduire")
index ee70752ad76c92b3d0734bb0b5faf286b1f8a07c..9ab9601c4c64a1435f59b3f68aaf047876f0e275 100644 (file)
@@ -38,7 +38,7 @@ def lineToDict(line):
         i+=len(word)
     return h
 
-def DictToLine(d):
+def dictToLine(d):
     """Transformation inverse: à partir d'un dictionnaire retourne une ligne"""
     cols = d
     cols.sort()
index e43a25fad7a401668e99f717f1e19973a57363ff..40a250d47c52710cedb08aa06a20dd220459d196 100644 (file)
@@ -62,19 +62,29 @@ eficas_compile_ui ( desWidgetOptionnel.ui )
 eficas_compile_ui ( desGroupeOptionnel.ui )
 eficas_compile_ui ( Tuple2.ui )
 eficas_compile_ui ( Tuple3.ui )
+eficas_compile_ui ( Tuple4.ui )
+eficas_compile_ui ( Tuple5.ui )
+eficas_compile_ui ( Tuple6.ui )
+eficas_compile_ui ( Tuple7.ui )
+eficas_compile_ui ( Tuple8.ui )
+eficas_compile_ui ( Tuple9.ui )
+eficas_compile_ui ( Tuple10.ui )
 eficas_compile_ui ( desPBOptionnelMT.ui )
 #
 eficas_compile_ui ( desWidgetBloc.ui )
 eficas_compile_ui ( desWidgetCB.ui )
+eficas_compile_ui ( desWidgetCBIntoSug.ui )
 eficas_compile_ui ( desWidgetCommentaire.ui )
 eficas_compile_ui ( desWidgetDate.ui )
 eficas_compile_ui ( desWidgetFact.ui )
-eficas_compile_ui_2 ( desWidgetFactPlie.ui )
+eficas_compile_ui ( desWidgetFactPlie.ui )
+eficas_compile_ui ( desWidgetFactTableau.ui )
 eficas_compile_ui ( desWidgetHeure.ui )
 eficas_compile_ui ( desWidgetInactif.ui )
 eficas_compile_ui ( desWidgetInformation.ui )
 eficas_compile_ui ( desWidgetIntoSug.ui )
 eficas_compile_ui ( desWidgetMatrice.ui )
+eficas_compile_ui ( desWidgetNiveauFact.ui )
 eficas_compile_ui ( desWidgetParam.ui )
 eficas_compile_ui ( desWidgetPlusieursBase.ui )
 eficas_compile_ui ( desWidgetPlusieursInto.ui )
@@ -90,8 +100,16 @@ eficas_compile_ui ( desWidgetSimpComplexe.ui )
 eficas_compile_ui ( desWidgetSimpFichier.ui )
 eficas_compile_ui ( desWidgetSimpSalome.ui )
 eficas_compile_ui ( desWidgetSimpTxt.ui )
+eficas_compile_ui ( desWidgetTableau.ui )
 eficas_compile_ui ( desWidgetTuple2.ui )
 eficas_compile_ui ( desWidgetTuple3.ui )
+eficas_compile_ui ( desWidgetTuple4.ui )
+eficas_compile_ui ( desWidgetTuple5.ui )
+eficas_compile_ui ( desWidgetTuple6.ui )
+eficas_compile_ui ( desWidgetTuple7.ui )
+eficas_compile_ui ( desWidgetTuple8.ui )
+eficas_compile_ui ( desWidgetTuple9.ui )
+eficas_compile_ui ( desWidgetTuple10.ui )
 eficas_compile_ui ( desWidgetUniqueSDCO.ui )
 eficas_compile_ui ( desWidgetVide.ui )
 
diff --git a/UiQT5/Tuple10.ui b/UiQT5/Tuple10.ui
new file mode 100644 (file)
index 0000000..102166a
--- /dev/null
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple10</class>
+ <widget class="QWidget" name="Tuple10">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>742</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_11">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_6">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_12">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_7">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_14">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_8">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_13">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_9">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_10">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index 10c44979198b9fcc53f2142f064d8bc5372d5679..9d77748364069fb93d4c047f3ee345fc811646c1 100644 (file)
@@ -6,10 +6,16 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>880</width>
-    <height>33</height>
+    <width>490</width>
+    <height>29</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
@@ -30,7 +45,7 @@
    <item>
     <widget class="LECustomTuple" name="lineEditVal_1">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
@@ -68,7 +83,7 @@ border:0px;
    <item>
     <widget class="LECustomTuple" name="lineEditVal_2">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
@@ -81,7 +96,7 @@ border:0px;
      </property>
      <property name="maximumSize">
       <size>
-       <width>805</width>
+       <width>10000</width>
        <height>16777215</height>
       </size>
      </property>
@@ -104,7 +119,7 @@ border:0px;</string>
    <item>
     <widget class="LECustomTuple" name="lineEditVal_3">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
@@ -117,7 +132,7 @@ border:0px;</string>
      </property>
      <property name="maximumSize">
       <size>
-       <width>805</width>
+       <width>10000</width>
        <height>16777215</height>
       </size>
      </property>
@@ -142,9 +157,12 @@ border:0px;</string>
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>123</width>
+       <width>5</width>
        <height>20</height>
       </size>
      </property>
diff --git a/UiQT5/Tuple4.ui b/UiQT5/Tuple4.ui
new file mode 100644 (file)
index 0000000..d551c2b
--- /dev/null
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple4</class>
+ <widget class="QWidget" name="Tuple4">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>981</width>
+    <height>39</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/Tuple5.ui b/UiQT5/Tuple5.ui
new file mode 100644 (file)
index 0000000..b301339
--- /dev/null
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple5</class>
+ <widget class="QWidget" name="Tuple5">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1152</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/Tuple6.ui b/UiQT5/Tuple6.ui
new file mode 100644 (file)
index 0000000..192bf67
--- /dev/null
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple6</class>
+ <widget class="QWidget" name="Tuple6">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>879</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_11">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_6">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/Tuple7.ui b/UiQT5/Tuple7.ui
new file mode 100644 (file)
index 0000000..242b5b1
--- /dev/null
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple7</class>
+ <widget class="QWidget" name="Tuple7">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1019</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_11">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_6">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_12">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_7">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/Tuple8.ui b/UiQT5/Tuple8.ui
new file mode 100644 (file)
index 0000000..169b260
--- /dev/null
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple8</class>
+ <widget class="QWidget" name="Tuple8">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1159</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_11">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_6">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_12">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_7">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_13">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_8">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/Tuple9.ui b/UiQT5/Tuple9.ui
new file mode 100644 (file)
index 0000000..6a7f25a
--- /dev/null
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Tuple9</class>
+ <widget class="QWidget" name="Tuple9">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1299</width>
+    <height>46</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="label_5">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_1">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;
+
+</string>
+     </property>
+     <property name="readOnly">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_6">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_2">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_8">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_10">
+     <property name="text">
+      <string>,</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_4">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_9">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_5">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_11">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_6">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_12">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_7">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_14">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_8">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_13">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="LECustomTuple" name="lineEditVal_9">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>10000</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::StrongFocus</enum>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label_7">
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Preferred</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>5</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/dateEtHeure.ui b/UiQT5/dateEtHeure.ui
new file mode 100644 (file)
index 0000000..0be453c
--- /dev/null
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>281</width>
+    <height>51</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Saisie date et heure</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QTextEdit" name="te_date">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>101</width>
+         <height>31</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>101</width>
+         <height>31</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Entrer la date</string>
+       </property>
+       <property name="html">
+        <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Latin Modern Sans'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;18/12/17&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>13</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QTextEdit" name="te_heure">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>101</width>
+         <height>31</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>101</width>
+         <height>31</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Entrer l'heure</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
index d283155e252889b1fe75dac6e76136e3bea98fc4..69b9c248cbcbd2c7dd977affd83a2322f733538f 100644 (file)
@@ -1,48 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
  <class>ChoixCode</class>
- <widget class="QWidget" name="ChoixCode">
+ <widget class="QDialog" name="ChoixCode">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>555</width>
-    <height>332</height>
+    <width>205</width>
+    <height>96</height>
    </rect>
   </property>
-  <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
-    <horstretch>0</horstretch>
-    <verstretch>0</verstretch>
-   </sizepolicy>
-  </property>
   <property name="windowTitle">
-   <string>Choix du code</string>
+   <string>Coix du Code</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QLabel" name="label_choix">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="minimumSize">
-      <size>
-       <width>0</width>
-       <height>30</height>
-      </size>
-     </property>
-     <property name="text">
-      <string>Veuillez choisir un code :</string>
-     </property>
-    </widget>
-   </item>
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
       <string/>
      </property>
      <layout class="QVBoxLayout" name="vlBouton">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
       <item>
-       <spacer name="verticalSpacer">
+       <spacer name="verticalSpacer_2">
         <property name="orientation">
          <enum>Qt::Vertical</enum>
         </property>
         <property name="sizeHint" stdset="0">
          <size>
           <width>20</width>
-          <height>40</height>
+          <height>20</height>
          </size>
         </property>
        </spacer>
     </widget>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <property name="sizeConstraint">
-      <enum>QLayout::SetFixedSize</enum>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
      </property>
-     <item>
-      <spacer name="horizontalSpacer_4">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pB_cancel">
-       <property name="minimumSize">
-        <size>
-         <width>140</width>
-         <height>40</height>
-        </size>
-       </property>
-       <property name="toolTip">
-        <string/>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
-       </property>
-       <property name="text">
-        <string>&amp;Cancel</string>
-       </property>
-       <property name="shortcut">
-        <string/>
-       </property>
-       <property name="autoDefault">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Fixed</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pB_OK">
-       <property name="minimumSize">
-        <size>
-         <width>140</width>
-         <height>40</height>
-        </size>
-       </property>
-       <property name="toolTip">
-        <string>Validate choice</string>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-
-</string>
-       </property>
-       <property name="text">
-        <string>&amp;OK</string>
-       </property>
-       <property name="shortcut">
-        <string/>
-       </property>
-       <property name="autoDefault">
-        <bool>true</bool>
-       </property>
-       <property name="default">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
+    </widget>
    </item>
   </layout>
  </widget>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ChoixCode</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ChoixCode</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
index ba0c5a242b8c397e8a6e6be6807ad7af58c6276a..e1795a36da4290dc299f710a4c1dbc4b98c8bd17 100644 (file)
@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>739</width>
-    <height>63</height>
+    <width>809</width>
+    <height>56</height>
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+   <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
@@ -25,7 +25,7 @@
   <property name="maximumSize">
    <size>
     <width>1493</width>
-    <height>85</height>
+    <height>95</height>
    </size>
   </property>
   <property name="windowTitle">
    <item>
     <widget class="MonLabelClic" name="label">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+      <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
diff --git a/UiQT5/desWidgetCBIntoSug.ui b/UiQT5/desWidgetCBIntoSug.ui
new file mode 100644 (file)
index 0000000..8c4323e
--- /dev/null
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetCBIntoSug</class>
+ <widget class="QWidget" name="WidgetCBIntoSug">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1104</width>
+    <height>102</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>1493</width>
+    <height>150</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">QComboBox{combobox-popup:0;};</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>4</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>9</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QFrame" name="frameHorsListe">
+       <property name="styleSheet">
+        <string notr="true">background:rgb(221, 221, 166)</string>
+       </property>
+       <property name="frameShape">
+        <enum>QFrame::Box</enum>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <property name="spacing">
+         <number>0</number>
+        </property>
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QLabel" name="label_2">
+          <property name="styleSheet">
+           <string notr="true"/>
+          </property>
+          <property name="text">
+           <string>Valeurs hors liste - la valeur saisie sera ajoutée à la liste</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineEditVal">
+          <property name="styleSheet">
+           <string notr="true">background : white
+</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QComboBox" name="CBChoix">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>361</width>
+           <height>32</height>
+          </size>
+         </property>
+         <property name="accessibleName">
+          <string/>
+         </property>
+         <property name="accessibleDescription">
+          <string/>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">QComboBox {
+ background:rgb(235,235,235);
+ }
+/*QComboBox: on {
+  font : italic
+ }
+background:rgb(235,235,235);
+border:0px;
+
+
+QComboBox:!editable:on, QComboBox::drop-down:editable:on {
+background: black;
+    font : italic 14px
+ }
+QComboBox:on { 
+  font : italic 20px;
+  background: red ;
+}/*
+</string>
+         </property>
+         <property name="maxVisibleItems">
+          <number>100</number>
+         </property>
+         <property name="frame">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>301</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index 577965c16751173bf669ffbf488bd6a555b706f2..cb31ccb2fe799e6ed8dc29c8e180270134e96354 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1353</width>
-    <height>596</height>
+    <width>1110</width>
+    <height>731</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -32,7 +32,7 @@
    <string notr="true">background-color : rgb(224,223,222);
 font : 'times' 9px</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_4">
+  <layout class="QVBoxLayout" name="verticalLayout_5">
    <property name="spacing">
     <number>0</number>
    </property>
@@ -50,170 +50,152 @@ font : 'times' 9px</string>
      <property name="minimumSize">
       <size>
        <width>0</width>
-       <height>130</height>
+       <height>8</height>
       </size>
      </property>
      <property name="maximumSize">
       <size>
        <width>16777215</width>
-       <height>130</height>
+       <height>75</height>
       </size>
      </property>
      <property name="styleSheet">
       <string notr="true">background-color:rgb(224,223,222)</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_2">
-      <property name="topMargin">
-       <number>2</number>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="spacing">
+       <number>0</number>
       </property>
-      <property name="bottomMargin">
-       <number>3</number>
+      <property name="margin">
+       <number>0</number>
       </property>
-      <property name="verticalSpacing">
-       <number>2</number>
-      </property>
-      <item row="0" column="0">
-       <widget class="QFrame" name="frame_2">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="frameShape">
-         <enum>QFrame::Box</enum>
-        </property>
-        <property name="frameShadow">
-         <enum>QFrame::Raised</enum>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <property name="spacing">
+         <number>0</number>
         </property>
-        <layout class="QHBoxLayout" name="horizontalLayout">
-         <property name="spacing">
-          <number>0</number>
-         </property>
-         <item>
-          <spacer name="horizontalSpacer_5">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Fixed</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>13</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="MonBoutonValide" name="RBValide">
-           <property name="minimumSize">
-            <size>
-             <width>17</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="focusPolicy">
-            <enum>Qt::ClickFocus</enum>
-           </property>
-           <property name="toolTip">
-            <string>Affiche le rapport de validité de la commande</string>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
-           </property>
-           <property name="text">
-            <string>...</string>
-           </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
-           </property>
-           <property name="iconSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_3">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Fixed</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>13</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="MonLabelClic" name="labelNomCommande">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="minimumSize">
-            <size>
-             <width>150</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="frameShape">
-            <enum>QFrame::NoFrame</enum>
-           </property>
-           <property name="frameShadow">
-            <enum>QFrame::Raised</enum>
-           </property>
-           <property name="text">
-            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#0000ff;&quot;&gt;commande &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="toto">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Maximum</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>2</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="QLineEdit" name="LENom">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="toolTip">
-            <string>Nom de l'objet. Seuls, les objets valides peuvent être nommés</string>
-           </property>
-           <property name="styleSheet">
-            <string notr="true"> QLineEdit {
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout">
+          <item>
+           <spacer name="horizontalSpacer_5">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>13</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="MonBoutonValide" name="RBValide">
+            <property name="minimumSize">
+             <size>
+              <width>17</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>Affiche le rapport de validité de la commande</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border : 0px</string>
+            </property>
+            <property name="text">
+             <string>...</string>
+            </property>
+            <property name="icon">
+             <iconset>
+              <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_3">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>13</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="MonLabelClic" name="labelNomCommande">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>150</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="frameShape">
+             <enum>QFrame::NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+             <enum>QFrame::Raised</enum>
+            </property>
+            <property name="text">
+             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#0000ff;&quot;&gt;commande &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="LENom">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>40</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>16777215</width>
+              <height>200</height>
+             </size>
+            </property>
+            <property name="toolTip">
+             <string>Nom de l'objet. Seuls, les objets valides peuvent être nommés</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true"> QLineEdit {
      border: 2px solid gray;
      border-radius: 10px;
      padding: 0 8px;
@@ -226,349 +208,239 @@ QLineEdit:disabled
 }
 /*read-only {
      background: lightblue;*/</string>
-           </property>
-           <property name="readOnly">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_7">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>108</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_2">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Ignored</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>2</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_2">
-           <property name="spacing">
-            <number>4</number>
-           </property>
-           <property name="sizeConstraint">
-            <enum>QLayout::SetFixedSize</enum>
-           </property>
-           <item>
-            <widget class="QToolButton" name="RBRun">
-             <property name="minimumSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="maximumSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="focusPolicy">
-              <enum>Qt::ClickFocus</enum>
-             </property>
-             <property name="toolTip">
-              <string>Lance un script associé à la commande</string>
-             </property>
-             <property name="styleSheet">
-              <string notr="true">border : 0px</string>
-             </property>
-             <property name="text">
-              <string>...</string>
-             </property>
-             <property name="icon">
-              <iconset>
-               <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
-             </property>
-             <property name="iconSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QComboBox" name="CBScripts">
-             <property name="sizePolicy">
-              <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="minimumSize">
-              <size>
-               <width>0</width>
-               <height>38</height>
-              </size>
-             </property>
-             <property name="frame">
-              <bool>true</bool>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QToolButton" name="RBInfo">
-             <property name="minimumSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="maximumSize">
-              <size>
-               <width>31</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="focusPolicy">
-              <enum>Qt::ClickFocus</enum>
-             </property>
-             <property name="toolTip">
-              <string>ouvre un navigateur sur l'aide contextuelle</string>
-             </property>
-             <property name="styleSheet">
-              <string notr="true">border : 0px</string>
-             </property>
-             <property name="text">
-              <string>...</string>
-             </property>
-             <property name="icon">
-              <iconset>
-               <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
-             </property>
-             <property name="iconSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QToolButton" name="RBRegle">
-             <property name="minimumSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="maximumSize">
-              <size>
-               <width>31</width>
-               <height>31</height>
-              </size>
-             </property>
-             <property name="focusPolicy">
-              <enum>Qt::ClickFocus</enum>
-             </property>
-             <property name="toolTip">
-              <string>affiche les régles de validité</string>
-             </property>
-             <property name="styleSheet">
-              <string notr="true">border : 0px</string>
-             </property>
-             <property name="text">
-              <string>...</string>
-             </property>
-             <property name="icon">
-              <iconset>
-               <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
-             </property>
-             <property name="iconSize">
-              <size>
-               <width>21</width>
-               <height>31</height>
-              </size>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_4">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeType">
-            <enum>QSizePolicy::Fixed</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>13</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="QToolButton" name="RBPoubelle">
-           <property name="minimumSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="maximumSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-           <property name="focusPolicy">
-            <enum>Qt::ClickFocus</enum>
-           </property>
-           <property name="toolTip">
-            <string>Détruit la commande</string>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
-           </property>
-           <property name="text">
-            <string>...</string>
-           </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
-           </property>
-           <property name="iconSize">
-            <size>
-             <width>21</width>
-             <height>31</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-        </layout>
-        <zorder>RBValide</zorder>
-        <zorder>labelNomCommande</zorder>
-        <zorder>LENom</zorder>
-        <zorder>horizontalSpacer_3</zorder>
-        <zorder>horizontalSpacer_4</zorder>
-        <zorder>RBPoubelle</zorder>
-        <zorder>horizontalSpacer_5</zorder>
-        <zorder>horizontalSpacer_7</zorder>
-       </widget>
-      </item>
-      <item row="0" column="1">
-       <widget class="QPushButton" name="bCatalogue">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>160</width>
-          <height>40</height>
-         </size>
-        </property>
-        <property name="focusPolicy">
-         <enum>Qt::ClickFocus</enum>
-        </property>
-        <property name="toolTip">
-         <string>Affiche les commandes possibles</string>
-        </property>
-        <property name="styleSheet">
-         <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
-        </property>
-        <property name="text">
-         <string>&amp;Commandes</string>
-        </property>
-        <property name="shortcut">
-         <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-        </property>
-        <property name="autoDefault">
-         <bool>true</bool>
-        </property>
-        <property name="default">
-         <bool>true</bool>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="labelDoc">
-        <property name="text">
-         <string>TextLabel</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <layout class="QGridLayout" name="gridLayout">
-        <property name="verticalSpacing">
-         <number>0</number>
-        </property>
-        <item row="0" column="0">
-         <widget class="QPushButton" name="bAvant">
+            </property>
+            <property name="readOnly">
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_7">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>18</width>
+              <height>17</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QToolButton" name="RBRun">
+            <property name="minimumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>Lance un script associé à la commande</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border : 0px</string>
+            </property>
+            <property name="text">
+             <string>...</string>
+            </property>
+            <property name="icon">
+             <iconset>
+              <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="CBScripts">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>150</width>
+              <height>38</height>
+             </size>
+            </property>
+            <property name="frame">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QToolButton" name="RBRegle">
+            <property name="minimumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>31</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>affiche les régles de validité</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border : 0px</string>
+            </property>
+            <property name="text">
+             <string>...</string>
+            </property>
+            <property name="icon">
+             <iconset>
+              <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QToolButton" name="RBInfo">
+            <property name="minimumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>31</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>ouvre un navigateur sur l'aide contextuelle</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border : 0px</string>
+            </property>
+            <property name="text">
+             <string>...</string>
+            </property>
+            <property name="icon">
+             <iconset>
+              <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_4">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>13</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QToolButton" name="RBPoubelle">
+            <property name="minimumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>Détruit la commande</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">border : 0px</string>
+            </property>
+            <property name="text">
+             <string>...</string>
+            </property>
+            <property name="icon">
+             <iconset>
+              <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
+            </property>
+            <property name="iconSize">
+             <size>
+              <width>21</width>
+              <height>31</height>
+             </size>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QLabel" name="labelDoc">
           <property name="sizePolicy">
-           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
           </property>
-          <property name="minimumSize">
-           <size>
-            <width>60</width>
-            <height>24</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>60</width>
-            <height>24</height>
-           </size>
-          </property>
-          <property name="focusPolicy">
-           <enum>Qt::ClickFocus</enum>
-          </property>
-          <property name="toolTip">
-           <string>Affiche le formulaire de la commande précédente</string>
-          </property>
-          <property name="styleSheet">
-           <string notr="true">background-color:rgb(104,110,149);
-color :white;
-border-radius : 12px
-</string>
-          </property>
           <property name="text">
-           <string>&lt;&lt;</string>
-          </property>
-          <property name="shortcut">
-           <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
-          </property>
-          <property name="autoDefault">
-           <bool>true</bool>
-          </property>
-          <property name="default">
-           <bool>true</bool>
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
           </property>
          </widget>
         </item>
-        <item row="0" column="1">
-         <widget class="QPushButton" name="bApres">
+       </layout>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <property name="spacing">
+         <number>1</number>
+        </property>
+        <property name="sizeConstraint">
+         <enum>QLayout::SetFixedSize</enum>
+        </property>
+        <item>
+         <widget class="QPushButton" name="bCatalogue">
           <property name="sizePolicy">
            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
             <horstretch>0</horstretch>
@@ -577,21 +449,15 @@ border-radius : 12px
           </property>
           <property name="minimumSize">
            <size>
-            <width>60</width>
-            <height>24</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>60</width>
-            <height>24</height>
+            <width>160</width>
+            <height>30</height>
            </size>
           </property>
           <property name="focusPolicy">
            <enum>Qt::ClickFocus</enum>
           </property>
           <property name="toolTip">
-           <string>Affiche le formulaire de la commande suivante</string>
+           <string>Affiche les commandes possibles</string>
           </property>
           <property name="styleSheet">
            <string notr="true">background-color:rgb(104,110,149);
@@ -600,7 +466,7 @@ border-radius : 12px
 </string>
           </property>
           <property name="text">
-           <string>&gt;&gt;</string>
+           <string>&amp;Commandes</string>
           </property>
           <property name="shortcut">
            <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
@@ -613,7 +479,106 @@ border-radius : 12px
           </property>
          </widget>
         </item>
-        <item row="1" column="0">
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <property name="spacing">
+           <number>1</number>
+          </property>
+          <item>
+           <widget class="QPushButton" name="bAvant">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>60</width>
+              <height>24</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>24</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>Affiche le formulaire de la commande précédente</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background-color:rgb(104,110,149);
+color :white;
+border-radius : 12px
+</string>
+            </property>
+            <property name="text">
+             <string>&lt;&lt;</string>
+            </property>
+            <property name="shortcut">
+             <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+            </property>
+            <property name="autoDefault">
+             <bool>true</bool>
+            </property>
+            <property name="default">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="bApres">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>60</width>
+              <height>24</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>24</height>
+             </size>
+            </property>
+            <property name="focusPolicy">
+             <enum>Qt::ClickFocus</enum>
+            </property>
+            <property name="toolTip">
+             <string>Affiche le formulaire de la commande suivante</string>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">background-color:rgb(104,110,149);
+color :white;
+border-radius : 12px
+</string>
+            </property>
+            <property name="text">
+             <string>&gt;&gt;</string>
+            </property>
+            <property name="shortcut">
+             <string>Shift+A, Alt+A, Alt+A, Alt+A</string>
+            </property>
+            <property name="autoDefault">
+             <bool>true</bool>
+            </property>
+            <property name="default">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
          <spacer name="verticalSpacer_2">
           <property name="orientation">
            <enum>Qt::Vertical</enum>
@@ -621,7 +586,7 @@ border-radius : 12px
           <property name="sizeHint" stdset="0">
            <size>
             <width>20</width>
-            <height>0</height>
+            <height>2</height>
            </size>
           </property>
          </spacer>
@@ -662,31 +627,24 @@ border-radius : 12px
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>1353</width>
-        <height>466</height>
+        <width>1110</width>
+        <height>656</height>
        </rect>
       </property>
-      <layout class="QVBoxLayout" name="verticalLayout">
+      <layout class="QVBoxLayout" name="verticalLayoutCommande">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="margin">
+        <number>0</number>
+       </property>
        <item>
         <layout class="QVBoxLayout" name="commandesLayout">
          <property name="spacing">
-          <number>1</number>
+          <number>0</number>
          </property>
         </layout>
        </item>
-       <item>
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>5</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
       </layout>
      </widget>
     </widget>
index dbc1f738fd93bfbe2de87d499c20c5506c95f35d..cba4773d5dd7881c6703eb2cfd256e0c3a3567d6 100644 (file)
@@ -6,10 +6,16 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>949</width>
-    <height>53</height>
+    <width>619</width>
+    <height>63</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="focusPolicy">
    <enum>Qt::StrongFocus</enum>
   </property>
      padding: 0 3px;
  }</string>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout_3">
+  <layout class="QHBoxLayout" name="horizontalLayout_5">
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>2</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
+   <property name="margin">
     <number>0</number>
    </property>
    <item>
@@ -59,7 +56,7 @@
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
-         <height>5</height>
+         <height>4</height>
         </size>
        </property>
       </spacer>
     </layout>
    </item>
    <item>
-    <layout class="QGridLayout" name="gridLayout">
-     <property name="horizontalSpacing">
-      <number>0</number>
-     </property>
-     <item row="0" column="0">
-      <widget class="MonBoutonValide" name="RBValide">
-       <property name="minimumSize">
-        <size>
-         <width>17</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="maximumSize">
-        <size>
-         <width>21</width>
-         <height>25</height>
-        </size>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">border : 0px</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset>
-         <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>21</width>
-         <height>25</height>
-        </size>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <property name="spacing">
-        <number>0</number>
-       </property>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
        <item>
-        <widget class="MonLabelClic" name="GroupBox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
+        <widget class="MonBoutonValide" name="RBValide">
          <property name="minimumSize">
           <size>
-           <width>0</width>
+           <width>17</width>
            <height>25</height>
           </size>
          </property>
          <property name="maximumSize">
           <size>
-           <width>12121213</width>
+           <width>21</width>
            <height>25</height>
           </size>
          </property>
-         <property name="text">
-          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>13</width>
-           <height>20</height>
-          </size>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
          </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="Line" name="line_4">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+         <property name="text">
+          <string>...</string>
          </property>
-         <property name="minimumSize">
-          <size>
-           <width>200</width>
-           <height>0</height>
-          </size>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
          </property>
-         <property name="maximumSize">
+         <property name="iconSize">
           <size>
-           <width>1500</width>
-           <height>16</height>
+           <width>21</width>
+           <height>25</height>
           </size>
          </property>
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
         </widget>
        </item>
        <item>
-        <spacer name="horizontalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>13</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <layout class="QHBoxLayout" name="horizontalLayout">
          <property name="spacing">
           <number>0</number>
          </property>
-         <property name="sizeConstraint">
-          <enum>QLayout::SetFixedSize</enum>
-         </property>
          <item>
-          <widget class="QToolButton" name="RBRun">
+          <widget class="MonLabelClic" name="GroupBox">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
            <property name="minimumSize">
             <size>
-             <width>21</width>
-             <height>31</height>
+             <width>0</width>
+             <height>25</height>
             </size>
            </property>
            <property name="maximumSize">
             <size>
-             <width>21</width>
-             <height>31</height>
+             <width>12121213</width>
+             <height>25</height>
             </size>
            </property>
-           <property name="focusPolicy">
-            <enum>Qt::ClickFocus</enum>
+           <property name="text">
+            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
            </property>
-           <property name="toolTip">
-            <string>Lance un script associé à la commande</string>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
            </property>
-           <property name="styleSheet">
-            <string notr="true">border : 0px</string>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
            </property>
-           <property name="text">
-            <string>...</string>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
            </property>
-           <property name="icon">
-            <iconset>
-             <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+          </spacer>
+         </item>
+         <item>
+          <widget class="Line" name="line_4">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
            </property>
-           <property name="iconSize">
+           <property name="minimumSize">
             <size>
-             <width>21</width>
-             <height>31</height>
+             <width>200</width>
+             <height>0</height>
             </size>
            </property>
+           <property name="maximumSize">
+            <size>
+             <width>1500</width>
+             <height>16</height>
+            </size>
+           </property>
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
           </widget>
          </item>
          <item>
-          <widget class="QToolButton" name="RBInfo">
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_2">
+           <property name="spacing">
+            <number>0</number>
+           </property>
+           <property name="sizeConstraint">
+            <enum>QLayout::SetFixedSize</enum>
+           </property>
+           <item>
+            <widget class="QToolButton" name="RBRun">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::ClickFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>Lance un script associé à la commande</string>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="RBInfo">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="CBScripts">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>0</width>
+               <height>38</height>
+              </size>
+             </property>
+             <property name="cursor">
+              <cursorShape>ArrowCursor</cursorShape>
+             </property>
+             <property name="frame">
+              <bool>false</bool>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="RBRegle">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>25</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QToolButton" name="RBPlus">
            <property name="minimumSize">
             <size>
              <width>21</width>
            </property>
            <property name="icon">
             <iconset>
-             <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+             <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
            </property>
            <property name="iconSize">
             <size>
           </widget>
          </item>
          <item>
-          <widget class="QComboBox" name="CBScripts">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="minimumSize">
-            <size>
-             <width>0</width>
-             <height>38</height>
-            </size>
-           </property>
-           <property name="cursor">
-            <cursorShape>ArrowCursor</cursorShape>
-           </property>
-           <property name="frame">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QToolButton" name="RBRegle">
+          <widget class="QToolButton" name="RBPoubelle">
            <property name="minimumSize">
             <size>
              <width>21</width>
            </property>
            <property name="icon">
             <iconset>
-             <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+             <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
            </property>
            <property name="iconSize">
             <size>
          </item>
         </layout>
        </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="commandesLayout">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>2</number>
+       </property>
        <item>
-        <spacer name="horizontalSpacer_2">
+        <spacer name="verticalSpacer_2">
          <property name="orientation">
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Vertical</enum>
          </property>
          <property name="sizeType">
           <enum>QSizePolicy::Fixed</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
-           <width>13</width>
-           <height>20</height>
+           <width>2</width>
+           <height>2</height>
           </size>
          </property>
         </spacer>
        </item>
-       <item>
-        <widget class="QToolButton" name="RBPoubelle">
-         <property name="minimumSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="maximumSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border : 0px</string>
-         </property>
-         <property name="text">
-          <string>...</string>
-         </property>
-         <property name="icon">
-          <iconset>
-           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
-         </property>
-         <property name="iconSize">
-          <size>
-           <width>21</width>
-           <height>25</height>
-          </size>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item row="1" column="1">
-      <layout class="QVBoxLayout" name="commandesLayout">
-       <property name="spacing">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>2</number>
-       </property>
       </layout>
      </item>
     </layout>
index bd9e9c30dd9fdbd4acc21bc590a5fdd9b343060f..766ca93bef56f45a8989d82b4dca574756c359e4 100644 (file)
@@ -62,7 +62,8 @@
      </property>
      <property name="icon">
       <iconset>
-       <normaloff>../Editeur/icons/plusnode.png</normaloff>../Editeur/icons/plusnode.png</iconset>
+       <normaloff>../Editeur/icons/plusnode.png</normaloff>
+       <disabledoff>../Editeur/icons/ast-red-ball.png</disabledoff>../Editeur/icons/plusnode.png</iconset>
      </property>
      <property name="iconSize">
       <size>
diff --git a/UiQT5/desWidgetFactTableau.ui b/UiQT5/desWidgetFactTableau.ui
new file mode 100644 (file)
index 0000000..f736a47
--- /dev/null
@@ -0,0 +1,428 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetFactTableau</class>
+ <widget class="QWidget" name="WidgetFactTableau">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>949</width>
+    <height>225</height>
+   </rect>
+  </property>
+  <property name="focusPolicy">
+   <enum>Qt::StrongFocus</enum>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"> QGroupBox {
+     border: 1px solid gray;
+     border-radius: 5px;
+     margin-top: 1ex; /* leave space at the top for the title */
+ }
+
+ QGroupBox::title {
+     padding: 0 3px;
+ }</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>2</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QToolButton" name="RBPlie">
+       <property name="minimumSize">
+        <size>
+         <width>21</width>
+         <height>15</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>21</width>
+         <height>21</height>
+        </size>
+       </property>
+       <property name="styleSheet">
+        <string notr="true">border : 0px</string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset>
+         <normaloff>../Editeur/icons/minusnode.png</normaloff>../Editeur/icons/minusnode.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>21</width>
+         <height>21</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_4">
+       <item>
+        <widget class="Line" name="line_7">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <property name="horizontalSpacing">
+      <number>0</number>
+     </property>
+     <item row="0" column="0">
+      <widget class="MonBoutonValide" name="RBValide">
+       <property name="minimumSize">
+        <size>
+         <width>17</width>
+         <height>25</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>21</width>
+         <height>25</height>
+        </size>
+       </property>
+       <property name="styleSheet">
+        <string notr="true">border : 0px</string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset>
+         <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>21</width>
+         <height>25</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="MonLabelClic" name="GroupBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>12121213</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;TextLabel&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>13</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="Line" name="line_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>200</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>1500</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>13</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <property name="sizeConstraint">
+          <enum>QLayout::SetFixedSize</enum>
+         </property>
+         <item>
+          <widget class="QToolButton" name="RBRun">
+           <property name="minimumSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
+           <property name="toolTip">
+            <string>Lance un script associé à la commande</string>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">border : 0px</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>../Editeur/icons/roue.png</normaloff>../Editeur/icons/roue.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="RBInfo">
+           <property name="minimumSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">border : 0px</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>../Editeur/icons/point-interrogation30.png</normaloff>../Editeur/icons/point-interrogation30.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="RBRegle">
+           <property name="minimumSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">border : 0px</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>../Editeur/icons/lettreRblanc30.png</normaloff>../Editeur/icons/lettreRblanc30.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>21</width>
+             <height>25</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>13</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="1">
+      <layout class="QHBoxLayout" name="commandesLayout">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>2</number>
+       </property>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+  <zorder></zorder>
+  <zorder></zorder>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetNiveauFact.ui b/UiQT5/desWidgetNiveauFact.ui
new file mode 100644 (file)
index 0000000..f02a785
--- /dev/null
@@ -0,0 +1,544 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetNiveauFact</class>
+ <widget class="QWidget" name="WidgetNiveauFact">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1353</width>
+    <height>596</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>DCommandeUnique</string>
+  </property>
+  <property name="toolTip">
+   <string/>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">background-color : rgb(224,223,222);
+font : 'times' 9px</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_4">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QWidget" name="frameAffichage" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>130</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>16777215</width>
+       <height>130</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background-color:rgb(224,223,222)</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <property name="topMargin">
+       <number>2</number>
+      </property>
+      <property name="bottomMargin">
+       <number>3</number>
+      </property>
+      <property name="verticalSpacing">
+       <number>2</number>
+      </property>
+      <item row="0" column="0">
+       <widget class="QFrame" name="frame_2">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::Box</enum>
+        </property>
+        <property name="frameShadow">
+         <enum>QFrame::Raised</enum>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <spacer name="horizontalSpacer_5">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="MonBoutonValide" name="RBValide">
+           <property name="minimumSize">
+            <size>
+             <width>17</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
+           <property name="toolTip">
+            <string>Affiche le rapport de validité de la commande</string>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">border : 0px</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</normaloff>../../../.designer/Editeur/icons/ast-green-ball.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="MonLabelClic" name="labelNomCommande">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>150</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="frameShape">
+            <enum>QFrame::NoFrame</enum>
+           </property>
+           <property name="frameShadow">
+            <enum>QFrame::Raised</enum>
+           </property>
+           <property name="text">
+            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#0000ff;&quot;&gt;commande &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="toto">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Maximum</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>2</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_7">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>108</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Ignored</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>2</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_2">
+           <property name="spacing">
+            <number>4</number>
+           </property>
+           <property name="sizeConstraint">
+            <enum>QLayout::SetFixedSize</enum>
+           </property>
+           <item>
+            <widget class="QToolButton" name="RBRun">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::ClickFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>Lance un script associé à la commande</string>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../../../.designer/Editeur/icons/roue.png</normaloff>../../../.designer/Editeur/icons/roue.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="CBScripts">
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>0</width>
+               <height>38</height>
+              </size>
+             </property>
+             <property name="frame">
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="RBInfo">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>31</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::ClickFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>ouvre un navigateur sur l'aide contextuelle</string>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../../../.designer/Editeur/icons/point-interrogation.png</normaloff>../../../.designer/Editeur/icons/point-interrogation.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QToolButton" name="RBRegle">
+             <property name="minimumSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>31</width>
+               <height>31</height>
+              </size>
+             </property>
+             <property name="focusPolicy">
+              <enum>Qt::ClickFocus</enum>
+             </property>
+             <property name="toolTip">
+              <string>affiche les régles de validité</string>
+             </property>
+             <property name="styleSheet">
+              <string notr="true">border : 0px</string>
+             </property>
+             <property name="text">
+              <string>...</string>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</normaloff>../../../.designer/Editeur/icons/lettreRblanc30.png</iconset>
+             </property>
+             <property name="iconSize">
+              <size>
+               <width>21</width>
+               <height>31</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_4">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>13</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QToolButton" name="RBPoubelle">
+           <property name="minimumSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
+           <property name="toolTip">
+            <string>Détruit la commande</string>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">border : 0px</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>../../../.designer/Editeur/icons/deleteRond.png</normaloff>../../../.designer/Editeur/icons/deleteRond.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>21</width>
+             <height>31</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+        </layout>
+        <zorder>RBValide</zorder>
+        <zorder>labelNomCommande</zorder>
+        <zorder>horizontalSpacer_3</zorder>
+        <zorder>horizontalSpacer_4</zorder>
+        <zorder>RBPoubelle</zorder>
+        <zorder>horizontalSpacer_5</zorder>
+        <zorder>horizontalSpacer_7</zorder>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="labelDoc">
+        <property name="text">
+         <string>TextLabel</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <layout class="QGridLayout" name="gridLayout">
+        <property name="verticalSpacing">
+         <number>0</number>
+        </property>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QScrollArea" name="scrollAreaCommandes">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>81</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background : rgb(247,247,247)
+
+
+</string>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="verticalScrollBarPolicy">
+      <enum>Qt::ScrollBarAsNeeded</enum>
+     </property>
+     <property name="horizontalScrollBarPolicy">
+      <enum>Qt::ScrollBarAsNeeded</enum>
+     </property>
+     <property name="widgetResizable">
+      <bool>true</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>1353</width>
+        <height>466</height>
+       </rect>
+      </property>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <layout class="QVBoxLayout" name="commandesLayout">
+         <property name="spacing">
+          <number>1</number>
+         </property>
+        </layout>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>5</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index fe1cbb7ddfc2bdeed9415c89b736049193efb507..8d7d5a9d3fc9deec76a780029d8a5814394e987e 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>764</width>
-    <height>86</height>
+    <width>1122</width>
+    <height>163</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -212,26 +212,47 @@ border: 1px solid gray;
           <x>0</x>
           <y>0</y>
           <width>300</width>
-          <height>57</height>
+          <height>101</height>
          </rect>
         </property>
         <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <layout class="QHBoxLayout" name="horizontalLayout_7">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <property name="leftMargin">
+          <number>0</number>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <property name="rightMargin">
+          <number>0</number>
+         </property>
+         <property name="bottomMargin">
+          <number>0</number>
+         </property>
          <item>
           <widget class="QLabel" name="monCommentaireLabel">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
+           <property name="minimumSize">
+            <size>
+             <width>300</width>
+             <height>0</height>
+            </size>
+           </property>
            <property name="text">
-            <string>TextLabel</string>
+            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;les types des tuples&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
            </property>
           </widget>
          </item>
@@ -278,9 +299,6 @@ border: 1px solid gray;
        <property name="lineWidth">
         <number>1</number>
        </property>
-       <property name="sizeAdjustPolicy">
-        <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
-       </property>
        <property name="widgetResizable">
         <bool>true</bool>
        </property>
@@ -292,8 +310,8 @@ border: 1px solid gray;
          <rect>
           <x>0</x>
           <y>0</y>
-          <width>398</width>
-          <height>48</height>
+          <width>705</width>
+          <height>122</height>
          </rect>
         </property>
         <property name="sizePolicy">
index 36438b0b4102a7eac3ad5c93875503ce8baac48d..bbb59be76dcb7f10d0b1968617dfd63719fb418a 100644 (file)
@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>612</width>
-    <height>175</height>
+    <width>740</width>
+    <height>386</height>
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+   <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
    <string>Form</string>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout_2">
-   <property name="spacing">
-    <number>0</number>
-   </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>2</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
-    <number>2</number>
-   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_5">
      <item>
       </widget>
      </item>
      <item>
-      <widget class="QScrollArea" name="scrollArea_2">
+      <widget class="QLabel" name="monCommentaireLabel">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
-       <property name="frameShape">
-        <enum>QFrame::NoFrame</enum>
+       <property name="minimumSize">
+        <size>
+         <width>300</width>
+         <height>0</height>
+        </size>
        </property>
-       <property name="frameShadow">
-        <enum>QFrame::Plain</enum>
+       <property name="maximumSize">
+        <size>
+         <width>300</width>
+         <height>16777215</height>
+        </size>
        </property>
-       <property name="widgetResizable">
-        <bool>true</bool>
+       <property name="text">
+        <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
        </property>
-       <widget class="QWidget" name="scrollAreaWidgetContents">
-        <property name="geometry">
-         <rect>
-          <x>0</x>
-          <y>0</y>
-          <width>82</width>
-          <height>111</height>
-         </rect>
-        </property>
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <layout class="QVBoxLayout" name="verticalLayout_7">
-         <item>
-          <widget class="QLabel" name="monCommentaireLabel">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="text">
-            <string>TextLabel</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </widget>
       </widget>
      </item>
     </layout>
             <rect>
              <x>0</x>
              <y>0</y>
-             <width>197</width>
-             <height>110</height>
+             <width>265</width>
+             <height>307</height>
             </rect>
            </property>
            <property name="sizePolicy">
        </item>
       </layout>
      </item>
+     <item>
+      <widget class="QPushButton" name="PBValideFeuille">
+       <property name="text">
+        <string>Valide</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <spacer name="verticalSpacer_2">
        <property name="orientation">
index 6fa4b7e91c4299a550f8d411ceb5f52c19c970e0..43a90938314d2c28717e303ac7d6c7318bcad9fb 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>743</width>
-    <height>60</height>
+    <height>31</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -36,7 +36,7 @@
     <number>0</number>
    </property>
    <property name="leftMargin">
-    <number>1</number>
+    <number>0</number>
    </property>
    <property name="topMargin">
     <number>0</number>
@@ -45,7 +45,7 @@
     <number>0</number>
    </property>
    <property name="bottomMargin">
-    <number>1</number>
+    <number>0</number>
    </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      </property>
      <property name="maximumSize">
       <size>
-       <width>178</width>
+       <width>300</width>
        <height>16777215</height>
       </size>
      </property>
       <enum>QFrame::NoFrame</enum>
      </property>
      <property name="text">
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
      </property>
      <property name="scaledContents">
       <bool>false</bool>
@@ -278,7 +278,7 @@ border:0px;</string>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
-         <height>5</height>
+         <height>1</height>
         </size>
        </property>
       </spacer>
diff --git a/UiQT5/desWidgetTableau.ui b/UiQT5/desWidgetTableau.ui
new file mode 100644 (file)
index 0000000..ecb5614
--- /dev/null
@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTableau</class>
+ <widget class="QWidget" name="WidgetTableau">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1094</width>
+    <height>304</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_5">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_4">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_3">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>40</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QFrame" name="frame">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="frameShape">
+        <enum>QFrame::Box</enum>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <item>
+         <widget class="QToolButton" name="RBPlus">
+          <property name="minimumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::ClickFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>Ajoute une ligne</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">border : 0px</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>../Editeur/icons/PlusBleu.png</normaloff>../Editeur/icons/PlusBleu.png</iconset>
+          </property>
+          <property name="iconSize">
+           <size>
+            <width>32</width>
+            <height>32</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="RBMoins">
+          <property name="minimumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::ClickFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>supprime une ligne</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">border : 0px</string>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>../Editeur/icons/MoinsBleu.png</normaloff>../Editeur/icons/MoinsBleu.png</iconset>
+          </property>
+          <property name="iconSize">
+           <size>
+            <width>32</width>
+            <height>32</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="RBHaut">
+          <property name="minimumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::ClickFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>Remonte la ligne</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">border : 0px</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset theme="go-up">
+            <normaloff/>
+           </iconset>
+          </property>
+          <property name="iconSize">
+           <size>
+            <width>32</width>
+            <height>32</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="RBBas">
+          <property name="minimumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::ClickFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>Descend la ligne</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">border : 0px</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset theme="go-down">
+            <normaloff/>
+           </iconset>
+          </property>
+          <property name="iconSize">
+           <size>
+            <width>32</width>
+            <height>32</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="RBVoisListe">
+          <property name="minimumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>21</width>
+            <height>31</height>
+           </size>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::ClickFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>Montre l'ensemble des valeurs</string>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">border : 0px</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset>
+            <normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</normaloff>../Editeur/icons/verre-loupe-icone-6087-64.png</iconset>
+          </property>
+          <property name="iconSize">
+           <size>
+            <width>32</width>
+            <height>32</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_7">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="MonLabelClic" name="label">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>300</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>178</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="frameShape">
+          <enum>QFrame::NoFrame</enum>
+         </property>
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+         <property name="scaledContents">
+          <bool>false</bool>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="LATitre">
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QFrame" name="frame">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QScrollArea" name="scrollArea">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="styleSheet">
+           <string notr="true">background : rgb(247,247,247)</string>
+          </property>
+          <property name="frameShape">
+           <enum>QFrame::NoFrame</enum>
+          </property>
+          <property name="lineWidth">
+           <number>1</number>
+          </property>
+          <property name="widgetResizable">
+           <bool>true</bool>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+          </property>
+          <widget class="QWidget" name="verticalWidgetLE">
+           <property name="geometry">
+            <rect>
+             <x>0</x>
+             <y>0</y>
+             <width>947</width>
+             <height>205</height>
+            </rect>
+           </property>
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayoutLE">
+            <property name="spacing">
+             <number>2</number>
+            </property>
+            <property name="margin">
+             <number>0</number>
+            </property>
+            <item>
+             <spacer name="verticalSpacer_4">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>500</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QToolButton" name="BSelectFichier">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>25</width>
+           <height>30</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Ouvre un fichier de sélection des valeurs</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border:0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset theme="text-x-generic">
+           <normaloff/>
+          </iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>32</width>
+           <height>32</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_4">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>13</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>31</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>31</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>32</width>
+           <height>32</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QPushButton" name="PBValideFeuille">
+       <property name="text">
+        <string>Valide</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>40</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+  <zorder></zorder>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple10.ui b/UiQT5/desWidgetTuple10.ui
new file mode 100644 (file)
index 0000000..e3c0471
--- /dev/null
@@ -0,0 +1,590 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple10</class>
+ <widget class="QWidget" name="WidgetTuple10">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_6">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_8">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_12">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_7">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_9">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_15">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple4.ui b/UiQT5/desWidgetTuple4.ui
new file mode 100644 (file)
index 0000000..c939a9f
--- /dev/null
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple4</class>
+ <widget class="QWidget" name="WidgetTuple4">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple5.ui b/UiQT5/desWidgetTuple5.ui
new file mode 100644 (file)
index 0000000..c592ac6
--- /dev/null
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple5</class>
+ <widget class="QWidget" name="WidgetTuple5">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple6.ui b/UiQT5/desWidgetTuple6.ui
new file mode 100644 (file)
index 0000000..92aac0a
--- /dev/null
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple6</class>
+ <widget class="QWidget" name="WidgetTuple6">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_6">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple7.ui b/UiQT5/desWidgetTuple7.ui
new file mode 100644 (file)
index 0000000..43b719d
--- /dev/null
@@ -0,0 +1,511 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple7</class>
+ <widget class="QWidget" name="WidgetTuple7">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_6">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_7">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple8.ui b/UiQT5/desWidgetTuple8.ui
new file mode 100644 (file)
index 0000000..6cbb52d
--- /dev/null
@@ -0,0 +1,547 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple8</class>
+ <widget class="QWidget" name="WidgetTuple8">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_6">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_8">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_12">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_7">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/UiQT5/desWidgetTuple9.ui b/UiQT5/desWidgetTuple9.ui
new file mode 100644 (file)
index 0000000..7dde543
--- /dev/null
@@ -0,0 +1,583 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetTuple9</class>
+ <widget class="QWidget" name="WidgetTuple9">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1282</width>
+    <height>61</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_3">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>21</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="MonBoutonValide" name="RBValide">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Affiche le rapport de validation du mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/ast-green-ball.png</normaloff>../Editeur/icons/ast-green-ball.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>5</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="MonLabelClic" name="label">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>300</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>178</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="text">
+      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+     <property name="scaledContents">
+      <bool>false</bool>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;(&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="lineEditVal3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>805</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_4">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_9">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_5">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_10">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_6">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_11">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_8">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_12">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_7">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;,&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="LECustomTuple" name="lineEditVal_9">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>10000</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::StrongFocus</enum>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background:rgb(235,235,235);
+border:0px;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_5">
+         <property name="text">
+          <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QToolButton" name="RBPoubelle">
+         <property name="minimumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>21</width>
+           <height>25</height>
+          </size>
+         </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
+         <property name="toolTip">
+          <string>Détruit le mot-clef</string>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">border : 0px</string>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../Editeur/icons/deleteRond.png</normaloff>../Editeur/icons/deleteRond.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>25</width>
+           <height>25</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MonBoutonValide</class>
+   <extends>QToolButton</extends>
+   <header>monBoutonValide.h</header>
+  </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
+  <customwidget>
+   <class>LECustomTuple</class>
+   <extends>QLineEdit</extends>
+   <header>gereListe.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
index d4d9ec9dbcdf9515a66d31711a417c7397eef236..045a868b023063d586e0ed3896d6be3f4254f50b 100644 (file)
@@ -59,16 +59,7 @@ QMenuBar {
     <string notr="true">QComboBox{combobox-popup:0;}</string>
    </property>
    <layout class="QGridLayout" name="gridLayout">
-    <property name="leftMargin">
-     <number>0</number>
-    </property>
-    <property name="topMargin">
-     <number>0</number>
-    </property>
-    <property name="rightMargin">
-     <number>0</number>
-    </property>
-    <property name="bottomMargin">
+    <property name="margin">
      <number>0</number>
     </property>
     <item row="0" column="0">
@@ -76,13 +67,13 @@ QMenuBar {
       <property name="minimumSize">
        <size>
         <width>0</width>
-        <height>61</height>
+        <height>60</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>16777215</width>
-        <height>61</height>
+        <height>60</height>
        </size>
       </property>
       <property name="styleSheet">
@@ -130,7 +121,7 @@ QMenuBar {
      <x>0</x>
      <y>0</y>
      <width>1676</width>
-     <height>25</height>
+     <height>24</height>
     </rect>
    </property>
    <widget class="QMenu" name="menuFichier">
@@ -218,10 +209,22 @@ QMenuBar {
    <addaction name="separator"/>
    <addaction name="actionParametres"/>
   </widget>
+  <widget class="QToolBar" name="toolBarCommande">
+   <property name="windowTitle">
+    <string>toolBar_2</string>
+   </property>
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+  </widget>
   <action name="action_Nouveau">
    <property name="icon">
     <iconset theme="document-new">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>&amp;Nouveau</string>
@@ -246,7 +249,8 @@ QMenuBar {
   <action name="actionOuvrir">
    <property name="icon">
     <iconset theme="document-open">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>&amp;Ouvrir</string>
@@ -258,7 +262,8 @@ QMenuBar {
   <action name="actionEnregistrer">
    <property name="icon">
     <iconset theme="document-save">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Enregistrer</string>
@@ -275,7 +280,8 @@ QMenuBar {
   <action name="actionEnregistrer_sous">
    <property name="icon">
     <iconset theme="document-save-as">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Enregistrer sous</string>
@@ -300,7 +306,8 @@ QMenuBar {
   <action name="actionCouper">
    <property name="icon">
     <iconset theme="edit-cut">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Couper</string>
@@ -315,7 +322,8 @@ QMenuBar {
   <action name="actionCopier">
    <property name="icon">
     <iconset theme="edit-copy">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Copier</string>
@@ -330,7 +338,8 @@ QMenuBar {
   <action name="actionColler">
    <property name="icon">
     <iconset theme="edit-paste">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Coller</string>
@@ -372,6 +381,11 @@ QMenuBar {
    </property>
   </action>
   <action name="actionLecteur_Pdf">
+   <property name="icon">
+    <iconset theme="edit-delete">
+     <normaloff/>
+    </iconset>
+   </property>
    <property name="text">
     <string>Lecteur documentation</string>
    </property>
@@ -389,7 +403,8 @@ QMenuBar {
   <action name="actionSupprimer">
    <property name="icon">
     <iconset theme="edit-delete">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Supprimer</string>
@@ -412,7 +427,8 @@ QMenuBar {
   <action name="actionRechercher">
    <property name="icon">
     <iconset theme="edit-find">
-     <normaloff>.</normaloff>.</iconset>
+     <normaloff/>
+    </iconset>
    </property>
    <property name="text">
     <string>Rechercher</string>
index cfe129bf8daa6b58ec40c589bb2c2b7544dcbe25..f923d94cac8287976e61b25635fcdbe071760117 100644 (file)
@@ -47,7 +47,7 @@ class AU_MOINS_UN(object):
         #  on compte le nombre de mots cles presents
         text = ''
         count = 0
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         for mc in self.mcs:
             if mc in args :
                 count = count + 1
index 1286b06150d6068192bf985f508c9af08f508981..4ce96d53967ad524ecc74c53f058dbb132597314 100644 (file)
@@ -45,7 +45,7 @@ class AU_PLUS_UN(object):
         #  on compte le nombre de mots cles presents
         text = ''
         count = 0
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         for mc in self.mcs:
             count = count + args.get(mc, 0)
         if count > 1:
@@ -54,7 +54,7 @@ class AU_PLUS_UN(object):
             return text, 0
         return text, 1
 
-    def liste_to_dico(self, args):
+    def listeToDico(self, args):
         if type(args) is dict:
             return args
         elif type(args) in (list, tuple):
index 7a790d4b4987947d3d750bb910ffc283b0a83d35..5c6bc8e9a5924386eb2f9ab3bc8ba4a79a22c5b1 100644 (file)
@@ -56,9 +56,9 @@ class A_CLASSER(object):
         liste.extend(self.args0)
         liste.extend(self.args1)
         self.mcs = liste
-        self.init_couples_permis()
+        self.initCouplesPermis()
 
-    def init_couples_permis(self):
+    def initCouplesPermis(self):
         """ Cree la liste des couples permis parmi les self.args, cad pour chaque element
             de self.args0 cree tous les couples possibles avec un element de self.args1"""
         liste = []
index 0592218968aad2c6348083e0ca64856c999b7641..2120ad0c07ca3c3cabccec6127c7195557185caa 100644 (file)
@@ -46,7 +46,7 @@ class ENSEMBLE(object):
         #  figurant dans la regle
         text = ''
         test = 1
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         pivot = None
         for mc in self.mcs:
             if mc in args:
index 9287a7c48dc3983006e70c89c428258119157620..75479958a197bf571a56b3dd9c7470c3e32e3691 100644 (file)
@@ -50,23 +50,23 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
     """
     """
 
-    def valid_child(self):
+    def validChild(self):
         """ Cette methode teste la validite des mots cles de l'etape """
-        for child in self.mc_liste:
-            if not child.isvalid():
+        for child in self.mcListe:
+            if not child.isValid():
                 return 0
         return 1
 
-    def valid_regles(self, cr):
+    def validRegles(self, cr):
         """ Cette methode teste la validite des regles de l'etape """
-        text_erreurs, test_regles = self.verif_regles()
+        text_erreurs, test_regles = self.verifRegles()
         if not test_regles:
             if cr == 'oui':
                 self.cr.fatal( "Regle(s) non respectee(s) : %s" % text_erreurs)
             return 0
         return 1
 
-    def valid_sdnom(self, cr):
+    def validSdnom(self, cr):
         """ Cette methode teste la validite du nom du concept produit par l'etape """
         valid = 1
         if self.sd.nom != None:
@@ -83,21 +83,21 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
                 valid = 0
         return valid
 
-    def get_valid(self):
+    def getValid(self):
         if hasattr(self, 'valid'):
             return self.valid
         else:
             self.valid = None
             return None
 
-    def set_valid(self, valid):
-        old_valid = self.get_valid()
+    def setValid(self, valid):
+        old_valid = self.getValid()
         self.valid = valid
         self.state = 'unchanged'
         if not old_valid or old_valid != self.valid:
-            self.init_modif_up()
+            self.initModifUp()
 
-    def isvalid(self, sd='oui', cr='non'):
+    def isValid(self, sd='oui', cr='non'):
         """
            Methode pour verifier la validite de l'objet ETAPE. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -115,12 +115,12 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
 
         """
         if CONTEXT.debug:
-            print(("ETAPE.isvalid ", self.nom))
+            print(("ETAPE.isValid ", self.nom))
         if self.state == 'unchanged':
             return self.valid
         else:
-            valid = self.valid_child()
-            valid = valid * self.valid_regles(cr)
+            valid = self.validChild()
+            valid = valid * self.validRegles(cr)
 
             if self.reste_val != {}:
                 if cr == 'oui':
@@ -148,16 +148,16 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
                     self.cr.fatal(("Concept is not defined"))
                 valid = 0
             else:
-                valid = valid * self.valid_sdnom(cr)
+                valid = valid * self.validSdnom(cr)
 
             if valid:
-                valid = self.update_sdprod(cr)
+                valid = self.updateSdprod(cr)
 
-            self.set_valid(valid)
+            self.setValid(valid)
 
             return self.valid
 
-    def update_sdprod(self, cr='non'):
+    def updateSdprod(self, cr='non'):
         """
              Cette methode met a jour le concept produit en fonction des conditions initiales :
 
@@ -171,7 +171,7 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
         """
         sd_prod = self.definition.sd_prod
         if type(sd_prod) == types.FunctionType:  # Type de concept retourne calcule
-            d = self.cree_dict_valeurs(self.mc_liste)
+            d = self.creeDictValeurs(self.mcListe)
             try:
                 sd_prod = sd_prod(*(), **d)
             except:
@@ -214,7 +214,7 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
                     if CONTEXT.debug:
                         print(("changement de type:", self.sd, sd_prod))
                     if self.sd.__class__ != sd_prod:
-                        self.sd.change_type(sd_prod)
+                        self.sd.changeType(sd_prod)
                 else:
                     # Le sd n existait pas , on ne le cree pas
                     if cr == 'oui':
@@ -237,16 +237,16 @@ class ETAPE(V_MCCOMPO.MCCOMPO):
                           fin='End Command : ' + tr(self.nom))
         self.state = 'modified'
         try:
-            self.isvalid(cr='oui')
+            self.isValid(cr='oui')
         except AsException as e:
             if CONTEXT.debug:
                 traceback.print_exc()
             self.cr.fatal('Command : %s line : %r file : %r %s' % (tr(self.nom), self.appel[0], self.appel[1], e))
         i = 0
-        for child in self.mc_liste:
+        for child in self.mcListe:
             i += 1
             if i > MAXSIZE:
-                print (MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mc_liste)))
+                print (MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mcListe)))
                 break
             self.cr.add(child.report())
         return self.cr
index 3ad77d3059d163df687594fdba8394251ac49d70..79431fe1d0a867ee9b560c8098781f0ce9bec2c2 100644 (file)
@@ -45,7 +45,7 @@ class EXCLUS(object):
         #  on compte le nombre de mots cles presents
         text = ''
         count = 0
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         for mc in self.mcs:
             if mc in args:
                 count = count + 1
index f3c89fbb0b45737741bbe56c9ff64bb60f33c402..8cc88484d57ec6c082e41bd94a19032c6097c1f2 100644 (file)
@@ -50,13 +50,13 @@ class JDC(V_MCCOMPO.MCCOMPO):
         self.cr.debut = "BEGIN validation report : " + self.nom
         self.cr.fin = "END validation report :" + self.nom
         for e in self.etapes:
-            if e.isactif():
+            if e.isActif():
                 self.cr.add(e.report())
         self.state = 'modified'
-        self.isvalid(cr='oui')
+        self.isValid(cr='oui')
         return self.cr
 
-    def isvalid(self, cr='non'):
+    def isValid(self, cr='non'):
         """
           Methode booleenne qui retourne 0 si le JDC est invalide, 1 sinon
         """
@@ -66,7 +66,7 @@ class JDC(V_MCCOMPO.MCCOMPO):
             return self.valid
         else:
             valid = 1
-            texte, test = self.verif_regles()
+            texte, test = self.verifRegles()
             if test == 0:
                 if cr == 'oui':
                     if texte != "" and (' '.strip(texte) == "") : self.cr.fatal(texte)
@@ -74,16 +74,16 @@ class JDC(V_MCCOMPO.MCCOMPO):
                 valid = 0
             if valid:
                 for e in self.etapes:
-                    if not e.isactif():
+                    if not e.isActif():
                         continue
-                    if not e.isvalid():
+                    if not e.isValid():
                         valid = 0
                         break
             self.state = "unchanged"
             self.valid = valid
             return self.valid
 
-    def verif_regles(self):
+    def verifRegles(self):
         """
         Effectue la verification de validite des regles du jeu de commandes
         """
index 197b9d4e480c654d5208690fd77ead621e54d46e..f389055520921547fb82e6b05028fbb42ce6aae8 100644 (file)
@@ -47,7 +47,7 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
     """
     """
 
-    def isvalid(self, sd='oui', cr='non'):
+    def isValid(self, sd='oui', cr='non'):
         """
            Methode pour verifier la validite de l'objet ETAPE. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -65,29 +65,29 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
 
         """
         if CONTEXT.debug:
-            print(("ETAPE.isvalid ", self.nom))
+            print(("ETAPE.isValid ", self.nom))
         if self.state == 'unchanged':
             return self.valid
         else:
             valid = 1
             # On marque les concepts CO pour verification ulterieure de leur
             # bonne utilisation
-            l = self.get_all_co()
-            # On verifie que les concepts CO sont bien passes par type_sdprod
+            l = self.getAllCo()
+            # On verifie que les concepts CO sont bien passes par typeSDProd
             for c in l:
                 # if c.etape is self.parent:
-                if c.is_typco() != 2:
+                if c.isTypCO() != 2:
                     # le concept est propriete de l'etape parent
-                    # Il n'a pas ete transforme par type_sdprod
+                    # Il n'a pas ete transforme par typeSDProd
                     # Cette situation est interdite
                     # Pb: La macro-commande a passe le concept a une commande
                     # (macro ?) mal definie
                     if cr == 'oui':
-                        self.cr.fatal("Macro-commande mal definie : le concept n'a pas ete type par un appel a type_sdprod pour %s"  % c.nom)
+                        self.cr.fatal("Macro-commande mal definie : le concept n'a pas ete type par un appel a typeSDProd pour %s"  % c.nom)
                     valid = 0
 
-            valid = valid * self.valid_child()
-            valid = valid * self.valid_regles(cr)
+            valid = valid * self.validChild()
+            valid = valid * self.validRegles(cr)
 
             if self.reste_val != {}:
                 if cr == 'oui':
@@ -101,7 +101,7 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
                 return valid
 
             if self.sd != None:
-                valid = valid * self.valid_sdnom(cr)
+                valid = valid * self.validSdnom(cr)
 
             if self.definition.reentrant == 'n' and self.reuse:
                 # Il ne peut y avoir de concept reutilise avec une MACRO  non
@@ -111,19 +111,19 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
                 valid = 0
 
             if valid:
-                valid = self.update_sdprod(cr)
+                valid = self.updateSdprod(cr)
 
             # Si la macro comprend des etapes internes, on teste leur validite
             for e in self.etapes:
-                if not e.isvalid():
+                if not e.isValid():
                     valid = 0
                     break
 
-            self.set_valid(valid)
+            self.setValid(valid)
 
             return self.valid
 
-    def update_sdprod(self, cr='non'):
+    def updateSdprod(self, cr='non'):
         """
              Cette methode met a jour le concept produit en fonction des conditions initiales :
 
@@ -140,11 +140,11 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
         self.typret = None
         if type(sd_prod) == types.FunctionType:
             # Type de concept retourne calcule
-            d = self.cree_dict_valeurs(self.mc_liste)
+            d = self.creeDictValeurs(self.mcListe)
             try:
                 # la sd_prod d'une macro a l'objet lui meme en premier argument
                 # contrairement a une ETAPE ou PROC_ETAPE
-                # Comme sd_prod peut invoquer la methode type_sdprod qui ajoute
+                # Comme sd_prod peut invoquer la methode typeSDProd qui ajoute
                 # les concepts produits dans self.sdprods, il faut le mettre a
                 # zero
                 self.sdprods = []
@@ -190,7 +190,7 @@ class MACRO_ETAPE(V_ETAPE.ETAPE):
                     if CONTEXT.debug:
                         print(("changement de type:", self.sd, sd_prod))
                     if self.sd.__class__ != sd_prod:
-                        self.sd.change_type(sd_prod)
+                        self.sd.changeType(sd_prod)
                     self.typret = sd_prod
                 else:
                     # Le sd n existait pas , on ne le cree pas
index f6796e5d4ef9065fbaa1ddbbfed35f0dcf18f176..5741e579cf9c38a0f4ff91902f99cffe068b8e42 100644 (file)
@@ -43,7 +43,7 @@ class MCBLOC(V_MCCOMPO.MCCOMPO):
 
     txt_nat = u"Bloc :"
 
-    def isvalid(self, sd='oui', cr='non'):
+    def isValid(self, sd='oui', cr='non'):
         """
            Methode pour verifier la validite du MCBLOC. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -60,13 +60,13 @@ class MCBLOC(V_MCCOMPO.MCCOMPO):
                 old_valid = self.valid
             else:
                 old_valid = None
-            for child in self.mc_liste:
-                if not child.isvalid():
+            for child in self.mcListe:
+                if not child.isValid():
                     valid = 0
                     break
             # Apres avoir verifie la validite de tous les sous-objets, on verifie
             # la validite des regles
-            text_erreurs, test_regles = self.verif_regles()
+            text_erreurs, test_regles = self.verifRegles()
             if not test_regles:
                 if cr == 'oui':
                     self.cr.fatal( "Regle(s) non respectee(s) : %s" % text_erreurs)
@@ -74,5 +74,5 @@ class MCBLOC(V_MCCOMPO.MCCOMPO):
             self.valid = valid
             self.state = 'unchanged'
             if not old_valid or old_valid != self.valid:
-                self.init_modif_up()
+                self.initModifUp()
             return self.valid
index b82541c6afcd84ff261fa6d98f7d199e874bbdea..d1cc11137e5773c4fdece805c7dc299cfd90281e 100644 (file)
@@ -44,7 +44,7 @@ from Noyau.N_Exception import AsException
 class MCCOMPO(object):
 
     """
-        L'attribut mc_liste a ete cree par une classe derivee de la
+        L'attribut mcListe a ete cree par une classe derivee de la
         classe MCCOMPO du Noyau
     """
 
@@ -55,7 +55,7 @@ class MCCOMPO(object):
         # defini dans les classes derivees
         self.txt_nat = ''
 
-    def init_modif_up(self):
+    def initModifUp(self):
         """
            Propage l'etat modifie au parent s'il existe et n'est pas l'objet
            lui-meme
@@ -71,22 +71,22 @@ class MCCOMPO(object):
         self.cr.debut = self.txt_nat + self.nom
         self.cr.fin = "END " + self.txt_nat + self.nom
         i = 0
-        for child in self.mc_liste:
+        for child in self.mcListe:
             i += 1
             if i > MAXSIZE:
-                print(MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mc_liste)))
+                print(MAXSIZE_MSGCHK.format(MAXSIZE, len(self.mcListe)))
                 break
             self.cr.add(child.report())
         self.state = 'modified'
         try:
-            self.isvalid(cr='oui')
+            self.isValid(cr='oui')
         except AsException as e:
             if CONTEXT.debug:
                 traceback.print_exc()
             self.cr.fatal(' '.join((self.txt_nat, self.nom, str(e))))
         return self.cr
 
-    def verif_regles(self):
+    def verifRegles(self):
         """
            A partir du dictionnaire des mots-cles presents, verifie si les regles
            de self sont valides ou non.
@@ -98,7 +98,7 @@ class MCCOMPO(object):
              - testglob = booleen 1 si toutes les regles OK, 0 sinon
         """
         # On verifie les regles avec les defauts affectes
-        dictionnaire = self.dict_mc_presents(restreint='non')
+        dictionnaire = self.dictMcPresents(restreint='non')
         texte = ['']
         testglob = 1
         for r in self.definition.regles:
@@ -109,9 +109,9 @@ class MCCOMPO(object):
         texte = os.linesep.join(texte)
         return texte, testglob
 
-    def dict_mc_presents(self, restreint='non'):
+    def dictMcPresents(self, restreint='non'):
         """
-            Retourne le dictionnaire {mocle : objet} construit a partir de self.mc_liste
+            Retourne le dictionnaire {mocle : objet} construit a partir de self.mcListe
             Si restreint == 'non' : on ajoute tous les mots-cles simples du catalogue qui ont
             une valeur par defaut
             Si restreint == 'oui' : on ne prend que les mots-cles effectivement entres par
@@ -120,7 +120,7 @@ class MCCOMPO(object):
         dico = {}
         # on ajoute les couples {nom mot-cle:objet mot-cle} effectivement
         # presents
-        for v in self.mc_liste:
+        for v in self.mcListe:
             if v == None:
                 continue
             k = v.nom
index ee58756c5b8a2f724dd855104cc088e8aa0c075b..97698e7755e8de5bb6a67c3615ab25d85e2f5e2b 100644 (file)
@@ -43,7 +43,7 @@ class MCFACT(V_MCCOMPO.MCCOMPO):
 
     txt_nat = "Mot cle Facteur :"
 
-    def isvalid(self, sd='oui', cr='non'):
+    def isValid(self, sd='oui', cr='non'):
         """
            Methode pour verifier la validite du MCFACT. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -60,13 +60,13 @@ class MCFACT(V_MCCOMPO.MCCOMPO):
                 old_valid = self.valid
             else:
                 old_valid = None
-            for child in self.mc_liste:
-                if not child.isvalid():
+            for child in self.mcListe:
+                if not child.isValid():
                     valid = 0
                     break
             # Apres avoir verifie la validite de tous les sous-objets, on verifie
             # la validite des regles
-            text_erreurs, test_regles = self.verif_regles()
+            text_erreurs, test_regles = self.verifRegles()
             if not test_regles:
                 if cr == 'oui':
                     self.cr.fatal("Regle(s) non respectee(s) : %s" % text_erreurs)
@@ -87,5 +87,5 @@ class MCFACT(V_MCCOMPO.MCCOMPO):
             self.valid = valid
             self.state = 'unchanged'
             if not old_valid or old_valid != self.valid:
-                self.init_modif_up()
+                self.initModifUp()
             return self.valid
index 4324bcc3905432113622615d627ed78b997214ad..ec5b2d98b1a2a803082d607379aaf8114cf3fd8e 100644 (file)
@@ -57,7 +57,7 @@ class MCList(object):
     CR = N_CR.CR
     txt_nat = "Mot cle Facteur Multiple :"
 
-    def isvalid(self, cr='non'):
+    def isValid(self, cr='non'):
         """
            Methode pour verifier la validite du MCList. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -91,7 +91,7 @@ class MCList(object):
         num = 0
         for i in self.data:
             num = num + 1
-            if not i.isvalid():
+            if not i.isValid():
                 valid = 0
                 if cr == 'oui' and len(self) > 1:
                     self.cr.fatal( "L'occurrence numero %d du mot-cle facteur : %s n'est pas valide" % (num, self.nom))
@@ -120,7 +120,7 @@ class MCList(object):
                             fin="Fin Mot-cle facteur : " + tr(self.nom))
 
         try:
-            self.isvalid(cr='oui')
+            self.isValid(cr='oui')
         except AsException as e:
             if CONTEXT.debug:
                 traceback.print_exc()
index 2bdeeb2d262e10bbcb3c9e546eda3ef9c0a03e7e..00694c950c523af446f8165b0b0996a1dff8fb1f 100644 (file)
@@ -73,21 +73,21 @@ class MCSIMP(object):
         self.cardProto = CardProtocol(
             "card", min=self.definition.min, max=self.definition.max)
 
-    def get_valid(self):
+    def getValid(self):
         if hasattr(self, 'valid'):
             return self.valid
         else:
             self.valid = None
             return None
 
-    def set_valid(self, valid):
-        old_valid = self.get_valid()
+    def setValid(self, valid):
+        old_valid = self.getValid()
         self.valid = valid
         self.state = 'unchanged'
         if not old_valid or old_valid != self.valid:
-            self.init_modif_up()
+            self.initModifUp()
 
-    def isvalid(self, cr='non'):
+    def isValid(self, cr='non'):
         """
            Cette methode retourne un indicateur de validite de l'objet de type MCSIMP
 
@@ -104,7 +104,7 @@ class MCSIMP(object):
             valid = 1
             v = self.valeur
             #  verification presence
-            if self.isoblig() and (v == None or v == "" ):
+            if self.isOblig() and (v == None or v == "" ):
                 if cr == 'oui':
                     self.cr.fatal( "Mandatory keyword : %s has no value" % tr(self.nom))
                 valid = 0
@@ -114,10 +114,9 @@ class MCSIMP(object):
             # Pour tenir compte des Tuples
             if hasattr(self.definition.type[0],'ntuple') :
                try :
-                  if not (type(lval[0]) is tuple) : lval=(lval,)
+                  if (not (type(lval[0]) is tuple)) and (not (type(lval[0]) is list)) : lval=(lval,)
                except :
                   pass
-
             if lval is None:
                 valid = 0
                 if cr == 'oui':
@@ -176,15 +175,15 @@ class MCSIMP(object):
                     except ValError as e:
                         valid = 0
 
-            self.set_valid(valid)
+            self.setValid(valid)
             return self.valid
 
-    def isoblig(self):
+    def isOblig(self):
         """ indique si le mot-cle est obligatoire
         """
         return self.definition.statut == 'o'
 
-    def init_modif_up(self):
+    def initModifUp(self):
         """
            Propage l'etat modifie au parent s'il existe et n'est l'objet
            lui-meme
@@ -199,7 +198,7 @@ class MCSIMP(object):
         self.cr.fin = "End Simple Keyword: " + tr(self.nom)
         self.state = 'modified'
         try:
-            self.isvalid(cr='oui')
+            self.isValid(cr='oui')
         except AsException as e:
             if CONTEXT.debug:
                 traceback.print_exc()
index 9b5cfdd07f7cd9ec759a7364943db99ce5125693..9431bf2fa7693998d608e312158ce146d3ce12b6 100644 (file)
@@ -44,7 +44,7 @@ class MEME_NOMBRE(object):
         """
         #  on compte le nombre de mots cles presents
         text = ''
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         size = -1
 
         for mc in self.mcs:
index fd2a75dd9862317b501a59495d7979a0f173c219..59a93bcad449a2aad6e8fe661fec782a95a511e7 100644 (file)
@@ -47,7 +47,7 @@ class PRESENT_ABSENT(object):
         #   les autres sont absents
         text = ''
         test = 1
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         mc0 = self.mcs[0]
         if mc0 in args :
             for mc in self.mcs[1:len(self.mcs)]:
index b9eab109cb7c3ab5f106c4c78053e2813617deb3..1537863462f6fe340cebce543efa9728a6efbefa 100644 (file)
@@ -47,7 +47,7 @@ class PRESENT_PRESENT(object):
         mc0 = self.mcs[0]
         text = ''
         test = 1
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         if mc0 in args :
             for mc in self.mcs[1:len(self.mcs)]:
                 if not mc in args :
index 5489535b75e926e62bf43ff4bd2f7b065fd3f06b..edd5b1388e773a894cc0b6cd6b91aa9cc17a6e42 100644 (file)
@@ -37,11 +37,11 @@ from Extensions.i18n import tr
 class PROC_ETAPE(V_ETAPE.ETAPE):
 
     """
-       On reutilise les methodes report,verif_regles
+       On reutilise les methodes report,verifRegles
        de ETAPE par heritage.
     """
 
-    def isvalid(self, sd='oui', cr='non'):
+    def isValid(self, sd='oui', cr='non'):
         """
            Methode pour verifier la validite de l'objet PROC_ETAPE. Cette methode
            peut etre appelee selon plusieurs modes en fonction de la valeur
@@ -58,16 +58,16 @@ class PROC_ETAPE(V_ETAPE.ETAPE):
             - propager l'eventuel changement d'etat au parent
         """
         if CONTEXT.debug:
-            print(("ETAPE.isvalid ", self.nom))
+            print(("ETAPE.isValid ", self.nom))
         if self.state == 'unchanged':
             return self.valid
         else:
-            valid = self.valid_child()
-            valid = valid * self.valid_regles(cr)
+            valid = self.validChild()
+            valid = valid * self.validRegles(cr)
             if self.reste_val != {}:
                 if cr == 'oui':
                     self.cr.fatal(
                         tr("unknown keywords : %s") % ','.join(list(self.reste_val.keys())))
                 valid = 0
-            self.set_valid(valid)
+            self.setValid(valid)
             return self.valid
index 2410bf85320d3f974507d53df3cac60719702a4e..dda549f11f45a5e4a7c5373f2f9752dbf8820f0c 100644 (file)
@@ -47,7 +47,7 @@ class UN_PARMI(object):
         #  on compte le nombre de mots cles presents
         text = ''
         count = 0
-        args = self.liste_to_dico(args)
+        args = self.listeToDico(args)
         for mc in self.mcs:
             if mc in args :
                 count = count + 1
index 96073a4f97242a0c486d06bbaf9ce934073658b3..794f888a7a5104eb0b795a58b46dfb392f9f7302 100644 (file)
@@ -37,10 +37,10 @@ class ENTITE_JDC(object) :
     def __init__(self):
         self.texte = ''
 
-    def set_text(self,texte):
+    def setText(self,texte):
         self.texte = texte
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         """
         self.texte = self.texte +texte
@@ -55,7 +55,7 @@ class COMMENTAIRE(ENTITE_JDC):
         t=repr(self.texte)
         return "COMMENTAIRE(u"+t+")\n"
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant le # initial
         """
@@ -68,7 +68,7 @@ class COMMENTAIRE(ENTITE_JDC):
         
 class AFFECTATION(ENTITE_JDC):
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant tout retour chariot et tout point virgule
         """
@@ -85,7 +85,7 @@ class AFFECTATION(ENTITE_JDC):
 
 class COMMANDE_COMMENTARISEE(ENTITE_JDC):
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant les doubles commentaires
         """
@@ -152,7 +152,7 @@ class PARSEUR_PYTHON(object):
         self.buffer=[]
         self.buffer_indent=""
 
-    def getoptions(self):
+    def getOptions(self):
         m= self.optionprog.match(self.line)
         if m:
            option=m.group(1)
@@ -168,18 +168,18 @@ class PARSEUR_PYTHON(object):
         self.line= self.texte.readline()
         #print "line:",self.line
         # option ?
-        self.getoptions()
+        self.getOptions()
         return self.line
 
-    def get_texte(self,appli=None):
+    def getTexte(self,appli=None):
         """
            Retourne le texte issu de l'analyse
         """
         for tk in tokenize.generate_tokens(self.readline):
-            self.process_token(tk)
+            self.processToken(tk)
         return self.out
 
-    def process_token(self, tk):
+    def processToken(self, tk):
         """
         """
         ttype, tstring, spos, epos, line = tk
@@ -205,7 +205,7 @@ class PARSEUR_PYTHON(object):
             return
 
         if ttype != tokenize.DEDENT and ttype != tokenize.INDENT and self.please_indent:
-            self.do_indent()
+            self.doIndent()
 
         fn(tstring)
         self.lastrow, self.lastcol = epos
@@ -220,17 +220,17 @@ class PARSEUR_PYTHON(object):
 
         self.out=self.out+tstring
 
-    def output_com(self,tstring):
+    def outputCom(self,tstring):
         self.out=self.out+tstring
 
-    def update_indent(self):
-        #print "update_indent",len(self.indent_list[-1]),len(self.buffer_indent)
+    def updateIndent(self):
+        #print "updateIndent",len(self.indent_list[-1]),len(self.buffer_indent)
         if len(self.indent_list[-1]) > len(self.buffer_indent):
            self.out=self.out+(len(self.indent_list[-1]) - len(self.buffer_indent))*" "
            self.buffer_indent=self.indent_list[-1]
 
-    def do_indent(self):
-        #print "indentation dans do_indent",len(self.indent_list)
+    def doIndent(self):
+        #print "indentation dans doIndent",len(self.indent_list)
 
         self.out=self.out+self.indent_list[-1]
         self.buffer_indent=self.indent_list[-1]
@@ -245,7 +245,7 @@ class PARSEUR_PYTHON(object):
         #   print len(self.indent_list),self.please_indent
         for ob in self.buffer:
            self.out= self.out+ str(ob)
-           self.do_indent()
+           self.doIndent()
         self.buffer=[]
         self.objet_courant=None
 
@@ -259,8 +259,8 @@ class PARSEUR_PYTHON(object):
               self.affectation=0
            else:
               # affectation en cours, on ajoute
-              if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-              self.affectation_courante.append_text(tstring)
+              if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+              self.affectation_courante.appendText(tstring)
               return
            
         if self.objet_courant:
@@ -287,15 +287,15 @@ class PARSEUR_PYTHON(object):
                  if not self.buffer:self.buffer_indent=self.indent_list[-1]
                  self.objet_courant=COMMANDE_COMMENTARISEE()
                  self.buffer.append(self.objet_courant)
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
               elif isinstance(self.objet_courant,COMMENTAIRE):
                  self.objet_courant=COMMANDE_COMMENTARISEE()
                  self.buffer.append(self.objet_courant)
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
               else:
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
            else:
               # commentaire inline
@@ -317,15 +317,15 @@ class PARSEUR_PYTHON(object):
                  if not self.buffer:self.buffer_indent=self.indent_list[-1]
                  self.objet_courant=COMMENTAIRE()
                  self.buffer.append(self.objet_courant)
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
               elif isinstance(self.objet_courant,COMMANDE_COMMENTARISEE):
                  self.objet_courant=COMMENTAIRE()
                  self.buffer.append(self.objet_courant)
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
               else:
-                 self.objet_courant.append_text(tstring)
+                 self.objet_courant.appendText(tstring)
                  self.please_indent = None
            else:
               # commentaire inline
@@ -338,7 +338,7 @@ class PARSEUR_PYTHON(object):
 
     def NAME(self, tstring):
         if self.buffer:
-           self.update_indent()
+           self.updateIndent()
         self.flush_buffer()
 
         if self.affectation ==1:
@@ -346,22 +346,22 @@ class PARSEUR_PYTHON(object):
            # on ne veut pas des expressions qui commencent par NAME=NAME(NAME=
            # on en prend le chemin : on met affectation a 3 pour le signaler
            # on attend d'en savoir plus
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=3
            return
         elif self.affectation ==4:
            # on a une expression qui commence par NAME=NAME(NAME
            # il s'agit tres probablement d'une commande
            # on annule l'affectation en cours
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=5
            return
         elif self.affectation == 2:
            # affectation en cours, on ajoute
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=2
            return
         self.affectation=0
@@ -381,8 +381,8 @@ class PARSEUR_PYTHON(object):
         self.flush_buffer()
         if self.affectation>=1:
            # affectation en cours, on ajoute
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=2
            return
         self.output(tstring)
@@ -410,8 +410,8 @@ class PARSEUR_PYTHON(object):
         elif tstring == '(' and self.affectation == 3:
            # on a deja trouve NAME=NAME
            # on passe affectation a 4
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=4
            return
         elif tstring == ';' and self.affectation>=1:
@@ -422,8 +422,8 @@ class PARSEUR_PYTHON(object):
            self.affectation=0
         elif self.affectation>=1:
            # on complete l'affectation
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=2
            return
 
@@ -443,7 +443,7 @@ class PARSEUR_PYTHON(object):
         #print "indentation dans INDENT",len(self.indent_list),len(tstring)
         self.affectation=0
         if self.buffer:
-           self.update_indent()
+           self.updateIndent()
         self.flush_buffer()
 
     def DEDENT(self, tstring):
@@ -452,7 +452,7 @@ class PARSEUR_PYTHON(object):
            self.out= self.out+ str(self.buffer[0])
            if len(self.buffer) > 1:
               for ob in self.buffer[1:]:
-                  self.do_indent()
+                  self.doIndent()
                   self.out= self.out+ str(ob)
            self.buffer=[]
            self.objet_courant=None
@@ -466,8 +466,8 @@ class PARSEUR_PYTHON(object):
         self.flush_buffer()
         if self.affectation>=1:
            # affectation en cours, on ajoute
-           if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
-           self.affectation_courante.append_text(tstring)
+           if self.thiscol > self.lastcol :self.affectation_courante.appendText((self.thiscol - self.lastcol)*" ")
+           self.affectation_courante.appendText(tstring)
            self.affectation=2
            return
         self.output(tstring)
@@ -902,6 +902,6 @@ def POST_GOUJ_ops(self,TABLE):
        f.close()
     else:
        t=text
-    txt = PARSEUR_PYTHON(t).get_texte()
+    txt = PARSEUR_PYTHON(t).getTexte()
     print (txt)
     compile(txt,"<string>",'exec')
index bca1ab870a9656d0dc30d07ca9c5f600af320788..59cee25caf3b0bad28d006fcc7c9df2cc6c4c1c9 100644 (file)
@@ -22,9 +22,10 @@ from __future__ import absolute_import
 import re
 from Extensions.i18n import tr
 
+#import traceback
+#traceback.print_stack()
 
-from .convert_python import PythonParser
-import six
+from convert.convert_python import Pythonparser
 from six.moves import range
 try:
   basestring
@@ -65,10 +66,10 @@ pattern_ContientDouble=re.compile (r"^.*''.*$")
 
 
 #Si le code n est pas Telemac
-try :
-   from enum_Telemac2d_auto       import TelemacdicoEn
-except :
-   pass
+#try :
+#   from enum_Telemac2d_auto       import self.TelemacdicoEn
+#except :
+#   pass
 
 from Extensions import localisation
 
@@ -80,29 +81,46 @@ def entryPoint():
    """
    return {
           'name' : 'TELEMAC',
-          'factory' : TELEMACParser
+          'factory' : TELEMACparser
           }
 
-class TELEMACParser(PythonParser):
+class TELEMACparser(Pythonparser):
    """
-   This converter works like PythonParser, except that it also initializes all
+   This converter works like Pythonparser, except that it also initializes all
    model variables to None in order to avoid Python syntax errors when loading
    a file with a different or inexistent definition of variables.
    """
 
+   
+
    def convert(self, outformat, appli=None):
 
 
       from Accas import A_BLOC, A_FACT, A_SIMP
-      self.dicoCasToCata=appli.readercata.dicoCasToCata
-      self.dicoInverse=appli.readercata.dicoInverse
-      self.dicoMC=appli.readercata.dicoMC
-      self.Ordre_Des_Commandes=appli.readercata.Ordre_Des_Commandes
+      try :
+        self.dicoCasToCata = appli.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
+      try :
+        self.TelemacdicoEn            = appli.readercata.TelemacdicoEn
+      except :
+        self.TelemacdicoEn = {}
+        print ('pas de TelemacdicoEn')
+      try :
+        self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+      except :
+        self.DicoEnumCasFrToEnumCasEn = {}
+        print ('pas de DicoEnumCasFrToEnumCasEn')
+      
 
       if appli.langue=='fr' :
-          from enum_Telemac2d_auto       import DicoEnumCasFrToEnumCasEn
-          for k in DicoEnumCasFrToEnumCasEn :
-              TelemacdicoEn[k]=DicoEnumCasFrToEnumCasEn[k]
+          #from enum_Telemac2d_auto       import DicoEnumCasFrToEnumCasEn
+          for k in self.DicoEnumCasFrToEnumCasEn :
+              self.TelemacdicoEn[k]=self.DicoEnumCasFrToEnumCasEn[k]
 
       text=""
       self.dictSimp={}
@@ -237,7 +255,7 @@ class TELEMACParser(PythonParser):
 
       dicoParMC={}
       for simp in self.dictSimp:
-          if simp in TELEMACParser.__dict__ : TELEMACParser.__dict__[simp](self,)
+          if simp in TELEMACparser.__dict__ : TELEMACparser.__dict__[simp](self,)
 
       for simp in self.dictSimp:
           if simp not in self.dicoInverse :
@@ -317,8 +335,8 @@ class TELEMACParser(PythonParser):
 
    def convertFACT(self,obj,nom,valeur):
        # traitement LIQUID_BOUNDARIES
-       if nom in TELEMACParser.__dict__ :
-          TELEMACParser.__dict__[nom](self,)
+       if nom in TELEMACparser.__dict__ :
+          TELEMACparser.__dict__[nom](self,)
           return
        self.textePy +=  nom + "=_F( "
        self.traiteMC(valeur)
@@ -359,9 +377,9 @@ class TELEMACParser(PythonParser):
           try    : valeur=eval(valeur,{})
           except : pass
 
-          if nom in TelemacdicoEn:
+          if nom in self.TelemacdicoEn:
              try    :
-               valeur=TelemacdicoEn[nom][valeur]
+               valeur=self.TelemacdicoEn[nom][valeur]
                self.textePy += nom + "= '" + str(valeur) +"',"
                return
              except : pass
@@ -418,8 +436,8 @@ class TELEMACParser(PythonParser):
           # Attention : on attend une liste mais on a une seule valeur!
              try :    oldValeur=eval(oldValeur,{})
              except : pass
-             if nom in TelemacdicoEn :
-                v=TelemacdicoEn[nom][oldValeur]
+             if nom in self.TelemacdicoEn :
+                v=self.TelemacdicoEn[nom][oldValeur]
                 self.textePy += nom + "= ('" + str(v) +"',),"
              else :
                 self.textePy += nom + "= (" + str(oldValeur) +",),"
@@ -431,8 +449,8 @@ class TELEMACParser(PythonParser):
           for v in valeur :
             try :    v=eval(v,{})
             except : pass
-            if nom in TelemacdicoEn:
-               try    : v=TelemacdicoEn[nom][v]
+            if nom in self.TelemacdicoEn:
+               try    : v=self.TelemacdicoEn[nom][v]
                except : pass
             newVal.append(v)
           self.textePy += nom + "=" + str(newVal) +","
@@ -440,6 +458,7 @@ class TELEMACParser(PythonParser):
 
 
    def tri(self, listeIn):
+      if len(listeIn) == 0 : return listeIn
       if len(listeIn) == 1 : return listeIn
       if self.Ordre_Des_Commandes == None : return listeIn
       listeOut=[listeIn[0],]
diff --git a/convert/convert_XML.py b/convert/convert_XML.py
new file mode 100644 (file)
index 0000000..8d9f9b8
--- /dev/null
@@ -0,0 +1,78 @@
+# 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
+
+
+import re
+from Extensions.i18n import tr
+
+#import traceback
+#traceback.print_stack()
+
+from Extensions import localisation
+from Noyau import N_CR
+
+
+def entryPoint():
+   """
+   Return a dictionary containing the description needed to load the plugin
+   """
+   return {
+          'name' : 'xml',
+          'factory' : XMLparser
+          }
+
+class XMLparser:
+   """
+   This converter works like Pythonparser, except that it is supposed to read XML
+   """
+
+   def __init__(self,cr=None):
+      self.text=''
+      if cr : self.cr=cr
+      else: self.cr=N_CR.CR(debut='CR convertisseur format XML',
+                         fin='fin CR format XML')
+
+   def readfile(self,filename):
+      self.filename=filename
+      try:
+         self.text=open(filename).read()
+      except:
+         self.cr.exception(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+         self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+         return
+
+
+
+   def convert(self, outformat, appli=None):
+   # ici on ne fait rien
+   # on le fera a la creation du JDC
+       try:
+            return self.text
+       except EficasException:
+            # Erreur lors de la conversion
+            l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
+                                         sys.exc_info()[2])
+            self.cr.exception(tr("Impossible de convertir le fichier XML\n %s", ''.join(l)))
+            return ""
+         
+
+      
+
+
diff --git a/convert/convert_dico.py b/convert/convert_dico.py
new file mode 100644 (file)
index 0000000..52a8d37
--- /dev/null
@@ -0,0 +1,100 @@
+# 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 Extensions.i18n import tr
+#from Extensions import localisation
+
+
+from .convert_python import Pythonparser
+from Noyau import N_CR
+
+try:
+  basestring
+except NameError:
+  basestring = str
+
+
+
+def entryPoint():
+   """
+   Return a dictionary containing the description needed to load the plugin
+   """
+   return {
+          'name' : 'dico',
+          'factory' : Dicoparser
+          }
+
+class Dicoparser(Pythonparser):
+  """
+   This converter initializes model variable from a python dictionnary
+  """
+
+  def __init__(self,cr=None):
+      # Si l'objet compte-rendu n'est pas fourni, on utilise le
+      # compte-rendu standard
+      self.text=''
+      self.textePy=''
+      if cr :
+         self.cr=cr
+      else:
+         self.cr=N_CR.CR(debut='CR convertisseur format dico',
+                         fin='fin CR format dico')
+
+  def readfile(self,filename):
+     self.filename=filename
+     try:
+        self.text=open(filename).read()
+     except:
+        self.cr.exception(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+        self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename)))
+        return
+
+  def convert(self,outformat,appli=None):
+     monTexteDico={}
+     exec (self.text,globals(),monTexteDico)
+     if len(monTexteDico.keys()) != 1 : 
+        self.cr.exception(tr("Impossible de traiter le fichier %s" ,str(filename)))
+        self.cr.fatal(tr("Impossible de traiter le fichier %s" ,str(filename)))
+        return
+     self.textePy=""
+     monDico=monTexteDico[monTexteDico.keys()[0]]
+     for commande in monDico :
+         valeurs=monDico[commande]
+         if valeurs.has_key('NomDeLaSdCommande') :
+            # cas d un oper 
+              self.textePy+=valeurs['NomDeLaSdCommande']+' = '+commande+'('
+              del valeurs['NomDeLaSdCommande']
+         else :
+              self.textePy+=commande+'('
+         for mot in valeurs :
+             if isinstance(valeurs[mot],dict) : self.traiteMCFact(mot,valeurs[mot])
+             else : self.textePy += mot+' = ' +str(valeurs[mot])+','
+         self.textePy+=');\n' # fin de la commande
+     print (self.textePy)
+     return self.textePy
+
+  def traiteMCFact(self,mot,valeurs):
+      self.textePy += mot + '=_F('
+      for mot in valeurs :
+          if isinstance(valeurs[mot],dict) : self.traiteMCFact(mot,valeurs[mot])
+          else : self.textePy +=mot+' = ' +str(valeurs[mot])+','
+      self.textePy +='),'
+
index 2a015f698c786936794a7742e3c8e6ede393333a..c4bad1484201869b598764499cb1bde047e3ca09 100644 (file)
@@ -21,7 +21,7 @@
 """
 
 from __future__ import absolute_import
-from .convert_python import PythonParser
+from .convert_python import Pythonparser
 
 def entryPoint():
    """
@@ -32,7 +32,7 @@ def entryPoint():
         # Le nom du plugin
           'name' : 'MAP',
         # La factory pour creer une instance du plugin
-          'factory' : PythonParser,
+          'factory' : Pythonparser,
           }
 
 
index e05b5589ca0b41b8c05d042a32e64907a25f4d29..098612eb8e4b87715433b689aba75e0b20b8ef1f 100644 (file)
@@ -69,11 +69,11 @@ def entryPoint():
         # Le nom du plugin
           'name' : 'pyth',
         # La factory pour creer une instance du plugin
-          'factory' : PythParser,
+          'factory' : Pythparser,
           }
 
 
-class PythParser(object):
+class Pythparser(object):
    """
        Ce convertisseur lit un fichier au format pyth avec la 
        methode readfile : convertisseur.readfile(nom_fichier)
index 69a3e1b98614c30ea7ae1127ab7aa16c4ef16cd7..123f3183b5e0e811349c272237b4ea806038c5fd 100644 (file)
@@ -69,11 +69,11 @@ def entryPoint():
         # Le nom du plugin
           'name' : 'python',
         # La factory pour creer une instance du plugin
-          'factory' : PythonParser,
+          'factory' : Pythonparser,
           }
 
 
-class PythonParser(object):
+class Pythonparser(object):
    """
        Ce convertisseur lit un fichier au format python avec la 
        methode readfile : convertisseur.readfile(nom_fichier)
@@ -117,14 +117,14 @@ class PythonParser(object):
             #import cProfile, pstats, StringIO
             #pr = cProfile.Profile()
             #pr.enable()            
-            l= PARSEUR_PYTHON(self.text).get_texte(appli)
+            l= PARSEUR_PYTHON(self.text).getTexte(appli)
 
             #pr.disable()
             #s = StringIO.StringIO()
             #sortby = 'cumulative'
             #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
             #ps.print_stats()
-            #print (s.getvalue())
+            #print (s.getValue())
 
             return l
          except EficasException:
index 9de97d26f9a572e48ac5db4ecf004aae595ed5e4..811c25fb4ece59c0e6829a29b7516e277cd10bc6 100644 (file)
@@ -84,7 +84,7 @@ implicitContinuationChars = (('(', ')'), ('[', ']'), ('{', '}'))
 linecontinueRE = re.compile(r"\\\s*(#.*)?$")
 emptyHangingBraces = [0,0,0,0,0]
 
-class ParserException(Exception): pass
+class parserException(Exception): pass
 class FatalError(Exception): pass
 
 #commentaire double precede d'un nombre quelconque de blancs (pas multiligne)
@@ -119,19 +119,19 @@ number_kw_pattern=re.compile(r"""
 )
 """,re.VERBOSE|re.MULTILINE)
 
-def construit_genea(texte,liste_mc):
+def construitGenea(texte,listeMc):
     """
        Retourne un dictionnaire dont les cles sont des reels et les valeurs sont leurs representations textuelles.
 
        Realise un filtrage sur les reels :
 
          - Ne garde que les reels pour lesquels str ne donne pas une bonne representation.
-         - Ne garde que les reels derriere un argument keyword dont le nom est dans liste_mc
+         - Ne garde que les reels derriere un argument keyword dont le nom est dans listeMc
 
        >>> s = '''a=+21.3e-5*85,b=-.1234,c=81.6   , d= -8 , e=_F(x=342.67,y=-1), f=+1.1, g=(1.3,-5,1.54E-3),
        ... #POMPE_PRIMA._BOUCLE_N._2_ELEMENT_NUMERO:0239
        ... h=_F(x=34.6,y=-1)'''
-       >>> construit_genea(s,['a','x'])
+       >>> construitGenea(s,['a','x'])
        {0.000213: '21.3e-5'}
     """
     d={}
@@ -142,7 +142,7 @@ def construit_genea(texte,liste_mc):
             #argument keyword
             mot=m[:-1]
         else:
-            if mot not in liste_mc:continue
+            if mot not in listeMc:continue
             #valeur
             key=eval(m)
             if str(key) != m: d[key]=m
@@ -157,10 +157,10 @@ class ENTITE_JDC(object) :
         self.texte = ''
         pere.l_objets.append(self)
 
-    def set_text(self,texte):
+    def setText(self,texte):
         self.texte = texte
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en mettant un retour chariot a la fin de texte
         """
@@ -183,7 +183,7 @@ class COMMENTAIRE(ENTITE_JDC):
         #s='COMMENTAIRE(u"""'+self.texte+'""")\n\n'
         #return s
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant le # initial
         """
@@ -203,7 +203,7 @@ class COMMANDE(ENTITE_JDC):
         """
         return self.texte+'\n'
         
-    def get_nb_par(self):
+    def getNbPar(self):
         """
         Retourne la difference entre le nombre de parentheses ouvrantes
         et le nombre de parentheses fermantes presentes dans self.texte
@@ -222,7 +222,7 @@ class COMMANDE(ENTITE_JDC):
 
 class AFFECTATION(ENTITE_JDC):
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant tout retour chariot et tout point virgule
         PN et tout commentaire
@@ -244,7 +244,7 @@ class AFFECTATION(ENTITE_JDC):
 
 class COMMANDE_COMMENTARISEE(ENTITE_JDC):
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant les doubles commentaires
         """
@@ -262,7 +262,7 @@ class COMMANDE_COMMENTARISEE(ENTITE_JDC):
 
 class AFFECTATION_EVAL(ENTITE_JDC):
 
-    def append_text(self,texte):
+    def appendText(self,texte):
         """
         Ajoute texte a self.texte en enlevant tout retour chariot
         """
@@ -298,11 +298,12 @@ class PARSEUR_PYTHON(object):
         self.l_objets=None
         self.appli=None
 
-    def is_affectation(self,texte):
+    def isAffectation(self,texte):
         """
         Methode booleenne qui retourne 1 si le texte est celui d'une affectation dans un jeu de commandes
         Aster, 0 sinon
         """
+        print (texte)
         if '=' not in texte : return 0
         if self.pattern_commande.match(texte):
             # cas d'une procedure ...
@@ -321,7 +322,7 @@ class PARSEUR_PYTHON(object):
             if m.end() != len(s):return 0
             return 1
 
-    def is_eval(self,texte):
+    def isEval(self,texte):
         """
         Methode booleenne qui retourne 1 si le texte est celui d'une affectation de type EVAL
         dans un jeu de commandes Aster, 0 sinon
@@ -338,7 +339,7 @@ class PARSEUR_PYTHON(object):
         else:
             return 0
             
-    def is_commande(self,texte):
+    def isCommande(self,texte):
         """
         Methode booleenne qui retourne 1 si le texte est celui d'une commande dans un jeu de commandes
         Aster, 0 sinon
@@ -357,7 +358,7 @@ class PARSEUR_PYTHON(object):
         else:
             return 0
 
-    def is_modification_catalogue(self,texte) :
+    def isModificationCatalogue(self,texte) :
         if self.pattern_commande.match(texte):
            return 1
 
@@ -400,7 +401,7 @@ class PARSEUR_PYTHON(object):
             hangingComments ^= line.count(u"'''") % 2
             #print (hangingComments,hangingBraces)
             if hangingBraces[0] < 0 or hangingBraces[1] < 0 or hangingBraces[2] < 0: 
-                raise ParserException()
+                raise parserException()
 
             if ligne.strip() == '':
                 # il s'agit d'un saut de ligne
@@ -417,17 +418,17 @@ class PARSEUR_PYTHON(object):
                     # on a un objet commentarise a l'interieur d'une commande
                     # --> non traite pour l'instant : on l'ajoute simplement a la commande courante comme
                     # un commentaire ordinaire
-                    commande_courante.append_text(ligne)
+                    commande_courante.appendText(ligne)
                 elif commande_commentarisee_courante :
                     # commande_commentarisee en cours : on ajoute la ligne
-                    commande_commentarisee_courante.append_text(ligne)
+                    commande_commentarisee_courante.appendText(ligne)
                     # on a 2 commandes commentarisees de suite
                     if pattern_finComments.match(ligne) :
                        commande_commentarisee_courante = None
                 else:
                     # debut de commande commentarisee : on cree un objet commande_commentarisee_courante
                     commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
-                    commande_commentarisee_courante.append_text(ligne)
+                    commande_commentarisee_courante.appendText(ligne)
 
                 #on passe a la ligne suivante
                 continue
@@ -441,16 +442,16 @@ class PARSEUR_PYTHON(object):
                 if commande_courante :
                     # il s'agit d'un commentaire a l'interieur d'une commande --> on ne fait rien de special
                     #on l'ajoute au texte de la commande 
-                    commande_courante.append_text(ligne)
+                    commande_courante.appendText(ligne)
                 elif commentaire_courant :
                     # il s'agit de la nieme ligne d'un commentaire entre deux commandes
                     # --> on ajoute cette ligne au commentaire courant
-                    commentaire_courant.append_text(ligne)
+                    commentaire_courant.appendText(ligne)
                 else :
                     # il s'agit d'un nouveau commentaire entre deux commandes
                     # --> on le cree et il devient le commentaire courant
                     commentaire_courant = COMMENTAIRE(self)
-                    commentaire_courant.append_text(ligne)
+                    commentaire_courant.appendText(ligne)
 
                 #on passe a la ligne suivante
                 continue
@@ -466,12 +467,12 @@ class PARSEUR_PYTHON(object):
 
             if commande_courante :
                 #on a une commande en cours. On l'enrichit ou on la termine
-                commande_courante.append_text(ligne)
+                commande_courante.appendText(ligne)
                 if not linecontinueRE.search(line) \
                    and (hangingBraces == emptyHangingBraces) \
                    and not hangingComments:
                     #la commande est terminee 
-                    self.analyse_reel(commande_courante.texte)
+                    self.analyseReel(commande_courante.texte)
                     commande_courante = None
 
                 #on passe a la ligne suivante
@@ -479,7 +480,7 @@ class PARSEUR_PYTHON(object):
 
             if affectation_courante != None :
                 #poursuite d'une affectation
-                affectation_courante.append_text(ligne)
+                affectation_courante.appendText(ligne)
                 if not linecontinueRE.search(line) \
                    and (hangingBraces == emptyHangingBraces) \
                    and not hangingComments:
@@ -490,15 +491,15 @@ class PARSEUR_PYTHON(object):
 
             # il peut s'agir d'une commande ou d'une affectation ...
             # ou d'un EVAL !!!
-            if self.is_eval(ligne):
+            if self.isEval(ligne):
                 # --> affectation de type EVAL
                 if affectation_courante : affectation_courante = None
                 affectation = AFFECTATION_EVAL(self)
-                affectation.append_text(ligne)
+                affectation.appendText(ligne)
                 #on passe a la ligne suivante
                 continue
 
-            if self.is_affectation(ligne):
+            if self.isAffectation(ligne):
                 #print( '--> affectation')
                 text=ligne
                 #traitement des commentaires en fin de ligne
@@ -506,7 +507,7 @@ class PARSEUR_PYTHON(object):
                 if compos > 2:
                     #commentaire en fin de ligne
                     #on cree un nouveau commentaire avant le parametre
-                    COMMENTAIRE(self).append_text(ligne[compos:])
+                    COMMENTAIRE(self).appendText(ligne[compos:])
                     text=ligne[:compos]
                 #si plusieurs instructions separees par des ; sur la meme ligne
                 inspos=line.find(u";")
@@ -520,7 +521,7 @@ class PARSEUR_PYTHON(object):
                                                  sur la meme ligne : %s", ligne))
 
                 affectation_courante = AFFECTATION(self)
-                affectation_courante.append_text(text)
+                affectation_courante.appendText(text)
                 if not linecontinueRE.search(line) \
                    and (hangingBraces == emptyHangingBraces) \
                    and not hangingComments:
@@ -529,17 +530,17 @@ class PARSEUR_PYTHON(object):
                 #on passe a la ligne suivante
                 continue
 
-            if self.is_commande(ligne):
+            if self.isCommande(ligne):
                 # --> nouvelle commande
                 affectation_courante = None
                 commande_courante = COMMANDE(self)
-                commande_courante.append_text(ligne)
+                commande_courante.appendText(ligne)
                 #si la commande est complete, on la termine
                 if not linecontinueRE.search(line) \
                    and (hangingBraces == emptyHangingBraces) \
                    and not hangingComments:
                     #la commande est terminee 
-                    self.analyse_reel(commande_courante.texte)
+                    self.analyseReel(commande_courante.texte)
                     commande_courante = None
                 #on passe a la ligne suivante
                 continue
@@ -559,7 +560,7 @@ class PARSEUR_PYTHON(object):
              i=i+1
         return chaine 
             
-    def construit_genea(self,texte):
+    def construitGenea(self,texte):
         indiceC=0
         mot=""
         dict_reel_concept={}
@@ -635,7 +636,7 @@ class PARSEUR_PYTHON(object):
         # c est un ; 
         return dict_reel_concept
 
-    def analyse_reel(self,commande) :
+    def analyseReel(self,commande) :
         nomConcept=None
         # On verifie qu on a bien un OPER
         # et pas une MACRO
@@ -649,9 +650,9 @@ class PARSEUR_PYTHON(object):
            #nomConcept=epure1.split(u"=")[0]
            #index=epure1.find(u"=")
            #epure2=epure1[index+1:len(epure1)].replace(u"_F(u","(u")
-           #dict_reel_concept=self.construit_genea(epure2)
+           #dict_reel_concept=self.construitGenea(epure2)
            if self.appli:
-             dict_reel_concept=construit_genea(epure2,self.appli.liste_simp_reel)
+             dict_reel_concept=construitGenea(epure2,self.appli.liste_simp_reel)
            else:
              dict_reel_concept={}
         if nomConcept == "sansnom" :
@@ -660,7 +661,7 @@ class PARSEUR_PYTHON(object):
            if len(dict_reel_concept) != 0:
               self.appli.dict_reels[nomConcept]=dict_reel_concept
 
-    def get_texte(self,appli=None):
+    def getTexte(self,appli=None):
         """
         Retourne le texte issu de l'analyse
         """
@@ -672,7 +673,7 @@ class PARSEUR_PYTHON(object):
             for obj in self.l_objets:
                 txt = txt+str(obj)
         #else :
-        except  ParserException:
+        except  parserException:
             #Impossible de convertir le texte, on le retourne tel que
             txt=self.texte
         return txt
diff --git a/convert/readXml.py b/convert/readXml.py
new file mode 100644 (file)
index 0000000..d6eb65c
--- /dev/null
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+import raw.cata_map_genere as mdm
+mdm.pyxb.GlobalValidationConfig._setContentInfluencesGeneration(mdm.pyxb.GlobalValidationConfig.ALWAYS)
+mdm.pyxb.GlobalValidationConfig._setInvalidElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+mdm.pyxb.GlobalValidationConfig._setOrphanElementInContent(mdm.pyxb.GlobalValidationConfig.RAISE_EXCEPTION)
+
+
+print dir(mdm)
index e6393a28299dd06b6499c7a49e4bd173b2588639..f08f52c50289281b7e3021fe4a733daa7acd5248 100644 (file)
@@ -68,13 +68,12 @@ class Formatage (object):
        self.sep = ':'
        self.l_max = 72
 
-  def formate_jdc(self):
+  def formateJdc(self):
     comment=re.compile("\n#")
     commentaireavant=0
     for etape in self.l_jdc:
       self.count = self.count+1
       self.texte_etape = ''
-      #if type(etape)==types.ListType:
       if type(etape)==list:
         # L'etape est sous la forme d'une liste dont le premier element est une chaine
         self.indent=[]
@@ -82,7 +81,7 @@ class Formatage (object):
         self.indent_courant = self.indent[0]
         self.texte_etape = '\n' + etape[0]
         if len(etape)>1 :
-          self.formate_etape(etape[1:])
+          self.formateEtape(etape[1:])
       else :
         # L'etape est deja sous forme de chaine de caracteres
         self.indent=[]
@@ -111,7 +110,7 @@ class Formatage (object):
   
   
 
-  def formate_etape(self,liste):
+  def formateEtape(self,liste):
     """
         Enrichissement de la chaine de caracteres representant l'etape (attribut
         texte_etape de l'objet Formatage).
@@ -124,7 +123,7 @@ class Formatage (object):
 
     ind = 0
     for element in liste :
-      if type(element) == types.ListType:
+      if type(element)==list:
 
         # il s'agit d'un mot-clé facteur
         # on écrit son nom (element[0])
@@ -140,22 +139,25 @@ class Formatage (object):
         self.indent.insert(length,self.indent[length-1]+len(element[0]))
         self.indent_courant = self.indent[length]
         # on écrit ses fils
-        self.formate_etape(element[1:])
+        self.formateEtape(element[1:])
       #elif type(element) == types.StringType:
-      elif type(element) == bytes:
+      #elif type(element) == bytes:
+      # PNPNPN -> marre du python 2 et 3
+      # on remplace par else dans if
+      else :
 
         # il s'agit d'un mot-clé simple ou de ')' ou ');' ou '),' ou ');\n'
 
         if element in l_patterns_fin_mcf :
-              self.traite_mcfact(s_mcfact=element,ind=ind)
+              self.traiteMcfact(s_mcfact=element,ind=ind)
         elif element in l_patterns_fin_etape :
-              self.traite_etape(s_etape=element,ind=ind)
+              self.traiteEtape(s_etape=element,ind=ind)
         else :
-              self.traite_mcsimp(s_mcsimp=element,ind=ind)
+              self.traiteMcsimp(s_mcsimp=element,ind=ind)
 
       ind = 1
 
-  def traite_etape(self,s_etape,ind) :
+  def traiteEtape(self,s_etape,ind) :
       """
           Traite une partie du jdc formaté : s_etape, une chaîne de caractères
           contenant une étape
@@ -172,7 +174,7 @@ class Formatage (object):
           self.indent_courant=self.indent[0]
       self.texte_etape = self.texte_etape + s_etape.strip()
 
-  def traite_mcfact(self,s_mcfact,ind) :
+  def traiteMcfact(self,s_mcfact,ind) :
       """
           Traite une partie du jdc formaté : s_mcfact, une chaîne de caractères
           contenant un mot-clef facteur.
@@ -191,7 +193,7 @@ class Formatage (object):
       return
 
 
-  def traite_mcsimp(self,s_mcsimp,ind) :
+  def traiteMcsimp(self,s_mcsimp,ind) :
       """
           Traite une partie du jdc formaté : s_mcsimp, une chaîne de caractères
           contenant un mot-clef simple.
@@ -223,7 +225,7 @@ class Formatage (object):
           # il faut couper ...
           #nom,valeur = string.split(s_mcsimp,self.sep,1)
           nom,valeur = str.split(s_mcsimp,self.sep,1)
-          chaine = self.creer_chaine(nom,valeur,'\n'+self.indent_courant*' ',ind)
+          chaine = self.creerChaine(nom,valeur,'\n'+self.indent_courant*' ',ind)
           #self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + s_mcsimp.strip()
           self.texte_etape = self.texte_etape + chaine
       return
@@ -240,9 +242,9 @@ class Formatage (object):
     return len(texte[texte.rfind('\n'):-1])
     
 
-  def creer_chaine(self,nom,valeur,increment,ind):
+  def creerChaine(self,nom,valeur,increment,ind):
     """
-        La methode creer_chaine reconstitue un objet Eficas à partir de
+        La methode creerChaine reconstitue un objet Eficas à partir de
              - son nom,
              - sa valeur.
     """
@@ -302,8 +304,8 @@ class FormatageLigne(Formatage) :
   def __init__(self,l_jdc,code=None,mode=None,sep='=',l_max="**"):
       Formatage.__init__(self,l_jdc,code=None,mode=None,sep='=',l_max="**")
       
-  def formate_jdc(self):
-      texte1=Formatage.formate_jdc(self)
+  def formateJdc(self):
+      texte1=Formatage.formateJdc(self)
       newText=""
       lignes=texte1.split("\n")
       texte=""
index 3d2dc77baa5eb6b19eedee94525859133974a4ee..2bc21caec510fca2b00cde00389718efd4a8a590 100755 (executable)
@@ -93,7 +93,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
 
       # Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D
       # si le jdc est valide (sinon cela n a pas de sens)
-      if obj.isvalid() : 
+      if obj.isValid() : 
            try :
              # constitution du bloc VERSION du fichier PHYS (existe toujours)
              self.generBLOC_VERSION(obj)
@@ -325,7 +325,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
         self.dicoCourant=self.dicoMCFACTCourant
         s=PythonGenerator.generMCFACT(self,obj)
         # sauvegarde, dans self.dicoEtapeCourant, de la valeur du FACT courant, pour utilisation ultérieure dans generETAPE et generPROC_ETAPE
-        # Traitement des FACT CUTLINE et CUTPLANE multiples (max='**' dans le catalogue)
+        # traitement des FACT CUTLINE et CUTPLANE multiples (max='**' dans le catalogue)
         # Ce traitement spécial est nécessaire pour le moment car le générateur bogue sinon au niveau des matériaux (non-linéaires ?)
         if obj.nom in ('FIELDDUMP','CUTLINE', 'CUTPLANE', 'FIELDMAP', 'VISU3D' ): 
             # Remplissage se self.dicoEtapeCourant pour le nom du FACT courant
@@ -430,10 +430,10 @@ class CARMEL3DFV0Generator(PythonGenerator):
         """
         try:
             if usePrefix:
-                nomGroupe = self.nomReelGroupe(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
+                nomGroupe = self.nomReelGroupe(obj.getSdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
                 print "liste des noms sans prefixes %s" %(nomGroupe)
             else:
-                nomGroupe = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept
+                nomGroupe = obj.getSdname() # nom du groupe de maillage, i.e. nom du concept
                 print "liste des noms sans prefixes %s" %(nomGroupe)
 
             # test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement.
@@ -465,7 +465,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
                 texte=""
                 texte+="%s"%(obj.valeur['Domaine'])
                 print"le texte=%s" %(texte)
-                self.dictDomaine[obj.get_sdname()]=texte  
+                self.dictDomaine[obj.getSdname()]=texte  
                 print "liste des domaines =%s" %(self.dictGroupes[nomGroupe]['DOMAINE'])
                     
 #            else:
@@ -483,10 +483,10 @@ class CARMEL3DFV0Generator(PythonGenerator):
         try:
             #nomGroupe={'SOURCE':[], 'MATERIAL':[], 'LISTE':[], 'STRAND':[], }   
             if usePrefix:
-                nomGroupe = self.nomReelGroupe(obj.get_sdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
+                nomGroupe = self.nomReelGroupe(obj.getSdname()) # nom du groupe de maillage, i.e. nom du concept, avec prefixes enleves
                 print "liste des noms sans prefixes %s" %(nomGroupe)
             else:
-                nomGroupe = obj.get_sdname() # nom du macro groupe
+                nomGroupe = obj.getSdname() # nom du macro groupe
                 print "liste des noms sans prefixes %s" %(nomGroupe)
             self.dictGroupes[nomGroupe] = {}   
                 
@@ -524,7 +524,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
                         texte=""
                         texte+="%s"%(obj.valeur['Domaine'])
                         print"le texte=%s" %(texte)
-                        self.dictDomaine[obj.get_sdname()]=texte                  
+                        self.dictDomaine[obj.getSdname()]=texte                  
                     else: # Erreur si Domaine et macro-groupe pas complètement inducteur
                         raise ValueError, nomGroupe + tr(" : ce MACRO_GROUPE ne doit pas contenir de Domaine car il contient, dans LISTE_MESHGROUP, des groupes qui ne sont pas que des morceaux d'inducteurs bobines ou topologiques.")
                 else: # Domaine manquant
@@ -613,8 +613,8 @@ class CARMEL3DFV0Generator(PythonGenerator):
            print "_____________cond_____________"
        # verification des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY)
        if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur:
-            print "ERREUR! Le matériau conducteur (CONDUCTOR) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.get_sdname()
-            raise ValueError,  obj.get_sdname() + tr(" : ce materiau conducteur (CONDUCTOR) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
+            print "ERREUR! Le matériau conducteur (CONDUCTOR) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.getSdname()
+            raise ValueError,  obj.getSdname() + tr(" : ce materiau conducteur (CONDUCTOR) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
        else:
           # parcours des proprietes du sous bloc CONDUCTOR (PERMEABILITY, CONDUCTIVITY)
           for keyN1 in ('PERMEABILITY','CONDUCTIVITY') :
@@ -647,7 +647,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
              texte+="         ]"+"\n"
        if self.debug: 
            print "texte = %s", texte
-       self.dictMaterConductor[obj.get_sdname()]={'texte':  texte,  'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
+       self.dictMaterConductor[obj.getSdname()]={'texte':  texte,  'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
 
    def generMATERIAL_DIELECTRIC(self,obj):
         """preparation du sous bloc DIELECTRIC"""
@@ -690,7 +690,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
          texte+="         ]"+"\n"
         if self.debug: 
            print "texte = %s" % texte
-        self.dictMaterDielectric[obj.get_sdname()]={'texte':  texte,  'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
+        self.dictMaterDielectric[obj.getSdname()]={'texte':  texte,  'valeur': obj.valeur} # sauvegarde du texte pour ce bloc, ainsi que de toutes les valeurs pour analyse ultérieure
 
    def generMATERIAL_ZSURFACIC(self,obj):
        """preparation du sous bloc ZSURFACIC"""
@@ -699,8 +699,8 @@ class CARMEL3DFV0Generator(PythonGenerator):
            print "______________zsurf_____________"
        # verification des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY)
        if 'PERMEABILITY' not in obj.valeur or 'CONDUCTIVITY' not in obj.valeur:
-            print "ERREUR! Le matériau impedance de surface (ZSURFACIC) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.get_sdname()
-            raise ValueError, obj.get_sdname() + tr(" : ce materiau impedance de surface (ZSURFACIC) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
+            print "ERREUR! Le matériau impedance de surface (ZSURFACIC) de nom %s doit contenir les propriétés PERMEABILITY et CONDUCTIVITY." % obj.getSdname()
+            raise ValueError, obj.getSdname() + tr(" : ce materiau impedance de surface (ZSURFACIC) doit contenir les proprietes PERMEABILITY et CONDUCTIVITY.")
        else:
           # parcours des proprietes du sous bloc ZSURFACIC (PERMEABILITY, CONDUCTIVITY)
           for keyN1 in obj.valeur :
@@ -723,7 +723,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
              texte+="         ]"+"\n"
        if self.debug: 
            print "texte = %s", texte
-       self.dictMaterZsurfacic[obj.get_sdname()]=texte # sauvegarde du texte pour ce bloc
+       self.dictMaterZsurfacic[obj.getSdname()]=texte # sauvegarde du texte pour ce bloc
 
    def generMATERIAL_EMISO(self,obj):
        """preparation du sous bloc EM_ISOTROPIC_FILES.
@@ -738,11 +738,11 @@ class CARMEL3DFV0Generator(PythonGenerator):
        #from os.path import basename
        #texte ="        CONDUCTIVITY MED "+basename(str(obj.valeur["CONDUCTIVITY_File"]))+"\n"
        #texte+="        PERMEABILITY MED "+basename(str(obj.valeur["PERMEABILITY_File"]))+"\n"
-       #      print "obj get sdname= ", obj.get_sdname()
-       #   if obj.get_sdname() in self.dictMaterEmIso.keys() :
-       #    self.dictMaterEmIso[obj.get_sdname()].append(texte) 
+       #      print "obj get sdname= ", obj.getSdname()
+       #   if obj.getSdname() in self.dictMaterEmIso.keys() :
+       #    self.dictMaterEmIso[obj.getSdname()].append(texte) 
        # else :
-       self.dictMaterEmIso[obj.get_sdname()]=texte
+       self.dictMaterEmIso[obj.getSdname()]=texte
   
    def generMATERIAL_EMANISO(self,obj):
         """preparation du sous bloc EM_ANISOTROPIC_FILES.
@@ -753,21 +753,21 @@ class CARMEL3DFV0Generator(PythonGenerator):
             texte ="        CONDUCTIVITY MATER "+str(obj.valeur["CONDUCTIVITY_File"])+"\n"
         if "PERMEABILITY_File" in obj.valeur:
             texte+="        PERMEABILITY MATER "+str(obj.valeur["PERMEABILITY_File"])+"\n"
-       #  print "obj get sdname= ", obj.get_sdname()
-       #  if obj.get_sdname() in self.dictMaterEmAnIso.keys() :
-       #    self.dictMaterEmAnIso[obj.get_sdname()].append(texte) 
+       #  print "obj get sdname= ", obj.getSdname()
+       #  if obj.getSdname() in self.dictMaterEmAnIso.keys() :
+       #    self.dictMaterEmAnIso[obj.getSdname()].append(texte) 
        #  else :
-        self.dictMaterEmAnIso[obj.get_sdname()]=texte
+        self.dictMaterEmAnIso[obj.getSdname()]=texte
    
    def generMATERIAL_NILMAT(self,obj):
        """preparation du sous bloc NILMAT"""
        texte=""
-       self.dictMaterNilmat[obj.get_sdname()]=texte
+       self.dictMaterNilmat[obj.getSdname()]=texte
    
    def generMATERIAL_ZINSULATOR(self,obj):
        """"preparation du sous bloc ZINSULATOR"""
        texte=""
-       self.dictMaterZinsulator[obj.get_sdname()]=texte
+       self.dictMaterZinsulator[obj.getSdname()]=texte
 
 #-------------------------------------------------------------------
 
@@ -810,7 +810,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
                if self.problem == HARMONIC:
                   texte+="        CURJ POLAR %(ampli)s %(phase)s\n" \
                          % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
-            self.dictSourceStInd[obj.get_sdname()]=texte
+            self.dictSourceStInd[obj.getSdname()]=texte
             if self.debug: 
                 print texte
         except ValueError, err:
@@ -820,7 +820,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
         """preparation du sous bloc HPORT"""
         texte=""
         sdict = obj.valeur['HPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source
-        nomPort = obj.get_sdname()
+        nomPort = obj.getSdname()
         self.dictPort[nomPort] = {} 
         self.dictPort[nomPort]['HPORT']=str(sdict['TYPE'])
         try :
@@ -837,7 +837,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
                if self.problem == HARMONIC:
                   texte+="        AMP POLAR %(ampli)s %(phase)s\n" \
                          % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
-            self.dictSourceHport[obj.get_sdname()]=texte
+            self.dictSourceHport[obj.getSdname()]=texte
             if self.debug: 
                 print texte
         except ValueError, err:
@@ -849,7 +849,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
         """preparation du sous bloc EPORT"""
         texte=""
         sdict = obj.valeur['EPORT'] # dictionnaire contenant les parametres de la source, outre la forme de la source
-        nomPort = obj.get_sdname()
+        nomPort = obj.getSdname()
         self.dictPort[nomPort] = {} 
         self.dictPort[nomPort]['EPORT']=str(sdict['TYPE'])
         print "sdict=%s" %(sdict)
@@ -867,7 +867,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
                if self.problem == HARMONIC:
                   texte+="        AMP POLAR %(ampli)s %(phase)s\n" \
                          % {'ampli': str(wdict['AMPLITUDE']), 'phase': str(wdict['PHASE'])}
-            self.dictSourceEport[obj.get_sdname()]=texte
+            self.dictSourceEport[obj.getSdname()]=texte
             if self.debug: 
                 print texte
         except ValueError, err:
@@ -1035,14 +1035,14 @@ class CARMEL3DFV0Generator(PythonGenerator):
       # constitution du bloc VERSION du fichier PHYS
       # creation d une entite  VERSION ; elle sera du type PROC car decrit ainsi
       # dans le du catalogue
-      version=obj.addentite('VERSION',pos=None)
+      version=obj.addEntite('VERSION',pos=None)
       self.generPROC_ETAPE(obj.etapes[0])
       self.texteCarmel3D+="["+obj.etapes[0].nom+"\n"
       for cle in obj.etapes[0].valeur :
           self.texteCarmel3D+="   "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n"
       self.texteCarmel3D+="]\n"
       # destruction de l entite creee 
-      obj.suppentite(version)
+      obj.suppEntite(version)
       #print 'ERREUR : test erreur boite graphique BLOC_VERSION'
       #raise ValueError, 'test erreur boite graphique BLOC_VERSION'
 
@@ -1303,7 +1303,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
             texte+="\n1"
             texte+="\n%s" % ' '.join(map(str, self.direction))
             texte+="\n%g" % (self.section)
-            self.dictStrand[obj.get_sdname()]=texte  
+            self.dictStrand[obj.getSdname()]=texte  
         if self.debug: 
             print texte 
 
@@ -1314,7 +1314,7 @@ class CARMEL3DFV0Generator(PythonGenerator):
             texte+="\n%s" % ' '.join(map(str,self.direction))
             texte+="\n%s" % ' '.join(map(str, self.centre))
             texte+="\n%g" % (self.section)
-            self.dictStrand[obj.get_sdname()]=texte  
+            self.dictStrand[obj.getSdname()]=texte  
             if self.debug: 
                 print texte
 
index 6fa901cf1c527259539d5603f479667e1e1830db..05a3d85f216de30ae9b4add3c3fd0942d065025e 100644 (file)
@@ -72,7 +72,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
 
       # Cette instruction genere le contenu du fichier de parametres pour le code Carmel3D
       # si le jdc est valide (sinon cela n a pas de sens)
-      if obj.isvalid() : 
+      if obj.isValid() : 
            try :
              # constitution du bloc VERSION du fichier PHYS (existe toujours)
              self.generBLOC_VERSION(obj)
@@ -598,7 +598,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
             on sauvegarde aussi les noms des groupes de maillage
         """
         try:
-            nomGroupe = obj.get_sdname() # nom du groupe de maillage, i.e. nom du concept
+            nomGroupe = obj.getSdname() # nom du groupe de maillage, i.e. nom du concept
             print "liste des noms sans prefixes %s" %(nomGroupe)
 
             # test: un et un seul nom de materiau ou source doit etre associe a ce groupe de maillage, via les cles MATERIAL et SOURCE, respectivement.
@@ -632,7 +632,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
                 texte=""
                 texte+="%s"%(obj.valeur['Domaine'])
                 print"le texte=%s" %(texte)
-                self.dictDomaine[obj.get_sdname()]=texte  
+                self.dictDomaine[obj.getSdname()]=texte  
                 print "liste des domaines =%s" %(self.dictGroupes[nomGroupe]['DOMAINE'])
             if 'Potentiel_Flottant' in obj.valeur.keys():
                 self.dictGroupes[nomGroupe]['Potentiel_Flottant'] = True
@@ -652,7 +652,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
             on sauvegarde aussi les noms des macros groupes
         """
         try:
-            nomMacroGroupe = obj.get_sdname() # nom du macro groupe
+            nomMacroGroupe = obj.getSdname() # nom du macro groupe
             print "liste des noms sans prefixes %s" %(nomMacroGroupe)
             self.dictMacroGroupes[nomMacroGroupe] = obj.valeur # sauvegarde des propriétés du macro-groupe
 
@@ -741,7 +741,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
         if self.debug: 
             print "generation material obj.valeur = %s" % obj.valeur
         try :
-            nomMaterial = obj.get_sdname() 
+            nomMaterial = obj.getSdname() 
             self.dictMaterial[nomMaterial]=obj.valeur
             print"self.dictMaterial=%s" %(self.dictMaterial)
         except ValueError, err:
@@ -754,7 +754,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
             print "generation source obj valeur = %s" % obj.valeur
         texte=""
         try :
-            nomSource = obj.get_sdname() 
+            nomSource = obj.getSdname() 
             self.dictSource[nomSource]=obj.valeur # dictionnaire
             self.dictSource[nomSource]['milieux'] = [] # liste ordonnée des groupes associés à cette source
             print"mon dico des sources=%s" %(self.dictSource)
@@ -768,14 +768,14 @@ class CARMEL3DTV0Generator(PythonGenerator):
       # constitution du bloc VERSION du fichier PHYS
       # creation d une entite  VERSION ; elle sera du type PROC car decrit ainsi
       # dans le du catalogue
-      version=obj.addentite('VERSION',pos=None)
+      version=obj.addEntite('VERSION',pos=None)
       self.generPROC_ETAPE(obj.etapes[0])
       self.texteCarmel3D+="["+obj.etapes[0].nom+"\n"
       for cle in obj.etapes[0].valeur :
           self.texteCarmel3D+="   "+cle+" "+str(obj.etapes[0].valeur[cle])+"\n"
       self.texteCarmel3D+="]\n"
       # destruction de l entite creee 
-      obj.suppentite(version)
+      obj.suppEntite(version)
       #print 'ERREUR : test erreur boite graphique BLOC_VERSION'
       #raise ValueError, 'test erreur boite graphique BLOC_VERSION'
 
@@ -815,7 +815,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
             print "generation du mouvement obj.valeur = %s" % obj.valeur
         
         try:
-            nom = obj.get_sdname()
+            nom = obj.getSdname()
             self.nombreMouvements = self.nombreMouvements+1
             self.dictMouvement[nom] = {'ordre': self.nombreMouvements, 'valeurs': obj.valeur}
             self.dictMouvement['ordre'].append(nom)
@@ -830,7 +830,7 @@ class CARMEL3DTV0Generator(PythonGenerator):
         if self.debug: 
             print "generation strand obj valeur = %s" % obj.valeur
         try :
-            nomStrand = obj.get_sdname() 
+            nomStrand = obj.getSdname() 
             self.dictStrand[nomStrand]=obj.valeur
             print"mon dico des stranded inductor geometry=%s" %(self.dictStrand)
 
index 8545b42c9bee7a6564ecd53f051f27a9e515e041..e4626dc1bab864a49703a0d804ba06e427c05a4a 100644 (file)
@@ -58,34 +58,43 @@ class TELEMACGenerator(PythonGenerator):
    """
 
 #----------------------------------------------------------------------------------------
-   def gener(self,obj,format='brut',config=None,appli=None,statut="Entier"):
-
-      self.statut=statut
-      self.langue=appli.langue
-      self.DicoEnumCasEnInverse={}
-      from enum_Telemac2d_auto       import TelemacdicoEn
-      for motClef in TelemacdicoEn:
+   def gener(self,obj,format='brut',config=None,appli=None,statut="Leger"):
+
+      self.statut        = statut
+      self.langue        = appli.langue
+      try : self.TelemacdicoEn = appli.readercata.TelemacdicoEn
+      except : 
+        print ('Attention : pas de TelemacdicoEn declare') 
+        self.TelemacdicoEn = {}
+      self.DicoEnumCasEnInverse = {}
+      #from enum_Telemac2d_auto       import self.TelemacdicoEn
+      for motClef in self.TelemacdicoEn:
           d={}
-          for valTelemac in TelemacdicoEn[motClef]:
-             valEficasTelemacdicoEn[motClef][valTelemac]
-             d[valEficas]=valTelemac
+          for valTelemac in self.TelemacdicoEn[motClef]:
+             valEficas   = self.TelemacdicoEn[motClef][valTelemac]
+             d[valEficas] =valTelemac
           self.DicoEnumCasEnInverse[motClef]=d
       if self.langue == 'fr' : 
-         from  enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
-         for motClef in DicoEnumCasFrToEnumCasEn:
+         #from  enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
+         self.DicoEnumCasFrToEnumCasEn = appli.readercata.DicoEnumCasFrToEnumCasEn
+         for motClef in self.DicoEnumCasFrToEnumCasEn:
               d={}
-              for valTelemac in DicoEnumCasFrToEnumCasEn[motClef]:
-                 valEficasDicoEnumCasFrToEnumCasEn[motClef][valTelemac]
-                 d[valEficas]=valTelemac
+              for valTelemac in self.DicoEnumCasFrToEnumCasEn[motClef]:
+                 valEficas    = self.DicoEnumCasFrToEnumCasEn[motClef][valTelemac]
+                 d[valEficas] = valTelemac
               self.DicoEnumCasEnInverse[motClef]=d
       self.initDico()
-      #print (self.DicoEnumCasEnInverse.keys())
       # Pour Simplifier les verifs d ecriture
       if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac
       else : self.listeTelemac = ()
 
       self.dicoCataToCas={}
-      self.dicoCasToCata=appli.readercata.dicoCasToCata
+      try :
+        self.dicoCasToCata=appli.readercata.dicoCasToCata
+      except :
+        print ('Attention pas de dicoCasToCata declare')
+        self.dicoCasToCata={}
+        self.dicoCataToCas={} 
       for motClef in self.dicoCasToCata:
            self.dicoCataToCas[self.dicoCasToCata[motClef]]=motClef
 
@@ -127,8 +136,8 @@ class TELEMACGenerator(PythonGenerator):
 
    def writeDefault(self,fn) :
        self.texteDico+='&ETA\n'
-       if self.statut == 'Leger' : extension = ".Lcas"
-       else                      : extension = ".cas"
+       if self.statut == 'Leger' : extension = ".cas"
+       else                      : extension = "_complet.cas"
        fileDico = fn[:fn.rfind(".")] + extension
        f = open( str(fileDico), 'w')
        f.write( self.texteDico )
@@ -138,8 +147,8 @@ class TELEMACGenerator(PythonGenerator):
 # ecriture de Leger
 #----------------------------------------------------------------------------------------
 
-   def writeLeger(self,fn,jdc,config,appli) :
-       jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Leger")
+   def writeComplet(self,fn,jdc,config,appli) :
+       jdc_formate=self.gener(jdc,config=config,appli=appli,statut="Entier")
        self.writeDefault(fn)
 
 
@@ -171,6 +180,7 @@ class TELEMACGenerator(PythonGenerator):
           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
 
+        
 
         #nomMajuscule=obj.nom.upper()
         #nom=nomMajuscule.replace('_',' ')
@@ -228,6 +238,12 @@ class TELEMACGenerator(PythonGenerator):
         #if obj.nom in ('PRESCRIBED_FLOWRATES','PRESCRIBED_VELOCITIES','PRESCRIBED_ELEVATIONS') :
         #   return s
 
+        # cas des Tuples
+        if obj.waitTuple()  and s3 != '' and s3  != 'None':
+           s3=s
+           if s3[-1] == ',': s3=s3[:-1] 
+
+
         if obj.nom not in self.dicoCataToCas :
            if obj.nom == 'Consigne' : return ""
            return s
@@ -253,77 +269,27 @@ class TELEMACGenerator(PythonGenerator):
       return s
 
 
-#  def LIQUID_BOUNDARIES(self,obj):
-#     print ('jkljklj')
-#     if 'BOUNDARY_TYPE' in  obj.liste_mc_presents() :
-#         objForme=obj.get_child('BOUNDARY_TYPE')
-#         valForme=objForme.valeur
-#         if valForme == None : return
-
-
-#         if valForme == 'Prescribed Unknown':
-#            nomBloc='b_'+valForme.split(" ")[1]
-#            if nomBloc in  obj.liste_mc_presents() :
-#               objBloc=obj.get_child(nomBloc)
-#               valeurPE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[0]).valeur
-#               valeurFE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[1]).valeur
-#               valeurVE = objValeur=objBloc.get_child(objBloc.liste_mc_presents()[2]).valeur
-#               if valeurPE== None : valeurPE="0."
-#               if valeurFE== None : valeurPE="0."
-#               if valeurVE== None : valeurPE="0."
-#            self.PE=True
-#            self.textPE += str(valeurPE) +"; "
-#            self.FE=True
-#            self.textFE += str(valeurFE) +"; "
-#            self.VE=True
-#            self.textVE += str(valeurVE) +"; "
-#         else:
-#            nomBloc='b_'+valForme.split(" ")[1]
-#            if nomBloc in  obj.liste_mc_presents() :
-#               objBloc=obj.get_child(nomBloc)
-#               objValeur=objBloc.get_child(objBloc.liste_mc_presents()[0])
-#               valeur=objValeur.valeur
-#               if valeur== None : valeur="0."
-#            if valForme == 'Prescribed Elevations' :
-#                self.PE=True
-#                self.textPE += str(valeur) +"; "
-#            else : self.textPE += "0.; "
-#            if valForme == 'Prescribed Flowrates' :
-#                self.FE=True
-#                self.textFE += str(valeur) +"; "
-#            else : self.textFE += "0.; "
-#            if valForme == 'Prescribed Velocity'  :
-#                self.VE=True
-#                self.textVE += str(valeur) +"; "
-#            else : self.textVE += "0.; "
-
-#  def BOUNDARY_CONDITIONS(self,obj):
-#      # sans '; '
-#      if self.FE :  self.texteDico += self.textFE[0:-2]+'\n'
-#      if self.PE :  self.texteDico += self.textPE[0:-2]+'\n'
-#      if self.VE :  self.texteDico += self.textVE[0:-2]+'\n'
-
    def TRACERS(self,obj):
        if self.nbTracers != 0 :  self.texteDico += 'NUMBER_OF_TRACERS : '+str(self.nbTracers) + '\n'
 
 
    def NAME_OF_TRACER(self,obj):
        print((dir(obj) ))
-       print((obj.get_genealogie_precise()))
+       print((obj.getGenealogiePrecise()))
 
    def Validation(self,obj):
        self.texteDico += "VALIDATION : True \n"
 
    def Date_De_L_Origine_Des_Temps (self,obj):
-       an=obj.get_child('Year').valeur
-       mois=obj.get_child('Month').valeur
-       jour=obj.get_child('Day').valeur
+       an=obj.getChild('Year').valeur
+       mois=obj.getChild('Month').valeur
+       jour=obj.getChild('Day').valeur
        self.texteDico += "ORIGINAL DATE OF TIME  :"+ str(an)+ " ,"+str(mois)+ "," +str(jour)+ "\n"
 
    def Original_Hour_Of_Time (self,obj):
-       hh=obj.get_child('Hour').valeur
-       mm=obj.get_child('Minute').valeur
-       ss=obj.get_child('Second').valeur
+       hh=obj.getChild('Hour').valeur
+       mm=obj.getChild('Minute').valeur
+       ss=obj.getChild('Second').valeur
        self.texteDico += "ORIGINAL HOUR OF TIME :"+str(hh)+" ,"+str(mm)+ ","+str(ss)+"\n"
 
    def Type_Of_Advection(self,obj):
@@ -351,9 +317,9 @@ class TELEMACGenerator(PythonGenerator):
        self.texteDico += "UPWIND COEFFICIENTS = "+ str(listeUpwind) + "\n"
 
    def chercheChildren(self,obj):
-       for c in obj.liste_mc_presents():
-           objc=obj.get_child(c)
-           if hasattr(objc,'liste_mc_presents') and objc.liste_mc_presents() != [] : self.chercheChildren(objc)
+       for c in obj.listeMcPresents():
+           objc=obj.getChild(c)
+           if hasattr(objc,'listeMcPresents') and objc.listeMcPresents() != [] : self.chercheChildren(objc)
            else : self.listeMCAdvection.append(objc)
 
 
@@ -369,7 +335,7 @@ class TELEMACGenerator(PythonGenerator):
          lval=valeur.split(";")
          ligne="   "
          for v in lval :
-           if len(ligne) < 70 : ligne += str(v)+'; '
+           if len(ligne+ str(v)+'; ') < 70 : ligne += str(v)+'; '
            else :
               text+= ligne+"\n"
               ligne="   "+str(v)+'; '
diff --git a/generator/generator_XML.py b/generator/generator_XML.py
new file mode 100644 (file)
index 0000000..4fc98f1
--- /dev/null
@@ -0,0 +1,86 @@
+# -*- 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
+#
+"""Ce module contient le plugin generateur de fichier au format  Code_Carmel3D pour EFICAS.
+"""
+
+from __future__ import absolute_import
+from __future__ import print_function
+try :
+   from builtins import str
+except : pass
+
+import traceback
+import types,re,os
+from Extensions.i18n import tr
+from .generator_python import PythonGenerator
+
+def entryPoint():
+   """
+      Retourne les informations necessaires pour le chargeur de plugins
+      Ces informations sont retournees dans un dictionnaire
+   """
+   return {
+        # Le nom du plugin
+          'name' : 'xml',
+        # La factory pour creer une instance du plugin
+          'factory' : XMLGenerator,
+          }
+
+
+class XMLGenerator(PythonGenerator):
+   """
+      Ce generateur parcourt un objet de type JDC et produit
+      un texte au format eficas et 
+
+   """
+   # Les extensions de fichier permis?
+   extensions=('.comm',)
+
+#----------------------------------------------------------------------------------------
+   def gener(self,obj,format='brut',config=None,appli=None):
+       
+      try :
+        print (obj)
+        self.texteXML=obj.toXml()
+      except : 
+        self.texteXML='erreur generation'
+        pass
+      
+      # Cette instruction genere le contenu du fichier de commandes (persistance)
+      self.text=PythonGenerator.gener(self,obj,format)
+      return self.text
+
+
+#----------------------------------------------------------------------------------------
+# initialisations
+#----------------------------------------------------------------------------------------
+   
+# ecriture
+#----------------------------------------------------------------------------------------
+
+   def writeDefault(self,fn) :
+       #fileDico = fn[:fn.rfind(".")] + '.py'
+       fileDico='/tmp/toto.xml'
+       print (self.texteXML)
+       f = open( str(fileDico), 'w')
+       f.write('Dico = '+str(self.texteXML))
+       f.close()
+
+
index 333dd23afbee6bd66cffb9215e1d280f9cc7e04f..251240baa10cd37e07a5fb34bb02b2ec4ff3583f 100644 (file)
@@ -239,7 +239,7 @@ class AplatGenerator(object):
          en une chaine de caracteres a la syntaxe aplat 
       """
       text=''
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          text=text + self.generator(v)
       if text=='':
          return self.init+'\n'
@@ -283,7 +283,7 @@ class AplatGenerator(object):
           Convertit un objet derive d'ASSD en une chaine de caracteres a la
           syntaxe aplat 
       """
-      return obj.get_name()
+      return obj.getName()
 
    def generMCList(self,obj):
       """
@@ -331,7 +331,7 @@ class AplatGenerator(object):
       text = ''
       old_init=self.init
       self.init = self.init + self.sep + obj.nom
-      for mocle in obj.mc_liste :
+      for mocle in obj.mcListe :
         text = text + self.generator(mocle)
       self.init=old_init
       return text
index a21b8db4328466afe42f63ef451654fb5d5f9fcd..408ba95426b634b428e3d943553516a22f953117 100644 (file)
@@ -80,9 +80,8 @@ class DicoGenerator(PythonGenerator):
 
    def writeDefault(self,fn) :
        fileDico = fn[:fn.rfind(".")] + '.py'
-       f = open( str(fileDico), 'wb')
-       f.write( self.texteDico )
-       print((self.texteDico))
+       f = open( str(fileDico), 'w')
+       f.write('Dico = '+str(self.Dico))
        f.close()
 
 #----------------------------------------------------------------------------------------
@@ -92,12 +91,14 @@ class DicoGenerator(PythonGenerator):
    def generMCSIMP(self,obj) :
         """recuperation de l objet MCSIMP"""
         s=PythonGenerator.generMCSIMP(self,obj)
+        print ('jjjjjjjjjj')
+        print (obj.nom)
+        print (s)
         courant=self.Dico
-        for p in obj.get_genealogie_precise()[0:-1]:
+        for p in obj.getGenealogiePrecise()[0:-1]:
             if not (p in courant.keys()) : courant[p]={}
             courant=courant[p]
         courant[obj.nom]=obj.val
         self.texteDico+=obj.nom+ "=" + s[0:-1]+ "\n"
         return s
 
-  
index 0d2117944aa0905d92e0e6273fe47b768ccf34c9..4c201b9761a384cf3326084524a41c94c9e1313b 100644 (file)
@@ -61,6 +61,7 @@ class DicoImbriqueGenerator(PythonGenerator):
       # Cette instruction genere le contenu du fichier de commandes (persistance)
       self.text=PythonGenerator.gener(self,obj,format)
       #print (self.text)
+      print (self.Dico)
       return self.text
 
 
@@ -96,9 +97,9 @@ class DicoImbriqueGenerator(PythonGenerator):
 
         s=PythonGenerator.generMCSIMP(self,obj)
         if obj.isInformation() : return s
-        if not obj.isvalid() :  return s 
+        if not obj.isValid() :  return s 
 
-        liste=obj.get_genealogie_precise() 
+        liste=obj.getGenealogiePrecise() 
 
         if obj.etape.nom=='MODIFICATION_CATALOGUE' : return s
         nom = obj.etape.nom
index 074a2abecd9a66f4ffde64d08fd61b6f76061282..43b4bb716237f1f7a066c06013d2a58b8b56d502 100644 (file)
@@ -59,7 +59,7 @@ class MapGenerator(PythonGenerator):
    def gener(self,obj,format='brut',config=None,appli=None):
       self.initDico()
       self.text=PythonGenerator.gener(self,obj,format)
-      if obj.isvalid() :self.genereExeMap()
+      if obj.isValid() :self.genereExeMap()
       return self.text
 
 
@@ -94,7 +94,7 @@ class MapGenerator(PythonGenerator):
       Remplit le dictionnaire des MCSIMP 
       """
       
-      if obj.get_genealogie()[0][-6:-1]=="_PARA":
+      if obj.getGenealogie()[0][-6:-1]=="_PARA":
          self.dictParam[obj.nom]=obj.valeur
       else :
          self.dictValeur[obj.nom]=obj.valeur
@@ -103,7 +103,7 @@ class MapGenerator(PythonGenerator):
   
   
    def generRUN(self,obj,schema):
-       if not(obj.isvalid()) :
+       if not(obj.isValid()) :
           print ("TODO TODO TODO")
        self.texteEXE=""
        self.schema=schema
index 7d61b50d75b289d610ac6870be3aa44be0e401bb..1f5a043ab532680af5e4fde60870e22558b12277 100644 (file)
@@ -105,7 +105,7 @@ class PythonGenerator(object):
       if obj == None : 
          print ('appel a gener avec None')
          return
-      self.appli=obj.get_jdc_root().appli
+      self.appli=obj.getJdcRoot().appli
       #self.appli=obj.appli
       liste= self.generator(obj)
       #format='standard'
@@ -118,17 +118,17 @@ class PythonGenerator(object):
          #import cProfile, pstats, StringIO
          #pr = cProfile.Profile()
          #pr.enable()
-         self.text=jdc_formate.formate_jdc()
+         self.text=jdc_formate.formateJdc()
          #pr.disable()
          #s = StringIO.StringIO()
          #sortby = 'cumulative'
          #ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
          #ps.print_stats()
-         #print (s.getvalue())
+         #print (s.getValue())
 
       elif format == 'Ligne':
          jdc_formate = FormatageLigne(liste,mode='.py')
-         self.text=jdc_formate.formate_jdc()
+         self.text=jdc_formate.formateJdc()
       else:
          raise EficasException(tr("Format non implemente ") +format)
       return self.text
@@ -212,7 +212,7 @@ class PythonGenerator(object):
       """
       l=[]
       l.append('(')
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
         text = re.sub(".*=","",self.generator(v))
         l.append(text)
       l.append('),')
@@ -315,7 +315,7 @@ class PythonGenerator(object):
       if obj.reuse != None :
         str = 'reuse ='+ self.generator(obj.reuse) + ','
         l.append(str)
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
         if isinstance(v,Accas.MCBLOC) :
           liste=self.generator(v)
           for mocle in liste :
@@ -339,10 +339,10 @@ class PythonGenerator(object):
             Methode particuliere pour les objets de type FORMULE
         """
         l=[]
-        nom = obj.get_nom()
+        nom = obj.getNom()
         if nom == '' : nom = 'sansnom'
         l.append(nom + ' = FORMULE(')
-        for v in obj.mc_liste:
+        for v in obj.mcListe:
             text=self.generator(v)
             l.append(v.nom+'='+text)
         l.append(');')
@@ -368,7 +368,7 @@ class PythonGenerator(object):
          # XXX faut il la virgule ou pas ????
          str = "reuse =" + self.generator(obj.reuse) + ','
          l.append(str)
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
         if isinstance(v,Accas.MCBLOC) :
           liste=self.generator(v)
           for mocle in liste :
@@ -396,7 +396,7 @@ class PythonGenerator(object):
       l=[]
       label=obj.definition.nom+'('
       l.append(label)
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
         if isinstance(v,Accas.MCBLOC) :
           liste=self.generator(v)
           for mocle in liste :
@@ -422,7 +422,7 @@ class PythonGenerator(object):
           Convertit un objet derive d'ASSD en une chaine de caracteres a la
           syntaxe python
       """
-      return obj.get_name()
+      return obj.getName()
 
    def generMCFACT(self,obj):
       """
@@ -431,7 +431,7 @@ class PythonGenerator(object):
       """
       l=[]
       l.append('_F(')
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          if not isinstance(v,Accas.MCSIMP) and not isinstance (v,Accas.MCBLOC) :
            # on est en presence d'une entite composee : on recupere une liste
            liste=self.generator(v)
@@ -472,7 +472,7 @@ class PythonGenerator(object):
           syntaxe python
       """
       l=[]
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
         if isinstance(v,Accas.MCBLOC) :
           liste=self.generator(v)
           for mocle in liste :
@@ -503,7 +503,7 @@ class PythonGenerator(object):
       return l
 
 
-   def format_item(self,valeur,etape,obj,vientDeListe=0):
+   def formatItem(self,valeur,etape,obj,vientDeListe=0):
       if (type(valeur) == float or 'R' in obj.definition.type) and not(isinstance(valeur,Accas.PARAMETRE)) :
          # Pour un flottant on utilise str ou repr si on vient d une liste
          # ou la notation scientifique
@@ -511,7 +511,7 @@ class PythonGenerator(object):
          s = str(valeur)
          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.get_sdname()
+         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]
@@ -565,16 +565,16 @@ class PythonGenerator(object):
          if waitTuple :
             #s = str(obj.valeur) +','
             #obj.valeurFormatee=obj.valeur
-            s = obj.GetText() +','
-            obj.valeurFormatee=obj.GetText()
+            s = obj.getText() +','
+            obj.valeurFormatee=obj.getText()
          else :
             obj.valeurFormatee=[]
             for val in obj.valeur :
-               s =s +self.format_item(val,obj.etape,obj,1) + ','
-               if obj.wait_TXM() :
+               s =s +self.formatItem(val,obj.etape,obj,1) + ','
+               if obj.waitTxm() :
                   obj.valeurFormatee.append(val)
                else :
-                 obj.valeurFormatee.append(self.format_item(val,obj.etape,obj))
+                 obj.valeurFormatee.append(self.formatItem(val,obj.etape,obj))
             if len(obj.valeur) >= 1:
                s = '(' + s + '),'
             if obj.valeur==[] or obj.valeur==() : s="(),"
@@ -582,7 +582,7 @@ class PythonGenerator(object):
             s=self.formatColonnes(obj.nbrColonnes(),obj.valeur,obj)
       else :
          obj.valeurFormatee=obj.valeur
-         s=self.format_item(obj.valeur,obj.etape,obj) + ','
+         s=self.formatItem(obj.valeur,obj.etape,obj) + ','
       return s
 
 
@@ -595,14 +595,14 @@ class PythonGenerator(object):
           try :
           #if 1 :
             for l in range(nbrColonnes) :
-                texteVariable=self.format_item(listeValeurs[indice],obj.etape,obj)
+                texteVariable=self.formatItem(listeValeurs[indice],obj.etape,obj)
                 textformat=textformat+texteVariable+" ,"
                 indice=indice+1
             textformat=textformat+"\n"
           except :
           #else :
             while ( indice < len(listeValeurs) ) :
-                texteVariable=self.format_item(listeValeurs[indice],obj.etape,obj)
+                texteVariable=self.formatItem(listeValeurs[indice],obj.etape,obj)
                 textformat=textformat+texteVariable+", "
                 indice=indice+1
             textformat=textformat+"\n"
index 729c6799e7ad4855db4f933c1611cd3c2ac36f88..d8e7f6673f22b53d6cc2a33529d648db2304e10d 100644 (file)
@@ -86,12 +86,12 @@ class vers3DSalomeGenerator(PythonGenerator):
 
       self.dict_traduit={"VARI_SECT":"extrusion","EXCENTREMENT":"Excentre","EPAIS":"Epais","VECTEUR":"Vecteur"}
 
-      self.init_ligne() 
+      self.initLigne () 
 
-   def init_jdc(self,jdc) :
+   def initJdc(self,jdc) :
       self.jdc=jdc
 
-   def init_ligne (self) :
+   def initLigne  (self) :
       self.boolGpMa = 0
       self.commande = ""
       self.dict_attributs = {} 
@@ -105,7 +105,7 @@ class vers3DSalomeGenerator(PythonGenerator):
       return self.list_commandes
 
    def generator(self,obj):
-      if (obj.nom in self.liste_motetat) and (self.calcule_ouinon(obj)):
+      if (obj.nom in self.liste_motetat) and (self.calculeOuiNon(obj)):
          PythonGenerator.generator(self,obj)
       """
         f1=PythonGenerator.generator(self,obj)
@@ -113,9 +113,9 @@ class vers3DSalomeGenerator(PythonGenerator):
         return ""
       """
 
-   def calcule_ouinon(self,obj):
+   def calculeOuiNon(self,obj):
       ouinon=1
-      for l in obj.get_genealogie() :
+      for l in obj.getGenealogie() :
           if not l in self.liste_motetat :
              ouinon=0
              break
@@ -125,19 +125,19 @@ class vers3DSalomeGenerator(PythonGenerator):
    def generETAPE(self,obj):
       """
       """
-      if obj.isvalid() == 0 :
+      if obj.isValid() == 0 :
          #showerror("Element non valide","Salome ne sait pas traiter les elements non valides")
          return
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          liste=self.generator(v)
 
    def generMACRO_ETAPE(self,obj):
       """
       """
-      if obj.isvalid() == 0 :
+      if obj.isValid() == 0 :
          #showerror("Element non valide","Salome ne sait pas traiter les elements non valides")
          return
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          liste=self.generator(v)
 
 
@@ -148,7 +148,7 @@ class vers3DSalomeGenerator(PythonGenerator):
          suite = self.__class__.__dict__[obj.nom](self,obj)
       else :
          clef=self.dict_traduit[obj.nom]
-         # Traitement des parametres
+         # traitement des parametres
          try :
              self.dict_attributs[clef]=obj.val.eval()
          except :
@@ -160,9 +160,9 @@ class vers3DSalomeGenerator(PythonGenerator):
           Convertit un objet MCFACT en une liste de chaines de caracteres a la
           syntaxe python
       """
-      self.init_ligne()
+      self.initLigne ()
       self.commande=self.dict_deb_com[obj.nom]
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          self.generator(v)
       if self.boolGpMa == 1:
          self.list_commandes.append((self.commande,self.dict_attributs)) 
@@ -180,7 +180,7 @@ class vers3DSalomeGenerator(PythonGenerator):
    def generMCBLOC(self,obj):
       """
       """
-      for v in obj.mc_liste:
+      for v in obj.mcListe:
          self.generator(v)
 
    def GROUP_MA(self,obj):