]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
bug velu de la mclist + taille des blocs
authorPASCALE NOYRET <pascale.noyret@edf.fr>
Wed, 26 Jan 2022 10:10:35 +0000 (11:10 +0100)
committerPASCALE NOYRET <pascale.noyret@edf.fr>
Wed, 26 Jan 2022 10:10:35 +0000 (11:10 +0100)
Editeur/Objecttreeitem.py
Ihm/CONNECTOR.py
Ihm/I_MCLIST.py
InterfaceSsIhm/editorSsIhm.py
InterfaceWeb/browser.py
InterfaceWeb/compobloc.py
InterfaceWeb/compomclist.py
Noyau/N_BLOC.py
Noyau/N_MCBLOC.py
Noyau/N_MCLIST.py
Noyau/N_OBJECT.py

index cbdef924a16b4b830f1cf432afd3034604810341..b1f16a9c8cd1de7e6b7f9208eeecb9cdeb5d7d8a 100644 (file)
@@ -168,15 +168,10 @@ class ObjectTreeItem(TreeItem,Delegate):
         # on met le meme id au noeud et a l objet
         self.idUnique=uuid1().hex
 
-        if self._object.nature == 'MCList' and len(self._object.data) == 1 :
-            self._object.data[0].idUnique=self.idUnique
-            if hasattr (self._object.data[0],'idUnique') : self._object.data[0].remplaceId = self._object.data[0].idUnique
-            else : self._object.data[0].remplaceId = None
         if hasattr (self._object,'idUnique') : self._object.remplaceId = self._object.idUnique
         else : self._object.remplaceId = None
 
         self._object.idUnique=self.idUnique
-        # Ici on teste si Web
         if hasattr (self.appliEficas,'dicoIdNode') : self.appliEficas.dicoIdNode[self.idUnique]=self
 
     def init(self):
@@ -454,7 +449,6 @@ class ObjectTreeItem(TreeItem,Delegate):
            Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet
            de type item associe a l'object passe en argument.
         """
-        if labeltext == 'b1 :' :print ('---------------makeObjecttreeitem', labeltext,object)
         return makeObjecttreeitem(appliEficas,labeltext,object,setFunction)
 
     #def __del__(self):
index 31efdd4c7b4f94bf9602f7e54e4b65e8654cdccf..7b85af7958dedc1f7a6b979ff15549aca998f6b4 100644 (file)
@@ -108,7 +108,7 @@ class CONNECTOR:
             receivers = self.connections[id(object)][channel]
         except KeyError:
             return
-        #print "Emit",object, channel, receivers
+        #print ("Emit",object, channel, receivers)
         # Attention : copie pour eviter les pbs lies aux deconnexion reconnexion
         # pendant l'execution des emit
         for rfunc, fargs in copy(receivers):
index e3a5d2961d2cf2c83484db945f54a9c5e79e4ec2..f029184358d95e21190956bd49d1170ecd1f1e69 100644 (file)
@@ -110,6 +110,7 @@ class MCList:
           Ajoute le mot cle facteur obj a la MCLIST a la position pos
           Retourne None si l'ajout est impossible
         """
+        #print ('dans addEntite', self)
         if type(obj)==bytes or type(obj) == str  :
             # on est en mode creation d'un motcle
             raise EficasException(tr("traitement non-prevu"))
index b17c957a940e7bc17b2ff650be4ca131c40776d6..871df8241bad4b52fd0a97627b4aa9fa47490bad 100755 (executable)
@@ -590,6 +590,14 @@ class JDCEditorSsIhm :
     # methode differenre avec et sans ihm
         print (txt)
 
+    #--------------------------------------#
+    def afficheAlerte(self,titre,message):
+    #--------------------------------------#
+        print ('________________________________________')
+        print (titre)
+        print (message)
+        print ('________________________________________')
+
     #-----------------------------------------------------------------------#
     def _viewText(self, txt, caption = "FILE_VIEWER",largeur=1200,hauteur=600):
     #--------------------------------------------------------------------#
index 1fcc069d5f4a9661ee65dd0822e3c08047c81316..cac5739974ec7ee1d0fda8e7a43d9121ccdcf97a 100644 (file)
@@ -68,13 +68,13 @@ class JDCTree():
 COMMENT     = "COMMENTAIRE"
 PARAMETERS  = "PARAMETRE"
 
+import traceback
 #---------------
 class JDCNode():
 #--------------
     def __init__( self, treeParent, item, itemExpand=False, ancien=False ):
     #----------------------------------------------------------------------
         #print ("creation d'un noeud : ", item, " ",item.nom,"", treeParent, treeParent.item.nom,self)
