From 5a28801efd8fd7e6487d1957dabac40b1f932cb4 Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Fri, 21 Sep 2018 14:13:35 +0200 Subject: [PATCH] Merge V9 dans Master --- Accas/A_BLOC.py | 6 +- Accas/A_ETAPE.py | 6 +- Accas/A_FACT.py | 8 +- Accas/A_JDC.py | 4 +- Accas/A_JDC_CATA.py | 3 +- Accas/A_MACRO_ETAPE.py | 2 + Accas/A_MCBLOC.py | 8 +- Accas/A_MCFACT.py | 7 +- Accas/A_MCLIST.py | 4 +- Accas/A_MCSIMP.py | 8 +- Accas/A_OPER.py | 6 +- Accas/A_PROC.py | 9 +- Accas/A_PROC_ETAPE.py | 2 + Accas/A_SIMP.py | 5 +- CMakeLists.txt | 1 + Editeur/Eficas_utils.py | 10 +- Editeur/Objecttreeitem.py | 195 +- Editeur/TroisDPal.py | 2 +- Editeur/analyse_catalogue.py | 80 +- Editeur/analyse_catalogue_initial.py | 14 +- Editeur/autre_analyse_cata.py | 34 +- Editeur/cata2Xml.py | 6 +- Editeur/chercheBlocInto.py | 2 +- Editeur/chercheNbElem.py | 2 +- Editeur/comploader.py | 23 +- Editeur/listePatrons.py | 4 +- Editeur/session.py | 60 +- Editeur/uiinfo.py | 12 +- Efi2Xsd/AccasXsd.py | 281 +++ Efi2Xsd/CMakeLists.txt | 32 + Efi2Xsd/MCAccasXsd.py | 455 ++++ .../Model Efficas (1.1) v6 ext.xsd | 58 + .../ModeleEficas/Model Efficas (1.1) v6.xsd | 732 +++++++ .../Model Efficas (1.1) v7 ext.xsd | 56 + .../ModeleEficas/Model Efficas (1.1) v7.xsd | 731 +++++++ .../Model Efficas (1.1) v8 ext.xsd | 56 + .../ModeleEficas/Model Efficas (1.1) v8.xsd | 724 +++++++ .../Model Efficas (1.1) v9 ext.xsd | 55 + .../ModeleEficas/Model Efficas (1.1) v9.xsd | 741 +++++++ Efi2Xsd/README.txt | 7 + Efi2Xsd/ReadMe.txt | 7 + Efi2Xsd/ReadmeFichiers.txt | 17 + Efi2Xsd/XMLSchema(1.1)_efv1.xsd | 1901 +++++++++++++++++ Efi2Xsd/XSL/Eficas2Xsd.xslt | 789 +++++++ Efi2Xsd/XSL/MED_FAM_gen.xsd | 82 + Efi2Xsd/XSL/MED_FAM_v2_gen.xsd | 158 ++ .../XSL/MappingMapToXMLSchema_1_1__ef.xslt | 789 +++++++ Efi2Xsd/XSL/Saxon.cmd | 1 + Efi2Xsd/__init__.py | 19 + Efi2Xsd/balises.py | 53 + Efi2Xsd/cata.xml | 1 + Efi2Xsd/efficas.py | 2 + Efi2Xsd/introspect.py | 109 + Efi2Xsd/mapDesTypes.py | 122 ++ Efi2Xsd/model.xsd | 1 + Efi2Xsd/readerEfiXsd.py | 310 +++ Extensions/commande_comm.py | 66 +- Extensions/commentaire.py | 47 +- Extensions/etape_niveau.py | 36 +- Extensions/interpreteur_formule.py | 94 +- Extensions/jdc.py | 4 +- Extensions/jdc_include.py | 130 +- Extensions/localisation.py | 2 +- Extensions/mcnuplet.py | 52 +- Extensions/niveau.py | 2 +- Extensions/nuplet.py | 6 +- Extensions/parametre.py | 92 +- Extensions/parametre_eval.py | 50 +- Extensions/pluginloader.py | 6 +- Extensions/translationQT5.py | 6 +- Ihm/I_ASSD.py | 6 +- Ihm/I_AVANT.py | 2 +- Ihm/I_A_CLASSER.py | 2 +- Ihm/I_ENTITE.py | 28 +- Ihm/I_ETAPE.py | 186 +- Ihm/I_EXCLUS.py | 6 +- Ihm/I_FONCTION.py | 12 +- Ihm/I_FORM_ETAPE.py | 106 +- Ihm/I_JDC.py | 386 ++-- Ihm/I_JDC_CATA.py | 4 +- Ihm/I_LASSD.py | 2 +- Ihm/I_MACRO_ETAPE.py | 485 +++-- Ihm/I_MCCOMPO.py | 198 +- Ihm/I_MCFACT.py | 35 +- Ihm/I_MCLIST.py | 109 +- Ihm/I_MCSIMP.py | 259 +-- Ihm/I_OBJECT.py | 44 +- Ihm/I_PRESENT_ABSENT.py | 4 +- Ihm/I_PRESENT_PRESENT.py | 2 +- Ihm/I_PROC_ETAPE.py | 24 +- Ihm/I_REGLE.py | 10 +- Ihm/I_UN_PARMI.py | 6 +- Ihm/I_VALIDATOR.py | 6 +- InterfaceQT4/aiemonWidgetPlusieursBase.py | 300 +++ InterfaceQT4/bizarreEditorDu5aout.py | 982 +++++++++ InterfaceQT4/browser.py | 327 +-- InterfaceQT4/compobloc.py | 10 +- InterfaceQT4/compocomm.py | 36 +- InterfaceQT4/compocommandecomm.py | 24 +- InterfaceQT4/compofact.py | 59 +- InterfaceQT4/compoformule.py | 52 +- InterfaceQT4/compojdc.py | 34 +- InterfaceQT4/compomacro.py | 30 +- InterfaceQT4/compomclist.py | 71 +- InterfaceQT4/compooper.py | 125 +- InterfaceQT4/compoparam.py | 30 +- InterfaceQT4/composimp.py | 498 +++-- InterfaceQT4/configuration.py | 54 +- InterfaceQT4/editor.py | 1399 +++--------- InterfaceQT4/editorJuillet.py | 1249 +++++++++++ InterfaceQT4/editorSsIhm.py | 1029 +++++++++ InterfaceQT4/eficas_go.py | 59 +- InterfaceQT4/feuille.py | 74 +- InterfaceQT4/gereIcones.py | 73 +- InterfaceQT4/gereListe.py | 106 +- InterfaceQT4/gereListeAvril11.py | 349 +++ InterfaceQT4/gereRegles.py | 28 +- InterfaceQT4/getVersion.py | 2 +- InterfaceQT4/groupe.py | 194 +- InterfaceQT4/monBoutonValide.py | 12 +- InterfaceQT4/monChoixCata.py | 7 +- InterfaceQT4/monChoixCode.py | 10 +- InterfaceQT4/monChoixCommande.py | 106 +- InterfaceQT4/monFonctionPanel.py | 54 +- InterfaceQT4/monGroupeOptionnel.py | 76 +- InterfaceQT4/monLayoutBouton.py | 67 + InterfaceQT4/monRecherche.py | 4 +- InterfaceQT4/monSelectVal.py | 39 +- InterfaceQT4/monViewTexte.py | 4 +- InterfaceQT4/monWidget4a6RadioButton.py | 2 +- InterfaceQT4/monWidget4a6RadioButtonSD.py | 2 +- InterfaceQT4/monWidgetBloc.py | 2 +- InterfaceQT4/monWidgetCB.py | 27 +- InterfaceQT4/monWidgetCBIntoSug.py | 59 + InterfaceQT4/monWidgetCBSD.py | 16 +- InterfaceQT4/monWidgetCommande.py | 65 +- .../monWidgetCommandeDeplie1Niveau.py | 150 ++ InterfaceQT4/monWidgetCommentaire.py | 8 +- InterfaceQT4/monWidgetCreeParam.py | 26 +- InterfaceQT4/monWidgetFact.py | 32 +- InterfaceQT4/monWidgetFactPlie.py | 3 +- InterfaceQT4/monWidgetFormule.py | 63 +- InterfaceQT4/monWidgetInfo.py | 2 +- InterfaceQT4/monWidgetIntoSug.py | 36 +- InterfaceQT4/monWidgetMatrice.py | 26 +- InterfaceQT4/monWidgetNiveauFact.py | 180 ++ InterfaceQT4/monWidgetOptionnel.py | 22 +- InterfaceQT4/monWidgetParam.py | 20 +- .../monWidgetPlusieursASSDIntoOrdonne.py | 4 +- InterfaceQT4/monWidgetPlusieursBase.py | 103 +- InterfaceQT4/monWidgetPlusieursInto.py | 52 +- InterfaceQT4/monWidgetPlusieursIntoOrdonne.py | 52 +- InterfaceQT4/monWidgetPlusieursPlie.py | 24 +- InterfaceQT4/monWidgetPlusieursTuple.py | 306 ++- .../monWidgetPlusieursTupleAvril11.py | 495 +++++ InterfaceQT4/monWidgetPlusieursTupleN.py | 73 + InterfaceQT4/monWidgetRadioButton.py | 12 +- InterfaceQT4/monWidgetSDCOInto.py | 24 +- InterfaceQT4/monWidgetSimpBase.py | 16 +- InterfaceQT4/monWidgetSimpBool.py | 6 +- InterfaceQT4/monWidgetSimpComplexe.py | 38 +- InterfaceQT4/monWidgetSimpSalome.py | 8 +- InterfaceQT4/monWidgetSimpTuple.py | 15 +- InterfaceQT4/monWidgetSimpTupleN.py | 103 + InterfaceQT4/monWidgetTableau.py | 73 + InterfaceQT4/monWidgetUniqueSDCO.py | 2 +- InterfaceQT4/monWidgetVide.py | 8 +- InterfaceQT4/politiquesValidation.py | 115 +- InterfaceQT4/qtEficas.py | 288 +-- InterfaceQT4/qtEficasSsIhm.py | 173 ++ InterfaceQT4/qtEficas_with_log.py | 2 +- InterfaceQT4/qtSaisie.py | 47 +- InterfaceQT4/readercata.py | 365 ++-- InterfaceQT4/readercataXML.py | 83 + InterfaceQT4/typeNode.py | 82 +- InterfaceQT4/viewManager.py | 52 +- InterfaceQT4/viewManagerSsIhm.py | 416 ++++ Noyau/N_ASSD.py | 34 +- Noyau/N_BLOC.py | 42 +- Noyau/N_CO.py | 4 +- Noyau/N_CONVERT.py | 10 +- Noyau/N_CR.py | 20 +- Noyau/N_ENTITE.py | 60 +- Noyau/N_ETAPE.py | 126 +- Noyau/N_Exception.py | 8 +- Noyau/N_FACT.py | 38 +- Noyau/N_FONCTION.py | 2 +- Noyau/N_GEOM.py | 8 +- Noyau/N_JDC.py | 146 +- Noyau/N_JDC_CATA.py | 20 +- Noyau/N_MACRO.py | 35 +- Noyau/N_MACRO_ETAPE.py | 158 +- Noyau/N_MCBLOC.py | 25 +- Noyau/N_MCCOMPO.py | 168 +- Noyau/N_MCFACT.py | 22 +- Noyau/N_MCLIST.py | 43 +- Noyau/N_MCSIMP.py | 42 +- Noyau/N_OBJECT.py | 31 +- Noyau/N_OPER.py | 33 +- Noyau/N_OPS.py | 4 +- Noyau/N_PROC.py | 51 +- Noyau/N_PROC_ETAPE.py | 6 +- Noyau/N_REGLE.py | 2 +- Noyau/N_SENSIBILITE.py | 10 +- Noyau/N_SIMP.py | 77 +- Noyau/N_VALIDATOR.py | 320 +-- Noyau/N_types.py | 44 +- Noyau/N_utils.py | 26 +- Noyau/__init__.py | 2 +- Noyau/context.py | 12 +- Noyau/nommage.py | 18 +- Noyau/strfunc.py | 24 +- Traducteur/changeValeur.py | 34 +- Traducteur/dictErreurs.py | 20 +- Traducteur/inseremocle.py | 12 +- Traducteur/load.py | 2 +- Traducteur/mocles.py | 20 +- Traducteur/movemocle.py | 24 +- Traducteur/parseur.py | 8 +- Traducteur/regles.py | 12 +- Traducteur/removemocle.py | 10 +- Traducteur/renamemocle.py | 12 +- Traducteur/traduitV10V11.py | 588 ++--- Traducteur/traduitV11V12.py | 258 +-- Traducteur/traduitV7V8.py | 68 +- Traducteur/traduitV8V9.py | 86 +- Traducteur/traduitV9V10.py | 338 +-- Traducteur/utils.py | 2 +- UiQT5/CMakeLists.txt | 20 +- UiQT5/Tuple10.ui | 412 ++++ UiQT5/Tuple3.ui | 36 +- UiQT5/Tuple4.ui | 203 ++ UiQT5/Tuple5.ui | 239 +++ UiQT5/Tuple6.ui | 275 +++ UiQT5/Tuple7.ui | 311 +++ UiQT5/Tuple8.ui | 347 +++ UiQT5/Tuple9.ui | 395 ++++ UiQT5/dateEtHeure.ui | 98 + UiQT5/desChoixCode.ui | 201 +- UiQT5/desWidgetCB.ui | 10 +- UiQT5/desWidgetCBIntoSug.ui | 343 +++ UiQT5/desWidgetCommande.ui | 992 ++++----- UiQT5/desWidgetFact.ui | 472 ++-- UiQT5/desWidgetFactPlie.ui | 3 +- UiQT5/desWidgetFactTableau.ui | 428 ++++ UiQT5/desWidgetNiveauFact.ui | 544 +++++ UiQT5/desWidgetPlusieursBase.ui | 40 +- UiQT5/desWidgetPlusieursTuple.ui | 83 +- UiQT5/desWidgetSimpTxt.ui | 12 +- UiQT5/desWidgetTableau.ui | 626 ++++++ UiQT5/desWidgetTuple10.ui | 590 +++++ UiQT5/desWidgetTuple4.ui | 403 ++++ UiQT5/desWidgetTuple5.ui | 439 ++++ UiQT5/desWidgetTuple6.ui | 475 ++++ UiQT5/desWidgetTuple7.ui | 511 +++++ UiQT5/desWidgetTuple8.ui | 547 +++++ UiQT5/desWidgetTuple9.ui | 583 +++++ UiQT5/myMain.ui | 60 +- Validation/V_AU_MOINS_UN.py | 2 +- Validation/V_AU_PLUS_UN.py | 4 +- Validation/V_A_CLASSER.py | 4 +- Validation/V_ENSEMBLE.py | 2 +- Validation/V_ETAPE.py | 46 +- Validation/V_EXCLUS.py | 2 +- Validation/V_JDC.py | 14 +- Validation/V_MACRO_ETAPE.py | 34 +- Validation/V_MCBLOC.py | 10 +- Validation/V_MCCOMPO.py | 20 +- Validation/V_MCFACT.py | 10 +- Validation/V_MCLIST.py | 6 +- Validation/V_MCSIMP.py | 23 +- Validation/V_MEME_NOMBRE.py | 2 +- Validation/V_PRESENT_ABSENT.py | 2 +- Validation/V_PRESENT_PRESENT.py | 2 +- Validation/V_PROC_ETAPE.py | 12 +- Validation/V_UN_PARMI.py | 2 +- convert/autre_parseur.py | 86 +- convert/convert_TELEMAC.py | 69 +- convert/convert_XML.py | 78 + convert/convert_dico.py | 100 + convert/convert_map.py | 4 +- convert/convert_pyth.py | 4 +- convert/convert_python.py | 8 +- convert/parseur_python.py | 81 +- convert/readXml.py | 8 + generator/Formatage.py | 38 +- generator/generator_CARMEL3D_frequentiel.py | 68 +- generator/generator_CARMEL3D_temporel.py | 20 +- generator/generator_TELEMAC.py | 130 +- generator/generator_XML.py | 86 + generator/generator_aplat.py | 6 +- generator/generator_dico.py | 11 +- generator/generator_dicoImbrique.py | 5 +- generator/generator_map.py | 6 +- generator/generator_python.py | 46 +- generator/generator_vers3DSalome.py | 28 +- 296 files changed, 29275 insertions(+), 7345 deletions(-) create mode 100755 Efi2Xsd/AccasXsd.py create mode 100644 Efi2Xsd/CMakeLists.txt create mode 100755 Efi2Xsd/MCAccasXsd.py create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6 ext.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7 ext.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8 ext.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9 ext.xsd create mode 100755 Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd create mode 100644 Efi2Xsd/README.txt create mode 100644 Efi2Xsd/ReadMe.txt create mode 100644 Efi2Xsd/ReadmeFichiers.txt create mode 100644 Efi2Xsd/XMLSchema(1.1)_efv1.xsd create mode 100755 Efi2Xsd/XSL/Eficas2Xsd.xslt create mode 100644 Efi2Xsd/XSL/MED_FAM_gen.xsd create mode 100644 Efi2Xsd/XSL/MED_FAM_v2_gen.xsd create mode 100755 Efi2Xsd/XSL/MappingMapToXMLSchema_1_1__ef.xslt create mode 100644 Efi2Xsd/XSL/Saxon.cmd create mode 100644 Efi2Xsd/__init__.py create mode 100644 Efi2Xsd/balises.py create mode 120000 Efi2Xsd/cata.xml create mode 100644 Efi2Xsd/efficas.py create mode 100644 Efi2Xsd/introspect.py create mode 100755 Efi2Xsd/mapDesTypes.py create mode 120000 Efi2Xsd/model.xsd create mode 100755 Efi2Xsd/readerEfiXsd.py create mode 100644 InterfaceQT4/aiemonWidgetPlusieursBase.py create mode 100644 InterfaceQT4/bizarreEditorDu5aout.py create mode 100755 InterfaceQT4/editorJuillet.py create mode 100755 InterfaceQT4/editorSsIhm.py create mode 100644 InterfaceQT4/gereListeAvril11.py create mode 100644 InterfaceQT4/monLayoutBouton.py create mode 100644 InterfaceQT4/monWidgetCBIntoSug.py create mode 100644 InterfaceQT4/monWidgetCommandeDeplie1Niveau.py create mode 100644 InterfaceQT4/monWidgetNiveauFact.py create mode 100644 InterfaceQT4/monWidgetPlusieursTupleAvril11.py create mode 100644 InterfaceQT4/monWidgetPlusieursTupleN.py create mode 100644 InterfaceQT4/monWidgetSimpTupleN.py create mode 100644 InterfaceQT4/monWidgetTableau.py create mode 100755 InterfaceQT4/qtEficasSsIhm.py create mode 100644 InterfaceQT4/readercataXML.py create mode 100644 InterfaceQT4/viewManagerSsIhm.py create mode 100644 UiQT5/Tuple10.ui create mode 100644 UiQT5/Tuple4.ui create mode 100644 UiQT5/Tuple5.ui create mode 100644 UiQT5/Tuple6.ui create mode 100644 UiQT5/Tuple7.ui create mode 100644 UiQT5/Tuple8.ui create mode 100644 UiQT5/Tuple9.ui create mode 100644 UiQT5/dateEtHeure.ui create mode 100644 UiQT5/desWidgetCBIntoSug.ui create mode 100644 UiQT5/desWidgetFactTableau.ui create mode 100644 UiQT5/desWidgetNiveauFact.ui create mode 100644 UiQT5/desWidgetTableau.ui create mode 100644 UiQT5/desWidgetTuple10.ui create mode 100644 UiQT5/desWidgetTuple4.ui create mode 100644 UiQT5/desWidgetTuple5.ui create mode 100644 UiQT5/desWidgetTuple6.ui create mode 100644 UiQT5/desWidgetTuple7.ui create mode 100644 UiQT5/desWidgetTuple8.ui create mode 100644 UiQT5/desWidgetTuple9.ui create mode 100644 convert/convert_XML.py create mode 100644 convert/convert_dico.py create mode 100644 convert/readXml.py create mode 100644 generator/generator_XML.py diff --git a/Accas/A_BLOC.py b/Accas/A_BLOC.py index 29571726..badd8d9d 100644 --- a/Accas/A_BLOC.py +++ b/Accas/A_BLOC.py @@ -20,9 +20,11 @@ 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) diff --git a/Accas/A_ETAPE.py b/Accas/A_ETAPE.py index 0a9b8e94..a3dbd595 100644 --- a/Accas/A_ETAPE.py +++ b/Accas/A_ETAPE.py @@ -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) diff --git a/Accas/A_FACT.py b/Accas/A_FACT.py index e26c97fa..ebccc614 100644 --- a/Accas/A_FACT.py +++ b/Accas/A_FACT.py @@ -20,10 +20,12 @@ 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): diff --git a/Accas/A_JDC.py b/Accas/A_JDC.py index 8ef54772..d17bd234 100644 --- a/Accas/A_JDC.py +++ b/Accas/A_JDC.py @@ -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) diff --git a/Accas/A_JDC_CATA.py b/Accas/A_JDC_CATA.py index 75e1c27e..fd8a248d 100644 --- a/Accas/A_JDC_CATA.py +++ b/Accas/A_JDC_CATA.py @@ -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 diff --git a/Accas/A_MACRO_ETAPE.py b/Accas/A_MACRO_ETAPE.py index a9af4827..2bba807e 100644 --- a/Accas/A_MACRO_ETAPE.py +++ b/Accas/A_MACRO_ETAPE.py @@ -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 diff --git a/Accas/A_MCBLOC.py b/Accas/A_MCBLOC.py index 0cc5047b..df125d12 100644 --- a/Accas/A_MCBLOC.py +++ b/Accas/A_MCBLOC.py @@ -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) diff --git a/Accas/A_MCFACT.py b/Accas/A_MCFACT.py index 03128a79..50fd1a8d 100644 --- a/Accas/A_MCFACT.py +++ b/Accas/A_MCFACT.py @@ -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) diff --git a/Accas/A_MCLIST.py b/Accas/A_MCLIST.py index 7ba5c53f..5554f5ec 100644 --- a/Accas/A_MCLIST.py +++ b/Accas/A_MCLIST.py @@ -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) diff --git a/Accas/A_MCSIMP.py b/Accas/A_MCSIMP.py index cc246e89..a3c63cb6 100644 --- a/Accas/A_MCSIMP.py +++ b/Accas/A_MCSIMP.py @@ -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) diff --git a/Accas/A_OPER.py b/Accas/A_OPER.py index 7c1e59e4..c1a4f0a5 100644 --- a/Accas/A_OPER.py +++ b/Accas/A_OPER.py @@ -20,9 +20,11 @@ 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) diff --git a/Accas/A_PROC.py b/Accas/A_PROC.py index a920913d..0ae8bb48 100644 --- a/Accas/A_PROC.py +++ b/Accas/A_PROC.py @@ -20,13 +20,14 @@ 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) diff --git a/Accas/A_PROC_ETAPE.py b/Accas/A_PROC_ETAPE.py index b3ab7529..7db1db8b 100644 --- a/Accas/A_PROC_ETAPE.py +++ b/Accas/A_PROC_ETAPE.py @@ -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) diff --git a/Accas/A_SIMP.py b/Accas/A_SIMP.py index 9a438d15..584627ed 100644 --- a/Accas/A_SIMP.py +++ b/Accas/A_SIMP.py @@ -20,9 +20,10 @@ 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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ecd6000..164af95d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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} ) diff --git a/Editeur/Eficas_utils.py b/Editeur/Eficas_utils.py index df1880b9..89c601c5 100644 --- a/Editeur/Eficas_utils.py +++ b/Editeur/Eficas_utils.py @@ -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 = '' diff --git a/Editeur/Objecttreeitem.py b/Editeur/Objecttreeitem.py index 09369dc2..21c2408d 100644 --- a/Editeur/Objecttreeitem.py +++ b/Editeur/Objecttreeitem.py @@ -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) diff --git a/Editeur/TroisDPal.py b/Editeur/TroisDPal.py index e73d7454..6d42efa0 100644 --- a/Editeur/TroisDPal.py +++ b/Editeur/TroisDPal.py @@ -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") diff --git a/Editeur/analyse_catalogue.py b/Editeur/analyse_catalogue.py index 90477500..c9974282 100644 --- a/Editeur/analyse_catalogue.py +++ b/Editeur/analyse_catalogue.py @@ -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')") diff --git a/Editeur/analyse_catalogue_initial.py b/Editeur/analyse_catalogue_initial.py index 9faf2851..95c8b43f 100644 --- a/Editeur/analyse_catalogue_initial.py +++ b/Editeur/analyse_catalogue_initial.py @@ -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) diff --git a/Editeur/autre_analyse_cata.py b/Editeur/autre_analyse_cata.py index 9d4d6f17..0848eb14 100644 --- a/Editeur/autre_analyse_cata.py +++ b/Editeur/autre_analyse_cata.py @@ -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__) diff --git a/Editeur/cata2Xml.py b/Editeur/cata2Xml.py index 1c5e7e69..e5d3dcac 100755 --- a/Editeur/cata2Xml.py +++ b/Editeur/cata2Xml.py @@ -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) diff --git a/Editeur/chercheBlocInto.py b/Editeur/chercheBlocInto.py index 624020d6..40287971 100755 --- a/Editeur/chercheBlocInto.py +++ b/Editeur/chercheBlocInto.py @@ -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) diff --git a/Editeur/chercheNbElem.py b/Editeur/chercheNbElem.py index f8cc0987..a00f3e14 100755 --- a/Editeur/chercheNbElem.py +++ b/Editeur/chercheNbElem.py @@ -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) diff --git a/Editeur/comploader.py b/Editeur/comploader.py index 9c823dfd..40ba093f 100644 --- a/Editeur/comploader.py +++ b/Editeur/comploader.py @@ -23,11 +23,11 @@ - 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) diff --git a/Editeur/listePatrons.py b/Editeur/listePatrons.py index 074adbc1..f1cf08b4 100644 --- a/Editeur/listePatrons.py +++ b/Editeur/listePatrons.py @@ -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): diff --git a/Editeur/session.py b/Editeur/session.py index 3ff1eb86..ebbf40a9 100644 --- a/Editeur/session.py +++ b/Editeur/session.py @@ -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 diff --git a/Editeur/uiinfo.py b/Editeur/uiinfo.py index 49e0294f..4e30351f 100644 --- a/Editeur/uiinfo.py +++ b/Editeur/uiinfo.py @@ -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 index 00000000..4483ad41 --- /dev/null +++ b/Efi2Xsd/AccasXsd.py @@ -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 index 00000000..e3ce0580 --- /dev/null +++ b/Efi2Xsd/CMakeLists.txt @@ -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 index 00000000..993cee0c --- /dev/null +++ b/Efi2Xsd/MCAccasXsd.py @@ -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 index 00000000..22e488ec --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6 ext.xsd @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + + \ 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 index 00000000..2492a38b --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v6.xsd @@ -0,0 +1,732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Référence une position dans un fichier maître contenant une liste de références à des pages de documentations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 00000000..0b531868 --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7 ext.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd new file mode 100755 index 00000000..0f1838fc --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v7.xsd @@ -0,0 +1,731 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Référence une position dans un fichier maître contenant une liste de références à des pages de documentations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 00000000..f6db1fc5 --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8 ext.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd new file mode 100755 index 00000000..822cf3b4 --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v8.xsd @@ -0,0 +1,724 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Référence une position dans un fichier maître contenant une liste de références à des pages de documentations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 00000000..39322ca8 --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9 ext.xsd @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd new file mode 100755 index 00000000..42f4f0f8 --- /dev/null +++ b/Efi2Xsd/ModeleEficas/Model Efficas (1.1) v9.xsd @@ -0,0 +1,741 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + SIMP devrait être selectionné que si .//SIMP[portee='Global'] + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + La valeur -1 equivaut à oo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Référence une position dans un fichier maître contenant une liste de références à des pages de documentations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + les TXM peuvent contenir des espaces, pour créer une liste de TXM, il faut donc répéter le nom de la balise. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/README.txt b/Efi2Xsd/README.txt new file mode 100644 index 00000000..7c4bb864 --- /dev/null +++ b/Efi2Xsd/README.txt @@ -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 index 00000000..4c1dd01d --- /dev/null +++ b/Efi2Xsd/ReadMe.txt @@ -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 index 00000000..3294b362 --- /dev/null +++ b/Efi2Xsd/ReadmeFichiers.txt @@ -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 index 00000000..e451b844 --- /dev/null +++ b/Efi2Xsd/XMLSchema(1.1)_efv1.xsd @@ -0,0 +1,1901 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + Part 1 version: structures.xsd (rec-20120405) + Part 2 version: datatypes.xsd (rec-20120405) + + + + + 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. + + + + + + The simpleType element and all of its members are defined + towards the end of this schema document. + + + + + Get access to the xml: attribute groups for xml:lang + as declared on 'schema' and 'documentation' below + + + + + + + This type is extended by almost all schema types + to allow attributes from other namespaces to be + added to user schemas. + + + + + + + + + + + + This type is extended by all types which allow annotation + other than <schema> itself + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + This group is for the + elements which can self-redefine (see <redefine> below). + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + A utility type, not for public use + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {extension, restriction} + + + + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {extension, restriction, list, union} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + for maxOccurs + + + + + + + + + + + + + for all particles + + + + + + + + for element, group and attributeGroup, + which both define and reference + + + + + + + + 'complexType' uses this + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This branch is short for + <complexContent> + <restriction base="xs:anyType"> + ... + </restriction> + </complexContent> + + + + + + + + + + + + + + + + Will be restricted to required or prohibited + + + + + + Not allowed if simpleContent child is chosen. + May be overridden by setting on complexContent child. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This choice is added simply to + make this a valid restriction per the REC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overrides any setting on complexType parent. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This choice is added simply to + make this a valid restriction per the REC + + + + + + + + + + + + + + + + + No typeDefParticle group reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {substitution, extension, + restriction} + + + + + + + + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This type is used for 'alternative' elements. + + + + + + + + + + + + + + + + + + group type for explicit groups, named top-level groups and + group references + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + group type for the three kinds of group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This choice with min/max is here to + avoid a pblm with the Elt:All/Choice/Seq + Particle derivation constraint + + + + + + + + + + + + + + + + + + + + + + + Only elements allowed inside + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple type for the value of the 'namespace' attr of + 'any' and 'anyAttribute' + + + + 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 + + + + + A utility type, not for public use + + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subset of XPath expressions for use +in selectors + A utility type, not for public +use + + + + + + + + + + + + + + + + + + + + A subset of XPath expressions for use +in fields + A utility type, not for public +use + + + + + + + + + + + + + + + + + + + + + + + + The three kinds of identity constraints, all with + type of or derived from 'keybase'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + A public identifier, per ISO 8879 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + notations for use within schema documents + + + + + + + Not the real urType, but as close an approximation as we can + get in the XML representation + + + + + + + + + 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) + + + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + #all or (possibly empty) subset of {restriction, extension, union, list} + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can be restricted to required or forbidden + + + + + + + + + + + + + + + + + Required at the top level + + + + + + + + + + + + + + + + + + Forbidden when nested + + + + + + + + + + + + + + + + + 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. + + + + + + + + + + + + + + + + + base attribute and simpleType child are mutually + exclusive, but one or other is required + + + + + + + + + + + + + + + itemType attribute and simpleType child are mutually + exclusive, but one or other is required + + + + + + + + + + + + + + + + + memberTypes attribute must be non-empty or there must be + at least one simpleType child + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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) + + + + diff --git a/Efi2Xsd/XSL/Eficas2Xsd.xslt b/Efi2Xsd/XSL/Eficas2Xsd.xslt new file mode 100755 index 00000000..92a75f72 --- /dev/null +++ b/Efi2Xsd/XSL/Eficas2Xsd.xslt @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/XSL/MED_FAM_gen.xsd b/Efi2Xsd/XSL/MED_FAM_gen.xsd new file mode 100644 index 00000000..4dc86bd7 --- /dev/null +++ b/Efi2Xsd/XSL/MED_FAM_gen.xsd @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 00000000..cce4d5b6 --- /dev/null +++ b/Efi2Xsd/XSL/MED_FAM_v2_gen.xsd @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 00000000..92a75f72 --- /dev/null +++ b/Efi2Xsd/XSL/MappingMapToXMLSchema_1_1__ef.xslt @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Efi2Xsd/XSL/Saxon.cmd b/Efi2Xsd/XSL/Saxon.cmd new file mode 100644 index 00000000..50048709 --- /dev/null +++ b/Efi2Xsd/XSL/Saxon.cmd @@ -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 index 00000000..df53d551 --- /dev/null +++ b/Efi2Xsd/__init__.py @@ -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 index 00000000..4f2a4636 --- /dev/null +++ b/Efi2Xsd/balises.py @@ -0,0 +1,53 @@ +texteDebut='\n' +texteFin='' + +# SIMP +typeSimple = '\t\n\t\t\n\t\n' +debutTypeSimpleWithInto = '\t\n\t\t\n' +typeSimpleWithInto = '\t\t\t\n' +finTypeSimpleWithInto = '\t\t\n\t\n' +eltDsSequence = '\t\t\t\n' + +# COMPO +debutTypeCompo = '\t\n\t\t\n' +finTypeCompo = '\t\t\n\t\n' +eltCompoDsSequence = '\t\t\t\n' +eltCompoDsSequenceSiProc = '\t\t\t\n' + +# BLOC +debutTypeSubst = '\t \n\t\t\n' +finTypeSubst = '\t\t\n\t\n' +substDsSequence = '\t\t\t\n' + + +# CATA +debutTypeCata = '\t\n\t\t\n' +finTypeCata = '\t\t\n\t ' +eltCata = '\t\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 index 00000000..e5ed3c8f --- /dev/null +++ b/Efi2Xsd/cata.xml @@ -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 index 00000000..3304e8af --- /dev/null +++ b/Efi2Xsd/efficas.py @@ -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 index 00000000..cf099b11 --- /dev/null +++ b/Efi2Xsd/introspect.py @@ -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 index 00000000..d90cbc12 --- /dev/null +++ b/Efi2Xsd/mapDesTypes.py @@ -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 index 00000000..9b381ef3 --- /dev/null +++ b/Efi2Xsd/model.xsd @@ -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 index 00000000..c98a16cd --- /dev/null +++ b/Efi2Xsd/readerEfiXsd.py @@ -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() + diff --git a/Extensions/commande_comm.py b/Extensions/commande_comm.py index 3fb9aebf..31439d93 100644 --- a/Extensions/commande_comm.py +++ b/Extensions/commande_comm.py @@ -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 diff --git a/Extensions/commentaire.py b/Extensions/commentaire.py index 22af1192..5decbe1f 100644 --- a/Extensions/commentaire.py +++ b/Extensions/commentaire.py @@ -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 diff --git a/Extensions/etape_niveau.py b/Extensions/etape_niveau.py index 57a9fbd7..b7a6f003 100644 --- a/Extensions/etape_niveau.py +++ b/Extensions/etape_niveau.py @@ -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 """ diff --git a/Extensions/interpreteur_formule.py b/Extensions/interpreteur_formule.py index 16d0b442..9afdbaff 100644 --- a/Extensions/interpreteur_formule.py +++ b/Extensions/interpreteur_formule.py @@ -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() diff --git a/Extensions/jdc.py b/Extensions/jdc.py index 41df571e..e984c864 100644 --- a/Extensions/jdc.py +++ b/Extensions/jdc.py @@ -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) diff --git a/Extensions/jdc_include.py b/Extensions/jdc_include.py index fff0ab9c..b6fe4fe2 100644 --- a/Extensions/jdc_include.py +++ b/Extensions/jdc_include.py @@ -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() diff --git a/Extensions/localisation.py b/Extensions/localisation.py index 5ea45541..e846fe1f 100644 --- a/Extensions/localisation.py +++ b/Extensions/localisation.py @@ -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 diff --git a/Extensions/mcnuplet.py b/Extensions/mcnuplet.py index ace02b6a..81e623d3 100644 --- a/Extensions/mcnuplet.py +++ b/Extensions/mcnuplet.py @@ -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) diff --git a/Extensions/niveau.py b/Extensions/niveau.py index 6cb97901..9ca012e9 100644 --- a/Extensions/niveau.py +++ b/Extensions/niveau.py @@ -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 diff --git a/Extensions/nuplet.py b/Extensions/nuplet.py index a12f0bff..4d2a355c 100644 --- a/Extensions/nuplet.py +++ b/Extensions/nuplet.py @@ -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__+ ' : ' diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 1e29fd53..38e0f2f6 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -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 diff --git a/Extensions/parametre_eval.py b/Extensions/parametre_eval.py index 1f8e2769..4bb03cd6 100644 --- a/Extensions/parametre_eval.py +++ b/Extensions/parametre_eval.py @@ -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 """ diff --git a/Extensions/pluginloader.py b/Extensions/pluginloader.py index 9d69dbc6..49b47bd9 100644 --- a/Extensions/pluginloader.py +++ b/Extensions/pluginloader.py @@ -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: diff --git a/Extensions/translationQT5.py b/Extensions/translationQT5.py index 12222088..e8116f5f 100644 --- a/Extensions/translationQT5.py +++ b/Extensions/translationQT5.py @@ -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. diff --git a/Ihm/I_ASSD.py b/Ihm/I_ASSD.py index a06e0f3a..ba384b0e 100644 --- a/Ihm/I_ASSD.py +++ b/Ihm/I_ASSD.py @@ -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 "" + return self.getName() or "" #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 diff --git a/Ihm/I_AVANT.py b/Ihm/I_AVANT.py index 49f7d2df..c783cb38 100644 --- a/Ihm/I_AVANT.py +++ b/Ihm/I_AVANT.py @@ -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 + ', ' diff --git a/Ihm/I_A_CLASSER.py b/Ihm/I_A_CLASSER.py index 916ed823..aa46e117 100644 --- a/Ihm/I_A_CLASSER.py +++ b/Ihm/I_A_CLASSER.py @@ -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: diff --git a/Ihm/I_ENTITE.py b/Ihm/I_ENTITE.py index 669b6368..922f8796 100644 --- a/Ihm/I_ENTITE.py +++ b/Ihm/I_ENTITE.py @@ -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 diff --git a/Ihm/I_ETAPE.py b/Ihm/I_ETAPE.py index 444bdde9..43bbbb8f 100644 --- a/Ihm/I_ETAPE.py +++ b/Ihm/I_ETAPE.py @@ -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 diff --git a/Ihm/I_EXCLUS.py b/Ihm/I_EXCLUS.py index 87b35957..d1ddee60 100644 --- a/Ihm/I_EXCLUS.py +++ b/Ihm/I_EXCLUS.py @@ -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 diff --git a/Ihm/I_FONCTION.py b/Ihm/I_FONCTION.py index 3efa4f47..9efb621b 100644 --- a/Ihm/I_FONCTION.py +++ b/Ihm/I_FONCTION.py @@ -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={} diff --git a/Ihm/I_FORM_ETAPE.py b/Ihm/I_FORM_ETAPE.py index 55e38e6f..b97ac8f8 100644 --- a/Ihm/I_FORM_ETAPE.py +++ b/Ihm/I_FORM_ETAPE.py @@ -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() diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index cb4e4e05..99589568 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -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 """ diff --git a/Ihm/I_JDC_CATA.py b/Ihm/I_JDC_CATA.py index 861b7360..b8de9558 100644 --- a/Ihm/I_JDC_CATA.py +++ b/Ihm/I_JDC_CATA.py @@ -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 diff --git a/Ihm/I_LASSD.py b/Ihm/I_LASSD.py index 4b10322c..bdeba371 100644 --- a/Ihm/I_LASSD.py +++ b/Ihm/I_LASSD.py @@ -20,4 +20,4 @@ class LASSD: def __repr__(self): - return self.get_name() + return self.getName() diff --git a/Ihm/I_MACRO_ETAPE.py b/Ihm/I_MACRO_ETAPE.py index 82f2eb4c..0de991d8 100644 --- a/Ihm/I_MACRO_ETAPE.py +++ b/Ihm/I_MACRO_ETAPE.py @@ -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) diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index a071c8eb..e8079a7c 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -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") diff --git a/Ihm/I_MCFACT.py b/Ihm/I_MCFACT.py index ed62b6b3..6e30cc1e 100644 --- a/Ihm/I_MCFACT.py +++ b/Ihm/I_MCFACT.py @@ -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 diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index 219195fa..15e80c99 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -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 diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index ef695550..13888db5 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -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") diff --git a/Ihm/I_OBJECT.py b/Ihm/I_OBJECT.py index 37605b3a..1013aaf3 100644 --- a/Ihm/I_OBJECT.py +++ b/Ihm/I_OBJECT.py @@ -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): diff --git a/Ihm/I_PRESENT_ABSENT.py b/Ihm/I_PRESENT_ABSENT.py index 36824d55..b4a43e46 100644 --- a/Ihm/I_PRESENT_ABSENT.py +++ b/Ihm/I_PRESENT_ABSENT.py @@ -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 diff --git a/Ihm/I_PRESENT_PRESENT.py b/Ihm/I_PRESENT_PRESENT.py index 606d00e3..a6f1ba06 100644 --- a/Ihm/I_PRESENT_PRESENT.py +++ b/Ihm/I_PRESENT_PRESENT.py @@ -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 : diff --git a/Ihm/I_PROC_ETAPE.py b/Ihm/I_PROC_ETAPE.py index 7751f103..4b46b592 100644 --- a/Ihm/I_PROC_ETAPE.py +++ b/Ihm/I_PROC_ETAPE.py @@ -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 diff --git a/Ihm/I_REGLE.py b/Ihm/I_REGLE.py index 4bb4161d..56e1febf 100644 --- a/Ihm/I_REGLE.py +++ b/Ihm/I_REGLE.py @@ -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 diff --git a/Ihm/I_UN_PARMI.py b/Ihm/I_UN_PARMI.py index 3698a0df..65812619 100644 --- a/Ihm/I_UN_PARMI.py +++ b/Ihm/I_UN_PARMI.py @@ -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 diff --git a/Ihm/I_VALIDATOR.py b/Ihm/I_VALIDATOR.py index 594c0370..604feffc 100644 --- a/Ihm/I_VALIDATOR.py +++ b/Ihm/I_VALIDATOR.py @@ -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 index 00000000..0e794877 --- /dev/null +++ b/InterfaceQT4/aiemonWidgetPlusieursBase.py @@ -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 index 00000000..bdcbcecd --- /dev/null +++ b/InterfaceQT4/bizarreEditorDu5aout.py @@ -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 diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index 760b6cc7..a49edc41 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -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 diff --git a/InterfaceQT4/compobloc.py b/InterfaceQT4/compobloc.py index df06e88d..f41f7c07 100644 --- a/InterfaceQT4/compobloc.py +++ b/InterfaceQT4/compobloc.py @@ -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 diff --git a/InterfaceQT4/compocomm.py b/InterfaceQT4/compocomm.py index e699a334..cedfadce 100644 --- a/InterfaceQT4/compocomm.py +++ b/InterfaceQT4/compocomm.py @@ -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' ) diff --git a/InterfaceQT4/compocommandecomm.py b/InterfaceQT4/compocommandecomm.py index 191057bb..41eed95a 100644 --- a/InterfaceQT4/compocommandecomm.py +++ b/InterfaceQT4/compocommandecomm.py @@ -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() diff --git a/InterfaceQT4/compofact.py b/InterfaceQT4/compofact.py index b9eee20d..8a9d66fb 100644 --- a/InterfaceQT4/compofact.py +++ b/InterfaceQT4/compofact.py @@ -19,19 +19,19 @@ # 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 diff --git a/InterfaceQT4/compoformule.py b/InterfaceQT4/compoformule.py index 6142c55b..d18af81b 100644 --- a/InterfaceQT4/compoformule.py +++ b/InterfaceQT4/compoformule.py @@ -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 diff --git a/InterfaceQT4/compojdc.py b/InterfaceQT4/compojdc.py index fd95201a..111a4e98 100644 --- a/InterfaceQT4/compojdc.py +++ b/InterfaceQT4/compojdc.py @@ -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 diff --git a/InterfaceQT4/compomacro.py b/InterfaceQT4/compomacro.py index f597a98f..64a9d63f 100644 --- a/InterfaceQT4/compomacro.py +++ b/InterfaceQT4/compomacro.py @@ -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 diff --git a/InterfaceQT4/compomclist.py b/InterfaceQT4/compomclist.py index 6b8a7d4d..7035e14b 100644 --- a/InterfaceQT4/compomclist.py +++ b/InterfaceQT4/compomclist.py @@ -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) diff --git a/InterfaceQT4/compooper.py b/InterfaceQT4/compooper.py index bbf7db34..c03704bf 100644 --- a/InterfaceQT4/compooper.py +++ b/InterfaceQT4/compooper.py @@ -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 diff --git a/InterfaceQT4/compoparam.py b/InterfaceQT4/compoparam.py index ed2bd7a9..74a44238 100644 --- a/InterfaceQT4/compoparam.py +++ b/InterfaceQT4/compoparam.py @@ -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 """ diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index b46ceb36..c9a3ef1d 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -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_co - # wait_geom - # wait_complex - # wait_reel - # wait_assd - # GetType - - def wait_co(self): + # waitCo + # 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: diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index 3c64fc4e..0c094e4f 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -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() # + diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index aeed8938..a95c1c62 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -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 index 00000000..616587c1 --- /dev/null +++ b/InterfaceQT4/editorJuillet.py @@ -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 %s 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 index 00000000..0e3cb69d --- /dev/null +++ b/InterfaceQT4/editorSsIhm.py @@ -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') diff --git a/InterfaceQT4/eficas_go.py b/InterfaceQT4/eficas_go.py index 355d3329..d7aea420 100755 --- a/InterfaceQT4/eficas_go.py +++ b/InterfaceQT4/eficas_go.py @@ -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) diff --git a/InterfaceQT4/feuille.py b/InterfaceQT4/feuille.py index 8b790bf0..d3800d89 100644 --- a/InterfaceQT4/feuille.py +++ b/InterfaceQT4/feuille.py @@ -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('

