+# -*- 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
# 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.)
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
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 :
valeur = eval(val)
except:
pass
+ #PN je n ose pas modifier je rajoute
if valeur != None :
if type(valeur) == types.TupleType:
l_new_val = []
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
"""
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':
"""
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):
"""
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 [],[]
"""
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