-
         self.item        = item
         self.vraiParent  = treeParent
         self.treeParent  = treeParent
@@ -85,11 +85,10 @@ class JDCNode():
         self.childrenComplete=[]
         self.oldValidite='init'
         self.item.fauxNoeudGraphique = self
-
         if item.nom != tr(item.nom)                           : name = str(tr(item.nom)+" :")
 
-        from . import compobloc
         from . import compomclist
+        from . import compobloc
         while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) :
             self.treeParent=self.treeParent.vraiParent
 
@@ -115,64 +114,66 @@ class JDCNode():
         self.editor.connecteur.toWebApp('propageValide',self.getIdUnique(), validite)
 
     def onAdd(self,ajout):
-    #-----------------------
-        print ('on add', '________ ajout', ajout , ' dans ', self.item.nom)
+    #----------------------
+        # derive pour MCList et MCBLOC
+        debug=0
+        if debug : print ('on add de browser', '________ ajout', ajout, ' dans ', self.item.nom)
+        if debug : print ('nature de  l item', self.item.nature)
         self.buildChildren()
 
         # si on a un copie multiple --> pas gere correctement 
         # pas gere du tout
         if len(ajout) > 1 : 
-            self.editor.connecteur.toWebApp('remplacementNode',self.item.remplaceId,self.getTreeParentIdUnique(),self.item.getDicoForFancy()) 
             return
  
-        if self.item.nature != 'MCBLOC' : ouAjouter=self.getIdUnique()
-        else : ouAjouter=self.getTreeParentIdUnique()
+        # test inutile
+        ouAjouter=self.getIdUnique()
 
         mcAjoute= ajout[0]  
-        posDansSelf = 0; trouve=0
+        posDansSelf = 0; 
+        trouve=0
+        posDansArbre=0
         for c in self.children :
             if c.item._object == mcAjoute : 
                  trouve=1
                  break
-            posDansSelf+=1
-        if not trouve : print ('souci au add *************************')
+            posDansSelf +=1 
+            posDansArbre+=c.item.longueurDsArbreAvecConsigne()
+
+        if not trouve : print ('browser : souci au add *************************')
+        if debug : print  ('posDansSelf', posDansSelf)
+        if debug : print  ('posDansArbre', posDansSelf)
+
         if self.children[posDansSelf].item.nature == 'MCBLOC' : laListe=self.children[posDansSelf].item.getDicoForFancy()
         else : laListe=(self.children[posDansSelf].item.getDicoForFancy(),)
 
-        posOuAjouter=posDansSelf
-        if self.item.nature == 'MCBLOC' :
-           mesParents=self.item.getParentsJusqua(self.treeParent.item)
-           mesParents.insert(0,self.item.getObject())
-           index=0
-           while index < len(mesParents) -1 :
-              parentTraite=mesParents[index+1]
-              jusqua=mesParents[index]
-              for c in parentTraite.mcListe:
-                  if c == jusqua :  break
-                  posOuAjouter += c.longueurDsArbre()
-              index=index+1
+        posOuAjouter=posDansArbre
                
-
         self.editor.connecteur.toWebApp('appendChildren',ouAjouter,laListe,posOuAjouter)
-        print ('la pos ', posOuAjouter)
+        #print ('la pos ', posOuAjouter)
         #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()) 
+            print ('onSupp suppression multiple non valeur')
             return
         mcSupprime= suppression[0]  
-        if mcSupprime.nature != 'MCBLOC' : liste=(mcSupprime.idUnique,)
+        print (mcSupprime.__class__)
+        print (mcSupprime.nature)
+        if mcSupprime.nature == 'MCBLOC' : 
+            liste=[]
+            listeMC=mcSupprime.getAllChildInBloc()
+            for mc in listeMC : liste.append(mc.idUnique)
+        elif mcSupprime.nature == 'MCList' : 
+            liste=[]
+            for mc in mcSupprime.data :
+               liste.append(mc.idUnique)
         else :
-           liste=[]
-           listeMC=mcSupprime.getAllChildInBloc()
-           for mc in listeMC : liste.append(mc.idUnique)
+            liste=(mcSupprime.idUnique,)
         self.buildChildren()
         self.editor.connecteur.toWebApp('deleteChildren',liste)
-        print (' appel deleteChildren',liste)
+        #print (' appel deleteChildren',liste)
 
     def onRedessine(self):
     #----------------------
@@ -246,7 +247,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()
 
@@ -259,28 +260,29 @@ class JDCNode():
         elif self.item.nature != 'JDC' : index = self.item.getIndexChild(name)
         else : return None
 
