]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
PN : ajout du ITEM_PARAMETRE pour accepter les parametres de la forme
authoreficas <>
Wed, 17 Nov 2004 10:03:35 +0000 (10:03 +0000)
committereficas <>
Wed, 17 Nov 2004 10:03:35 +0000 (10:03 +0000)
P1=[3,8,10]

Extensions/parametre.py
Ihm/I_MCSIMP.py
Validation/V_MCSIMP.py

index 3bb7d1052092574b7732fcf79eed5bb91bec8fa0..0f7c8d11327128324282d056af2d8e07085abae6 100644 (file)
@@ -56,6 +56,12 @@ class PARAMETRE :
     self.actif=1
     self.state='undetermined'
     self.register()
+    self.dict_valeur=[]
+    self.interprete_valeur(valeur)
+
+  def __getitem__(self,key):
+    param_item=ITEM_PARAMETRE(self,key)
+    return param_item
 
   def interprete_valeur(self,val):
     """
@@ -85,6 +91,7 @@ class PARAMETRE :
         valeur = eval(val)
     except:
         pass
+    #PN je n ose pas modifier je rajoute
     if valeur != None :
         if type(valeur) == types.TupleType:
             l_new_val = []
@@ -107,8 +114,22 @@ class PARAMETRE :
             #print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
             #print 'on trouve : ',str(valeur),' de type : ',type(valeur)
     # on retourne val comme une string car on n'a pas su l'interpréter
+    if valeur != None :
+       if type(valeur).__name__ == 'list':
+          self.dict_valeur=[]
+          for i in range(len(valeur)):
+             self.dict_valeur.append(valeur[i])
     return val
 
+  def get_valeurs(self):
+    valeurretour=[]
+    if self.dict_valeur != []:
+       for val in self.dict_valeur:
+           valeurretour.append(val)
+    else:
+        valeurretour.append(self.valeur)
+    return valeurretour
+
   def set_valeur(self,new_valeur):
     """
     Remplace la valeur de self par new_valeur interprétée
@@ -284,4 +305,24 @@ class PARAMETRE :
 
 
 
+class ITEM_PARAMETRE :
+  def __init__(self,param_pere,item=None):
+      self.param_pere = param_pere
+      self.item = item
+      
 
+  def __repr__(self):
+    return self.param_pere.nom+'['+str(self.item)+']'
+
+
+  def isvalid(self):
+      isvalid = 1
+      if self.item < 0:
+         isvalid =  0
+      try:
+        longueur= len(self.param_pere.dict_valeur) - 1
+      except:
+         longueur=0
+      if self.item > longueur :
+         isvalid= 0
+      return isvalid
index 6382453d958764f4c8fa75abd369673b00977fdf..2cdf8979cf3d4acfbfcac648bc0d717cc535390c 100644 (file)
@@ -206,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 :
index 9735364528b06d6a6744045b33e1dfdc307494e8..c3e28c5979c8ed980d85dd1955b4ff1dc96d4ea5 100644 (file)
@@ -112,6 +112,12 @@ class MCSIMP:
               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
@@ -267,7 +273,11 @@ class MCSIMP:
           return 0
       elif type(valeur) not in (types.IntType,types.FloatType,types.LongType):
         # ce n'est pas un réel
-        return 0
+       try :
+         valeur=valeur +1
+         return 1
+       except:
+          return 0
       else:
         return 1
 
@@ -321,6 +331,11 @@ class MCSIMP:
           # on a à faire à un PARAMETRE qui définit une liste d'items
           # --> on teste sur la première car on n'accepte que les liste homogènes
           valeur = valeur.valeur[0]
+
+      if valeur.__class__.__name__ == 'PARAMETRE' or valeur.__class__.__name__ == 'ITEM_PARAMETRE':
+       # on admet que c'est OK
+       return 1
+
       if type_permis == 'R':
         return self.is_reel(valeur)
       elif type_permis == 'I':