def __init__( self, jdc_item, editor):
#----------------------------------------
- #print ('__init__ JDCTree')
+ print ('__init__ JDCTree')
self.editor = editor
self.plie=False
self.item = jdc_item
self.firstAffiche = True
self.childrenComplete=[]
self.oldValidite=None
+ self.item.fauxNoeudGraphique = self
+ #self.plie=True # pas gere
#from . import compocomm
#if ancien and not itemExpand : self.plie = True
#if (isinstance(self.item,composimp.SIMPTreeItem)) : self.plie=False
- #from . import compobloc
#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
def onValid(self):
#-----------------
- print ('appel onValid pour', self.item.nom)
+ #print ('appel onValid pour', self.item.nom)
validite=self.item.isValid()
if self.oldValidite==validite : return
self.oldValidite=validite
- print ('appel de propageValide pour ', self.item.nom, validite,self.oldValidite)
+ #print ('appel de propageValide pour ', self.item.nom, validite,self.oldValidite)
self.editor.connecteur.toWebApp('propageValide',self.item.idUnique, validite)
- def onAdd(self,object):
- #----------------------
- self.editor.connecteur.toWebApp('Add',self.item.idUnique, 1)
+ def onAdd(self,ajout):
+ #--------------------------
+ # bien tester avec les blocs
+ #print ('on add', '________ object', object)
+ avantChildren=self.children
+ indexAvant=0
+ indexApres=0
+ reconstruitMoi=False
+ self.buildChildren()
+ if len(ajout) > 1 :
+ reconstruitMoi=False
+ elif len(avantChildren)+1 == len(self.children):
+ for i in range(len(avantChildren)):
+ id1=avantChildren[indexAvant].item.idUnique
+ id2=self.children[indexApres].item.idUnique
+ if id1 == id2 :
+ indexAvant += 1
+ indexApres += 1
+ continue
+ pos = indexApres
+ indexApres += 1
+ break
+ reconstruitMoi=False
+ if indexAvant == len(avantChildren) : pos = indexApres
+ while (indexAvant < len(avantChildren)):
+ id1=avantChildren[indexAvant].idUnique
+ id2=self.children[indexApres].idUnique
+ if id1 == id2 :
+ indexAvant += 1
+ indexApres += 1
+ continue
+ reconstruitMoi=True
+ else : reconstruitMoi=True
+
+ if reconstruitMoi :
+ print ('Remplace', self.item.idUnique, self.item.remplaceId)
+ self.editor.connecteur.toWebApp('RemplacementNode',self.item.remplaceId,self.item.idUnique,self.item.getDicoForFancy()) # faut il ajouter pos
+ else :
+ print ('Add', self.item.idUnique)
+ if (ajout[0] != self.children[pos].item._object ) : print ('souci au add *************************')
+ self.editor.connecteur.toWebApp('creationNodeFils',self.item.idUnique,self.children[pos].item.getDicoForFancy(),pos)
def onSupp(self,object):
#-----------------------
""" Construit la liste des enfants de self """
""" Se charge de remettre les noeuds Expanded dans le meme etat """
#print ("*********** buildChildren ",self,self.item, self.item.nom)
- #print (poum)
-
- self.listeItemExpanded=[]
- self.listeItemPlie=[]
-
- for enfant in self.childrenComplete :
- if enfant.plie : self.listeItemPlie.append(enfant.item)
- else : self.listeItemExpanded.append(enfant.item)
-
- for enfant in self.childrenComplete :
- parent = enfant.treeParent
- parent.removeChild(enfant)
- enfant.JESUISOFF=1
+ #if self.item.nom == 'web_tres_simple_avec_2Procs.comm' :
+ # print ("*********** buildChildren ",self,self.item, self.item.nom)
self.children = []
- self.childrenComplete = []
+ self.childrenItemComplete = []
sublist = self.item._getSubList()
ind=0
for item in sublist :
- itemExpand=False
- ancien=False
- if item in self.listeItemExpanded : itemExpand=True; ancien=True
- if item in self.listeItemPlie : itemExpand=False; ancien=True
- nouvelItem=item.itemNode(self,item,itemExpand,ancien)
- item.fauxNodeGraphique=nouvelItem
+ nouvelItem=item.itemNode(self,item)
+ item.fauxNoeudGraphique=nouvelItem
self.children.append(nouvelItem)
+
+ self.childrenItemComplete=self.construitChildrenComplete()
+ if self.item.nom == 'web_tres_simple_avec_2Procs.comm' : print (self.children)
#print ("fin *********** buildChildren ",self,self.item, self.item.nom, self.children)
+
+ def construitChildrenComplete(self):
+ # PN a tester avec des blocs de blocs
+ from . import compobloc
+ liste=[]
+ for itemFils in self.item._getSubList():
+ if isinstance(itemFils,compobloc.Node):
+ for itemPetitFils in itemFils.construitChildrenComplete():
+ liste.append(itemPetitFils)
+ itemPetitFils.treeParent=self
+ else :
+ liste.append(itemFils)
+ return liste
+
def getDicoObjetsPourWeb(self):
return self.item.getDicoObjetsPourWeb()
def getDicoForFancy(self):
return self.item.getDicoForFancy()
+ def appendChild(self,name,pos=None):
+ #-----------------------------------
+ """
+ Methode pour ajouter un objet fils a l'objet associe au noeud self.
+ On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
+ ou en position intermediaire.
+ Si pos vaut None, on le place a la position du catalogue.
+ """
+ print ("************** appendChild ",self.item.getLabelText(), pos )
+ #import traceback
+ #traceback.print_stack()
+
+
+ if pos == 'first' : index = 0
+ elif pos == 'last' : index = len(self.children)
+ elif type(pos) == int : index = pos # position fixee
+ elif type(pos) == object : index = self.item.getIndex(pos) +1 # pos est un item. Il faut inserer name apres pos
+ elif type(name) == object : index = self.item.getIndexChild(name.nom)
+ else : index = self.item.getIndexChild(name)
+
+ # si on essaye d inserer a la racine
+ if (isinstance(self.treeParent,JDCTree) and index==0) :
+ verifiePosition=self.verifiePosition(name,'first',aLaRacine=True)
+ if not verifiePosition : return 0
+
+ obj = self.item.addItem(name,index) # emet le signal 'add'
+ if obj is None : obj=0
+
+ child=self.children[index]
+ #try :
+ # if len(obj) > 1 : self.buildChildren()
+ #except : pass
+
+
+ print ("-------------- fin append child", child, child.item)
+ return True
+
+
+
#def chercheNoeudCorrespondant(self,objSimp):
#-------------------------------------------
# sublist = self.item._getSubList()
#----------------------------------------------------
#def verifiePosition(self,name,pos,aLaRacine=False):
#----------------------------------------------------
- #def appendChild(self,name,pos=None,plier=False):
- #------------------------------------------------
#def deplace(self):
#-----------------
#def delete(self):
#def selectApres(self):
#---------------------
-