+        #print (self.item.addItem)
         obj = self.item.addItem(name,index) # emet le signal 'add'
 
-        try :
-           print (index)
-           self.buildChildren()
-           print (self.children)
-           child=self.children[index]
-        except : 
-           print ('pb u buildChildren dans appendChild')
-           pass
+        # PN : boucle sur les mclist. si necessaire a deriver
+        #try :
+        #   self.buildChildren()
+        #   child=self.children[index]
+        #except : 
+        #   print ('pb buildChildren dans appendChild')
+        #   pass
 
          
-        print ("-------------- fin append child", child, child.item)
+        #print ("-------------- fin append child", child, child.item)
         if not obj : return None
-        return child.getIdUnique()
+        return True
+        #return child.getIdUnique()
 
     def delete(self):
     #----------------
         """
             Methode externe pour la destruction de l'objet associe au noeud
         """
-        print ('________________appel de delete _______', self)
+        #print ('browser :_appel de delete _______', self)
         ret,commentaire=self.vraiParent.item.suppItem(self.item)
         if ret!=0 : self.treeParent.buildChildren()
         return (ret,commentaire) 
index 392574b0edbd08aaee4753f4987a88510e123cb8..4cc497b16d720604dc0f2dedf4321772800459a7 100644 (file)
@@ -34,13 +34,54 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
 
-    def getPanelGroupe(self,parentQt,commande):
-        maDefinition=self.item.get_definition()
-        monObjet=self.item.object
-        monNom=self.item.nom
-        maCommande=commande
-        if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
-        else : self.niveau=1
+    def onAdd(self,ajout):
+    #----------------------
+        debug=0
+        if debug : print ('on add de mcbloc', '________ ajout', ajout, ' dans ', self.item.nom)
+        if debug : print ('nature de  l item', self.item.nature)
+        self.buildChildren()
+
+        # si on a un copie multiple --> pas gere correctement 
+        # pas gere du tout
+        if len(ajout) > 1 : 
+            print ('ajout multiple non gere')
+            return
+        ouAjouter=self.getTreeParentIdUnique()
+
+        mcAjoute= ajout[0]  
+        posDansSelf = 0; 
+        trouve=0
+        posDansArbre=0
+
+        for c in self.children :
+            if c.item._object == mcAjoute : 
+                 trouve=1
+                 break
+            posDansSelf +=1 
+            posDansArbre+=c.item.longueurDsArbreAvecConsigne()
+        if not trouve : print ('souci au add *************************')
+        if debug : print  ('posDansSelf', posDansSelf)
+        if debug : print  ('posDansArbre', posDansSelf)
+        if self.children[posDansSelf].item.nature == 'MCBLOC' : laListe=self.children[posDansSelf].item.getDicoForFancy()
+        else : laListe=(self.children[posDansSelf].item.getDicoForFancy(),)
+
+        posOuAjouter=posDansArbre
+        mesParents=self.item.getParentsJusqua(self.treeParent.item)
+        mesParents.insert(0,self.item.getObject())
+        index=0
+        while index < len(mesParents) -1 :
+            parentTraite=mesParents[index+1]
+            jusqua=mesParents[index]
+            for c in parentTraite.mcListe:
+                if c == jusqua :  break
+                posOuAjouter += c.longueurDsArbreAvecConsigne()
+            index=index+1
+               
+
+        self.editor.connecteur.toWebApp('appendChildren',ouAjouter,laListe,posOuAjouter)
+        #print ('la pos ', posOuAjouter)
+        #print (' appel appendChild',self.item.idUnique,laListe,pos)
 
 
 class BLOCTreeItem(compofact.FACTTreeItem):
index 244fb9615ee28f853cadcf7cc364a2855be85eb1..3e16328cb1245fb817ff392340ed04e16303fbe5 100644 (file)
@@ -74,9 +74,47 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
 
     def getIdUnique(self):
     #---------------------
