From bdab44a6219e1f4703ae1120c9d932c334442b55 Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Wed, 27 Oct 2021 17:31:50 +0200 Subject: [PATCH] suppression/ajout pas bien testes pour les MCLISTs --- Ihm/I_MCSIMP.py | 4 +-- InterfaceWeb/browser.py | 60 +++++++++++++++++++++------------ Noyau/N_MCBLOC.py | 10 ++++++ WebTest/cata_essai.py | 16 +++++++-- testFlask/connectEficas.py | 69 ++++++++++++++++++++++++++------------ 5 files changed, 112 insertions(+), 47 deletions(-) diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 20366e5a..efb3e9ad 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -80,13 +80,13 @@ class MCSIMP(I_OBJECT.OBJECT): def getDicoForFancy(self): #print ('MCSIMP getDicoForFancy ', self) monDico={} - #leTexte="" + self.nom + ' ' + str(self.val) + "" monDico['title']=self.nom monDico['key']=self.idUnique - if self.val != None : monDico['wValue']=str(self.val) + if self.valeur != None : monDico['wValue']=str(self.valeur) else : monDico['wValue']='' monDico['classeAccas']=self.nature monDico['validite']=self.getValid() + if monDico['validite']== None : monDico['validite']=self.isValid() monDico['max']=self.definition.max monDico['min']=self.definition.min monDico['into']=self.definition.into diff --git a/InterfaceWeb/browser.py b/InterfaceWeb/browser.py index a47972bd..ca9a8c9e 100644 --- a/InterfaceWeb/browser.py +++ b/InterfaceWeb/browser.py @@ -110,15 +110,12 @@ class JDCNode(): #if ancien and not itemExpand : self.plie = True #if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False - #from . import compomclist #ajoutAuParentduNoeud=0 - # PN a revoir - #from . import compobloc - #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) + from . import compobloc + from . import compomclist + while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) : + self.treeParent=self.treeParent.vraiParent #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)) : @@ -166,10 +163,10 @@ class JDCNode(): def onAdd(self,ajout): #----------------------- - print ('on add', '________ ajout', ajout , ' dans ', self.item.nom) + #print ('on add', '________ ajout', ajout , ' dans ', self.item.nom) self.buildChildren() - # si on a un copie multiple + # si on a un copie multiple if len(ajout) > 1 : self.editor.connecteur.toWebApp('remplacementNode',self.item.remplaceId,self.item.idUnique(),self.item.getDicoForFancy()) return @@ -178,18 +175,31 @@ class JDCNode(): pos = 0; trouve=0 for c in self.children : if c.item._object == mcAjoute : - pos+=1 trouve=1 break + pos+=1 if not trouve : print ('souci au add *************************') - if self.children[pos].item == 'MCBLOC' : laListe=self.children[pos].item.getDicoForFancy() - else : laListe=(self.children[pos].item.getDicoForFancy()) - print (' appel appendChild',self.item.idUnique,laListe,pos) - self.editor.connecteur.toWebApp('appendChild',self.item.idUnique,laListe,pos) - - def onSupp(self,object): - #----------------------- - self.editor.connecteur.toWebApp('Add',self.item.idUnique, 1) + if self.children[pos].item.nature == 'MCBLOC' : laListe=self.children[pos].item.getDicoForFancy() + else : laListe=(self.children[pos].item.getDicoForFancy(),) + self.editor.connecteur.toWebApp('appendChildren',self.getIdUnique(),laListe,pos) + #print (' appel appendChild',self.item.idUnique,laListe,pos) + + def onSupp(self,suppression): + #--------------------------- + print ('on Supp', suppression) + if len(suppression) > 1 : + self.buildChildren() + self.editor.connecteur.toWebApp('remplacementNode',self.item.remplaceId,self.item.idUnique(),self.item.getDicoForFancy()) + return + mcSupprime= suppression[0] + if mcSupprime.nature != 'MCBLOC' : liste=self.item.idUnique + else : + liste=[] + listeMC=mcSupprime.getAllChildInBloc() + for mc in listeMC : liste.append(mc.idUnique) + self.buildChildren() + self.editor.connecteur.toWebApp('deleteChildren',liste) + print (' appel deleteChildren',liste) def onRedessine(self): #---------------------- @@ -202,6 +212,7 @@ class JDCNode(): # surcharge pour mcliste return self.item.idUnique + def buildChildren(self,posInsertion=10000): #------------------------------------------ """ Construit la liste des enfants de self """ @@ -259,7 +270,7 @@ class JDCNode(): ou en position intermediaire. Si pos vaut None, on le place a la position du catalogue. """ - print ("************** appendChild ",self.item.getLabelText(), pos ) + #print ("************** appendChild ",self.item.getLabelText(), pos ) #import traceback #traceback.print_stack() @@ -288,6 +299,15 @@ class JDCNode(): print ("-------------- fin append child", child, child.item) return True + def delete(self): + #---------------- + """ + Methode externe pour la destruction de l'objet associe au noeud + """ + index = self.vraiParent.children.index(self) - 1 + ret,commentaire=self.vraiParent.item.suppItem(self.item) + if ret!=0 : self.treeParent.buildChildren() + return (ret,commentaire) #def chercheNoeudCorrespondant(self,objSimp): @@ -323,8 +343,6 @@ class JDCNode(): #---------------------------------------------------- #def deplace(self): #----------------- - #def delete(self): - #---------------- #def deleteMultiple(self,liste=()): #-------------------------------- diff --git a/Noyau/N_MCBLOC.py b/Noyau/N_MCBLOC.py index 212d7e26..67eefcb2 100644 --- a/Noyau/N_MCBLOC.py +++ b/Noyau/N_MCBLOC.py @@ -121,6 +121,16 @@ class MCBLOC(N_MCCOMPO.MCCOMPO): return dico + def getAllChildInBloc(self): + # contrairement a getValeur ne retourne que les enfants de mcListe + liste=[] + for mc in self.mcListe: + if mc.isBLOC(): + for petitfils in mc.getAllChildInBloc() : liste.append(petitfils) + else: + liste.append(mc) + return liste + def isBLOC(self): """ Indique si l'objet est un BLOC diff --git a/WebTest/cata_essai.py b/WebTest/cata_essai.py index cb93dc12..57f23ade 100644 --- a/WebTest/cata_essai.py +++ b/WebTest/cata_essai.py @@ -10,12 +10,24 @@ MonProc = PROC(nom='MonProc', ) MonProc2 = PROC(nom='MonProc2', param1 = SIMP(statut='o',typ='R'), + param11 = SIMP(statut='o',typ='R'), + param12= SIMP(statut='o',typ='R'), b1 = BLOC (condition = 'param1 == 2', - param1_inBloc = SIMP(statut='o',typ='R'), + param1_inBloc = SIMP(statut='o',typ='R', defaut = 2), + B11 = BLOC (condition = 'param1_inBloc == 2', + param_inBlocDeBloc = SIMP(statut='o',typ='R', defaut=2), + B111 = BLOC (condition = 'param1_inBlocDeBloc == 2', + paramDernier = SIMP(statut='o',typ='R', defaut=2), + ), + ), param2_inBloc = SIMP(statut='o',typ='R'), ), Fact1 = FACT (statut ='o', max=2, - param3 = SIMP(statut='o',typ='R'), + paramInFact1 = SIMP(statut='o',typ='R'), + ), + Fact2 = FACT (statut ='f', + param3InFact2 = SIMP(statut='o',typ='R'), + paramFacultatif = SIMP(statut='f',typ='R'), ), ) diff --git a/testFlask/connectEficas.py b/testFlask/connectEficas.py index 45bf104e..8cc28a55 100644 --- a/testFlask/connectEficas.py +++ b/testFlask/connectEficas.py @@ -115,8 +115,14 @@ class accasConnecteur : - def appendChild(self,id,name,pos): - #-------------------------------- + def suppNode(self,id): + #------------------- + monNode=self.monEditeur.getNodeById(id) + retour=monNode.fauxNoeudGraphique.delete() + return retour + + def appendChild(self,id,name,pos=None): + #------------------------------------- """ Methode pour ajouter un objet fils name a l objet associe au noeud id. On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last') @@ -125,6 +131,7 @@ class accasConnecteur : """ monNode=self.monEditeur.getNodeById(id) retour=monNode.fauxNoeudGraphique.appendChild(name,pos) + return retour def saveFile(self,fileName): #-------------------------------- @@ -159,42 +166,60 @@ if __name__ == "__main__": __import__(name) code=prefs.code monEficasConnecteur=accasConnecteur(code, langue='ang') + #monEficasConnecteur.litFichierComm('/tmp/ajoutProcEtBloc.comm') + #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + #pprint.pprint(d) + monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - i=d['children'][2]['children'][0]['key'] + #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + #i=d['children'][2]['children'][0]['key'] #r=monEficasConnecteur.changeValeur(i,'65') #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProc.comm') #pprint.pprint(d) # creation du bloc - r=monEficasConnecteur.changeValeur(i,'2') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm') + #r=monEficasConnecteur.changeValeur(i,'2') + #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm') #pprint.pprint(d) - exit() # suppression du bloc - r=monEficasConnecteur.changeValeur(i,'1') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm') - pprint.pprint(d) - - - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_incomplet.comm') + #r=monEficasConnecteur.changeValeur(i,'1') #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - d=monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine) + #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm') #pprint.pprint(d) - r=monEficasConnecteur.changeValeur(i,'toto') - r=monEficasConnecteur.changeValeur(i,'65') + + # ajout du Fact2 + d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + e=d['children'][2]['key'] + r=monEficasConnecteur.appendChild(e,'Fact2') + (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm') + d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + mf=d['children'][2]['children'][4]['key'] + print (mf) + r=monEficasConnecteur.appendChild(mf,'paramFacultatif') + (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatif.comm') + d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + mf=d['children'][2]['children'][4]['children'][1]['key'] + r=monEficasConnecteur.suppNode(mf) print (r) - d=monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine) - pprint.pprint(d) - print ('\n') + (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatifEtSuppresse.comm') + # essai enlever un mot clef qu on ne peut pas enlever + d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + mf=d['children'][2]['children'][1]['key'] + r=monEficasConnecteur.suppNode(mf) + print (r) + #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutPuisSuppresFact2.comm') + #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) + #pprint.pprint(d) + #print ('_________', r) + + exit() + #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Procs.comm') #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') -- 2.39.2