From 398e78dcff725637539087c3daf7dc00b07fa398 Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Thu, 12 Nov 2020 09:18:46 +0100 Subject: [PATCH] =?utf8?q?les=20listes.=20inachev=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- InterfaceQT4/bad1.py | 222 ++++ InterfaceQT4/composimp.py | 4 +- InterfaceQT4/eficas_goWeb.py | 66 + InterfaceQT4/gereListe.py | 20 +- InterfaceQT4/monWidgetCreeUserAssd.py | 122 -- InterfaceQT4/monWidgetPlusieursBase.py | 34 +- .../monWidgetPlusieursCreeUserAssd.py | 328 ++--- InterfaceQT4/monWidgetPlusieursIntoOrdonne.py | 24 +- InterfaceQT4/monWidgetPlusieursTuple.py | 2 +- InterfaceQT4/toto.py | 1098 +++++++++++++++++ 10 files changed, 1567 insertions(+), 353 deletions(-) create mode 100644 InterfaceQT4/bad1.py create mode 100755 InterfaceQT4/eficas_goWeb.py create mode 100755 InterfaceQT4/toto.py diff --git a/InterfaceQT4/bad1.py b/InterfaceQT4/bad1.py new file mode 100644 index 00000000..978da3e7 --- /dev/null +++ b/InterfaceQT4/bad1.py @@ -0,0 +1,222 @@ +# -*- 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,sys + +from InterfaceQT4.monWidgetPlusieursCreeUserAssd import MonWidgetPlusieursCreeUserAssd + +class MonWidgetPlusieursCreeAssd (MonWidgetPlusieursBase): + + def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + MonWidgetPlusieursBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): + self.etablitOrdre() + print ('MonWidgetPlusieursBase', nom) + + + +# def setValeurs(self): + # uniquement appele a l initialisation. + # les lineEdit ont deja ete crees +# MonWidgetPlusieursBase.setValeurs(self): +# 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 +# if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() +# +# +# def ajoutLineEdit(self,valeur=None,): +# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) +# self.indexDernierLabel=self.indexDernierLabel+1 +# nomLineEdit="lineEditVal"+str(self.indexDernierLabel) +# if hasattr(self,nomLineEdit) : +# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) +# 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) +# # fait dans le init pour pouvoir passer le numero du LE mai 20 +# #nouveauLE.returnPressed.connect(self.changeValeur) +# +# setattr(self,nomLineEdit,nouveauLE) +# self.listeAffichageWidget.append(nouveauLE) +# self.etablitOrdre() +# if valeur != None : +# nouveauLE.setText(str(valeur)) +# self.dictLE[self.indexDernierLabel] = valeur +# else : +# self.dictLE[self.indexDernierLabel] = None +# # deux lignes pour que le ensureVisible fonctionne +# self.estVisible=nouveauLE +# if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) +# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) +# + 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): +# #import traceback +# #traceback.print_stack() +# 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 reconstructution 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 = self.politique.ajoutNTuple(listeComplete) +# if not validite : +# self.editor.afficheInfos(comm2,Qt.red) +# return +# +# 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,numero=None): +# #print ('monWidgetPlusieursBase changeValeur') +# self.changeUnLineEdit = False +# donneFocus=None +# derniereValeur=None +# self.listeValeursCourantes = [] +# fin=self.indexDernierLabel +# +# for i in range (1, self.indexDernierLabel+1): +# nomLineEdit="lineEditVal"+str(i) +# courant=getattr(self,nomLineEdit) +# valeur=courant.text() +# if valeur != None and valeur != "" : +# # c est ce qui est long mais permet d avoir +# # une bonne connaissance des erreurs +# # et de traiter le changede place +# 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) +# #print (self.listeValeursCourantes) +# if len(self.listeValeursCourantes) == self.monSimpDef.max : +# self.editor.afficheInfos(tr('nb max de valeurs atteint')) +# self.setValide() +# self.reaffiche() +# +# +# def leaveEventScrollArea(self,event): +# #print ('monWidgetPlusBase leaveEventScrollArea', self.changeUnLineEdit) +# if self.changeUnLineEdit : self.changeValeur(changeDePlace=False) +# QScrollArea.leaveEvent(self.scrollArea,event) +# +# +# +# diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index d41e340a..29b718a9 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -241,8 +241,8 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : if self.item.waitUserAssdEnCreation() : - from InterfaceQT4.monWidgetCreeUserAssd import MonWidgetCreeListeUserAssd - widget=MonWidgetCreeListeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) + from InterfaceQT4.monWidgetPlusieursCreeUserAssd import MonWidgetPlusieursCreeUserAssd + widget=MonWidgetPlusieursCreeUserAssd(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : from InterfaceQT4.monWidgetPlusieursBase import MonWidgetPlusieursBase widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) diff --git a/InterfaceQT4/eficas_goWeb.py b/InterfaceQT4/eficas_goWeb.py new file mode 100755 index 00000000..a17ace72 --- /dev/null +++ b/InterfaceQT4/eficas_goWeb.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2017 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Modules Python +from __future__ import absolute_import +from __future__ import print_function +try : + from builtins import str +except : pass + + +import sys,os +repIni = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..")) +ihmQTDir = os.path.join(repIni,"UiQT5") +editeurDir = os.path.join(repIni,"Editeur") +ihmDir = os.path.join(repIni,"InterfaceQT4") + +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 lanceEficas(code=None, multi=False, langue='en', labelCode=None): +#------------------------------------------------------------------- + """ + Lance l'appli EFICAS avec Ihm + """ + try : + from PyQt5.QtWidgets import QApplication + except : + print('Please, set qt environment') + return + + from Editeur import session + options = session.parse(sys.argv) + if options.code != None : code=options.code + + from InterfaceQT4.qtEficas import Appli + app = QApplication(sys.argv) + + Eficas=Appli(code=code,salome=0,multi=multi,langue=langue,labelCode=labelCode) + Eficas.show() + + res=app.exec_() + sys.exit(res) + + + diff --git a/InterfaceQT4/gereListe.py b/InterfaceQT4/gereListe.py index 30750ba5..6df0e276 100644 --- a/InterfaceQT4/gereListe.py +++ b/InterfaceQT4/gereListe.py @@ -57,7 +57,7 @@ class LECustom(QLineEdit): #print ("dans focusInEvent de LECustom") self.parentQt.aEuLeFocus=True self.aEuLeFocus=True - self.parentQt.LineEditEnCours=self + self.parentQt.lineEditEnCours=self self.parentQt.numLineEditEnCours=self.num self.parentQt.textSelected=self.text() self.setStyleSheet("border: 2px solid gray") @@ -104,6 +104,7 @@ class LECustom(QLineEdit): return self.valeur def setValeur(self,valeur): + print('uuuuuuuuuuuuuu', valeur) self.setText(valeur) @@ -188,8 +189,8 @@ class GereListe(object): if self.numLineEditEnCours == 1 : return else : numEchange=self.numLineEditEnCours-1 self.echange(self.numLineEditEnCours,numEchange) - self.LineEditEnCours.setFocus(True) - self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) + self.lineEditEnCours.setFocus(True) + self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) def basPushed(self): @@ -197,8 +198,8 @@ class GereListe(object): 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) + 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 @@ -212,10 +213,13 @@ class GereListe(object): courant2=getattr(self,nomLineEdit2) courant.setText(courant2.text()) courant2.setText(valeurAGarder) + # pour monWidgetCreeUserAssd + self.num1=num1 + self.num2=num2 self.changeValeur(changeDePlace=False) self.numLineEditEnCours=num2 - self.LineEditEnCours=courant2 - self.LineEditEnCours.setFocus(True) + self.lineEditEnCours=courant2 + self.lineEditEnCours.setFocus(True) def moinsPushed(self): # on supprime le dernier @@ -276,7 +280,7 @@ class GereListe(object): courant.setValeur(valeurADescendre) valeurADescendre=valeurAGarder self.changeValeur(changeDePlace=False) - if hasattr (self, 'LineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.LineEditEnCours) + if hasattr (self, 'lineEditEnCours') :self.scrollArea.ensureWidgetVisible(self.lineEditEnCours) def voisListePushed(self): texteValeurs="" diff --git a/InterfaceQT4/monWidgetCreeUserAssd.py b/InterfaceQT4/monWidgetCreeUserAssd.py index 3a161d4a..789f941f 100644 --- a/InterfaceQT4/monWidgetCreeUserAssd.py +++ b/InterfaceQT4/monWidgetCreeUserAssd.py @@ -59,126 +59,4 @@ class MonWidgetCreeUserAssd ( MonWidgetSimpTxt): self.parentQt.propageChange(self.objSimp.definition.type[0]) -class MonWidgetCreeListeUserAssd ( MonWidgetPlusieursBase): - def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) - - def ajout1Valeur(self,valeur=None): - if not valeur in list(self.dictValeurs.keys()): - validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) - MonWidgetPlusieursBase.ajout1Valeur(self,valeur) - - def changeValeur(self,changeDePlace=False,oblige=False,numero=None): - print ('dans changeValeur du CreeUserAssd', changeDePlace,numero) - self.changeUnLineEdit=False - if numero==None : - self.echangeDeuxValeurs() - return - valeur = self.lineEditEnEdition.text() - #print (valeur) - if numero in list(self.dictLE.keys()) : - oldValeurUserAssd = self.dictLE[numero] - if oldValeurUserAssd == None or oldValeurUserAssd == "" : enCreation = True - else : enCreation = False - else : - enCreation = True - oldValeurUserAssd = "" - #print ('je traite') - if enCreation : validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) - elif oldValeurUserAssd.nom == valeur : return - else : - validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) - nomDernierLineEdit="lineEditVal"+str(numero+1) - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - return - - if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire,Qt.red) - self.lineEditEnEdition.setText("") - return - # on relit tout pour tenir compte des lignes blanches - liste=[] - for i in range (1, self.indexDernierLabel+1): - if i == numero : liste.append(objASSD) - if i in list(self.dictLE.keys()) : - if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - self.node.item.object.state='changed' - validite=self.node.item.setValeur(liste) - self.setValide() - validite=self.node.item.isValid() - if validite : - self.dictLE[numero] = objASSD - self.node.item.rattacheUserASSD(objASSD) - if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() - nomDernierLineEdit="lineEditVal"+str(numero+1) - self.listeValeursCourantes=liste - dernier=getattr(self,nomDernierLineEdit) - dernier.setFocus() - else : - self.editor.afficheInfos('ajout impossible' ,Qt.red) - if objASSD : objASSD.supprime() - self.lineEditEnEdition.setText("") - self.parentQt.propageChange(self.objSimp.definition.type[0]) - - - def leaveEventScrollArea(self,event): - pass - - def echangeDeuxValeurs(self): - self.changeUnLineEdit=False - obj1=self.dictLE[self.num1] - obj2=self.dictLE[self.num2] - self.dictLE[self.num1]=obj2 - self.dictLE[self.num2]=obj1 - nomLineEdit=self.nomLine+str(self.num1) - courant=getattr(self,nomLineEdit) - if self.dictLE[self.num1] != None : courant.setText(self.dictLE[self.num1].nom) - else : courant.setText("") - nomLineEdit=self.nomLine+str(self.num2) - courant=getattr(self,nomLineEdit) - if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom) - else : courant.setText("") - liste=[] - for i in list(self.dictLE.keys()): - if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - validite=self.node.item.setValeur(liste) - courant.setFocus(True) - - def descendLesLignes(self): - self.changeUnLineEdit=False - if self.numlineEditEnCours==self.indexDernierLabel : return - nouvelleValeur=None - for i in range (self.numlineEditEnCours+1, self.indexDernierLabel): - valeurAGarder=self.dictLE[i] - self.dictLE[i]=nouvelleValeur - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) - else : courant.setText("") - nouvelleValeur=valeurAGarder - - - def moinsPushed(self): - if self.numlineEditEnCours == 0 : return - if self.indexDernierLabel == 0 : return - objASSD=self.dictLE[self.numlineEditEnCours] - if objASSD : objASSD.supprime() - self.lineEditEnEdition.setText("") - - #self.dictLE.pop(self.numlineEditEnCours) - for i in range (self.numlineEditEnCours, self.indexDernierLabel-1): - self.dictLE[i]= self.dictLE[i+1] - nomLineEdit=self.nomLine+str(i) - courant=getattr(self,nomLineEdit) - if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) - else : courant.setText("") - nomLineEdit=self.nomLine+str(self.indexDernierLabel) - courant=getattr(self,nomLineEdit) - courant.setText("") - self.dictLE[self.indexDernierLabel]=None - liste=[] - for i in list(self.dictLE.keys()): - if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) - validite=self.node.item.setValeur(liste) diff --git a/InterfaceQT4/monWidgetPlusieursBase.py b/InterfaceQT4/monWidgetPlusieursBase.py index e35b243c..f8d25934 100644 --- a/InterfaceQT4/monWidgetPlusieursBase.py +++ b/InterfaceQT4/monWidgetPlusieursBase.py @@ -55,24 +55,24 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) self.indexDernierLabel=0 self.numLineEditEnCours=0 self.listeAffichageWidget=[] + self.dictLE={} 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)) + 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") @@ -120,6 +120,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) 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)) + self.dictLE[index]=val else : self.ajoutLineEdit(val) index=index+1 @@ -147,7 +148,11 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) setattr(self,nomLineEdit,nouveauLE) self.listeAffichageWidget.append(nouveauLE) self.etablitOrdre() - if valeur != None : nouveauLE.setText(str(valeur)) + if valeur != None : + nouveauLE.setText(str(valeur)) + self.dictLE[self.indexDernierLabel] = valeur + else : + self.dictLE[self.indexDernierLabel] = None # deux lignes pour que le ensureVisible fonctionne self.estVisible=nouveauLE if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) @@ -258,6 +263,7 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe,GerePlie) self.ajoutNValeur(lval[1:]) self.listeValeursCourantes = [] + for i in range (1, self.indexDernierLabel+1): nomLineEdit="lineEditVal"+str(i) courant=getattr(self,nomLineEdit) diff --git a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py index a4f4577f..78226fb9 100644 --- a/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py +++ b/InterfaceQT4/monWidgetPlusieursCreeUserAssd.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2007-2017 EDF R&D +# Copyright (C) 2007-2020 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 @@ -19,202 +19,138 @@ # # Modules Python from __future__ import absolute_import -import types,os,sys +import types,os -from InterfaceQT4.monWidgetPlusieursCreeUserAssd import MonWidgetPlusieursCreeUserAssd -class MonWidgetPlusieursCreeAssd (MonWidgetPlusieursBase): +# Modules Eficas +from Extensions.i18n import tr +from .monWidgetSimpTxt import MonWidgetSimpTxt +from .monWidgetPlusieursBase import MonWidgetPlusieursBase +from copy import copy,deepcopy +from PyQt5.QtCore import Qt + + +class MonWidgetPlusieursCreeUserAssd ( MonWidgetPlusieursBase): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - MonWidgetPlusieursBase.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - print ('MonWidgetPlusieursBase', nom) -# -# -# -# def setValeurs(self): -# # uniquement appele a l initialisation. -# # les lineEdit ont deja ete crees -# 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 -# if self.indexDernierLabel < self.monSimpDef.max : self.ajoutLineEdit() -# -# -# def ajoutLineEdit(self,valeur=None,): -# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) -# self.indexDernierLabel=self.indexDernierLabel+1 -# nomLineEdit="lineEditVal"+str(self.indexDernierLabel) -# if hasattr(self,nomLineEdit) : -# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) -# 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) -# # fait dans le init pour pouvoir passer le numero du LE mai 20 -# #nouveauLE.returnPressed.connect(self.changeValeur) -# -# setattr(self,nomLineEdit,nouveauLE) -# self.listeAffichageWidget.append(nouveauLE) -# self.etablitOrdre() -# if valeur != None : -# nouveauLE.setText(str(valeur)) -# self.dictLE[self.indexDernierLabel] = valeur -# else : -# self.dictLE[self.indexDernierLabel] = None -# # deux lignes pour que le ensureVisible fonctionne -# self.estVisible=nouveauLE -# if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne) -# #print ('ajoutLineEdit, monWidgetPlusieursBase', self.indexDernierLabel) -# -# 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): -# #import traceback -# #traceback.print_stack() -# 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 reconstructution 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 = self.politique.ajoutNTuple(listeComplete) -# if not validite : -# self.editor.afficheInfos(comm2,Qt.red) -# return -# -# 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,numero=None): -# #print ('monWidgetPlusieursBase changeValeur') -# self.changeUnLineEdit = False -# donneFocus=None -# derniereValeur=None -# self.listeValeursCourantes = [] -# fin=self.indexDernierLabel -# -# for i in range (1, self.indexDernierLabel+1): -# nomLineEdit="lineEditVal"+str(i) -# courant=getattr(self,nomLineEdit) -# valeur=courant.text() -# if valeur != None and valeur != "" : -# # c est ce qui est long mais permet d avoir -# # une bonne connaissance des erreurs -# # et de traiter le changede place -# 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) -# #print (self.listeValeursCourantes) -# if len(self.listeValeursCourantes) == self.monSimpDef.max : -# self.editor.afficheInfos(tr('nb max de valeurs atteint')) -# self.setValide() -# self.reaffiche() -# -# -# def leaveEventScrollArea(self,event): -# #print ('monWidgetPlusBase leaveEventScrollArea', self.changeUnLineEdit) -# if self.changeUnLineEdit : self.changeValeur(changeDePlace=False) -# QScrollArea.leaveEvent(self.scrollArea,event) -# -# -# -# + MonWidgetPlusieursBase. __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande) + self.etablitOrdre() + + def ajout1Valeur(self,valeur=None): + if not valeur in list(self.dictValeurs.keys()): + validite,commentaire=self.objSimp.creeUserASSDetSetValeur(valeur) + MonWidgetPlusieursBase.ajout1Valeur(self,valeur) + + #def changeValeur(self,changeDePlace=False,oblige=False,numero=None): + def changeValeur(self,changeDePlace=False,oblige=False ): + print ('dans changeValeur du CreeUserAssd', changeDePlace, self.numLineEditEnCours) + self.changeUnLineEdit=False + valeur = self.lineEditEnCours.text() + if self.numLineEditEnCours in list(self.dictLE.keys()) : + oldValeurUserAssd = self.dictLE[self.numLineEditEnCours] + if oldValeurUserAssd == None or oldValeurUserAssd == "" : enCreation = True + else : enCreation = False + else : + enCreation = True + oldValeurUserAssd = "" + if enCreation : validite, objASSD, commentaire=self.objSimp.creeUserASSD(valeur) + elif oldValeurUserAssd.nom == valeur : self.selectionneNext();return + else : + validite, commentaire=self.node.item.renommeSdCreeDsListe(oldValeurUserAssd,valeur) + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + return + + if commentaire != "" and not validite: + self.editor.afficheInfos(commentaire,Qt.red) + self.lineEditEnCours.setText("") + return + # on relit tout pour tenir compte des lignes blanches + liste=[] + for i in range (1, self.indexDernierLabel+1): + if i == self.numLineEditEnCours : liste.append(objASSD) + if i in list(self.dictLE.keys()) : + if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + self.node.item.object.state='changed' + validite=self.node.item.setValeur(liste) + self.setValide() + validite=self.node.item.isValid() + if validite : + self.dictLE[self.numLineEditEnCours] = objASSD + self.node.item.rattacheUserASSD(objASSD) + if self.indexDernierLabel < len(liste) : self.ajoutLineEdit() + nomDernierLineEdit="lineEditVal"+str(self.numLineEditEnCours+1) + self.listeValeursCourantes=liste + dernier=getattr(self,nomDernierLineEdit) + dernier.setFocus() + else : + self.editor.afficheInfos('ajout impossible' ,Qt.red) + if objASSD : objASSD.supprime() + self.lineEditEnCours.setText("") + self.parentQt.propageChange(self.objSimp.definition.type[0]) + self.selectionneNext() + + def selectionneNext(self): + print ('a programmer') + + def leaveEventScrollArea(self,event): + pass + + def echangeDeuxValeurs(self): + self.changeUnLineEdit=False + obj1=self.dictLE[self.num1] + obj2=self.dictLE[self.num2] + self.dictLE[self.num1]=obj2 + self.dictLE[self.num2]=obj1 + nomLineEdit=self.nomLine+str(self.num1) + courant=getattr(self,nomLineEdit) + if self.dictLE[self.num1] != None : courant.setText(self.dictLE[self.num1].nom) + else : courant.setText("") + nomLineEdit=self.nomLine+str(self.num2) + courant=getattr(self,nomLineEdit) + if self.dictLE[self.num2] != None : courant.setText(self.dictLE[self.num2].nom) + else : courant.setText("") + liste=[] + for i in list(self.dictLE.keys()): + if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + validite=self.node.item.setValeur(liste) + courant.setFocus(True) + + def descendLesLignes(self): + self.changeUnLineEdit=False + if self.numlineEditEnCours==self.indexDernierLabel : return + nouvelleValeur=None + for i in range (self.numlineEditEnCours+1, self.indexDernierLabel): + valeurAGarder=self.dictLE[i] + self.dictLE[i]=nouvelleValeur + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if nouvelleValeur != None : courant.setText(nouvelleValeur.nom) + else : courant.setText("") + nouvelleValeur=valeurAGarder + + + def moinsPushed(self): + if self.numlineEditEnCours == 0 : return + if self.indexDernierLabel == 0 : return + objASSD=self.dictLE[self.numlineEditEnCours] + if objASSD : objASSD.supprime() + self.lineEditEnEdition.setText("") + + #self.dictLE.pop(self.numlineEditEnCours) + for i in range (self.numlineEditEnCours, self.indexDernierLabel-1): + self.dictLE[i]= self.dictLE[i+1] + nomLineEdit=self.nomLine+str(i) + courant=getattr(self,nomLineEdit) + if self.dictLE[i] != None : courant.setText(self.dictLE[i].nom) + else : courant.setText("") + nomLineEdit=self.nomLine+str(self.indexDernierLabel) + courant=getattr(self,nomLineEdit) + courant.setText("") + self.dictLE[self.indexDernierLabel]=None + liste=[] + for i in list(self.dictLE.keys()): + if self.dictLE[i] != None and self.dictLE[i] != "" : liste.append(self.dictLE[i]) + validite=self.node.item.setValeur(liste) + diff --git a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py index 2668376e..10c0407c 100644 --- a/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py +++ b/InterfaceQT4/monWidgetPlusieursIntoOrdonne.py @@ -65,15 +65,15 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere if len(self.listeAAfficher) < 20 : self.frameRecherche2.close() if len(self.listeAAfficher) < 20 : self.frameRecherche.close() self.adjustSize() - 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) + #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) icon=QIcon(self.repIcon+"/MoinsBleu.png") self.RBMoins.setIcon(icon) icon=QIcon(self.repIcon+"/PlusBleu.png") @@ -109,7 +109,11 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere return self.filtreListe() if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400) - else : self.setMinimumHeight(len(self.listeAAfficher)*30) + else : + if self.monSimpDef.min > len(self.listeAAfficher) : self.setMinimumHeight(self.monSimpDef.min*30+30) + elif self.monSimpDef.max > len(self.listeAAfficher) : self.setMinimumHeight(400) + else self.setMinimumHeight(len(self.listeAAfficher)*30+30) + self.adjustSize() self.politique=PolitiquePlusieurs(self.node,self.editor) for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i) diff --git a/InterfaceQT4/monWidgetPlusieursTuple.py b/InterfaceQT4/monWidgetPlusieursTuple.py index c1c2d0ed..3d1b7889 100644 --- a/InterfaceQT4/monWidgetPlusieursTuple.py +++ b/InterfaceQT4/monWidgetPlusieursTuple.py @@ -404,7 +404,7 @@ class MonWidgetPlusieursTuple(Feuille,GereListe): courant2.setText(valeurAGarder) self.changeValeur(changeDePlace=True) self.numLineEditEnCours=num2 - self.LineEditEnCours=courant2 + self.lineEditEnCours=courant2 courant2.lineEditVal_1.setFocus(True) def ajoutNValeur(self,liste): diff --git a/InterfaceQT4/toto.py b/InterfaceQT4/toto.py new file mode 100755 index 00000000..4eab0f70 --- /dev/null +++ b/InterfaceQT4/toto.py @@ -0,0 +1,1098 @@ +# -*- 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 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,appliEficas,fichier = None, jdc = None, units = None, include=0 ): + #-----------------------------------------------------------------------------------# + # paticularisee avec Ihm + + if debug : print ('dans le init de JDCEditorSsIhm') + self.appliEficas = appliEficas + self.fichier = fichier + self.fichierComplet = fichier + self.extensionFichier = os.path.splitext(fichier)[1] + self.jdc = jdc + self.first = True + self.jdc_item = None + self.dicoNouveauxMC = {} + self.dicoNouveauxFact = {} + self.dict_reels = {} + self.liste_simp_reel = [] + + if self.appliEficas != 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 + + + 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.fichierCata == None : return #Sortie Salome + self.titre=self.readercata.titre + + self.formatFichierOut = self.appliEficas.formatFichierOut + self.formatFichierIn = self.appliEficas.formatFichierIn + + 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 + try : self.XMLReader=convert.plugins['xml']() + except : self.XMLReader=None + try : self.XMLgenerator=generator.plugins['xml']() + except : self.XMLgenerator=None + + + if self.formatFichierOut in generator.plugins.keys(): + self.generator = generator.plugins[self.formatFichierOut]() + + + 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.editor = self + self.jdc.lang = self.appliEficas.langue + self.jdc.aReafficher=False + txt_exception = None + if not jdc: + if self.extensionFichier == '.xml' : + if self.appliEficas.maConfiguration.withXSD: self.jdc.analyseXML() + else : print ('run MDM with -x option (MDM for XML)'); exit() + else : 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 = str(fn) + jdcName=os.path.basename(fn) + + # Il faut convertir le contenu du fichier en fonction du format + formatIn=self.appliEficas.formatFichierIn + if self.extensionFichier == '.xml' and self.appliEficas.maConfiguration.withXSD: formatIn='xml' + if formatIn in convert.plugins: + # Le convertisseur existe on l'utilise + p=convert.plugins[formatIn]() + p.readfile(fn) + if p.text=="" : self.nouveau=1 + #print ('PNPN --> CIST a faire') + #print ('PNPN --> XML a faire') + if formatIn != 'xml': + 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.formatFichierIn) + return None + + CONTEXT.unsetCurrentStep() + + #jdc=self.readercata.cata[0].JdC(procedure=text, + jdc=self.readercata.cata.JdC(procedure=text, + appliEficas=self.appliEficas, + 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,'TEXTE_NEW_JDC') : texte=self.readercata.cata.TEXTE_NEW_JDC + + + jdc=self.readercata.cata.JdC( procedure =texte, + appliEficas=self.appliEficas, + cata=self.readercata.cata, + cata_ord_dico=self.readercata.cata_ordonne_dico, + rep_mat=self.maConfiguration.rep_mat + ) + + jdc.lang = self.appliEficas.langue + if units is not None: + jdc.recorded_units=units + jdc.old_recorded_units=units + # chgt le 15/10/19 + # Attention positionne contexte ? + # est ce qu on ne doit pas changer le format en Accas si on vient d accas ? + jdc.editor=self + 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="", + appliEficas=self.appliEficas, + cata=self.readercata.cata, + cata_ord_dico=self.readercata.cata_ordonne_dico, + rep_mat=self.maConfiguration.rep_mat, + ) + jaux.editor=self + jaux.analyse() + + J=JdC_aux( procedure="", + appliEficas=self.appliEficas, + cata=self.readercata.cata, + cata_ord_dico=self.readercata.cata_ordonne_dico, + jdc_pere=jaux, + rep_mat=self.maConfiguration.rep_mat, + ) + J.editor=self + 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.formatFichierIn in convert.plugins : + # Le convertisseur existe on l'utilise + p=convert.plugins[self.formatFichierIn]() + 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.formatFichierIn) + 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 + if os.path.isfile(self.fichier): + f=open(self.fichier,'r') + texteSource=f.read() + f.close() + self._viewText(texteSource, "JDC_SOURCE") + else : + self._viewText("file doesn't exist", "JDC_SOURCE") + + + #-----------------------# + def viewJdcPy(self): + #-----------------------# + strSource = str( self.getTextJDC(self.formatFichierOut) ) + self._viewText(strSource, "JDC_RESULTAT") + + #-----------------------# + def viewJdcRapport(self): + #-----------------------# + # on ajoute les regles + strRapport = str( self.jdc.report() ) + self._viewText(strRapport, "JDC_RAPPORT") + + #-----------------------# + def viewJdcRegles(self): + #-----------------------# + # on ajoute les regles + texte_global, test_global = self.jdc.verifRegles() + self._viewText(texte_global, "JDC_REGLES") + + #-----------------------# + def getJdcRapport(self): + #-----------------------# + # on ajoute les regles + strRapport = str( 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 = str(fn) + + if txt == None : + txt = self.getTextJDC(self.formatFichierOut,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: + print('Sauvegarde du Fichier', 'Le fichier'+str(fn) + 'n a pas pu etre sauvegarde :' , str(why)) + self.afficheInfos('Le fichier'+str(fn) + 'n a pas pu etre sauvegarde ' , 'red') + return 0 + + + #-----------------------------------------------------------# + def getTextJDC(self,format = None,pourRun=0,formatLigne="beautifie"): + #-----------------------------------------------------------# + if self.code == "MAP" and not(format in generator.plugins): format = "MAP" + if format == None : format = self.formatFichierOut + 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,appliEficas=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" , 'Dictionnaire Imbrique' ),'red') + return "" + + #-----------------------------------------# + def chercheGroupes(self): + #-----------------------------------------# + listeMA,listeNO=self.getTextJDC("GroupMA") + return listeMA,listeNO + + #-----------------------------------------# + def chercheDico(self): + #-----------------------------------------# + dicoCourant={} + format = self.appliEficas.formatFichierOut + 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,appliEficas=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 self.jdc.cata.modeleMetier and self.jdc.isValid(): + if self.generator != self.XMLgenerator : + self.XMLgenerator.gener(self.jdc) + self.XMLgenerator.writeDefault(fichier) + 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.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 + debug=False + if debug : print ('ajoutMC', etape,MCFils,valeurs,listeAvant) + ouChercher=etape + if debug : print (ouChercher) + for mot in listeAvant : + ouChercher=ouChercher.getChild(mot,restreint="oui") + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC == None : monMC = ouChercher.addEntite(MCFils) + monMC.valeur=valeurs + monMC.val=valeurs + monMC.state='changed' + monMC.isvalid() + return 1 + + #--------------------------------------------------------# + def ajoutMCinMCFactUnique(self,etape,MCFils,valeurs,listeAvant=()): + # Attention si +sieursMCFACT + #--------------------------------------------------------# + # dans le JDC + debug=False + if debug : print ('ajoutMC', etape,MCFils,valeurs,listeAvant) + ouChercher=etape + if debug : print (ouChercher) + for mot in listeAvant : + ouChercher=ouChercher.getChild(mot,restreint="oui") + # Attention si +sieursMCFACT + ouChercher=ouChercher[0] + if debug : print (ouChercher) + monMC=ouChercher.getChild(MCFils,restreint="oui") + if monMC == None : monMC = ouChercher.addEntite(MCFils) + monMC.valeur=valeurs + monMC.val=valeurs + monMC.state='changed' + monMC.isValid() + return 1 + + #----------------------------------------------# + def ajoutMCFact(self,etape,MCFils,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.isvalid() + + #-----------------------------------------------------------------# + def setValeurMCSimpInEtape(self,etape,listeAvant,valeur): + #-----------------------------------------------------------------# + # pour VP + monObj=etape + for mot in listeAvant : + monObj=monObj.getChild(mot,restreint="oui") + if monObj==None : return False + if monObj == None : return False + if monObj.valeur != valeur : + # PNPN le setValeur fait des bugs --> pourquoi + #monObj.setValeur(valeur) + monObj.valeur=valeur + monObj.isValid() + return True + + #-------------------------------------------------# + def getValeur(self,nomEtape,MCFils,listeAvant=()): + #-------------------------------------------------# + # dans le JDC + + debug=0 + 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.getChild(mot,restreint="oui") + if debug : print (mot, ouChercher) + if ouChercher==None : return None + monMC=ouChercher.getChild(MCFils,restreint="oui") + if debug : print ('monMC', monMC) + if monMC== None : return None + return monMC.valeur + + #-------------------------------------------------# + def getMCDsEtape(self,etape,MCFils,listeAvant=()): + #-------------------------------------------------# + # dans le JDC + + if etape==None : return None + ouChercher=etape + debug=0 + for mot in listeAvant : + ouChercher=ouChercher.getChild(mot,restreint="oui") + if debug : print (mot, ouChercher) + if ouChercher==None : return None + monMC=ouChercher.getChild(MCFils,restreint="oui") + if debug : print ('monMC', monMC) + return monMC + + #-----------------------------------------------------------# + 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.getChild(mot,restreint="oui") + #print (mot, ouChercher) + if ouChercher==None : return None + monMC=ouChercher.getChild(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.getChild(mot,restreint="oui") + if ouChercher==None : return + monMC=ouChercher.getChild(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.getChild(mot,restreint="oui") + # Le mot clef n est pas la + except : return 0 + try : + monMC=ouChercher.getChild(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,etape,listeMC,valeurs): + #------------------------------------------------# + # dans le MDD + #definitionEtape=getattr(self.jdc.cata[0],nomEtape) + #definitionEtape=getattr(self.jdc.cata,nomEtape) + print ( 'changeIntoDefMC ',etape,listeMC,valeurs) + ouChercher=getattr(self.jdc.cata,etape.nom) + + #if len(listeMC) > 1 : + # for mc in listeMC[0:-1]: + # mcfact=ouChercher.entites[mc] + # ouChercher=mcfact + #mcAccas=ouChercher.entites[listeMC[-1]] + + for mc in listeMC : + mcAccas=ouChercher.entites[mc] + ouChercher=mcAccas + if ouChercher == None : return 0 + + if hasattr(mcAccas,'into') : oldValeurs=mcAccas.into + else : oldValeurs=None + + if oldValeurs==valeurs : return 1 + 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.getChild(mot,restreint="oui") + if ouChercher==None : return + MCFils=listeMC[-1] + monMC=ouChercher.getChild(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') -- 2.39.2