-       return 3 
-
-
+       print ('pas d iD unique pour la MCLIST')
+
+
+    def onAdd(self,ajout):
+    #----------------------
+        debug=0
+        if debug : print ('on add de compomclist', '________ ajout', ajout, ' dans ', self.item.nom)
+        if debug : print ('nature de l item', self.item.nature)
+        self.buildChildren()
+
+        # si on a un copie multiple --> pas gere correctement 
+        # pas gere du tout
+        if len(ajout) > 1 : 
+            print ('add multiple non gere')
+            return
+        ouAjouter=self.getTreeParentIdUnique()
+
+        mcAjoute= ajout[0]  
+        posDansSelf = 0; 
+        trouve=0
+        # a priori on ajoute toujours le dernier FACT a la MCListe
+        # on garde quand meme la boucle si cela evolue
+        for c in self.children :
+            if c.item._object == mcAjoute :
+                 trouve=1
+                 break
+            posDansSelf +=1 
+        if not trouve : print ('souci au add *************************')
+        if debug : print  ('posDansSelf', posDansSelf)
+        laListe=(self.children[posDansSelf].item.getDicoForFancy(),)
+
+
+        posDansArbre = posDansSelf; 
+        for c in self.treeParent.children : 
+            if  c == self: break
+            posDansArbre +=c.item.longueurDsArbreAvecConsigne()
+
+        self.editor.connecteur.toWebApp('appendChildren',ouAjouter,laListe,posDansArbre)
+        #print ('la pos ', posOuAjouter)
+        #print (' appel appendChild',self.item.idUnique,laListe,pos)
 
 class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
     """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets
@@ -100,30 +138,19 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
         else:
             self.setDelegate(self._object.data[0])
 
-    def panel(self,jdcdisplay,pane,node):
-        """ Retourne une instance de l'objet panneau associe a l'item (self)
-            Si la liste ne contient qu'un mot cle facteur, on utilise le panneau
-            FACTPanel.
-            Si la liste est plus longue on utilise le panneau MCLISTPanel.
-        """
-        if len(self._object) > 1:
-            return MCLISTPanel(jdcdisplay,pane,node)
-        elif isinstance(self._object.data[0],ErrorObj):
-            return compoerror.ERRORPanel(jdcdisplay,pane,node)
-        else:
-            return compofact.FACTPanel(jdcdisplay,pane,node)
-
     def isExpandable(self):
         if len(self._object) > 1:
             return Objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
             return compofact.FACTTreeItem.isExpandable(self)
 
+
     def getSubList(self):
+        # Attention different de QT
         self.updateDelegate()
-        if len(self._object) <= 1:
-            self._object.data[0].alt_parent=self._object
-            return compofact.FACTTreeItem.getSubList(self)
+        #if len(self._object) <= 1:
+        #    self._object.data[0].alt_parent=self._object
+        #    return compofact.FACTTreeItem.getSubList(self)
 
         liste=self._object.data
         sublist=[None]*len(liste)
index 0eef50d4838d6db566bdde9cadd663967c2f7415..c048860373ed54e58c05717b24171536636a3910 100644 (file)
@@ -159,6 +159,9 @@ class BLOC(N_ENTITE.ENTITE):
             longueur = longueur + mc.longueurDsArbre()
         return longueur
 
+    def longueurDsArbreAvecConsigne(self):
+        return self.longueurDsArbre()
+
 def blocUtils():
     """Définit un ensemble de fonctions utilisables pour écrire les
     conditions de BLOC."""
index 67eefcb214bd3f397e742862e80a41bd1d61ae41..c1e5218949b259946ab50bf95f93ce0a5c44599d 100644 (file)
@@ -121,6 +121,19 @@ class MCBLOC(N_MCCOMPO.MCCOMPO):
 
         return dico
 
+    def longueurDsArbreAvecConsigne(self):
+        longueur=0
+        for mc in self.mcListe :
+            longueur = longueur + mc.longueurDsArbreAvecConsigne()
+        return longueur
+
+    def longueurDsArbre(self):
+        # PN 24/01/22 --> Cette methde n est pas surchage
+        # il y a une surchagre sur N_BLOC mais pas sur N_MCBLOC
+        # ???
+        print ('bizarre, ne devrait on pas surchager la methode')
+        return 
+
     def getAllChildInBloc(self):
     # contrairement a getValeur ne retourne que les enfants de mcListe
         liste=[]
index 45b096df39f90af0bc0ffc6b60edb7e67a026153..f087e9b27d3c9865dcd095c69ba8ca9b1cf4d5ee 100644 (file)
@@ -255,3 +255,6 @@ class MCList(UserList):
     def longueurDsArbre(self):
     # pour Pyxb : longueur  dans le orderedcontent de pyxb
         return len(self)
+
+    def longueurDsArbreAvecConsigne(self):
+        return self.longueurDsArbre()
index 80f31056de66ebc88e0247000121d63c3fc3ea66..3249dcd41c006a7058f5b49e970bcb29ac5517eb 100644 (file)
@@ -113,6 +113,9 @@ class OBJECT(object):
         if self.nom == "blocConsigne" : return 0
         return 1
 
+    def longueurDsArbreAvecConsigne(self):
+        return 1
+
 
 
 class ErrorObj(OBJECT):