Salome HOME
F.R: composimp.py : dans méthode select_in_file, ajout d'un paramètre manquant dans le
authoreficas <>
Tue, 23 Apr 2002 11:30:39 +0000 (11:30 +0000)
committereficas <>
Tue, 23 Apr 2002 11:30:39 +0000 (11:30 +0000)
F.R:                constructeur de FenetreDeSelection
F.R: commande_comm.py : ajout de la méthode reparent
F.R: I_ETAPE.py : - test supplémentaire dans le cas d'opérateur réentrant au niveau de nomme_sd :
F.R:                lorsqu'on trouve une sd du nom donné par l'utilisateur,
F.R:                il faut encore tester qu'elle est du type attendu !!!
F.R:              - surcharge de Build_sd du noyau en raison de l'absence de test
F.R:                de validité de l'étape avant la construction de la sd
F.R:               --> cette méthode devra disparaître et la modif répercutée dans le noyau
F.R: I_MCSIMP.py : ajout des méthodes get_type et get_min_max utilisées lorsque
F.R:               l'on importe des valeurs depuis un fichier

Editeur/composimp.py
Extensions/commande_comm.py
Ihm/I_ETAPE.py
Ihm/I_MCSIMP.py

index f0368965318ed50871b25f54f755c8acde9cd476..837fa925a84d902d715d93c3eb7ad6338ea005fa 100644 (file)
@@ -472,10 +472,13 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel):
           f = open(nom_fichier, "rb")
           selection_texte = f.read()
           f.close()
-          self.ajout_valeurs = FenetreDeSelection(self, self.node.item,
-                                         titre="Sélection de valeurs",
-                                         texte=selection_texte)
+          self.ajout_valeurs = FenetreDeSelection(self, 
+                                                 self.node.item,
+                                                 self.parent.appli,
+                                                 titre="Sélection de valeurs",
+                                                 texte=selection_texte)
       except:
+          traceback.print_exc()
           showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier)
           
   def get_bulle_aide(self):
index adbf3babdba402c19d050ed3c4f6b00ab5af32a7..7e6227206d6ba8edbe6daefd85d4ee2156617f87 100644 (file)
@@ -217,3 +217,19 @@ class COMMANDE_COMM:
       """
       return []
 
+    def reparent(self,parent):
+      """
+          Cette methode sert a reinitialiser la parente de l'objet
+      """
+      self.parent=parent
+      self.jdc=parent.get_jdc_root()
+      self.etape=self
+
+    def verif_existence_sd(self):
+      """
+         Vérifie que les structures de données utilisées dans self existent bien dans le contexte
+        avant étape, sinon enlève la référence à ces concepts
+        --> sans objet pour les commandes commentarisées
+      """
+      pass
+       
index dc0c0b51613bbf07335d66a3de60948f029c6672..b56652803c5f3a5c22cc90362272a91f590c26a7 100644 (file)
@@ -93,8 +93,12 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       if self.definition.reentrant == 'f' :
         sd = self.jdc.get_sd_avant_etape(nom,self)
         if sd != None :
-          self.sd = self.reuse = sd
-          return 1,"Opérateur facultativement réentrant et concept existant trouvé"
+         # FR : il faut tester que la sd trouvée est du bon type !!!!!!!!!!!!!!!!!
+         if isinstance(sd,self.get_type_produit()) :
+             self.sd = self.reuse = sd
+             return 1,"Opérateur facultativement réentrant et concept existant trouvé"
+         else:
+            return 0,"Concept déjà existant et de mauvais type"
         else :
           # il faut éventuellement enlever le lien vers une SD existante car si on passe ici
          # cela signifie que l'opérateur n'est pas utilisé en mode réentrant.
@@ -300,6 +304,56 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
      for motcle in self.mc_liste :
          motcle.verif_existence_sd()
      
+   def Build_sd(self,nom):
+      """
+         Construit le concept produit de l'opérateur. Deux cas 
+         peuvent se présenter :
+        
+         - le parent n'est pas défini. Dans ce cas, l'étape prend en charge la création 
+           et le nommage du concept.
+
+         - le parent est défini. Dans ce cas, l'étape demande au parent la création et 
+           le nommage du concept.
+
+      """
+      if not self.isactif():return
+      # FR : attention cette méthode ne devrait pas se trouver là car elle surcharge celle qui 
+      # se trouve dans N_ETAPE.py et elle est partie intégrante du noyau, mais, suite à l'absence de 
+      # test de validité de l'opérateur avant d'essayer de déterminer la sd produite, on n'arrivait
+      # pas à relire avec EFICAS un fichier contenant une étape encore incomplète du style :
+      #  sansnom = AFFE_CHAR_CINE(MODELE=None)
+      # Suite à la stabilisation du noyau d'Aster, je n'ai pas eu d'autre solution que de surcharger
+      # cette méthode ici en rajoutant le test manquant ...
+      if not self.isvalid(sd='non') : return
+      try:
+         if self.parent:
+            sd= self.parent.create_sdprod(self,nom)
+            if type(self.definition.op_init) == types.FunctionType: 
+               apply(self.definition.op_init,(self,self.parent.g_context))
+         else:
+            sd=self.get_sd_prod()
+            # On n'utilise pas self.definition.op_init car self.parent 
+            # n'existe pas
+            if sd != None and self.reuse == None:
+               # On ne nomme le concept que dans le cas de non reutilisation 
+               # d un concept
+               sd.nom=nom
+         if self.jdc and self.jdc.par_lot == "NON" :
+            self.Execute()
+         return sd
+      except AsException,e:
+         raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
+                              'fichier : ',self.appel[1],e)
+      except EOFError:
+         # XXX Normalement le contexte courant doit etre le parent.
+         # Il n'y a pas de raison de remettre le contexte au parent
+         #self.reset_current_step()
+         raise
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         raise AsException("Etape ",self.nom,'ligne : ',self.appel[0],
+                           'fichier : ',self.appel[1]+'\n',
+                            string.join(l))
      
      
      
index 840c5934c69b6617ae273bbcda34f514132d1990..b17097031b1887e1bdcfc915b345ae0891a83dde 100644 (file)
@@ -348,7 +348,18 @@ class MCSIMP(I_OBJECT.OBJECT):
              self.init_modif()
  
  
+  def get_min_max(self):
+     """
+     Retourne les valeurs min et max admissibles pour la valeur de self
+     """
+     return self.definition.min,self.definition.max
+
+
+  def get_type(self):
+     """
+     Retourne le type attendu par le mot-clé simple
+     """
+     return self.definition.type