Salome HOME
PN : Enleve Homard pour la v1.7
[tools/eficas.git] / Ihm / I_MCSIMP.py
index b897fa0627af5f40e3ef5ab37fc401134dc2b729..795c93eaab2c14247aa8d65ba94fdab62bf08bfe 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -205,9 +206,26 @@ class MCSIMP(I_OBJECT.OBJECT):
         objet = eval(new_valeur,d)
         return objet,1
       except Exception:
+       itparam=self.cherche_item_parametre(new_valeur)
+       if itparam:
+            return itparam,1
         if CONTEXT.debug : traceback.print_exc()
         return None,0
 
+  def cherche_item_parametre (self,new_valeur):
+        try:
+         nomparam=new_valeur[0:new_valeur.find("[")]
+         indice=new_valeur[new_valeur.find("[")+1:new_valeur.find("]")]
+         for p in self.jdc.params:
+            if p.nom == nomparam :
+               if int(indice) < len(p.get_valeurs()):
+                  itparam=parametre.ITEM_PARAMETRE(p,int(indice))
+                  return itparam
+         return None
+       except:
+         return None
+
+
   def delete_concept(self,sd):
     """ 
         Inputs :
@@ -380,3 +398,63 @@ class MCSIMP(I_OBJECT.OBJECT):
 #ATTENTION SURCHARGE : toutes les methodes ci apres sont des surcharges du Noyau et de Validation
 # Elles doivent etre reintegrees des que possible
 
+
+  def isvalid(self,cr='non'):
+      """
+         Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP
+
+           - 0 si l'objet est invalide
+           - 1 si l'objet est valide
+
+         Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui'
+         la méthode construit également un comte-rendu de validation
+         dans self.cr qui doit avoir été créé préalablement.
+      """
+      if self.state == 'unchanged':
+        return self.valid
+      else:
+        valid = 1
+        v=self.valeur
+        #  verification presence
+        if self.isoblig() and v == None :
+          if cr == 'oui' :
+            self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé")))
+          valid = 0
+
+        if v is None:
+           valid=0
+           if cr == 'oui' :
+              self.cr.fatal("None n'est pas une valeur autorisée")
+        else:
+           # type,into ...
+          if v.__class__.__name__=='PARAMETRE' or v.__class__.__name__ == 'ITEM_PARAMETRE':
+             verif_type=1
+          else:
+             verif_type=self.verif_type(val=v,cr=cr)
+             # cas des tuples avec un ITEM_PARAMETRE
+              if verif_type == 0:
+                new_val=[]
+                for i in v:
+                    if i.__class__.__name__ != 'ITEM_PARAMETRE': 
+                       new_val.append(i)
+                    if new_val != [] :
+                       verif_type=self.verif_type(val=new_val,cr=cr)
+           valid = verif_type*self.verif_into(cr=cr)*self.verif_card(cr=cr)
+           #
+           # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
+           #
+           if valid and self.definition.validators and not self.definition.validators.verif(self.valeur):
+              if cr == 'oui' :
+                 self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info())))
+              valid=0
+           # fin des validateurs
+           #
+       # cas d un item Parametre
+       if self.valeur.__class__.__name__ == 'ITEM_PARAMETRE':
+          valid=self.valeur.isvalid()
+          if valid == 0:
+              if cr == 'oui' :
+                self.cr.fatal(string.join( repr (self.valeur), " a un indice incorrect"))
+
+        self.set_valid(valid)
+        return self.valid