From: eficas <> Date: Wed, 17 Nov 2004 10:03:35 +0000 (+0000) Subject: PN : ajout du ITEM_PARAMETRE pour accepter les parametres de la forme X-Git-Tag: CC_param_poursuite~220 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a8b28a72389b88cc6634d3a1a966a52b9130369b;p=modules%2Feficas.git PN : ajout du ITEM_PARAMETRE pour accepter les parametres de la forme P1=[3,8,10] --- diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 3bb7d105..0f7c8d11 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -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 diff --git a/Ihm/I_MCSIMP.py b/Ihm/I_MCSIMP.py index 6382453d..2cdf8979 100644 --- a/Ihm/I_MCSIMP.py +++ b/Ihm/I_MCSIMP.py @@ -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 : diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index 97353645..c3e28c59 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -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':