]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
CCAR: gestion des unites d'INCLUDE memorisees
authoreficas <>
Tue, 12 Nov 2002 18:47:12 +0000 (18:47 +0000)
committereficas <>
Tue, 12 Nov 2002 18:47:12 +0000 (18:47 +0000)
Ihm/I_JDC.py
Ihm/I_MACRO_ETAPE.py

index b6e3406df78d305cf3775e4c5ac4751f21566170..104ee1c6a36b43190b951a9acedff53f168740a4 100644 (file)
@@ -441,9 +441,7 @@ class JDC(I_OBJECT.OBJECT):
           Retourne le nom du fichier correspondant à un numero d'unité
           logique (entier) ainsi que le source contenu dans le fichier
       """
-      if self.recorded_units.has_key(unite):
-         return self.recorded_units[unite]
-      elif self.appli :
+      if self.appli :
          # Si le JDC est relié à une application maitre, on délègue la recherche
          file,text = self.appli.get_file(unite,fic_origine)
       else:
@@ -615,6 +613,10 @@ class JDC(I_OBJECT.OBJECT):
       for etape in self.etapes :
          print etape.nom+".state: ",etape.state
       
+   def change_unit(self,unit,etape,old_unit):
+      if self.recorded_units.has_key(old_unit):del self.recorded_units[old_unit]
+      self.record_unit(unit,etape)
+
    def record_unit(self,unit,etape):
       """Enregistre les unites logiques incluses et les infos relatives a l'etape"""
       if unit is None:
index bd0f0597dade32ca06e95ffcfbfb7f68e78ab33d..bb4a0e66a3f00318aefbe71b9b1bcc50ff2530b9 100644 (file)
@@ -356,15 +356,32 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          les noms des fichiers
          Ceci suppose que les relations entre unites et noms ont été memorisees préalablement
       """
-      if self.parent.recorded_units.has_key(unite):
-         f,text,units=self.parent.recorded_units[unite]
-      else:
+      if unite != self.fichier_unite:
+         # Changement d'unite
          f,text=self.get_file(unite=unite,fic_origine=self.parent.nom)
          units={}
-      self.fichier_ini = f
-      self.fichier_text=text
+         self.fichier_ini = f
+         self.fichier_text=text
+         self.recorded_units=units
+         # Les 3 attributs fichier_ini fichier_text recorded_units doivent etre corrects
+         # avant d'appeler change_unit
+         self.parent.change_unit(unite,self,self.fichier_unite)
+      elif not self.parent.recorded_units.has_key(unite):
+         # Nouvelle unite
+         f,text=self.get_file(unite=unite,fic_origine=self.parent.nom)
+         units={}
+         self.fichier_ini = f
+         self.fichier_text=text
+         self.recorded_units=units
+         self.parent.change_unit(unite,self,self.fichier_unite)
+      else:
+         # Meme unite existante
+         f,text,units=self.parent.recorded_units[unite]
+         self.fichier_ini = f
+         self.fichier_text=text
+         self.recorded_units=units
+
       self.fichier_err=None
-      self.recorded_units=units
       self.old_contexte_fichier_init=self.contexte_fichier_init
 
       try:
@@ -433,15 +450,11 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          if self.fichier_err is not None: raise Exception(self.fichier_err)
 
   def get_file(self,unite=None,fic_origine=''):
-      """
-         Retourne le nom du fichier associe a l unite logique unite (entier)
-         ainsi que le source contenu dans le fichier
-         Retourne en plus un dictionnaire contenant les sous includes memorises
+      """Retourne le nom du fichier et le source correspondant a l'unite unite
+         Initialise en plus recorded_units
       """
       units={}
-      if self.parent.recorded_units.has_key(unite):
-         f,text,units=self.parent.recorded_units[unite]
-      elif self.jdc :
+      if self.jdc :
          f,text=self.jdc.get_file(unite=unite,fic_origine=fic_origine)
       else:
          f,text=None,None
@@ -463,7 +476,6 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
       del self.unite
       # Si unite n'a pas de valeur, l'etape est forcement invalide. On peut retourner None
       if not unite : return
-      self.fichier_unite=unite
 
       if not hasattr(self,'fichier_ini') : 
          # Si le fichier n'est pas defini on le demande
@@ -472,6 +484,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          self.fichier_ini  = f
          self.fichier_text = text
          self.contexte_fichier_init={}
+         self.fichier_unite=unite
          self.parent.record_unit(unite,self)
          if f is None:
              self.fichier_err="Le fichier INCLUDE n est pas defini"
@@ -500,6 +513,7 @@ class MACRO_ETAPE(I_ETAPE.ETAPE):
          # Si le fichier est deja defini on ne reevalue pas le fichier
          # et on leve une exception si une erreur a été enregistrée
          self.update_fichier_init(unite)
+         self.fichier_unite=unite
          if self.fichier_err is not None: raise Exception(self.fichier_err)