- index = self.treeParent.children.index(self)
- if pos == 'before': index = index
- elif pos == 'after': index = index +1
- else:
- print unicode(pos), tr(" n'est pas un index valide pour append_brother")
- return 0
- return self.treeParent.append_child(name,pos=index,plier=plier)
+
+ from InterfaceQT4 import compojdc
+ if (isinstance(self.treeParent, compojdc.Node)) and not self.verifiePosition(name,pos) : return 0
+
+ if self.treeParent != self.vraiParent :
+ index = self.vraiParent.children.index(self)
+ if pos == 'before': index = index
+ elif pos == 'after': index = index +1
+ return self.vraiParent.append_child(name,pos=index,plier=plier)
+ else :
+ index = self.treeParent.children.index(self)
+ if pos == 'before': index = index
+ elif pos == 'after': index = index +1
+ else:
+ print(six.text_type(pos), tr(" n'est pas un index valide pour append_brother"))
+ 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