Salome HOME
CCAR: correction d'un probleme de mise a jour de contexte lors d'une insertion
authoreficas <>
Mon, 6 Jun 2005 09:33:06 +0000 (09:33 +0000)
committereficas <>
Mon, 6 Jun 2005 09:33:06 +0000 (09:33 +0000)
d'include (reset_context)
limitation des update d'un noeud dans l'arbre : nouvelles methodes update_node_text
et update_node_label
correction bug (OBSOLETE abusif) de copier coller
amelioration du scroll dans la liste des commandes
mise a jour de l'AIDE en ligne pour les INCLUDE et POURSUITE

AIDE/fichiers/includes.txt
Editeur/treewidget.py
Editeur/widgets.py
Extensions/commande_comm.py
Extensions/commentaire.py
Extensions/parametre.py
Ihm/I_ETAPE.py
Ihm/I_JDC.py
Ihm/I_MACRO_ETAPE.py

index 49a400a53ceebcf9b1534d29fdb5e0b44e1d13ee..8fdb1e199e46a2163e0f4f1f8b1d4b9326d4807e 100644 (file)
@@ -1,7 +1,10 @@
 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 :
 
@@ -13,9 +16,7 @@ la macro -> menu View) le contenu de ces types de macros. Cette visualisation
 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
@@ -23,13 +24,18 @@ conseill
 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.
+
index 9664ad899f3a4a00e1bd74af97ed727d130baa99..5649fa23afc6c97e6f2d9a9ad6bf53e26b184f0d 100644 (file)
@@ -28,7 +28,7 @@ from Ihm import CONNECTOR
 
 #
 __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
@@ -230,15 +230,14 @@ class Node :
     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()
 
@@ -247,7 +246,6 @@ class Node :
         self.expand_node()
         old_nodes=self.children
         self.update_nodes()
-        #print "onSupp:nodes",self.children
         self.redraw_children(old_nodes)
         self.force_select()
 
@@ -257,8 +255,6 @@ class Node :
         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
@@ -405,9 +401,7 @@ class Node :
         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
@@ -700,25 +694,34 @@ class Node :
                     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
@@ -1022,7 +1025,6 @@ class Node :
         """
         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
@@ -1081,7 +1083,6 @@ class Node :
        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
 
index d03678fa8d5416d368f99965ff6aecef9b95f250..a2d9daa40a72f422dc5811d8e9f11079cb8e3484 100644 (file)
@@ -820,6 +820,8 @@ class ListeChoix :
            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()
index f6343070d6c51a550c4d00a1eed6d8c8fe536b0b..2d7950c20a9cb98939d29fae6c86e68b6949fcec 100644 (file)
@@ -265,5 +265,10 @@ class COMMANDE_COMM(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
     def control_sdprods(self,d):
       """sans objet pour les commandes commentarisées"""
       pass
+
     def close(self):
       pass
+
+    def reset_context(self):
+      pass
+
index a94e190e1bf261c6f3436b700221d6ab6efe3d22..0908e2fef20be1b496295009214d6bdbcd82fabd 100644 (file)
@@ -193,3 +193,7 @@ class COMMENTAIRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
   def close(self):
       pass
 
+  def reset_context(self):
+      pass
+
+
index 8a5c8153dea097561453ae179dde7d53871f22ae..ceaa7fb931b4774b4f2670134c61746c2da4f233 100644 (file)
@@ -472,6 +472,8 @@ class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) :
   def close(self):
       pass
 
+  def reset_context(self):
+      pass
 
 class COMBI_PARAMETRE :
   def __init__(self,chainevaleur,valeur):
index 5713fde2a4231ba1ed948c229a26626e36436663..4664252bc48c38ca47cd0e43067696e00e31a739 100644 (file)
@@ -333,6 +333,9 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       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
index ead7ed13d5b21cfa9b9b9636c173ed3a2279b413..b043c48d6f86451f3851a5ea33dbff1e396e93aa 100644 (file)
@@ -492,6 +492,8 @@ class JDC(I_OBJECT.OBJECT):
       """
       self.current_context={}
       self.index_etape_courante=0
+      for etape in self.etapes:
+          etape.reset_context()
 
    def del_sdprod(self,sd):
       """
index 3ecd1b8ff47a675a4536216aec8bb9e0ef8de005..94f1bb3c0900b4e08e4d1853482f3f69cff5dc92 100644 (file)
@@ -285,11 +285,15 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       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