import types,sys,os
import traceback
import typeNode
+import pdb
from PyQt4 import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
self.inhibeExpand=False
#print "self.editor.afficheCommandesPliees", self.editor.afficheCommandesPliees
if self.racine.children !=[] :
+
+
if self.editor.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
else : self.racine.children[0].deplieToutEtReaffiche()
- else : self.racine.affichePanneau()
+
+ self.racine.children[0].fenetre.donnePremier()
+ else : self.racine.affichePanneau()
+ #PNPNPN
+ #pdb.set_trace()
def contextMenuEvent(self,event) :
- print "contextMenuEvent"
+ #print "contextMenuEvent"
coord=event.globalPos()
item= self.currentItem()
self.handleContextMenu(item,coord)
@param coord the position of the mouse pointer (QPoint)
Attention : existeMenu permet de savoir si un menu est associe a cet item
"""
- print "handleContextMenu"
+ #print "handleContextMenu"
if item == None : return
if item.existeMenu == 0 : return
if item.menu == None:
def handleCollapsedItem(self,item):
- print "dans CollapsedItem", self.inhibeExpand
+ #print "dans CollapsedItem", self.inhibeExpand
if self.inhibeExpand == True : return
- #print "apres if"
- #print "item = ", item, item.item.get_nom()
- #itemParent=item
- #while not (hasattr (itemParent,'getPanel2')) :
- # print "While itemParent = ", itemParent, itemParent.item.get_nom()
- # print itemParent.plie
- # if itemParent.plie==True : itemParent.setPlie()
- # itemParent=itemParent.treeParent
- #if self.tree.node_selected != self :
- # item.setExpanded(False)
- # return
+ # On traite le cas de l item non selectionne
+ itemParent=item
+ while not (hasattr (itemParent,'getPanel2')) :
+ itemParent=itemParent.treeParent
+ if self.tree.node_selected != itemParent :
+ item.setExpanded(False)
+ return
+
+ itemParent=item
item.setPlie()
- #print "apres 2ndif"
item.plieToutEtReaffiche()
def handleExpandedItem(self,item):
def handleOnItem(self,item,int):
#if (len(self.selectedIndexes())!=2): return
- print "je passe dans handleOnItem"
+ #print "je passe dans handleOnItem pour ", self.item.nom
self.inhibeExpand == True
self.itemCourrant=item
itemParent=item
while not (hasattr (itemParent,'getPanel2')) :
if itemParent.plie==True : itemParent.setDeplie()
itemParent=itemParent.treeParent
- #print itemParent
+ #print itemParent.item.nom
#print itemParent.fenetre
#print self.editor.afficheCommandesPliees
if itemParent.fenetre != self.editor.fenetreCentraleAffichee :
- #print self.editor.afficheCommandesPliees
if self.editor.afficheCommandesPliees : itemParent.plieToutEtReaffiche()
else : itemParent.affichePanneau()
- if itemParent!=item : item.fenetre.rendVisible()
+ if itemParent!=item and item.fenetre != None: item.fenetre.rendVisible()
#try :
if 1:
fr = item.item.get_fr()
class JDCNode(QTreeWidgetItem):
def __init__( self, treeParent, item):
#print "creation d'un noeud : ", item, " ",item.nom,"", treeParent, self
+ #print "creation d'un noeud : ", item.nom
self.a=0
self.item = item
self.vraiParent = treeParent
elif (isinstance(self.item,compoparam.PARAMTreeItem)) : name=self.appliEficas.trUtf8(str(item.GetLabelText()[0]))
else: name = self.appliEficas.trUtf8(str(tr( item.nom))+" :")
value = self.appliEficas.trUtf8(str( item.GetText() ) )
+
mesColonnes=QStringList()
if self.editor.enteteQTree=='complet': mesColonnes << name << value
else :
self.plie = False
self.appartientAUnNoeudPlie = False
- #print "self.plie", self.plie
- #print "self.appartientAUnNoeudPlie", self.appartientAUnNoeudPlie
#print self.treeParent
ajoutAuParentduNoeud=0
from InterfaceQT4 import compobloc
- while (isinstance(self.treeParent,compobloc.Node)) :
+ from InterfaceQT4 import compomclist
+ while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) :
+ #while (isinstance(self.treeParent,compobloc.Node)) :
self.treeParent=self.treeParent.treeParent
ajoutAuParentduNoeud=1
if ajoutAuParentduNoeud :
self.treeParent.childrenIssusDesBlocs.append(self)
while (isinstance(self.treeParent,compobloc.Node)) : self.treeParent=self.treeParent.treeParent
- if isinstance(self,compobloc.Node) :
+ #if isinstance(self,compobloc.Node) :
+ if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) :
QTreeWidgetItem.__init__(self,None,mesColonnes)
else :
QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
self.state=""
self.fenetre=None
try :
- if self.item.getObject().isBLOC() : self.setExpanded(True)
+ if self.item.getObject().isBLOC() :
+ self.setExpanded(True)
+ self.plie=False
except :
pass
listeExpanded=[]
for item in self.childrenComplete :
- #try :
- # print " je detruis ", item.item.GetLabelText() ," parent : ", item.treeParent.item.GetLabelText()
- #except :
- # print "mot clef fact"
- if item.isExpanded():
- if self.childrenComplete.index(item) < posInsertion :
- listeExpanded.append(self.childrenComplete.index(item))
- else :
- listeExpanded.append( self.childrenComplete.index(item) +1)
+ #print dir(item)
+ #if item.isExpanded():
+ # if self.childrenComplete.index(item) < posInsertion :
+ # listeExpanded.append(self.childrenComplete.index(item))
+ # print dir(item.item )
+ # else :
+ # listeExpanded.append( self.childrenComplete.index(item) +1)
self.detruit_les_noeuds_issus_de_blocs(item)
parent=item.treeParent
parent.removeChild(item)
+ #print listeExpanded
self.children = []
self.childrenComplete = []
sublist = self.item._GetSubList()
nouvelItem=item.itemNode(self,item)
self.children.append(nouvelItem)
#print " J ajoute ", nouvelItem ,nouvelItem.item.GetLabelText(),"dans" ,self.item.GetLabelText()
+ #print item
#if ind in listeExpanded : nouvelItem.setExpanded(1)
#if ind in listeExpanded : print "plie=0"
#else : print "plie=1"
#if ind in listeExpanded : nouvelItem.plie=0
#else : nouvelItem.plie=1
- ind=ind+1
+ #ind=ind+1
+
#print "*********** fin build_children ",self.item, self.item.GetLabelText()
def chercheNoeudCorrespondant(self,objSimp):
return None
def affichePanneau(self) :
- print "dans affichePanneau appel getPanel2", self.item.GetLabelText()
+ #print "dans affichePanneau appel getPanel2", self.item.GetLabelText()
if self.item.isactif():
itemParent=self
+ #print self
+ #print self.getPanel2
while not (hasattr (itemParent,'getPanel2')) :
itemParent=itemParent.treeParent
if itemParent!=self :
itemParent.affichePanneau()
return
+ #print self.getPanel2
self.fenetre=self.getPanel2()
else:
from monInactifPanel import PanelInactif
self.fenetre = PanelInactif(self,self.editor)
self.editor.widgetCentraleLayout.addWidget(self.fenetre)
- print "widgetCentraleLayout = ", self.editor.widgetCentraleLayout
- print "nouvelle fenetre ", self.fenetre, " associee a ", self
+ #print "widgetCentraleLayout = ", self.editor.widgetCentraleLayout
+ #print "nouvelle fenetre ", self.fenetre, " associee a ", self
self.editor.anciennefenetre=self.editor.fenetreCentraleAffichee
#print "ancienne fenetre ", self.editor.anciennefenetre
Ajoute un parametre a l'interieur du JDC :
"""
self.editor.init_modif()
- if after:
- pos = 'after'
- else:
- pos = 'before'
- return self.append_brother( PARAMETERS, pos )
+ if after: pos = 'after'
+ else: pos = 'before'
+ child=self.append_brother( PARAMETERS, pos )
+ return child
def select( self ):
Rend le noeud courant (self) selectionne et deselectionne
tous les autres
"""
+ #print "je suis sur select"
for item in self.tree.selectedItems() :
item.setSelected(0)
self.setSelected( True )
Methode externe
"""
self.editor.init_modif()
+
+ from InterfaceQT4 import compojdc
+ if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos) : return 0
+
index = self.treeParent.children.index(self)
if pos == 'before': index = index
elif pos == 'after': index = index +1
return 0
return self.treeParent.append_child(name,pos=index,plier=plier)
+ def verifiePosition(self,name,pos,aLaRacine=False):
+ if name not in self.editor.Classement_Commandes_Ds_Arbre : return True
+ indexName=self.editor.Classement_Commandes_Ds_Arbre.index(name)
+
+ etapes=self.item.get_jdc().etapes
+ if etapes == [] : return True
+
+ if aLaRacine == False :indexOu=etapes.index(self.item.object)
+ else : indexOu=0
+
+ if pos=="after" : indexOu = indexOu+1
+ for e in etapes[:indexOu] :
+ nom=e.nom
+ if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape > indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere avant ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ for e in etapes[indexOu:] :
+ nom=e.nom
+ if nom not in self.editor.Classement_Commandes_Ds_Arbre : continue
+ indexEtape=self.editor.Classement_Commandes_Ds_Arbre.index(nom)
+ if indexEtape < indexName :
+ comment=tr('le mot clef ')+name+tr(' doit etre insere apres ')+nom
+ QMessageBox.information( None,tr('insertion impossible'),comment, )
+ return False
+ return True
+
def append_child(self,name,pos=None,plier=False):
"""
Methode pour ajouter un objet fils a l'objet associe au noeud self.
ou en position intermediaire.
Si pos vaut None, on le place a la position du catalogue.
"""
- print "************** append_child ",self.item.GetLabelText(), plier
+ #print "************** append_child ",self.item.GetLabelText(), plier
+
+
self.editor.init_modif()
if pos == 'first':
index = 0
index = self.item.get_index_child(name.nom)
else:
index = self.item.get_index_child(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
+
self.tree.inhibeExpand=True
obj=self.item.additem(name,index) #CS_pbruno emet le signal 'add'
if obj is None:obj=0
else : child.setDeplie()
except :
child=self.children[index]
- print "dans le except"
+ #print "dans le except"
self.tree.inhibeExpand=False
return child
toselect.affichePanneau()
else :
if self.treeParent.fenetre== None : return
- print "J appelle reaffiche de browser apres delete"
+ #print "J appelle reaffiche de browser apres delete"
self.treeParent.fenetre.reaffiche(toselect)
def deleteMultiple(self,liste=()):
def onValid(self):
#print "onValid pour ", self.item.nom
- if hasattr(self,'fenetre') and self.fenetre:
- self.fenetre.setValide()
- if self.item.nom == "VARIABLE" and self.item.isvalid():
+ if hasattr(self,'fenetre') and self.fenetre: self.fenetre.setValide()
+ if (self.item.nom == "VARIABLE" or self.item.nom == "DISTRIBUTION") and self.item.isvalid():
self.item.jdc.recalcule_etat_correlation()
if hasattr(self.item,'forceRecalcul'):
self.forceRecalculChildren(self.item.forceRecalcul)
#print "onAdd pour ", self.item.nom
self.editor.init_modif()
self.update_nodes()
- print "dans onAdd" ,self.item
+ #print "dans onAdd" ,self.item
# PN -- non necessaire si item=jdc
if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
def plieToutEtReaffiche(self):
- print "je suis dans plieToutEtReaffiche", self.item.get_nom()
+ #print "je suis dans plieToutEtReaffiche", self.item.get_nom()
self.editor.deplier = False
for item in self.children :
+ # il ne faut pas plier les blocs
+ from InterfaceQT4 import compobloc
+ if (isinstance(item,compobloc.Node)) : continue
item.setPlie()
self.affichePanneau()
def setPlie(self):
#print "je mets inhibeExpand a true dans setPlie"
- print "je suis dans plieTout", self.item.get_nom()
+ #print "je suis dans plieTout", self.item.get_nom()
+ import compojdc
+ if self.fenetre == self.editor.fenetreCentraleAffichee and isinstance(self.treeParent,compojdc.Node):
+ return
self.tree.inhibeExpand=True
self.tree.collapseItem(self)
self.setPlieChildren()
+ self.tree.inhibeExpand=False
+ #print "je mets inhibeExpand a false dans setPlie"
+
# on ne plie pas au niveau 1
- #from InterfaceQT4 import compojdc
- #if not(isinstance(self.treeParent,compojdc.Node)) :
- # self.plie=True
- #else :
# self.plie=False
# for item in self.children :
# item.appartientAUnNoeudPlie=False
- #self.tree.inhibeExpand=False
- #print "je mets inhibeExpand a false dans setPlie"
def setPlieChildren(self):
self.plie=True
for c in self.children :
c.setPlieChildren()
- print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
+ #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
c.appartientAUnNoeudPlie=True
c.plie=True
- c.setExpanded(True)
-
+ c.setExpanded(False)
+
+ # Pour les blocs et les motcles list
+ # on affiche un niveau de plus
+ from InterfaceQT4 import compobloc
+ from InterfaceQT4 import compomclist
+ if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) :
+ niveauPere=self.treeParent
+ while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) :
+ niveauPere=niveauPere.treeParent
+ for c in self.children :
+ c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
+ c.setExpanded(False)
+
+ # on affiche un niveau de plus
+ #if isinstance(self,compomclist.Node) :
+ #if isinstance(self,compobloc.Node) :
+ # niveauPere=self.treeParent
+ # while (isinstance(niveauPere,compobloc.Node)):
+ # niveauPere=niveauPere.treeParent
+ # for c in self.children :
+ # c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
def setDeplie(self):
#print "je mets inhibeExpand a true dans setDeplie"
self.tree.expandItem(self)
self.setDeplieChildren()
self.tree.inhibeExpand=False
- print "je mets inhibeExpand a false dans setDePlie"
+ #print "je mets inhibeExpand a false dans setDePlie"
def setDeplieChildren(self):
- print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
+ #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
for c in self.children :
c.setDeplieChildren()
- print "dans setDeplieChildren appartientAUnNoeudPlie=False ", c.item.GetLabelText()
+ #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", c.item.GetLabelText()
c.appartientAUnNoeudPlie=False
c.setExpanded(True)
c.plie=False