X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Extensions%2Fparametre.py;h=7ec6ce7067f068f9ff668212571a0c9699496fcb;hb=36ca867c4099d6a804374b8f6a2b897d9ea69a09;hp=7e18bc160d5c5a33a4b1dccfbab0831df4f41aab;hpb=757737ec737f71d6c88050a6ce0a12d6aaaac30c;p=tools%2Feficas.git diff --git a/Extensions/parametre.py b/Extensions/parametre.py index 7e18bc16..7ec6ce70 100644 --- a/Extensions/parametre.py +++ b/Extensions/parametre.py @@ -1,3 +1,23 @@ +# -*- coding: utf-8 -*- +# CONFIGURATION MANAGEMENT OF EDF VERSION +# ====================================================================== +# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG +# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY +# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY +# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR +# (AT YOUR OPTION) ANY LATER VERSION. +# +# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT +# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU +# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# +# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE +# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, +# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# +# +# ====================================================================== """ Ce module contient la classe PARAMETRE qui sert à définir des objets paramètres qui sont compréhensibles et donc affichables @@ -8,11 +28,14 @@ # import de modules Python import string,types +from math import * # import de modules Eficas from Noyau.N_CR import CR +from Noyau import N_OBJECT +from Ihm import I_OBJECT -class PARAMETRE : +class PARAMETRE(N_OBJECT.OBJECT,I_OBJECT.OBJECT) : """ Cette classe permet de créer des objets de type PARAMETRE cad des affectations directes dans le jeu de commandes (ex: a=10.) @@ -25,6 +48,7 @@ class PARAMETRE : def __init__(self,nom,valeur=None): # parent ne peut être qu'un objet de type JDC + self.dict_valeur=[] self.valeur = self.interprete_valeur(valeur) self.val=valeur self.nom = nom @@ -34,8 +58,127 @@ class PARAMETRE : self.jdc = self.parent = CONTEXT.get_current_step() self.niveau=self.parent.niveau self.actif=1 + self.state='undetermined' self.register() + def __getitem__(self,key): + param_item=ITEM_PARAMETRE(self,key) + return param_item + + def __neg__(self): + try: + return -1*self.valeur + except: + print "******* Probleme : pas de valeur négative" + return None + + def __add__(self,a): + try : + return self.valeur+a.valeur + except : + print "******* Probleme : a l addition" + return None + + def __radd__(self,a): + try : + return self.valeur+a.valeur + except : + print "******* Probleme : a l addition" + return None + + def __sub__(self,a): + try : + return self.valeur - a.valeur + except : + print "******* Probleme : a la soustraction" + return None + + def __rsub__(self,a): + try : + return a.valeur - self.valeur + except : + print "******* Probleme : a la soustraction" + return None + + def __mul__(self,a): + try : + return self.valeur*a.valeur + except : + print "******* Probleme : a la multiplication" + return None + + def __rmul__(self,a): + try : + return self.valeur*a.valeur + except : + print "******* Probleme : a la multiplication" + return None + + def __mul__(self,a): + try : + return self.valeur*a.valeur + except : + print "******* Probleme : a la multiplication" + return None + + def __rmul__(self,a): + try : + return self.valeur*a.valeur + except : + print "******* Probleme : a la multiplication" + return None + + def __add__(self,other): + try : + return self.valeur+other + except : + print "******* Probleme : a l addition" + return None + + def __radd__(self,other): + try : + return self.valeur+other + except : + print "******* Probleme : a l addition" + return None + + def __sub__(self,other): + try : + return self.valeur - other + except : + print "******* Probleme : a la soustraction" + return None + + def __rsub__(self,other): + try : + return other - self.valeur + except : + print "******* Probleme : a la soustraction" + return None + + def __mul__ (self,other): + retour=None + try : + retour = eval(self.valeur) * other + except : + try : + retour = self.valeur * other + except : + print "******* Probleme : a la multiplication" + return retour + + def __rmul__ (self,other): + retour=None + try : + retour = eval(self.valeur) * other + except : + try : + retour = self.valeur * other + except : + print "******* Probleme : a la multiplication" + return retour + + def interprete_valeur(self,val): """ Essaie d'interpréter val (chaîne de caractères)comme : @@ -64,6 +207,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 = [] @@ -80,13 +224,28 @@ class PARAMETRE : return val l_new_val.append(v) return tuple(l_new_val) - else: + # PN : commente le print + #else: # on a réussi à évaluer val en autre chose qu'un tuple ... - print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val - print 'on trouve : ',str(valeur),' de type : ',type(valeur) + #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 @@ -114,8 +273,8 @@ class PARAMETRE : """ Retourne 1 si self est valide, 0 sinon Un paramètre est considéré comme valide si : - - il a un nom - - il a une valeur + - il a un nom + - il a une valeur """ if self.nom == '' : if cr == 'oui': @@ -203,7 +362,7 @@ class PARAMETRE : """ Donne un echo de self sous la forme nom = valeur """ - return self.nom+' = '+str(self.valeur)+'\n' + return self.nom+' = '+str(self.valeur) def __str__(self): """ @@ -233,13 +392,16 @@ class PARAMETRE : def delete_concept(self,sd): pass + def replace_concept(self,old_sd,sd): + pass + def verif_condition_bloc(self): """ Evalue les conditions de tous les blocs fils possibles (en fonction du catalogue donc de la définition) de self et retourne deux listes : - - la première contient les noms des blocs à rajouter - - la seconde contient les noms des blocs à supprimer + - la première contient les noms des blocs à rajouter + - la seconde contient les noms des blocs à supprimer """ return [],[] @@ -250,8 +412,33 @@ class PARAMETRE : """ return [] + def verif_existence_sd(self): + pass + def control_sdprods(self,d): + """sans objet """ + pass +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