from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory
from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal
from A_VALIDATOR import CardVal, InstanceVal
+from A_VALIDATOR import VerifTypeTuple
# On remplace la factory des validateurs initialement dans Noyau par celle
# de A_VALIDATOR
typ = Tuple(2),
max = "**",
fr = "Liste des instants ",
+ validators=VerifTypeTuple(('R','R')),
),
ListeInstants2 = SIMP ( statut = "o",
- typ = Tuple(3),
+ typ = Tuple(2),
max = "**",
fr = "Liste des instants ",
),
for child in self.children:
if child.isHidden() == false : child.update_texte()
-# def update_valid(self) :
-# """Cette methode a pour but de mettre a jour la validite du noeud
-# et de propager la demande de mise a jour a son Parent
-# """
-# #print "NODE update_valid", self.item.GetLabelText()
-# self.update_node_valid()
-# try :
-# self.treeParent.update_valid()
-# except:
-# pass
def doPasteCommande(self,objet_a_copier):
"""
for valeur in self.listeValeursCourantes :
listeVal.append(valeur)
if self.node.item.wait_tuple()== 1 :
+ indexListe = index
validite,comm,comm2,listeRetour=self.politique.AjoutTuple(liste,index,listeVal)
else :
validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal)
listeATraiter=self.DecoupeListeValeurs(listeRetour)
for valeur in listeATraiter :
str_valeur=str(valeur)
- print str_valeur
self.LBValeurs.insertItem(index,str_valeur)
item=self.LBValeurs.item(index)
item.setSelected(1)
valide=self.node.item.valide_item(valeurTuple)
if not valide :
try :
- valeur,valide=self.node.item.eval_valeur(valeur)
- valide,commentaire = self.node.item.object.verif_type(valeur)
+ valeur,valide=self.node.item.eval_valeur(valeurTuple)
+ valide = self.node.item.valide_item(valeur)
except :
pass
if not valide:
- commentaire="Valeur "+str(valeur)+ " incorrecte : ajout à la liste refusé"
+ commentaire="Valeur "+str(valeurTuple)+ " incorrecte : ajout à la liste refusé"
commentaire2=self.node.item.info_erreur_item()
return valide,commentaire,commentaire2,listeRetour
if len(listecourante) + 1 >= max :
commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
return valide,commentaire,commentaire2,listeRetour
- listecourante.insert(index,valeurTuple)
- index=index+1
listeRetour.append(valeurTuple)
return valide,commentaire,commentaire2,listeRetour
if not isinstance(valeur,self.aClass): return 0
return 1
+class VerifTypeTuple(Valid,ListVal) :
+ def __init__(self,typeDesTuples):
+ self.typeDesTuples=typeDesTuples
+ Valid.__init__(self)
+ self.cata_info=""
+
+ def info(self):
+ return ": verifie les types dans un tuple"
+
+ def info_erreur_liste(self):
+ return "Les types entres ne sont pas permis"
+
+ def default(self,valeur):
+ #if valeur in self.liste : raise ValError("%s est un doublon" % valeur)
+ return valeur
+
+ def is_list(self) :
+ return 1
+
+ def convert_item(self,valeur):
+ if len(valeur) != len(self.typeDesTuples):
+ raise ValError("%s devrait etre de type %s " %(valeur,self.typeDesTuples))
+ for i in range(len(valeur)) :
+ ok=self.verifType(valeur[i],self.typeDesTuples[i])
+ if ok!=1 :
+ raise ValError("%s devrait etre de type %s " %(valeur,self.typeDesTuples))
+ return valeur
+
+ def verif_item(self,valeur):
+ try :
+ if len(valeur) != len(self.typeDesTuples): return 0
+ for i in range(len(valeur)) :
+ ok=self.verifType(valeur[i],self.typeDesTuples[i])
+ if ok!=1 : return 0
+ except :
+ return 0
+ return 1
+
+ def verifType(self,valeur,type_permis):
+ if type_permis == 'R':
+ if type(valeur) in (types.IntType,types.FloatType,types.LongType):return 1
+ elif type_permis == 'I':
+ if type(valeur) in (types.IntType,types.LongType):return 1
+ elif type_permis == 'C':
+ if self.is_complexe(valeur):return 1
+ elif type_permis == 'TXM':
+ if type(valeur)==types.StringType:return 1
+ return 0
+
+ def verif(self,valeur):
+ if type(valeur) in (types.ListType,types.TupleType):
+ liste=list(valeur)
+ for val in liste:
+ if self.verif_item(val)!=1 : return 0
+ return 1
+