From 901b02468e64f79fe3fe62a2c88e6911fe02453f Mon Sep 17 00:00:00 2001 From: eficas <> Date: Fri, 5 Apr 2002 06:32:39 +0000 Subject: [PATCH] F.R: fin correction bug copier/coller --- Aster/sdist.py | 3 ++- Editeur/compomacro.py | 3 ++- Editeur/compomclist.py | 30 +++++++++++++++++++++++++++++- Editeur/compooper.py | 10 ++++++++++ Editeur/panels.py | 1 - Editeur/treewidget.py | 32 ++++++++++++++++++++++++++++---- Extensions/commentaire.py | 3 ++- Extensions/parametre.py | 3 ++- Ihm/I_MCCOMPO.py | 3 +++ Ihm/I_MCLIST.py | 10 +++++++--- 10 files changed, 85 insertions(+), 13 deletions(-) diff --git a/Aster/sdist.py b/Aster/sdist.py index e0a96057..830ccb73 100644 --- a/Aster/sdist.py +++ b/Aster/sdist.py @@ -22,8 +22,9 @@ import os,shutil,glob,sys import types version="$Name: $"[7:-2] or 'Test1_2' - +# ==========Path du noyau fourni par Aster==================== path_Noyau="../../../Tutorial/Superv" +# ============================================================ nom_distrib="Eficas"+version+"AsterSTA6" path_distrib=os.path.join("dist",nom_distrib) path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools" diff --git a/Editeur/compomacro.py b/Editeur/compomacro.py index d4e79e67..e8bcc6a9 100644 --- a/Editeur/compomacro.py +++ b/Editeur/compomacro.py @@ -24,7 +24,7 @@ from widgets import Fenetre # __version__="$Name: $" -__Id__="$Id: compomacro.py,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $" +__Id__="$Id: compomacro.py,v 1.2 2002/04/03 11:35:12 eficas Exp $" # class MACROPanel(panels.OngletPanel): @@ -235,6 +235,7 @@ class MACROTreeItem(compooper.EtapeTreeItem): # item.object = MCSIMP, MCFACT, MCBLOC ou MCList if item.object.isoblig() : self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ') + print "Impossible de supprimer un mot-clé obligatoire" return 0 else : self.object.suppentite(item.object) diff --git a/Editeur/compomclist.py b/Editeur/compomclist.py index 74f5254e..5fc08afb 100644 --- a/Editeur/compomclist.py +++ b/Editeur/compomclist.py @@ -39,7 +39,35 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem): Retourne 1 si l'objet pointé par self est un MCFact, 0 sinon """ return 0 - + + def isMCList(self): + """ + Retourne 1 si l'objet pointé par self est une MCList, 0 sinon + """ + return 1 + + def additem(self,obj,pos): + """ + Ajoute un objet MCFACT à la MCList (self.object) à la position pos + """ + self.object.init_modif() + obj.verif_existence_sd() + obj.reparent(self.object.parent) + self.object.insert(pos,obj) + item = self.make_objecttreeitem(self.appli, obj.nom + ":", obj) + return item + + def suppitem(self,item): + """ + Retire un objet MCFACT de la MCList (self.object) + """ + self.object.init_modif() + self.object.remove(item.object) + # la liste peut être retournée vide ! + message = "Mot-clé " + item.object.nom + " supprimé" + self.appli.affiche_infos(message) + return 1 + import Accas treeitem = MCListTreeItem objet = Accas.MCList diff --git a/Editeur/compooper.py b/Editeur/compooper.py index 0cf43cb7..b59d9941 100644 --- a/Editeur/compooper.py +++ b/Editeur/compooper.py @@ -220,6 +220,16 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): commande_comment.jdc = commande_comment.parent = self.object.jdc return commande_comment + def replace_child(self,old_item,new_item): + """ + Remplace old_item.object par new_item.object dans les fils de self.object + """ + index = self.object.mc_liste.index(old_item.object) + self.object.init_modif() + self.object.mc_liste.remove(old_item.object) + self.object.mc_liste.insert(index,new_item.object) + self.object.fin_modif() + import Accas treeitem = EtapeTreeItem objet = Accas.ETAPE diff --git a/Editeur/panels.py b/Editeur/panels.py index 8338308a..123907f5 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -152,7 +152,6 @@ class Panel(Frame) : if self.parent.modified == 'n' : self.parent.init_modif() pere = self.node.parent self.node.delete() - pere.select() def affiche(self): """ Force l'affichage des fenêtres en cours """ diff --git a/Editeur/treewidget.py b/Editeur/treewidget.py index 8b505029..e328c184 100644 --- a/Editeur/treewidget.py +++ b/Editeur/treewidget.py @@ -5,7 +5,7 @@ # SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND # REDISTRIBUTION OF THIS FILE. # ====================================================================== -import os,sys,string,re,types +import os,sys,string,re,types,traceback from Tkinter import * @@ -14,7 +14,7 @@ import images # __version__="$Name: $" -__Id__="$Id: treewidget.py,v 1.2 2002/03/27 16:20:02 eficas Exp $" +__Id__="$Id: treewidget.py,v 1.3 2002/04/03 11:35:12 eficas Exp $" # Fonte_Standard = fontes.standard @@ -683,6 +683,7 @@ class Node : print 'Erreur dans la destruction de ',self.item.get_nom(),' dans delete' nbnew = pere.get_nb_children() pere.redraw(nbnew-nbold) + pere.select() def copynode(self,node,pos) : """ node est le noeud à copier à la position pos de self ( = parent de node) """ @@ -697,15 +698,16 @@ class Node : try : child.item.object.mc_liste = objet_copie.mc_liste except: - pass + traceback.print_exc() #-------------------------------------------------------------- # Méthodes de vérification du contexte et de validité du noeud #-------------------------------------------------------------- - def traite_mclist(self): + def traite_mclist_OLD(self): """ Dans le cas d'une MCList il faut vérifier qu'elle n'est pas vide ou réduite à un seul élément suite à une destruction """ # self représente une MCList + print "on passe par traite_mclist ",len(self.item) if len(self.item) == 0 : # la liste est vide : il faut la supprimer self.delete() @@ -716,6 +718,8 @@ class Node : noeud = self.children[0] if self.parent.delete_child(self): self.parent.append_node_child(noeud.item,pos=index,verif='non') + else: + print "destruction de self impossible !" #if self.parent.delete_child(self): # self.parent.copynode(self.children[0],index) #else : @@ -723,6 +727,26 @@ class Node : else : return + def traite_mclist(self): + """ Dans le cas d'une MCList il faut vérifier qu'elle n'est pas vide + ou réduite à un seul élément suite à une destruction + """ + # self représente une MCList + if len(self.item) == 0 : + # la liste est vide : il faut la supprimer + self.delete() + elif len(self.item) == 1: + # il ne reste plus qu'un élément dans la liste + # il faut supprimer la liste et créer directement l'objet + index = self.parent.children.index(self) + noeud = self.children[0] + noeud.parent = self.parent + self.parent.delete_node_child(self) + self.parent.item.replace_child(self.item,noeud.item) + self.parent.children.insert(index,noeud) + else : + return + def verif_all(self): self.verif_all_children() diff --git a/Extensions/commentaire.py b/Extensions/commentaire.py index 64c3c750..21ec130d 100644 --- a/Extensions/commentaire.py +++ b/Extensions/commentaire.py @@ -151,5 +151,6 @@ class COMMENTAIRE : """ return None - + def verif_existence_sd(self): + pass diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 7e18bc16..250eae1d 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -250,7 +250,8 @@ class PARAMETRE : """ return [] - + def verif_existence_sd(self): + pass diff --git a/Ihm/I_MCCOMPO.py b/Ihm/I_MCCOMPO.py index b0278b94..0fcab2e6 100644 --- a/Ihm/I_MCCOMPO.py +++ b/Ihm/I_MCCOMPO.py @@ -160,6 +160,7 @@ class MCCOMPO(I_OBJECT.OBJECT): """ self.init_modif() if type(name)==types.StringType : + # on est en mode création d'un motcle if self.ispermis(name) == 0 : return 0 objet=self.definition.entites[name](val=None,nom=name,parent=self) if hasattr(objet.definition,'position'): @@ -168,7 +169,9 @@ class MCCOMPO(I_OBJECT.OBJECT): elif objet.definition.position == 'global_jdc' : self.append_mc_global_jdc(objet) else : + # dans ce cas on est en mode copie d'un motcle objet = name + objet.verif_existence_sd() # si un objet de même nom est déjà présent dans la liste # et si l'objet est répétable # il faut créer une MCList et remplacer l'objet de la liste diff --git a/Ihm/I_MCLIST.py b/Ihm/I_MCLIST.py index db2e0552..fc4afcf6 100644 --- a/Ihm/I_MCLIST.py +++ b/Ihm/I_MCLIST.py @@ -28,9 +28,13 @@ class MCList: return 0 def isoblig(self): - for i in self.data: - if i.isoblig():return 1 - return 0 + """ + Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est + """ + return 0 + #for i in self.data: + # if i.isoblig():return 1 + #return 0 def liste_mc_presents(self): return [] -- 2.39.2