From 7bfbfd9c79b8a649341e79aa4153eeef1f4b9a68 Mon Sep 17 00:00:00 2001 From: PASCALE NOYRET Date: Wed, 8 Jun 2022 17:39:08 +0200 Subject: [PATCH] 1ere version Ihm incertitudes --- Ihm/I_JDC.py | 4 ++++ Ihm/I_MCCOMPO.py | 6 +++++- Ihm/I_MCLIST.py | 4 ++++ Ihm/I_MCSIMP.py | 25 +++++++++++++++++-------- InterfaceQT4/browser.py | 2 +- InterfaceQT4/editorSsIhm.py | 10 +++++----- InterfaceQT4/feuille.py | 15 +++++++++++---- Noyau/N_MCSIMP.py | 1 - 8 files changed, 47 insertions(+), 20 deletions(-) diff --git a/Ihm/I_JDC.py b/Ihm/I_JDC.py index 395f2625..9488009f 100644 --- a/Ihm/I_JDC.py +++ b/Ihm/I_JDC.py @@ -494,6 +494,9 @@ class JDC(I_OBJECT.OBJECT): #PN correction de bugs #print ('suppEntite', etape.nom) if etape not in self.etapes: return 0 + #print ('suppEntite', etape.nom) + if etape.nom == 'ExpressionIncertitude' : + etape.delieIncertitude() self.initModif() index_etape=self.etapes.index(etape) @@ -501,6 +504,7 @@ class JDC(I_OBJECT.OBJECT): #etape.delObjPyxb() self.etapes.remove(etape) + #print ('suppEntite', etape.nom) if etape.niveau is not self: # Dans ce cas l'etape est enregistree dans un niveau # Il faut la desenregistrer diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index c322aa8c..c1cb22d6 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -218,11 +218,15 @@ class MCCOMPO(I_OBJECT.OBJECT): Retourne 1 si la suppression a pu etre effectuee, Retourne 0 dans le cas contraire """ - #print ('suppEntite', self.nom,objet.nom) + #print ('suppEntite de MCCOMPO', self.nom,objet) if not objet in self.mcListe: # Impossible de supprimer objet. Il n'est pas dans mcListe return 0 + if objet.nom == 'VariableProbabiliste' : + if objet[0].variableDeterministe : + objet[0].variableDeterministe.variableProbabiliste = None + objet[0].variableDeterministe.associeVariableUQ = False self.initModif() objet.delObjPyxb() objet.deleteRef() diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index e52a5b5c..ea3b4ba6 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -84,6 +84,10 @@ class MCList: obj.supprime() self.etape.modified() self.finModif() + if obj.nom == 'VariableProbabiliste' : + if obj.variableDeterministe : + obj.variableDeterministe.variableProbabiliste = None + obj.variableDeterministe.associeVariableUQ = False return 1 def addEntite(self,obj,pos=None): diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index ac9dd0be..072e15cd 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -360,7 +360,7 @@ class MCSIMP(I_OBJECT.OBJECT): if self.definition.position == 'global' : self.etape.deepUpdateConditionBloc() elif self.definition.position == 'reCalculeEtape' : - print ('je passe par la pour ', self.nom) + #print ('je passe par la pour ', self.nom) self.etape.deepUpdateConditionBloc() self.etape.demandeRedessine() elif self.definition.position == 'global_jdc' : @@ -692,8 +692,8 @@ class MCSIMP(I_OBJECT.OBJECT): if etape : etape.mc_globaux[self.nom]=self etape.doitEtreRecalculee=True - print ('je mets doitEtreRecalculee = True avec', self.nom ,' pour ', etape.nom) - print ('j ajoute au mc_globaux') + #print ('je mets doitEtreRecalculee = True avec', self.nom ,' pour ', etape.nom) + #print ('j ajoute au mc_globaux') elif self.definition.position == 'global_jdc' : if self.jdc: self.jdc.mc_globaux[self.nom]=self @@ -862,7 +862,7 @@ class MCSIMP(I_OBJECT.OBJECT): if (hasattr (val, 'enleveUtilisePar')) : val.enleveUtilisePar(self) def updateAutresMotsClefs(self): - print ('updateAutresMotsClefs') + #print ('updateAutresMotsClefs') for (nomMC, Xpath) in self.definition.metAJour : exp=Xpath+'.getChild("'+nomMC+'")' try : @@ -882,7 +882,7 @@ class MCSIMP(I_OBJECT.OBJECT): for leMotCle in listeMotsClefsAppel: leMotCle.demandeRedessine() - print ('fin updateAutresMotsClefs') + #print ('fin updateAutresMotsClefs') def UQPossible(self): # Plus facile de mettre cette methode dans le SIMP, car on connait son nom @@ -896,6 +896,7 @@ class MCSIMP(I_OBJECT.OBJECT): return self.associeVariableUQ def lieVariableUQ(self): + #print ('je passe dans lieVariableUQ') self.associeVariableUQ=True etapeIncertitude=self.jdc.getEtapesByName('ExpressionIncertitude') if etapeIncertitude == [] : @@ -905,11 +906,13 @@ class MCSIMP(I_OBJECT.OBJECT): incertitudeInput = etapeIncertitude.getChildOrChildInBloc('Input') nodeVariableProbabiliste=incertitudeInput.node.appendChild('VariableProbabiliste', 'first') # le buildChildren a une mcliste --> on est oblige de mettre first mais en fait c est last + # PN a cooriger if nodeVariableProbabiliste.item.object.nature=='MCFACT' : newVariable=nodeVariableProbabiliste.item.object else : newVariable=nodeVariableProbabiliste.item.object[-1] newVariable.variableDeterministe = self + self.variableProbabiliste=newVariable itemModelVariable=newVariable.getChild('ModelVariable') itemModelVariable.setValeur(self.nom) @@ -918,11 +921,9 @@ class MCSIMP(I_OBJECT.OBJECT): itemConsigne.setValeur('la valeur entrée pour {} est {}'.format(self.nom, self.valeur)) itemXPath=newVariable.getChild('xPathVariable') - #itemXPath.reparent(newVariable) itemXPath.setValeur(self.getGenealogiePrecise()) #print (itemXPath) - self.variableProbabiliste=nodeVariableProbabiliste.item self.definition.siValide = self.changeValeursRefUQ def changeValeursRefUQ (self, motClef): @@ -933,5 +934,13 @@ class MCSIMP(I_OBJECT.OBJECT): def delieVariableUQ(self): - print ('pas encore programme') + self.associeVariableUQ=False + # Attention, on n a pas le MCLIST mais le MCLIST(0) dans la variableProbabiliste + # si self est le seul alors on enleve la MCLIST du MCCOMPO + mcVP=self.variableProbabiliste.parent.getChild('VariableProbabiliste') + if len(mcVP) == 1 : + ret = self.variableProbabiliste.parent.suppEntite(mcVP) + else : + ret = mcVP.suppEntite(self.variableProbabiliste) + return ret diff --git a/InterfaceQT4/browser.py b/InterfaceQT4/browser.py index edfe9c5e..fcf62bba 100644 --- a/InterfaceQT4/browser.py +++ b/InterfaceQT4/browser.py @@ -152,7 +152,7 @@ class JDCTree( QTreeWidget,GereRegles ): def handleOnItem(self,item,int): #---------------------------------- - print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText()) + #print ("je passe dans handleOnItem pour ",self, item.item.nom, item, item.item, item.item.getLabelText()) from InterfaceQT4 import composimp self.inhibeExpand = True diff --git a/InterfaceQT4/editorSsIhm.py b/InterfaceQT4/editorSsIhm.py index 78763b57..4e45be11 100755 --- a/InterfaceQT4/editorSsIhm.py +++ b/InterfaceQT4/editorSsIhm.py @@ -142,12 +142,12 @@ class JDCEditorSsIhm : self.nouveau=0 if self.fichier is not None: # fichier jdc fourni if jdc==None : - print ('PNPN : chgt try en if') - #try : - if 1 : + #print ('PNPN : chgt try en if') + try : + #if 1 : self.jdc = self.readFile(self.fichier) - #except : - # print ("mauvaise lecture du fichier") + except : + print ("mauvaise lecture du fichier") if self.salome : try : self.appliEficas.addJdcInSalome( self.fichier) except : print ("mauvais enregistrement dans Salome") diff --git a/InterfaceQT4/feuille.py b/InterfaceQT4/feuille.py index 8923b2f1..4d075a37 100644 --- a/InterfaceQT4/feuille.py +++ b/InterfaceQT4/feuille.py @@ -26,7 +26,7 @@ except : import types,os import traceback -from PyQt5.QtWidgets import QToolButton ,QWidget +from PyQt5.QtWidgets import QToolButton ,QWidget, QMessageBox from PyQt5.QtGui import QFont, QFontMetrics, QFontInfo, QPalette from PyQt5.QtCore import Qt @@ -38,6 +38,7 @@ from .qtSaisie import SaisieValeur nomMax=230 # empirique les metrics ne fonctionnent pas + # ---------------------------------------------------------------------- # class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): # --------------------------------------------------------------------- # @@ -100,13 +101,19 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): self.checkBoxUQ.close() return if not self.objSimp.UQPossible() : return + if hasattr(self,'checkBoxUQ') : + if self.objSimp.isUQActivate() : self.checkBoxUQ.setChecked(True) + else : self.checkBoxUQ.setChecked(False) self.checkBoxUQ.toggled.connect(self.setEnabledUQ) - if self.objSimp.isUQActivate() and hasattr(self,'checkBoxUQ') : - self.checkBoxUQ.setChecked(True) def setEnabledUQ(self) : if self.checkBoxUQ.isChecked() : self.objSimp.lieVariableUQ() - else : self.objSimp.delieVariableUQ() + else : + ret = self.objSimp.delieVariableUQ() + if not ret : QMessageBox.warning( self,tr( "Variable associée non trouvée "),tr( "prevenez la maintenance")) + else : + etape=self.objSimp.getJdcRoot().getEtapesByName('ExpressionIncertitude')[0] + etape.node.buildChildren() def setNom(self): self.debutToolTip="" diff --git a/Noyau/N_MCSIMP.py b/Noyau/N_MCSIMP.py index 49a49fee..81918a1a 100644 --- a/Noyau/N_MCSIMP.py +++ b/Noyau/N_MCSIMP.py @@ -317,7 +317,6 @@ class MCSIMP(N_OBJECT.OBJECT): def getUserAssdPossible(self): debug=False - if self.nom == 'ApplyOn' : debug = True if debug : print ('____________', self, self.nom) classeAChercher = self.definition.type if debug : print ('____________', classeAChercher) -- 2.39.2