Les macros INCLUDE, INCLUDE_MATERIAU et POURSUITE ont un fonctionnement spécial.
-Les concepts produits par ces macros sont obtenus par interpretation d'un fichier
-de commandes. Il n'est pas possible d'avoir une mise à jour complètement
-automatique d'un jeu de commandes qui contient une de ces macros.
+Les concepts produits par ces macros sont obtenus par une interpretation séparée
+du fichier de commandes correspondant. Les concepts produits sont ensuite inclus
+dans le contexte du jeu de commandes principal.
+La mise à jour du jeu de commandes et de ses includes et poursuites
+est presque complètement automatique. Cependant dans quelques cas particuliers
+le mécanisme de mise à jour peut être pris en défaut.
Les principes retenus sont les suivants :
n'est pas mise à jour en cas de reactualisation de cette macro. Le bouton (icone
loupe) permet de visualiser le source du fichier inclus.
-3- Il est possible de reactualiser la validite du jeu de commandes en demandant
-un rapport de validation. Ceci declenche une reevaluation systematique des
-fichiers inclus. Les fichiers inclus sont mémorisés en fonction de leur UNITE
+3- Les fichiers inclus sont mémorisés en fonction de leur UNITE
pour les INCLUDE, du nom de matériau pour les INCLUDE_MATERIAU et comme poursuite
pour une POURSUITE (il n'est pas possible d'avoir plus d'une POURSUITE par fichier).
ATTENTION : comme on s'appuie sur l'UNITE pour memoriser les fichers inclus il est
faite avec le meme fichier pour des INCLUDE différents.
4- Pour changer les fichiers inclus, il faut passer par l'onglet FICHIER, modifier
-le nom du fichier et appuyer sur le bouton Valider. Tous les fichiers inclus par
-ce premier fichier seront systématiquement redemandés à l'utilisateur.
+le nom du fichier et appuyer sur le bouton Valider. Il est possible en passant par
+cet onglet de forcer la prise en compte d'un fichier include partiellement valide
+ce qui n'est pas possible lors de l'import initial.
5- Le nom d'un fichier INCLUDE_MATERIAU est construit à partir des valeurs des mots-clés
de la commande, il n'est donc jamais demandé explicitement à l'utilisateur.
-6- En cas de modification importante des fichiers inclus il est recommandé de demander
-la revalidation du jeu de commandes avec le menu Jeu de commandes -> rapport de validation.
-La remise à jour de la validité peut entrainer des resultats surprenants dans des cas particuliers
-d'INCLUDE enchainés contenant des commandes DETRUIRE.
+6- Il est possible d'editer un fichier include ou poursuite. Pour cela, il suffit d'utiliser
+l'entrée "Edit" du menu contextuel de l'étape en question (bouton droit de la souris).
+Le fichier include ou poursuite en cours d'édition apparaitra dans un onglet distinct.
+Les modifications dans un fichier include ou poursuite sont normalement propagées au fichier
+principal et aux autres includes et poursuites. Il est cependant possible que quelques cas
+tordus ne soient pas correctement traités. Dans le doute, une demande de rapport de validation
+peut permettre de réactualiser l'état des différents fichiers.
+
#
__version__="$Name: $"
-__Id__="$Id: treewidget.py,v 1.21 2005/05/19 12:18:48 eficas Exp $"
+__Id__="$Id: treewidget.py,v 1.22 2005/06/01 15:18:16 eficas Exp $"
#
Fonte_Standard = fontes.standard
def onValid(self):
#print "onValid : l'item a changé de validité ",self.item,self.item.object,self.item.object.isvalid()
self.update_node_valid()
- self.update_label_texte()
- self.update_texte()
+ self.update_node_label()
+ self.update_node_texte()
def onAdd(self,objet):
#print "onAdd : un objet a été ajouté aux fils de l'item ",self.item.object,objet
self.expand_node()
old_nodes=self.children
self.update_nodes()
- #print "onAdd:nodes",self.children
self.redraw_children(old_nodes)
self.force_select()
self.expand_node()
old_nodes=self.children
self.update_nodes()
- #print "onSupp:nodes",self.children
self.redraw_children(old_nodes)
self.force_select()
inodes=iter(self.children)
sublist=self.item._GetSubList()
iliste=iter(sublist)
- #print "update_nodes",self.children
- #print "update_nodes",sublist
while(1):
old_item=item=None
tous les autres
"""
#print "SELECT",self
- #traceback.print_stack()
if not self.children : self.build_children()
- #if self.selected and self.tree.node_selected is self: return
self.tree.deselectall()
self.selected = 1
self.tree.node_selected = self
child.update_icone()
def update_label_texte(self):
+ """ Met a jour le label du noeud et celui de tous ses fils ouverts """
+ self.update_node_label()
+ if self.state == 'expanded' :
+ for child in self.children:
+ if child.displayed != 0 : child.update_label_texte()
+
+ def update_texte(self):
+ """ Met à jour les noms des SD et valeurs des mots-clés """
+ self.update_node_texte()
+ if self.state == 'expanded' :
+ for child in self.children:
+ if child.displayed != 0 : child.update_texte()
+
+ def update_node_label(self):
+ """ Met a jour le label du noeud """
# nom,fonte et couleur de l'objet du noeud à afficher
labeltext,fonte,couleur = self.item.GetLabelText()
if labeltext == '' : labeltext = ' '
if fonte == None : fonte = Fonte_Standard
if couleur == None : couleur = 'black'
self.label.configure(text=labeltext,font=fonte)
- if self.state == 'expanded' :
- for child in self.children:
- if child.displayed != 0 : child.update_label_texte()
- def update_texte(self):
+ def update_node_texte(self):
""" Met à jour les noms des SD et valeurs des mots-clés """
text = self.item.GetText()
if text == None : text = ''
self.text.configure(text=text)
- if self.state == 'expanded' :
- for child in self.children:
- if child.displayed != 0 : child.update_texte()
-
+
def update_node_valid(self) :
"""Cette methode remet a jour la validite du noeud (icone)
Elle appelle isvalid
"""
index = self.parent.children.index(self) - 1
if index < 0 : index =0
- #print index
ret=self.parent.item.suppitem(self.item)
if ret == 0:return
Réalise la copie de l'objet passé en argument qui est nécessairement
une commande
"""
- raise "OBSOLETE"
child = self.append_brother(objet_a_copier,retour='oui')
return child
if self.selection != None :
self.deselectitem(self.selection[1],self.selection[0],self.selection[2],)
self.selection = (mot,label,self.selection[2])
+ index = self.MCbox.index(labelsuivant)
+ self.MCbox.see(index)
self.highlightitem(labelsuivant)
self.arg_selected=motsuivant
labelsuivant.focus_set()
def control_sdprods(self,d):
"""sans objet pour les commandes commentarisées"""
pass
+
def close(self):
pass
+
+ def reset_context(self):
+ pass
+
def close(self):
pass
+ def reset_context(self):
+ pass
+
+
def close(self):
pass
+ def reset_context(self):
+ pass
class COMBI_PARAMETRE :
def __init__(self,chainevaleur,valeur):
for child in self.mc_liste :
child.replace_concept(old_sd,sd)
+ def reset_context(self):
+ pass
+
def get_noms_sd_oper_reentrant(self):
"""
Retourne la liste des noms de concepts utilisés à l'intérieur de la commande
"""
self.current_context={}
self.index_etape_courante=0
+ for etape in self.etapes:
+ etape.reset_context()
def del_sdprod(self,sd):
"""
self.g_context={}
def close(self):
- #print "MACRO_ETAPE.close",self
if hasattr(self,"jdc_aux") and self.jdc_aux:
# La macro a un jdc auxiliaire inclus. On demande sa fermeture
self.jdc_aux.close()
+ def reset_context(self):
+ if hasattr(self,"jdc_aux") and self.jdc_aux:
+ # La macro a un jdc auxiliaire inclus. On demande la reinitialisation du contexte
+ self.jdc_aux.reset_context()
+
def delete_concept(self,sd):
"""
Fonction : Mettre a jour les mots cles de l etape et eventuellement