suggestion : ')+str(self.monSimpDef.get_sug())+"

" + if self.monSimpDef.getSug() != None and self.monSimpDef.getSug() != "": + suggere=str('

suggestion : ')+str(self.monSimpDef.getSug())+"

" 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 = '

'+c+self.objSimp.get_fr().decode('latin-1','replace')+"

" - c2 = '

'+c+self.objSimp.get_fr() - #c2 = '

'+c+self.objSimp.get_fr()+"

" + if self.objSimp.getFr() != None and self.objSimp.getFr() != "": + #c2 = '

'+c+self.objSimp.getFr().decode('latin-1','replace')+"

" + c2 = '

'+c+self.objSimp.getFr() + #c2 = '

'+c+self.objSimp.getFr()+"

" 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 diff --git a/InterfaceQT4/gereIcones.py b/InterfaceQT4/gereIcones.py index 8ba9f3c5..13b31b09 100644 --- a/InterfaceQT4/gereIcones.py +++ b/InterfaceQT4/gereIcones.py @@ -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() diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 474b86f0..755b00e7 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -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 index 00000000..44e191e9 --- /dev/null +++ b/InterfaceQT4/gereListeAvril11.py @@ -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() + + + diff --git a/InterfaceQT4/gereRegles.py b/InterfaceQT4/gereRegles.py index 5e366ccb..e84486b9 100644 --- a/InterfaceQT4/gereRegles.py +++ b/InterfaceQT4/gereRegles.py @@ -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_() diff --git a/InterfaceQT4/getVersion.py b/InterfaceQT4/getVersion.py index c15da9d9..ec6336a0 100644 --- a/InterfaceQT4/getVersion.py +++ b/InterfaceQT4/getVersion.py @@ -22,7 +22,7 @@ __version = { 'major': 8, - 'minor': 4 + 'minor': 5 } def getEficasVersion(): diff --git a/InterfaceQT4/groupe.py b/InterfaceQT4/groupe.py index 5c0a0cbd..55b66eec 100644 --- a/InterfaceQT4/groupe.py +++ b/InterfaceQT4/groupe.py @@ -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() diff --git a/InterfaceQT4/monBoutonValide.py b/InterfaceQT4/monBoutonValide.py index dee284e4..335d1644 100644 --- a/InterfaceQT4/monBoutonValide.py +++ b/InterfaceQT4/monBoutonValide.py @@ -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="" diff --git a/InterfaceQT4/monChoixCata.py b/InterfaceQT4/monChoixCata.py index 4fe4168f..8ecd647d 100644 --- a/InterfaceQT4/monChoixCata.py +++ b/InterfaceQT4/monChoixCata.py @@ -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) diff --git a/InterfaceQT4/monChoixCode.py b/InterfaceQT4/monChoixCode.py index c78a9d53..59fc6098 100644 --- a/InterfaceQT4/monChoixCode.py +++ b/InterfaceQT4/monChoixCode.py @@ -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 : diff --git a/InterfaceQT4/monChoixCommande.py b/InterfaceQT4/monChoixCommande.py index 67b0e419..5ebb70c4 100644 --- a/InterfaceQT4/monChoixCommande.py +++ b/InterfaceQT4/monChoixCommande.py @@ -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) diff --git a/InterfaceQT4/monFonctionPanel.py b/InterfaceQT4/monFonctionPanel.py index 1cfe63ca..31cc2245 100644 --- a/InterfaceQT4/monFonctionPanel.py +++ b/InterfaceQT4/monFonctionPanel.py @@ -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 diff --git a/InterfaceQT4/monGroupeOptionnel.py b/InterfaceQT4/monGroupeOptionnel.py index f474a69c..7b17edba 100644 --- a/InterfaceQT4/monGroupeOptionnel.py +++ b/InterfaceQT4/monGroupeOptionnel.py @@ -21,23 +21,35 @@ 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 index 00000000..49a431a4 --- /dev/null +++ b/InterfaceQT4/monLayoutBouton.py @@ -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()) + + diff --git a/InterfaceQT4/monRecherche.py b/InterfaceQT4/monRecherche.py index 65e2442f..059456cc 100644 --- a/InterfaceQT4/monRecherche.py +++ b/InterfaceQT4/monRecherche.py @@ -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() diff --git a/InterfaceQT4/monSelectVal.py b/InterfaceQT4/monSelectVal.py index 4db3af09..415f5948 100644 --- a/InterfaceQT4/monSelectVal.py +++ b/InterfaceQT4/monSelectVal.py @@ -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) - diff --git a/InterfaceQT4/monViewTexte.py b/InterfaceQT4/monViewTexte.py index 61505477..0c167c9b 100644 --- a/InterfaceQT4/monViewTexte.py +++ b/InterfaceQT4/monViewTexte.py @@ -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())) diff --git a/InterfaceQT4/monWidget4a6RadioButton.py b/InterfaceQT4/monWidget4a6RadioButton.py index 21a64a72..3025049b 100644 --- a/InterfaceQT4/monWidget4a6RadioButton.py +++ b/InterfaceQT4/monWidget4a6RadioButton.py @@ -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): diff --git a/InterfaceQT4/monWidget4a6RadioButtonSD.py b/InterfaceQT4/monWidget4a6RadioButtonSD.py index afdde11b..86f198ed 100644 --- a/InterfaceQT4/monWidget4a6RadioButtonSD.py +++ b/InterfaceQT4/monWidget4a6RadioButtonSD.py @@ -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): diff --git a/InterfaceQT4/monWidgetBloc.py b/InterfaceQT4/monWidgetBloc.py index 7d5d8239..1dc33526 100644 --- a/InterfaceQT4/monWidgetBloc.py +++ b/InterfaceQT4/monWidgetBloc.py @@ -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) diff --git a/InterfaceQT4/monWidgetCB.py b/InterfaceQT4/monWidgetCB.py index 9f969dd4..a23b51fc 100644 --- a/InterfaceQT4/monWidgetCB.py +++ b/InterfaceQT4/monWidgetCB.py @@ -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 index 00000000..c2e71c7a --- /dev/null +++ b/InterfaceQT4/monWidgetCBIntoSug.py @@ -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)); + + diff --git a/InterfaceQT4/monWidgetCBSD.py b/InterfaceQT4/monWidgetCBSD.py index 10124473..929e7426 100644 --- a/InterfaceQT4/monWidgetCBSD.py +++ b/InterfaceQT4/monWidgetCBSD.py @@ -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() diff --git a/InterfaceQT4/monWidgetCommande.py b/InterfaceQT4/monWidgetCommande.py index 69bafce9..98f815ad 100644 --- a/InterfaceQT4/monWidgetCommande.py +++ b/InterfaceQT4/monWidgetCommande.py @@ -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 index 00000000..9fa4cbd1 --- /dev/null +++ b/InterfaceQT4/monWidgetCommandeDeplie1Niveau.py @@ -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 diff --git a/InterfaceQT4/monWidgetCommentaire.py b/InterfaceQT4/monWidgetCommentaire.py index 03fb92e2..8ff4e317 100644 --- a/InterfaceQT4/monWidgetCommentaire.py +++ b/InterfaceQT4/monWidgetCommentaire.py @@ -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() diff --git a/InterfaceQT4/monWidgetCreeParam.py b/InterfaceQT4/monWidgetCreeParam.py index 12937800..a46ebddc 100644 --- a/InterfaceQT4/monWidgetCreeParam.py +++ b/InterfaceQT4/monWidgetCreeParam.py @@ -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) diff --git a/InterfaceQT4/monWidgetFact.py b/InterfaceQT4/monWidgetFact.py index a4731129..d756cb28 100644 --- a/InterfaceQT4/monWidgetFact.py +++ b/InterfaceQT4/monWidgetFact.py @@ -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) diff --git a/InterfaceQT4/monWidgetFactPlie.py b/InterfaceQT4/monWidgetFactPlie.py index a72be8ee..17d79b58 100644 --- a/InterfaceQT4/monWidgetFactPlie.py +++ b/InterfaceQT4/monWidgetFactPlie.py @@ -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): diff --git a/InterfaceQT4/monWidgetFormule.py b/InterfaceQT4/monWidgetFormule.py index 837805ba..f1add2f1 100644 --- a/InterfaceQT4/monWidgetFormule.py +++ b/InterfaceQT4/monWidgetFormule.py @@ -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() diff --git a/InterfaceQT4/monWidgetInfo.py b/InterfaceQT4/monWidgetInfo.py index bed6a830..0bfc2dd5 100644 --- a/InterfaceQT4/monWidgetInfo.py +++ b/InterfaceQT4/monWidgetInfo.py @@ -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) diff --git a/InterfaceQT4/monWidgetIntoSug.py b/InterfaceQT4/monWidgetIntoSug.py index 847055b0..afb8f74a 100644 --- a/InterfaceQT4/monWidgetIntoSug.py +++ b/InterfaceQT4/monWidgetIntoSug.py @@ -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() diff --git a/InterfaceQT4/monWidgetMatrice.py b/InterfaceQT4/monWidgetMatrice.py index 46650abd..0acfb209 100644 --- a/InterfaceQT4/monWidgetMatrice.py +++ b/InterfaceQT4/monWidgetMatrice.py @@ -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 index 00000000..236ab677 --- /dev/null +++ b/InterfaceQT4/monWidgetNiveauFact.py @@ -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) + + diff --git a/InterfaceQT4/monWidgetOptionnel.py b/InterfaceQT4/monWidgetOptionnel.py index 1bfbe3bc..904e5841 100644 --- a/InterfaceQT4/monWidgetOptionnel.py +++ b/InterfaceQT4/monWidgetOptionnel.py @@ -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: diff --git a/InterfaceQT4/monWidgetParam.py b/InterfaceQT4/monWidgetParam.py index a6385255..287e5ee1 100644 --- a/InterfaceQT4/monWidgetParam.py +++ b/InterfaceQT4/monWidgetParam.py @@ -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)) diff --git a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py index 311215f9..3498fe85 100644 --- a/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursASSDIntoOrdonne.py @@ -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) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index 67cbf912..45c7a46c 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -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() diff --git a/InterfaceQT4/monWidgetPlusieursInto.py b/InterfaceQT4/monWidgetPlusieursInto.py index 6fe03833..ddbc9894 100644 --- a/InterfaceQT4/monWidgetPlusieursInto.py +++ b/InterfaceQT4/monWidgetPlusieursInto.py @@ -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("") diff --git a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py index 584a93d2..d7f78f30 100644 --- a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py @@ -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() diff --git a/InterfaceQT4/monWidgetPlusieursPlie.py b/InterfaceQT4/monWidgetPlusieursPlie.py index 295a025b..389e5111 100644 --- a/InterfaceQT4/monWidgetPlusieursPlie.py +++ b/InterfaceQT4/monWidgetPlusieursPlie.py @@ -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="[" diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index defe4c4c..531f0a43 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -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 index 00000000..df8ceb2c --- /dev/null +++ b/InterfaceQT4/monWidgetPlusieursTupleAvril11.py @@ -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 index 00000000..7b0dbb43 --- /dev/null +++ b/InterfaceQT4/monWidgetPlusieursTupleN.py @@ -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) + diff --git a/InterfaceQT4/monWidgetRadioButton.py b/InterfaceQT4/monWidgetRadioButton.py index 7c234765..129046be 100644 --- a/InterfaceQT4/monWidgetRadioButton.py +++ b/InterfaceQT4/monWidgetRadioButton.py @@ -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): diff --git a/InterfaceQT4/monWidgetSDCOInto.py b/InterfaceQT4/monWidgetSDCOInto.py index 189c3c68..e5c6de93 100644 --- a/InterfaceQT4/monWidgetSDCOInto.py +++ b/InterfaceQT4/monWidgetSDCOInto.py @@ -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)) diff --git a/InterfaceQT4/monWidgetSimpBase.py b/InterfaceQT4/monWidgetSimpBase.py index 4981e6f2..ef4c5cea 100644 --- a/InterfaceQT4/monWidgetSimpBase.py +++ b/InterfaceQT4/monWidgetSimpBase.py @@ -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,"") diff --git a/InterfaceQT4/monWidgetSimpBool.py b/InterfaceQT4/monWidgetSimpBool.py index b0529207..5b12888f 100644 --- a/InterfaceQT4/monWidgetSimpBool.py +++ b/InterfaceQT4/monWidgetSimpBool.py @@ -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() diff --git a/InterfaceQT4/monWidgetSimpComplexe.py b/InterfaceQT4/monWidgetSimpComplexe.py index 7d1e070a..5239a2d6 100644 --- a/InterfaceQT4/monWidgetSimpComplexe.py +++ b/InterfaceQT4/monWidgetSimpComplexe.py @@ -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()))) diff --git a/InterfaceQT4/monWidgetSimpSalome.py b/InterfaceQT4/monWidgetSimpSalome.py index 9322918c..af575fd9 100644 --- a/InterfaceQT4/monWidgetSimpSalome.py +++ b/InterfaceQT4/monWidgetSimpSalome.py @@ -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)) diff --git a/InterfaceQT4/monWidgetSimpTuple.py b/InterfaceQT4/monWidgetSimpTuple.py index b2bbc2a0..b75a5676 100644 --- a/InterfaceQT4/monWidgetSimpTuple.py +++ b/InterfaceQT4/monWidgetSimpTuple.py @@ -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 index 00000000..10eb8092 --- /dev/null +++ b/InterfaceQT4/monWidgetSimpTupleN.py @@ -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 index 00000000..5a0bc061 --- /dev/null +++ b/InterfaceQT4/monWidgetTableau.py @@ -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) + diff --git a/InterfaceQT4/monWidgetUniqueSDCO.py b/InterfaceQT4/monWidgetUniqueSDCO.py index 71940f96..3d733331 100644 --- a/InterfaceQT4/monWidgetUniqueSDCO.py +++ b/InterfaceQT4/monWidgetUniqueSDCO.py @@ -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) diff --git a/InterfaceQT4/monWidgetVide.py b/InterfaceQT4/monWidgetVide.py index 55949ebe..1fb2e720 100644 --- a/InterfaceQT4/monWidgetVide.py +++ b/InterfaceQT4/monWidgetVide.py @@ -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) diff --git a/InterfaceQT4/politiquesValidation.py b/InterfaceQT4/politiquesValidation.py index a8e5c52c..a93175d7 100644 --- a/InterfaceQT4/politiquesValidation.py +++ b/InterfaceQT4/politiquesValidation.py @@ -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 + + diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 2bc9ba64..08de9be6 100755 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -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 index 00000000..59f39bf8 --- /dev/null +++ b/InterfaceQT4/qtEficasSsIhm.py @@ -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') diff --git a/InterfaceQT4/qtEficas_with_log.py b/InterfaceQT4/qtEficas_with_log.py index d8f595d7..2eb78021 100644 --- a/InterfaceQT4/qtEficas_with_log.py +++ b/InterfaceQT4/qtEficas_with_log.py @@ -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']() diff --git a/InterfaceQT4/qtSaisie.py b/InterfaceQT4/qtSaisie.py index 42260b1f..1b0b79ab 100644 --- a/InterfaceQT4/qtSaisie.py +++ b/InterfaceQT4/qtSaisie.py @@ -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() diff --git a/InterfaceQT4/readercata.py b/InterfaceQT4/readercata.py index 3943955f..f788c8b6 100644 --- a/InterfaceQT4/readercata.py +++ b/InterfaceQT4/readercata.py @@ -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 index 00000000..5579a82b --- /dev/null +++ b/InterfaceQT4/readercataXML.py @@ -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 diff --git a/InterfaceQT4/typeNode.py b/InterfaceQT4/typeNode.py index 73fdb9b0..f9e2e944 100644 --- a/InterfaceQT4/typeNode.py +++ b/InterfaceQT4/typeNode.py @@ -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() diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index 19e6ca0b..0050a294 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -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 %s 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 index 00000000..a588c792 --- /dev/null +++ b/InterfaceQT4/viewManagerSsIhm.py @@ -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) diff --git a/Noyau/N_ASSD.py b/Noyau/N_ASSD.py index cee339dc..a7fae981 100644 --- a/Noyau/N_ASSD.py +++ b/Noyau/N_ASSD.py @@ -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): diff --git a/Noyau/N_BLOC.py b/Noyau/N_BLOC.py index 9343b65b..b1315229 100644 --- a/Noyau/N_BLOC.py +++ b/Noyau/N_BLOC.py @@ -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): diff --git a/Noyau/N_CO.py b/Noyau/N_CO.py index 1d73d0f6..c46cd58d 100644 --- a/Noyau/N_CO.py +++ b/Noyau/N_CO.py @@ -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__) diff --git a/Noyau/N_CONVERT.py b/Noyau/N_CONVERT.py index 981a02f0..3a89a528 100644 --- a/Noyau/N_CONVERT.py +++ b/Noyau/N_CONVERT.py @@ -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 diff --git a/Noyau/N_CR.py b/Noyau/N_CR.py index fcaed07c..95aa455a 100644 --- a/Noyau/N_CR.py +++ b/Noyau/N_CR.py @@ -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 diff --git a/Noyau/N_ENTITE.py b/Noyau/N_ENTITE.py index ba6a0159..4735edd3 100644 --- a/Noyau/N_ENTITE.py +++ b/Noyau/N_ENTITE.py @@ -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 diff --git a/Noyau/N_ETAPE.py b/Noyau/N_ETAPE.py index a5988282..052bd528 100644 --- a/Noyau/N_ETAPE.py +++ b/Noyau/N_ETAPE.py @@ -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) diff --git a/Noyau/N_Exception.py b/Noyau/N_Exception.py index 4d2462bd..459c5b17 100644 --- a/Noyau/N_Exception.py +++ b/Noyau/N_Exception.py @@ -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)""" diff --git a/Noyau/N_FACT.py b/Noyau/N_FACT.py index 14ed38ad..6de7e404 100644 --- a/Noyau/N_FACT.py +++ b/Noyau/N_FACT.py @@ -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() diff --git a/Noyau/N_FONCTION.py b/Noyau/N_FONCTION.py index 459eca65..2638cccd 100644 --- a/Noyau/N_FONCTION.py +++ b/Noyau/N_FONCTION.py @@ -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: diff --git a/Noyau/N_GEOM.py b/Noyau/N_GEOM.py index b87ce9a9..2bde47a3 100644 --- a/Noyau/N_GEOM.py +++ b/Noyau/N_GEOM.py @@ -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): diff --git a/Noyau/N_JDC.py b/Noyau/N_JDC.py index 9783089d..172ed05a 100644 --- a/Noyau/N_JDC.py +++ b/Noyau/N_JDC.py @@ -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', diff --git a/Noyau/N_JDC_CATA.py b/Noyau/N_JDC_CATA.py index b7482405..27a76e8f 100644 --- a/Noyau/N_JDC_CATA.py +++ b/Noyau/N_JDC_CATA.py @@ -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 diff --git a/Noyau/N_MACRO.py b/Noyau/N_MACRO.py index 5f8a727b..a80f98e4 100644 --- a/Noyau/N_MACRO.py +++ b/Noyau/N_MACRO.py @@ -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): """ diff --git a/Noyau/N_MACRO_ETAPE.py b/Noyau/N_MACRO_ETAPE.py index 64092785..793fe07e 100644 --- a/Noyau/N_MACRO_ETAPE.py +++ b/Noyau/N_MACRO_ETAPE.py @@ -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() diff --git a/Noyau/N_MCBLOC.py b/Noyau/N_MCBLOC.py index 1a3cd0ad..a0305414 100644 --- a/Noyau/N_MCBLOC.py +++ b/Noyau/N_MCBLOC.py @@ -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 diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index 2fa8f61c..c4d641fd 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -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': [] } """ 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 diff --git a/Noyau/N_MCFACT.py b/Noyau/N_MCFACT.py index 4ee33569..52be4313 100644 --- a/Noyau/N_MCFACT.py +++ b/Noyau/N_MCFACT.py @@ -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): """ diff --git a/Noyau/N_MCLIST.py b/Noyau/N_MCLIST.py index dc26369d..5d693ed9 100644 --- a/Noyau/N_MCLIST.py +++ b/Noyau/N_MCLIST.py @@ -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) diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index a4b9134b..73d01872 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -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': [ , ] } """ - 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()] diff --git a/Noyau/N_OBJECT.py b/Noyau/N_OBJECT.py index d17e5522..8765539f 100644 --- a/Noyau/N_OBJECT.py +++ b/Noyau/N_OBJECT.py @@ -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 + + diff --git a/Noyau/N_OPER.py b/Noyau/N_OPER.py index 95692970..955b0897 100644 --- a/Noyau/N_OPER.py +++ b/Noyau/N_OPER.py @@ -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): """ diff --git a/Noyau/N_OPS.py b/Noyau/N_OPS.py index 0662637f..d835a6a4 100644 --- a/Noyau/N_OPS.py +++ b/Noyau/N_OPS.py @@ -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) diff --git a/Noyau/N_PROC.py b/Noyau/N_PROC.py index 7b20ae82..97c120df 100644 --- a/Noyau/N_PROC.py +++ b/Noyau/N_PROC.py @@ -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): """ diff --git a/Noyau/N_PROC_ETAPE.py b/Noyau/N_PROC_ETAPE.py index 274f97a1..7611d57b 100644 --- a/Noyau/N_PROC_ETAPE.py +++ b/Noyau/N_PROC_ETAPE.py @@ -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 diff --git a/Noyau/N_REGLE.py b/Noyau/N_REGLE.py index 3d91c498..4f09b7f6 100644 --- a/Noyau/N_REGLE.py +++ b/Noyau/N_REGLE.py @@ -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. diff --git a/Noyau/N_SENSIBILITE.py b/Noyau/N_SENSIBILITE.py index da5473c6..bd6fbd5e 100644 --- a/Noyau/N_SENSIBILITE.py +++ b/Noyau/N_SENSIBILITE.py @@ -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 '' diff --git a/Noyau/N_SIMP.py b/Noyau/N_SIMP.py index 07fb133d..9606f351 100644 --- a/Noyau/N_SIMP.py +++ b/Noyau/N_SIMP.py @@ -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 +# +# +# +# +# diff --git a/Noyau/N_VALIDATOR.py b/Noyau/N_VALIDATOR.py index 9430c0ce..2989000f 100644 --- a/Noyau/N_VALIDATOR.py +++ b/Noyau/N_VALIDATOR.py @@ -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): diff --git a/Noyau/N_types.py b/Noyau/N_types.py index 50f5a49b..fdc0af77 100644 --- a/Noyau/N_types.py +++ b/Noyau/N_types.py @@ -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) diff --git a/Noyau/N_utils.py b/Noyau/N_utils.py index f9e2ee57..a0415268 100644 --- a/Noyau/N_utils.py +++ b/Noyau/N_utils.py @@ -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) diff --git a/Noyau/__init__.py b/Noyau/__init__.py index f83c7acf..f2ab7062 100644 --- a/Noyau/__init__.py +++ b/Noyau/__init__.py @@ -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 diff --git a/Noyau/context.py b/Noyau/context.py index cab36b36..4e0833e0 100644 --- a/Noyau/context.py +++ b/Noyau/context.py @@ -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 """ diff --git a/Noyau/nommage.py b/Noyau/nommage.py index 1f70a272..72b4ceed 100644 --- a/Noyau/nommage.py +++ b/Noyau/nommage.py @@ -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() diff --git a/Noyau/strfunc.py b/Noyau/strfunc.py index 2bc5ad7d..1cb1f51d 100644 --- a/Noyau/strfunc.py +++ b/Noyau/strfunc.py @@ -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) diff --git a/Traducteur/changeValeur.py b/Traducteur/changeValeur.py index 07a040c7..f9130016 100644 --- a/Traducteur/changeValeur.py +++ b/Traducteur/changeValeur.py @@ -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 diff --git a/Traducteur/dictErreurs.py b/Traducteur/dictErreurs.py index 4ba0671c..1f057c3e 100644 --- a/Traducteur/dictErreurs.py +++ b/Traducteur/dictErreurs.py @@ -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: diff --git a/Traducteur/inseremocle.py b/Traducteur/inseremocle.py index 9d52d6b0..98448b99 100644 --- a/Traducteur/inseremocle.py +++ b/Traducteur/inseremocle.py @@ -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 diff --git a/Traducteur/load.py b/Traducteur/load.py index b81ff2e2..2375e805 100644 --- a/Traducteur/load.py +++ b/Traducteur/load.py @@ -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): diff --git a/Traducteur/mocles.py b/Traducteur/mocles.py index aae93d40..08b2c765 100644 --- a/Traducteur/mocles.py +++ b/Traducteur/mocles.py @@ -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 diff --git a/Traducteur/movemocle.py b/Traducteur/movemocle.py index b65d8b1d..d75ae999 100644 --- a/Traducteur/movemocle.py +++ b/Traducteur/movemocle.py @@ -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) diff --git a/Traducteur/parseur.py b/Traducteur/parseur.py index 395dee31..e715f2a9 100644 --- a/Traducteur/parseur.py +++ b/Traducteur/parseur.py @@ -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 diff --git a/Traducteur/regles.py b/Traducteur/regles.py index b2dce22c..dd11ff29 100644 --- a/Traducteur/regles.py +++ b/Traducteur/regles.py @@ -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 diff --git a/Traducteur/removemocle.py b/Traducteur/removemocle.py index b989f41d..f9da5345 100644 --- a/Traducteur/removemocle.py +++ b/Traducteur/removemocle.py @@ -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) diff --git a/Traducteur/renamemocle.py b/Traducteur/renamemocle.py index 19677be7..188a24a6 100644 --- a/Traducteur/renamemocle.py +++ b/Traducteur/renamemocle.py @@ -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 diff --git a/Traducteur/traduitV10V11.py b/Traducteur/traduitV10V11.py index 20ef4fbb..aeb62ea8 100755 --- a/Traducteur/traduitV10V11.py +++ b/Traducteur/traduitV10V11.py @@ -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") diff --git a/Traducteur/traduitV11V12.py b/Traducteur/traduitV11V12.py index 7602c893..37212deb 100755 --- a/Traducteur/traduitV11V12.py +++ b/Traducteur/traduitV11V12.py @@ -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") diff --git a/Traducteur/traduitV7V8.py b/Traducteur/traduitV7V8.py index 69a53d12..5f3b6888 100644 --- a/Traducteur/traduitV7V8.py +++ b/Traducteur/traduitV7V8.py @@ -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") diff --git a/Traducteur/traduitV8V9.py b/Traducteur/traduitV8V9.py index 649f4234..224e781b 100644 --- a/Traducteur/traduitV8V9.py +++ b/Traducteur/traduitV8V9.py @@ -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") diff --git a/Traducteur/traduitV9V10.py b/Traducteur/traduitV9V10.py index 35659e41..45570a61 100755 --- a/Traducteur/traduitV9V10.py +++ b/Traducteur/traduitV9V10.py @@ -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") diff --git a/Traducteur/utils.py b/Traducteur/utils.py index ee70752a..9ab9601c 100644 --- a/Traducteur/utils.py +++ b/Traducteur/utils.py @@ -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() diff --git a/UiQT5/CMakeLists.txt b/UiQT5/CMakeLists.txt index e43a25fa..40a250d4 100644 --- a/UiQT5/CMakeLists.txt +++ b/UiQT5/CMakeLists.txt @@ -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 index 00000000..102166a1 --- /dev/null +++ b/UiQT5/Tuple10.ui @@ -0,0 +1,412 @@ + + + Tuple10 + + + + 0 + 0 + 742 + 46 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple3.ui b/UiQT5/Tuple3.ui index 10c44979..9d777483 100644 --- a/UiQT5/Tuple3.ui +++ b/UiQT5/Tuple3.ui @@ -6,10 +6,16 @@ 0 0 - 880 - 33 + 490 + 29 + + + 0 + 0 + + Form @@ -17,7 +23,16 @@ 0 - + + 1 + + + 0 + + + 0 + + 0 @@ -30,7 +45,7 @@ - + 0 0 @@ -68,7 +83,7 @@ border:0px; - + 0 0 @@ -81,7 +96,7 @@ border:0px; - 805 + 10000 16777215 @@ -104,7 +119,7 @@ border:0px; - + 0 0 @@ -117,7 +132,7 @@ border:0px; - 805 + 10000 16777215 @@ -142,9 +157,12 @@ border:0px; Qt::Horizontal + + QSizePolicy::Preferred + - 123 + 5 20 diff --git a/UiQT5/Tuple4.ui b/UiQT5/Tuple4.ui new file mode 100644 index 00000000..d551c2b8 --- /dev/null +++ b/UiQT5/Tuple4.ui @@ -0,0 +1,203 @@ + + + Tuple4 + + + + 0 + 0 + 981 + 39 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple5.ui b/UiQT5/Tuple5.ui new file mode 100644 index 00000000..b3013390 --- /dev/null +++ b/UiQT5/Tuple5.ui @@ -0,0 +1,239 @@ + + + Tuple5 + + + + 0 + 0 + 1152 + 46 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple6.ui b/UiQT5/Tuple6.ui new file mode 100644 index 00000000..192bf670 --- /dev/null +++ b/UiQT5/Tuple6.ui @@ -0,0 +1,275 @@ + + + Tuple6 + + + + 0 + 0 + 879 + 46 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple7.ui b/UiQT5/Tuple7.ui new file mode 100644 index 00000000..242b5b17 --- /dev/null +++ b/UiQT5/Tuple7.ui @@ -0,0 +1,311 @@ + + + Tuple7 + + + + 0 + 0 + 1019 + 46 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple8.ui b/UiQT5/Tuple8.ui new file mode 100644 index 00000000..169b2608 --- /dev/null +++ b/UiQT5/Tuple8.ui @@ -0,0 +1,347 @@ + + + Tuple8 + + + + 0 + 0 + 1159 + 46 + + + + + 0 + 0 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/Tuple9.ui b/UiQT5/Tuple9.ui new file mode 100644 index 00000000..6a7f25a1 --- /dev/null +++ b/UiQT5/Tuple9.ui @@ -0,0 +1,395 @@ + + + Tuple9 + + + + 0 + 0 + 1299 + 46 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + false + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + , + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 5 + 20 + + + + + + + + + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/dateEtHeure.ui b/UiQT5/dateEtHeure.ui new file mode 100644 index 00000000..0be453c5 --- /dev/null +++ b/UiQT5/dateEtHeure.ui @@ -0,0 +1,98 @@ + + + Form + + + + 0 + 0 + 281 + 51 + + + + Saisie date et heure + + + + + + + + + 0 + 0 + + + + + 101 + 31 + + + + + 101 + 31 + + + + Entrer la date + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Latin Modern Sans'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">18/12/17</p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 0 + 0 + + + + + 101 + 31 + + + + + 101 + 31 + + + + Entrer l'heure + + + + + + + + + + diff --git a/UiQT5/desChoixCode.ui b/UiQT5/desChoixCode.ui index d283155e..69b9c248 100644 --- a/UiQT5/desChoixCode.ui +++ b/UiQT5/desChoixCode.ui @@ -1,48 +1,38 @@ ChoixCode - + 0 0 - 555 - 332 + 205 + 96 - - - 0 - 0 - - - Choix du code + Coix du Code - - - - - 0 - 0 - - - - - 0 - 30 - - - - Veuillez choisir un code : - - - + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + - + 0 0 @@ -51,15 +41,27 @@ + + 0 + + + 0 + + + 0 + + + 0 + - + Qt::Vertical 20 - 40 + 20 @@ -68,103 +70,50 @@ - - - QLayout::SetFixedSize + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 140 - 40 - - - - - - - background-color:rgb(104,110,149); -color :white; -border-radius : 12px - - - - &Cancel - - - - - - true - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - 140 - 40 - - - - Validate choice - - - background-color:rgb(104,110,149); -color :white; -border-radius : 12px - - - - - &OK - - - - - - true - - - true - - - - +
- + + + buttonBox + accepted() + ChoixCode + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ChoixCode + reject() + + + 316 + 260 + + + 286 + 274 + + + + diff --git a/UiQT5/desWidgetCB.ui b/UiQT5/desWidgetCB.ui index ba0c5a24..e1795a36 100644 --- a/UiQT5/desWidgetCB.ui +++ b/UiQT5/desWidgetCB.ui @@ -6,12 +6,12 @@ 0 0 - 739 - 63 + 809 + 56
- + 0 0 @@ -25,7 +25,7 @@ 1493 - 85 + 95 @@ -137,7 +137,7 @@ - + 0 0 diff --git a/UiQT5/desWidgetCBIntoSug.ui b/UiQT5/desWidgetCBIntoSug.ui new file mode 100644 index 00000000..8c4323e3 --- /dev/null +++ b/UiQT5/desWidgetCBIntoSug.ui @@ -0,0 +1,343 @@ + + + WidgetCBIntoSug + + + + 0 + 0 + 1104 + 102 + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 1493 + 150 + + + + Form + + + QComboBox{combobox-popup:0;}; + + + + 0 + + + 0 + + + 4 + + + 0 + + + 9 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + background:rgb(221, 221, 166) + + + QFrame::Box + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Valeurs hors liste - la valeur saisie sera ajoutée à la liste + + + + + + + background : white + + + + + + + + + + + 0 + + + + + + 0 + 0 + + + + + 361 + 32 + + + + + + + + + + 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 ; +}/* + + + + 100 + + + false + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 301 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT5/desWidgetCommande.ui b/UiQT5/desWidgetCommande.ui index 577965c1..cb31ccb2 100644 --- a/UiQT5/desWidgetCommande.ui +++ b/UiQT5/desWidgetCommande.ui @@ -6,8 +6,8 @@ 0 0 - 1353 - 596 + 1110 + 731
@@ -32,7 +32,7 @@ background-color : rgb(224,223,222); font : 'times' 9px - + 0 @@ -50,170 +50,152 @@ font : 'times' 9px 0 - 130 + 8 16777215 - 130 + 75 background-color:rgb(224,223,222) - - - 2 + + + 0 - - 3 + + 0 - - 2 - - - - - - 0 - 0 - - - - QFrame::Box - - - QFrame::Raised + + + + 0 - - - 0 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 20 - - - - - - - - - 17 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Affiche le rapport de validité de la commande - - - border : 0px - - - ... - - - - ../../../.designer/Editeur/icons/ast-green-ball.png../../../.designer/Editeur/icons/ast-green-ball.png - - - - 21 - 31 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 20 - - - - - - - - - 0 - 0 - - - - - 150 - 31 - - - - QFrame::NoFrame - - - QFrame::Raised - - - <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> - - - - - - - Qt::Horizontal - - - QSizePolicy::Maximum - - - - 2 - 40 - - - - - - - - - 0 - 0 - - - - Nom de l'objet. Seuls, les objets valides peuvent être nommés - - - QLineEdit { + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 17 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Affiche le rapport de validité de la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/ast-green-ball.png../../../.designer/Editeur/icons/ast-green-ball.png + + + + 21 + 31 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 0 + 0 + + + + + 150 + 31 + + + + QFrame::NoFrame + + + QFrame::Raised + + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 16777215 + 200 + + + + Nom de l'objet. Seuls, les objets valides peuvent être nommés + + + QLineEdit { border: 2px solid gray; border-radius: 10px; padding: 0 8px; @@ -226,349 +208,239 @@ QLineEdit:disabled } /*read-only { background: lightblue;*/ - - - false - - - - - - - Qt::Horizontal - - - - 108 - 20 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Ignored - - - - 2 - 40 - - - - - - - - 4 - - - QLayout::SetFixedSize - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Lance un script associé à la commande - - - border : 0px - - - ... - - - - ../../../.designer/Editeur/icons/roue.png../../../.designer/Editeur/icons/roue.png - - - - 21 - 31 - - - - - - - - - 0 - 0 - - - - - 0 - 38 - - - - true - - - - - - - - 21 - 31 - - - - - 31 - 31 - - - - Qt::ClickFocus - - - ouvre un navigateur sur l'aide contextuelle - - - border : 0px - - - ... - - - - ../../../.designer/Editeur/icons/point-interrogation.png../../../.designer/Editeur/icons/point-interrogation.png - - - - 21 - 31 - - - - - - - - - 21 - 31 - - - - - 31 - 31 - - - - Qt::ClickFocus - - - affiche les régles de validité - - - border : 0px - - - ... - - - - ../../../.designer/Editeur/icons/lettreRblanc30.png../../../.designer/Editeur/icons/lettreRblanc30.png - - - - 21 - 31 - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 20 - - - - - - - - - 21 - 31 - - - - - 21 - 31 - - - - Qt::ClickFocus - - - Détruit la commande - - - border : 0px - - - ... - - - - ../../../.designer/Editeur/icons/deleteRond.png../../../.designer/Editeur/icons/deleteRond.png - - - - 21 - 31 - - - - - - RBValide - labelNomCommande - LENom - horizontalSpacer_3 - horizontalSpacer_4 - RBPoubelle - horizontalSpacer_5 - horizontalSpacer_7 - - - - - - - 0 - 0 - - - - - 160 - 40 - - - - Qt::ClickFocus - - - Affiche les commandes possibles - - - background-color:rgb(104,110,149); -color :white; -border-radius : 12px - - - - &Commandes - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true - - - - - - - TextLabel - - - - - - - 0 - - - + + + false + + + + + + + Qt::Horizontal + + + + 18 + 17 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Lance un script associé à la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/roue.png../../../.designer/Editeur/icons/roue.png + + + + 21 + 31 + + + + + + + + + 0 + 0 + + + + + 150 + 38 + + + + true + + + + + + + + 21 + 31 + + + + + 31 + 31 + + + + Qt::ClickFocus + + + affiche les régles de validité + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/lettreRblanc30.png../../../.designer/Editeur/icons/lettreRblanc30.png + + + + 21 + 31 + + + + + + + + + 21 + 31 + + + + + 31 + 31 + + + + Qt::ClickFocus + + + ouvre un navigateur sur l'aide contextuelle + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/point-interrogation.png../../../.designer/Editeur/icons/point-interrogation.png + + + + 21 + 31 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Détruit la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/deleteRond.png../../../.designer/Editeur/icons/deleteRond.png + + + + 21 + 31 + + + + + +
+ + - + 0 0 - - - 60 - 24 - - - - - 60 - 24 - - - - Qt::ClickFocus - - - Affiche le formulaire de la commande précédente - - - background-color:rgb(104,110,149); -color :white; -border-radius : 12px - - - << - - - Shift+A, Alt+A, Alt+A, Alt+A - - - true - - - true + <html><head/><body><p><br/></p></body></html> - - + + + + + + 1 + + + QLayout::SetFixedSize + + + 0 @@ -577,21 +449,15 @@ border-radius : 12px - 60 - 24 - - - - - 60 - 24 + 160 + 30 Qt::ClickFocus - Affiche le formulaire de la commande suivante + Affiche les commandes possibles background-color:rgb(104,110,149); @@ -600,7 +466,7 @@ border-radius : 12px - >> + &Commandes Shift+A, Alt+A, Alt+A, Alt+A @@ -613,7 +479,106 @@ border-radius : 12px - + + + + 1 + + + + + + 0 + 0 + + + + + 60 + 24 + + + + + 60 + 24 + + + + Qt::ClickFocus + + + Affiche le formulaire de la commande précédente + + + background-color:rgb(104,110,149); +color :white; +border-radius : 12px + + + + << + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + + + + + + 0 + 0 + + + + + 60 + 24 + + + + + 60 + 24 + + + + Qt::ClickFocus + + + Affiche le formulaire de la commande suivante + + + background-color:rgb(104,110,149); +color :white; +border-radius : 12px + + + + >> + + + Shift+A, Alt+A, Alt+A, Alt+A + + + true + + + true + + + + + + Qt::Vertical @@ -621,7 +586,7 @@ border-radius : 12px 20 - 0 + 2 @@ -662,31 +627,24 @@ border-radius : 12px 0 0 - 1353 - 466 + 1110 + 656
- + + + 0 + + + 0 + - 1 + 0 - - - - Qt::Vertical - - - - 20 - 5 - - - -
diff --git a/UiQT5/desWidgetFact.ui b/UiQT5/desWidgetFact.ui index dbc1f738..cba4773d 100644 --- a/UiQT5/desWidgetFact.ui +++ b/UiQT5/desWidgetFact.ui @@ -6,10 +6,16 @@ 0 0 - 949 - 53 + 619 + 63
+ + + 0 + 0 + + Qt::StrongFocus @@ -27,20 +33,11 @@ padding: 0 3px; } - + 0 - - 0 - - - 2 - - - 0 - - + 0 @@ -59,7 +56,7 @@ 20 - 5 + 4 @@ -110,177 +107,280 @@ - - - 0 - - - - - - 17 - 25 - - - - - 21 - 25 - - - - border : 0px - - - ... - - - - ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png - - - - 21 - 25 - - - - - - - - 0 - + + + - - - - 0 - 0 - - + - 0 + 17 25 - 12121213 + 21 25 - - <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 20 - + + border : 0px - - - - - - - 0 - 0 - + + ... - - - 200 - 0 - + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png - + - 1500 - 16 + 21 + 25 - - Qt::Horizontal - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 13 - 20 - - - - - - + 0 - - QLayout::SetFixedSize - - + + + + 0 + 0 + + - 21 - 31 + 0 + 25 - 21 - 31 + 12121213 + 25 - - Qt::ClickFocus + + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> - - Lance un script associé à la commande + + + + + + Qt::Horizontal - - border : 0px + + QSizePolicy::Fixed - - ... + + + 13 + 20 + - - - ../Editeur/icons/roue.png../Editeur/icons/roue.png + + + + + + + 0 + 0 + - + - 21 - 31 + 200 + 0 + + + 1500 + 16 + + + + Qt::Horizontal + - + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + 0 + + + QLayout::SetFixedSize + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Lance un script associé à la commande + + + border : 0px + + + ... + + + + ../Editeur/icons/roue.png../Editeur/icons/roue.png + + + + 21 + 31 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/point-interrogation30.png../Editeur/icons/point-interrogation30.png + + + + 21 + 25 + + + + + + + + + 0 + 0 + + + + + 0 + 38 + + + + ArrowCursor + + + false + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/lettreRblanc30.png../Editeur/icons/lettreRblanc30.png + + + + 21 + 25 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + 21 @@ -301,7 +401,7 @@ - ../Editeur/icons/point-interrogation30.png../Editeur/icons/point-interrogation30.png + ../Editeur/icons/PlusBleu.png../Editeur/icons/PlusBleu.png @@ -312,29 +412,7 @@ - - - - 0 - 0 - - - - - 0 - 38 - - - - ArrowCursor - - - false - - - - - + 21 @@ -355,7 +433,7 @@ - ../Editeur/icons/lettreRblanc30.png../Editeur/icons/lettreRblanc30.png + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png @@ -367,64 +445,32 @@ + + + + + + 0 + + + 2 + - + - Qt::Horizontal + Qt::Vertical QSizePolicy::Fixed - 13 - 20 + 2 + 2 - - - - - 21 - 25 - - - - - 21 - 25 - - - - border : 0px - - - ... - - - - ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png - - - - 21 - 25 - - - - - - - - - - 0 - - - 2 - diff --git a/UiQT5/desWidgetFactPlie.ui b/UiQT5/desWidgetFactPlie.ui index bd9e9c30..766ca93b 100644 --- a/UiQT5/desWidgetFactPlie.ui +++ b/UiQT5/desWidgetFactPlie.ui @@ -62,7 +62,8 @@ - ../Editeur/icons/plusnode.png../Editeur/icons/plusnode.png + ../Editeur/icons/plusnode.png + ../Editeur/icons/ast-red-ball.png../Editeur/icons/plusnode.png diff --git a/UiQT5/desWidgetFactTableau.ui b/UiQT5/desWidgetFactTableau.ui new file mode 100644 index 00000000..f736a471 --- /dev/null +++ b/UiQT5/desWidgetFactTableau.ui @@ -0,0 +1,428 @@ + + + WidgetFactTableau + + + + 0 + 0 + 949 + 225 + + + + Qt::StrongFocus + + + Form + + + QGroupBox { + border: 1px solid gray; + border-radius: 5px; + margin-top: 1ex; /* leave space at the top for the title */ + } + + QGroupBox::title { + padding: 0 3px; + } + + + + 0 + + + 0 + + + 2 + + + 0 + + + 0 + + + + + 0 + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 5 + + + + + + + + + 21 + 15 + + + + + 21 + 21 + + + + border : 0px + + + ... + + + + ../Editeur/icons/minusnode.png../Editeur/icons/minusnode.png + + + + 21 + 21 + + + + + + + + + + Qt::Vertical + + + + + + + + + + + 0 + + + + + + 17 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 21 + 25 + + + + + + + + 0 + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 12121213 + 25 + + + + <html><head/><body><p><span style=" font-style:italic;">TextLabel</span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + + 1500 + 16 + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + 0 + + + QLayout::SetFixedSize + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Lance un script associé à la commande + + + border : 0px + + + ... + + + + ../Editeur/icons/roue.png../Editeur/icons/roue.png + + + + 21 + 31 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/point-interrogation30.png../Editeur/icons/point-interrogation30.png + + + + 21 + 25 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/lettreRblanc30.png../Editeur/icons/lettreRblanc30.png + + + + 21 + 25 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 21 + 25 + + + + + + + + + + 0 + + + 2 + + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT5/desWidgetNiveauFact.ui b/UiQT5/desWidgetNiveauFact.ui new file mode 100644 index 00000000..f02a7854 --- /dev/null +++ b/UiQT5/desWidgetNiveauFact.ui @@ -0,0 +1,544 @@ + + + WidgetNiveauFact + + + + 0 + 0 + 1353 + 596 + + + + + 0 + 0 + + + + + 0 + 0 + + + + DCommandeUnique + + + + + + background-color : rgb(224,223,222); +font : 'times' 9px + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 130 + + + + + 16777215 + 130 + + + + background-color:rgb(224,223,222) + + + + 2 + + + 3 + + + 2 + + + + + + 0 + 0 + + + + QFrame::Box + + + QFrame::Raised + + + + 0 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 17 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Affiche le rapport de validité de la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/ast-green-ball.png../../../.designer/Editeur/icons/ast-green-ball.png + + + + 21 + 31 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 0 + 0 + + + + + 150 + 31 + + + + QFrame::NoFrame + + + QFrame::Raised + + + <html><head/><body><p><span style=" color:#0000ff;">commande </span></p></body></html> + + + + + + + Qt::Horizontal + + + QSizePolicy::Maximum + + + + 2 + 40 + + + + + + + + Qt::Horizontal + + + + 108 + 20 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Ignored + + + + 2 + 40 + + + + + + + + 4 + + + QLayout::SetFixedSize + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Lance un script associé à la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/roue.png../../../.designer/Editeur/icons/roue.png + + + + 21 + 31 + + + + + + + + + 0 + 0 + + + + + 0 + 38 + + + + true + + + + + + + + 21 + 31 + + + + + 31 + 31 + + + + Qt::ClickFocus + + + ouvre un navigateur sur l'aide contextuelle + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/point-interrogation.png../../../.designer/Editeur/icons/point-interrogation.png + + + + 21 + 31 + + + + + + + + + 21 + 31 + + + + + 31 + 31 + + + + Qt::ClickFocus + + + affiche les régles de validité + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/lettreRblanc30.png../../../.designer/Editeur/icons/lettreRblanc30.png + + + + 21 + 31 + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Détruit la commande + + + border : 0px + + + ... + + + + ../../../.designer/Editeur/icons/deleteRond.png../../../.designer/Editeur/icons/deleteRond.png + + + + 21 + 31 + + + + + + RBValide + labelNomCommande + horizontalSpacer_3 + horizontalSpacer_4 + RBPoubelle + horizontalSpacer_5 + horizontalSpacer_7 + + + + + + TextLabel + + + + + + + 0 + + + + + + + + + + + 0 + 81 + + + + background : rgb(247,247,247) + + + + + + QFrame::NoFrame + + + Qt::ScrollBarAsNeeded + + + Qt::ScrollBarAsNeeded + + + true + + + + + 0 + 0 + 1353 + 466 + + + + + + + 1 + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + + qPixmapFromMimeSource + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT5/desWidgetPlusieursBase.ui b/UiQT5/desWidgetPlusieursBase.ui index fe1cbb7d..8d7d5a9d 100644 --- a/UiQT5/desWidgetPlusieursBase.ui +++ b/UiQT5/desWidgetPlusieursBase.ui @@ -6,8 +6,8 @@ 0 0 - 764 - 86 + 1122 + 163
@@ -212,26 +212,47 @@ border: 1px solid gray; 0 0 300 - 57 + 101 - + 0 0 + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + - + 0 0 + + + 300 + 0 + + - TextLabel + <html><head/><body><p>les types des tuples</p></body></html> @@ -278,9 +299,6 @@ border: 1px solid gray; 1 - - QAbstractScrollArea::AdjustToContentsOnFirstShow - true @@ -292,8 +310,8 @@ border: 1px solid gray; 0 0 - 398 - 48 + 705 + 122 diff --git a/UiQT5/desWidgetPlusieursTuple.ui b/UiQT5/desWidgetPlusieursTuple.ui index 36438b0b..bbb59be7 100644 --- a/UiQT5/desWidgetPlusieursTuple.ui +++ b/UiQT5/desWidgetPlusieursTuple.ui @@ -6,12 +6,12 @@ 0 0 - 612 - 175 + 740 + 386 - + 0 0 @@ -26,21 +26,6 @@ Form - - 0 - - - 0 - - - 2 - - - 0 - - - 2 - @@ -169,53 +154,28 @@ - + 0 0 - - QFrame::NoFrame + + + 300 + 0 + - - QFrame::Plain + + + 300 + 16777215 + - - true + + <html><head/><body><p><br/></p><p><br/></p></body></html> - - - - 0 - 0 - 82 - 111 - - - - - 0 - 0 - - - - - - - - 0 - 0 - - - - TextLabel - - - - - @@ -262,8 +222,8 @@ 0 0 - 197 - 110 + 265 + 307 @@ -645,6 +605,13 @@
+ + + + Valide + + + diff --git a/UiQT5/desWidgetSimpTxt.ui b/UiQT5/desWidgetSimpTxt.ui index 6fa4b7e9..43a90938 100644 --- a/UiQT5/desWidgetSimpTxt.ui +++ b/UiQT5/desWidgetSimpTxt.ui @@ -7,7 +7,7 @@ 0 0 743 - 60 + 31 @@ -36,7 +36,7 @@ 0 - 1 + 0 0 @@ -45,7 +45,7 @@ 0 - 1 + 0 @@ -147,7 +147,7 @@ - 178 + 300 16777215 @@ -155,7 +155,7 @@ QFrame::NoFrame - <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + <html><head/><body><p><br/></p></body></html> false @@ -278,7 +278,7 @@ border:0px; 20 - 5 + 1 diff --git a/UiQT5/desWidgetTableau.ui b/UiQT5/desWidgetTableau.ui new file mode 100644 index 00000000..ecb56142 --- /dev/null +++ b/UiQT5/desWidgetTableau.ui @@ -0,0 +1,626 @@ + + + WidgetTableau + + + + 0 + 0 + 1094 + 304 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 0 + + + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + QFrame::Box + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Ajoute une ligne + + + border : 0px + + + ... + + + + ../Editeur/icons/PlusBleu.png../Editeur/icons/PlusBleu.png + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + supprime une ligne + + + border : 0px + + + + ../Editeur/icons/MoinsBleu.png../Editeur/icons/MoinsBleu.png + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Remonte la ligne + + + border : 0px + + + ... + + + + + + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Descend la ligne + + + border : 0px + + + ... + + + + + + + + + 32 + 32 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Montre l'ensemble des valeurs + + + border : 0px + + + ... + + + + ../Editeur/icons/verre-loupe-icone-6087-64.png../Editeur/icons/verre-loupe-icone-6087-64.png + + + + 32 + 32 + + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + QFrame::NoFrame + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + background : rgb(247,247,247) + + + QFrame::NoFrame + + + 1 + + + true + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + + + 0 + 0 + 947 + 205 + + + + + 0 + 0 + + + + + 2 + + + 0 + + + + + Qt::Vertical + + + + 20 + 500 + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + 0 + + + + + 25 + 30 + + + + Qt::ClickFocus + + + Ouvre un fichier de sélection des valeurs + + + border:0px + + + ... + + + + + + + + + 32 + 32 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 13 + 20 + + + + + + + + + 21 + 31 + + + + + 21 + 31 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 32 + 32 + + + + + + + + + + Valide + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple10.ui b/UiQT5/desWidgetTuple10.ui new file mode 100644 index 00000000..e3c04710 --- /dev/null +++ b/UiQT5/desWidgetTuple10.ui @@ -0,0 +1,590 @@ + + + WidgetTuple10 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple4.ui b/UiQT5/desWidgetTuple4.ui new file mode 100644 index 00000000..c939a9fb --- /dev/null +++ b/UiQT5/desWidgetTuple4.ui @@ -0,0 +1,403 @@ + + + WidgetTuple4 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple5.ui b/UiQT5/desWidgetTuple5.ui new file mode 100644 index 00000000..c592ac6d --- /dev/null +++ b/UiQT5/desWidgetTuple5.ui @@ -0,0 +1,439 @@ + + + WidgetTuple5 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple6.ui b/UiQT5/desWidgetTuple6.ui new file mode 100644 index 00000000..92aac0af --- /dev/null +++ b/UiQT5/desWidgetTuple6.ui @@ -0,0 +1,475 @@ + + + WidgetTuple6 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple7.ui b/UiQT5/desWidgetTuple7.ui new file mode 100644 index 00000000..43b719de --- /dev/null +++ b/UiQT5/desWidgetTuple7.ui @@ -0,0 +1,511 @@ + + + WidgetTuple7 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple8.ui b/UiQT5/desWidgetTuple8.ui new file mode 100644 index 00000000..6cbb52dd --- /dev/null +++ b/UiQT5/desWidgetTuple8.ui @@ -0,0 +1,547 @@ + + + WidgetTuple8 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/desWidgetTuple9.ui b/UiQT5/desWidgetTuple9.ui new file mode 100644 index 00000000..7dde5439 --- /dev/null +++ b/UiQT5/desWidgetTuple9.ui @@ -0,0 +1,583 @@ + + + WidgetTuple9 + + + + 0 + 0 + 1282 + 61 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 1 + + + 0 + + + 0 + + + 1 + + + + + 0 + + + + + 0 + + + QLayout::SetFixedSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 21 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Affiche le rapport de validation du mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/ast-green-ball.png../Editeur/icons/ast-green-ball.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 5 + + + + + + + + + + + 0 + 0 + + + + + 300 + 25 + + + + + 178 + 16777215 + + + + QFrame::NoFrame + + + <html><head/><body><p>aaa</p><p>dqsklmdqm</p></body></html> + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">(</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 805 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">,</span></p></body></html> + + + + + + + + 0 + 0 + + + + + 0 + 25 + + + + + 10000 + 16777215 + + + + Qt::StrongFocus + + + background:rgb(235,235,235); +border:0px; + + + + + + + <html><head/><body><p><span style=" font-size:14pt;">)</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 21 + 25 + + + + + 21 + 25 + + + + Qt::ClickFocus + + + Détruit le mot-clef + + + border : 0px + + + ... + + + + ../Editeur/icons/deleteRond.png../Editeur/icons/deleteRond.png + + + + 25 + 25 + + + + + + + + + + Qt::Vertical + + + + 20 + 13 + + + + + + + + + + + MonBoutonValide + QToolButton +
monBoutonValide.h
+
+ + MonLabelClic + QLabel +
monLabelClic.h
+
+ + LECustomTuple + QLineEdit +
gereListe.h
+
+
+ + +
diff --git a/UiQT5/myMain.ui b/UiQT5/myMain.ui index d4d9ec9d..045a868b 100644 --- a/UiQT5/myMain.ui +++ b/UiQT5/myMain.ui @@ -59,16 +59,7 @@ QMenuBar { QComboBox{combobox-popup:0;} - - 0 - - - 0 - - - 0 - - + 0 @@ -76,13 +67,13 @@ QMenuBar { 0 - 61 + 60 16777215 - 61 + 60 @@ -130,7 +121,7 @@ QMenuBar { 0 0 1676 - 25 + 24 @@ -218,10 +209,22 @@ QMenuBar { + + + toolBar_2 + + + TopToolBarArea + + + false + + - .. + + &Nouveau @@ -246,7 +249,8 @@ QMenuBar { - .. + + &Ouvrir @@ -258,7 +262,8 @@ QMenuBar { - .. + + Enregistrer @@ -275,7 +280,8 @@ QMenuBar { - .. + + Enregistrer sous @@ -300,7 +306,8 @@ QMenuBar { - .. + + Couper @@ -315,7 +322,8 @@ QMenuBar { - .. + + Copier @@ -330,7 +338,8 @@ QMenuBar { - .. + + Coller @@ -372,6 +381,11 @@ QMenuBar { + + + + + Lecteur documentation @@ -389,7 +403,8 @@ QMenuBar { - .. + + Supprimer @@ -412,7 +427,8 @@ QMenuBar { - .. + + Rechercher diff --git a/Validation/V_AU_MOINS_UN.py b/Validation/V_AU_MOINS_UN.py index cfe129bf..f923d94c 100644 --- a/Validation/V_AU_MOINS_UN.py +++ b/Validation/V_AU_MOINS_UN.py @@ -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 diff --git a/Validation/V_AU_PLUS_UN.py b/Validation/V_AU_PLUS_UN.py index 1286b061..4ce96d53 100644 --- a/Validation/V_AU_PLUS_UN.py +++ b/Validation/V_AU_PLUS_UN.py @@ -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): diff --git a/Validation/V_A_CLASSER.py b/Validation/V_A_CLASSER.py index 7a790d4b..5c6bc8e9 100644 --- a/Validation/V_A_CLASSER.py +++ b/Validation/V_A_CLASSER.py @@ -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 = [] diff --git a/Validation/V_ENSEMBLE.py b/Validation/V_ENSEMBLE.py index 05922189..2120ad0c 100644 --- a/Validation/V_ENSEMBLE.py +++ b/Validation/V_ENSEMBLE.py @@ -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: diff --git a/Validation/V_ETAPE.py b/Validation/V_ETAPE.py index 9287a7c4..75479958 100644 --- a/Validation/V_ETAPE.py +++ b/Validation/V_ETAPE.py @@ -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 diff --git a/Validation/V_EXCLUS.py b/Validation/V_EXCLUS.py index 3ad77d30..79431fe1 100644 --- a/Validation/V_EXCLUS.py +++ b/Validation/V_EXCLUS.py @@ -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 diff --git a/Validation/V_JDC.py b/Validation/V_JDC.py index f3c89fbb..8cc88484 100644 --- a/Validation/V_JDC.py +++ b/Validation/V_JDC.py @@ -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 """ diff --git a/Validation/V_MACRO_ETAPE.py b/Validation/V_MACRO_ETAPE.py index 197b9d4e..f3890555 100644 --- a/Validation/V_MACRO_ETAPE.py +++ b/Validation/V_MACRO_ETAPE.py @@ -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 diff --git a/Validation/V_MCBLOC.py b/Validation/V_MCBLOC.py index f6796e5d..5741e579 100644 --- a/Validation/V_MCBLOC.py +++ b/Validation/V_MCBLOC.py @@ -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 diff --git a/Validation/V_MCCOMPO.py b/Validation/V_MCCOMPO.py index b82541c6..d1cc1113 100644 --- a/Validation/V_MCCOMPO.py +++ b/Validation/V_MCCOMPO.py @@ -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 diff --git a/Validation/V_MCFACT.py b/Validation/V_MCFACT.py index ee58756c..97698e77 100644 --- a/Validation/V_MCFACT.py +++ b/Validation/V_MCFACT.py @@ -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 diff --git a/Validation/V_MCLIST.py b/Validation/V_MCLIST.py index 4324bcc3..ec5b2d98 100644 --- a/Validation/V_MCLIST.py +++ b/Validation/V_MCLIST.py @@ -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() diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 2bdeeb2d..00694c95 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -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() diff --git a/Validation/V_MEME_NOMBRE.py b/Validation/V_MEME_NOMBRE.py index 9b5cfdd0..9431bf2f 100644 --- a/Validation/V_MEME_NOMBRE.py +++ b/Validation/V_MEME_NOMBRE.py @@ -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: diff --git a/Validation/V_PRESENT_ABSENT.py b/Validation/V_PRESENT_ABSENT.py index fd2a75dd..59a93bca 100644 --- a/Validation/V_PRESENT_ABSENT.py +++ b/Validation/V_PRESENT_ABSENT.py @@ -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)]: diff --git a/Validation/V_PRESENT_PRESENT.py b/Validation/V_PRESENT_PRESENT.py index b9eab109..15378634 100644 --- a/Validation/V_PRESENT_PRESENT.py +++ b/Validation/V_PRESENT_PRESENT.py @@ -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 : diff --git a/Validation/V_PROC_ETAPE.py b/Validation/V_PROC_ETAPE.py index 5489535b..edd5b138 100644 --- a/Validation/V_PROC_ETAPE.py +++ b/Validation/V_PROC_ETAPE.py @@ -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 diff --git a/Validation/V_UN_PARMI.py b/Validation/V_UN_PARMI.py index 2410bf85..dda549f1 100644 --- a/Validation/V_UN_PARMI.py +++ b/Validation/V_UN_PARMI.py @@ -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 diff --git a/convert/autre_parseur.py b/convert/autre_parseur.py index 96073a4f..794f888a 100644 --- a/convert/autre_parseur.py +++ b/convert/autre_parseur.py @@ -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,"",'exec') diff --git a/convert/convert_TELEMAC.py b/convert/convert_TELEMAC.py index bca1ab87..59cee25c 100644 --- a/convert/convert_TELEMAC.py +++ b/convert/convert_TELEMAC.py @@ -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 index 00000000..8d9f9b8e --- /dev/null +++ b/convert/convert_XML.py @@ -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 index 00000000..52a8d37e --- /dev/null +++ b/convert/convert_dico.py @@ -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 +='),' + diff --git a/convert/convert_map.py b/convert/convert_map.py index 2a015f69..c4bad148 100644 --- a/convert/convert_map.py +++ b/convert/convert_map.py @@ -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, } diff --git a/convert/convert_pyth.py b/convert/convert_pyth.py index e05b5589..098612eb 100644 --- a/convert/convert_pyth.py +++ b/convert/convert_pyth.py @@ -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) diff --git a/convert/convert_python.py b/convert/convert_python.py index 69a3e1b9..123f3183 100644 --- a/convert/convert_python.py +++ b/convert/convert_python.py @@ -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: diff --git a/convert/parseur_python.py b/convert/parseur_python.py index 9de97d26..811c25fb 100644 --- a/convert/parseur_python.py +++ b/convert/parseur_python.py @@ -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 index 00000000..d6eb65ca --- /dev/null +++ b/convert/readXml.py @@ -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) diff --git a/generator/Formatage.py b/generator/Formatage.py index e6393a28..f08f52c5 100644 --- a/generator/Formatage.py +++ b/generator/Formatage.py @@ -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="" diff --git a/generator/generator_CARMEL3D_frequentiel.py b/generator/generator_CARMEL3D_frequentiel.py index 3d2dc77b..2bc21cae 100755 --- a/generator/generator_CARMEL3D_frequentiel.py +++ b/generator/generator_CARMEL3D_frequentiel.py @@ -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 diff --git a/generator/generator_CARMEL3D_temporel.py b/generator/generator_CARMEL3D_temporel.py index 6fa901cf..05a3d85f 100644 --- a/generator/generator_CARMEL3D_temporel.py +++ b/generator/generator_CARMEL3D_temporel.py @@ -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) diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 8545b42c..e4626dc1 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -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]: - valEficas= TelemacdicoEn[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]: - valEficas= DicoEnumCasFrToEnumCasEn[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 index 00000000..4fc98f10 --- /dev/null +++ b/generator/generator_XML.py @@ -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() + + diff --git a/generator/generator_aplat.py b/generator/generator_aplat.py index 333dd23a..251240ba 100644 --- a/generator/generator_aplat.py +++ b/generator/generator_aplat.py @@ -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 diff --git a/generator/generator_dico.py b/generator/generator_dico.py index a21b8db4..408ba954 100644 --- a/generator/generator_dico.py +++ b/generator/generator_dico.py @@ -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 - diff --git a/generator/generator_dicoImbrique.py b/generator/generator_dicoImbrique.py index 0d211794..4c201b97 100644 --- a/generator/generator_dicoImbrique.py +++ b/generator/generator_dicoImbrique.py @@ -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 diff --git a/generator/generator_map.py b/generator/generator_map.py index 074a2abe..43b4bb71 100644 --- a/generator/generator_map.py +++ b/generator/generator_map.py @@ -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 diff --git a/generator/generator_python.py b/generator/generator_python.py index 7d61b50d..1f5a043a 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -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" diff --git a/generator/generator_vers3DSalome.py b/generator/generator_vers3DSalome.py index 729c6799..d8e7f667 100644 --- a/generator/generator_vers3DSalome.py +++ b/generator/generator_vers3DSalome.py @@ -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): -- 2.30.2