From: eficas <> Date: Thu, 16 Oct 2003 14:14:32 +0000 (+0000) Subject: PN X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2FBR_PN_VAL;p=tools%2Feficas.git PN --- diff --git a/Editeur/composimp.py b/Editeur/composimp.py index 1fe2c13c..ecca5128 100644 --- a/Editeur/composimp.py +++ b/Editeur/composimp.py @@ -108,7 +108,7 @@ class newSIMPPanel(panels.OngletPanel): else : validite=self.node.item.valide_item(valeur) commentaire=self.node.item.info_erreur_item() - + if validite : self.node.item.set_valeur(valeur) self.parent.appli.affiche_infos(mess) @@ -265,8 +265,8 @@ class PLUSIEURS_Panel(newSIMPPanel): self.parent.appli.affiche_infos("Valeur acceptée") self.record_valeur(valeur) - if self.node.item.isvalid(): - self.node.parent.select() + #if self.node.item.isvalid(): + # self.node.parent.select() # fermeture de la fenêtre de sélection if self.ajout_valeurs: self.ajout_valeurs.quit() @@ -294,6 +294,7 @@ class PLUSIEURS_Panel(newSIMPPanel): commentaire="Valeur incorrecte : ajout à la liste refusé" testvalide=1 + # Lecture de la zone de saisie et evaluation si nécessaire if name != None : valeur = name else: @@ -303,6 +304,7 @@ class PLUSIEURS_Panel(newSIMPPanel): if (not testvalide) : commentaire = "impossible d'évaluer : %s " %`valeurentree` + # Pas de traitement des valeurs nulles ( a priori clic involontaire if (valeur == None or valeur =="") : commentaire = "Pas de saisie des valeurs nulles" encorevalide = -2 @@ -317,6 +319,10 @@ class PLUSIEURS_Panel(newSIMPPanel): commentaire=self.node.item.info_erreur_item() if (encorevalide == -1) : commentaire=self.node.item.info_erreur_liste() + # On traite le cas ou la liste n est pas valide pour un pb de cardinalite + min,max = self.node.item.GetMinMax() + if len(self.Liste_valeurs.get_liste()) >= max : + commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé" if testvalide and (encorevalide == 1): min,max = self.node.item.GetMinMax() @@ -334,9 +340,6 @@ class PLUSIEURS_Panel(newSIMPPanel): commentaire ="Type de la valeur incorrecte" #self.erase_valeur() - print "AVANT PB" - print encorevalide - print commentaire self.parent.appli.affiche_infos(commentaire) def sup_valeur_sans_into(self,name=None): @@ -595,7 +598,6 @@ class PLUSIEURS_BASE_Panel(PLUSIEURS_Panel): listecourante=self.Liste_valeurs.get_liste() encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante) if not encorevalide : encorevalide = -1 - print "ICI ", encorevalide self.add_valeur_sans_into(valeur,encorevalide) def select_in_file(self): @@ -1516,13 +1518,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): """ valide=1 if self.definition.validators : - valide=self.definition.validators.verif_item(item) - - # if not self.definition.validators.is_list(): - # try : - # valide=self.definition.validators.verif(item) - # except : - # valide=0 + try : + valide=self.definition.validators.verif_item(item) + except : + valide = 0 return valide def valide_liste_partielle(self,item,listecourante): @@ -1538,7 +1537,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): validite=self.definition.validators.valide_liste_partielle(valeur) if validite==0: min,max=self.GetMinMax() - if len(valeur) < min : validite=1 retour=self.object.set_valeur(valeuravant) diff --git a/Ihm/I_VALIDATOR.py b/Ihm/I_VALIDATOR.py index bb0f32ff..c241e857 100644 --- a/Ihm/I_VALIDATOR.py +++ b/Ihm/I_VALIDATOR.py @@ -157,6 +157,29 @@ class OrVal(Valid): return 1 return 0 + def info_erreur_item(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_item() != "" : + if a==1: + chaine=v.info_erreur_item() + a=0 + else: + chaine=chaine+" \n ou "+ v.info_erreur_item() + return chaine + + def info_erreur_liste(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_liste() != "" : + if a==1: + chaine=v.info_erreur_liste() + a=0 + else: + chaine=chaine+" \n ou "+v.info_erreur_liste() + def is_list(self): """ Si plusieurs validateurs sont reliés par un OU @@ -199,11 +222,35 @@ class OrVal(Valid): return v_into validator_into.extend(v_into) return validator_into + class AndVal(Valid): def info(self): return "\n et ".join([v.info() for v in self.validators]) + def info_erreur_item(self): + chaine="" + a=1 + for v in self.validators: + if v.info_erreur_item() != "" : + if a==1: + chaine=v.info_erreur_item() + a=0 + else: + chaine=chaine+" \n et "+v.info_erreur_item() + return chaine + + def info_erreur_liste(self): + a=1 + for v in self.validators: + if v.info_erreur_liste() != "" : + if a==1: + chaine=v.info_erreur_liste() + a=0 + else: + chaine=chaine+" \n et "+v.info_erreur_liste() + return chaine + def verif_item(self,valeur): for validator in self.validators: v=validator.verif_item(valeur) @@ -291,6 +338,9 @@ class CardVal(Valid): else: return [] + def info_erreur_liste(self): + return "La cardinalité de la liste doit être comprise entre %s et %s" % (self.min,self.max) + class ListVal(Valid): def is_list(self): return 1 @@ -327,14 +377,22 @@ class EnumVal(ListVal): if e in self.into: liste_choix.append(e) return liste_choix + + def info_erreur_item(self): + return "La valeur n'est pas dans la liste des choix possibles" class LongStr(ListVal): def info_erreur_item(self): return "Longueur de la chaine incorrecte" def verif_item(self,valeur): - if len(valeur) < self.low :return 0 - if len(valeur) > self.high:return 0 + low=self.low + high=self.high + if valeur[0]=="'" and valeur[-1]=="'" : + low=low+2 + high=high+2 + if len(valeur) < low :return 0 + if len(valeur) > high:return 0 return 1 class RangeVal(ListVal): @@ -343,6 +401,9 @@ class RangeVal(ListVal): if valeur > self.high:return 0 return 1 + def info_erreur_item(self) : + return "La valeur doit être comprise entre %s et %s" % (self.low,self.high) + class TypeVal(ListVal): def verif_item(self,valeur): try: @@ -436,5 +497,6 @@ class OrdList(ListVal): liste_choix.append(e) return liste_choix - + def info_erreur_liste(self) : + return "La liste doit être en ordre "+self.ord