1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 import string,types,os
25 from copy import copy,deepcopy
33 from widgets import ListeChoix
34 from widgets import FenetreDeSelection
36 from Noyau.N_CR import justify_text
37 from utils import substract_list
40 from newsimppanel import newSIMPPanel
43 class PLUSIEURS_Panel(newSIMPPanel):
45 Classe virtuelle servant de classe mère à toutes celles définissant
46 un panneau pour un mot-clé simple qui attend une liste de valeurs
48 def accepte_modifs_valeur(self,min,max,liste=None):
50 Méthode qui récupère la liste des valeurs donnée par l'utilisateur
51 et l'affecte au mot-clé courant.
52 le parametre None n'est pas rempli sauf par l appel a partir de fonctionpanel
55 l1_valeurs = self.Liste_valeurs.get_liste()
59 for val in l1_valeurs :
60 if val != '' and val != None :
63 longueur = len(l_valeurs)
64 if longueur < min or longueur > max :
65 self.parent.appli.affiche_infos("Valeur refusée : nombre d'éléments incorrect dans la liste")
68 valeur = tuple(l_valeurs)
74 self.parent.appli.affiche_infos("Valeur acceptée")
75 self.record_valeur(valeur)
76 # fermeture de la fenêtre de sélection
77 if self.ajout_valeurs:
78 self.ajout_valeurs.quit()
80 def annule_modifs_valeur(self):
82 RAZ de la liste des valeurs (annule toutes les valeurs saisies par l'utilisateur)
85 # fermeture de la fenêtre de sélection
86 if self.ajout_valeurs:
87 self.ajout_valeurs.quit()
89 def add_valeur_sans_into(self,name=None,encorevalide=1):
91 Lit ce que l'utilisateur a saisi dans self.entry et cherche à
93 - si la valeur est acceptable, elle est ajoutée dans la liste des valeurs
94 - sinon elle est refusée
95 encorevalide vaut 1 si le validateur trouve l item et la liste correctes
96 0 si le validateur trouve la valeur de l item incorrecte
97 -1 si le validateur trouve la liste incorrecte
100 commentaire="Valeur incorrecte : ajout à la liste refusé"
103 # Lecture de la zone de saisie et evaluation si nécessaire
107 valeurentree = self.get_valeur()
108 if valeurentree == '': valeur=None
109 valeurentree,testvalide=self.node.item.eval_valeur(valeur)
110 if (not testvalide) :
111 commentaire = "impossible d'évaluer : %s " %`valeurentree`
113 # Pas de traitement des valeurs nulles ( a priori clic involontaire
114 if (valeur == None or valeur =="") :
115 commentaire = "Pas de saisie des valeurs nulles"
119 testtype = self.node.item.object.verif_type(valeur)
121 if valeur.__class__.__name__ in ( 'PARAMETRE', 'ITEM_PARAMETRE') :
124 commentaire ="Type de la valeur incorrecte"
127 if (encorevalide ==0) :
128 commentaire=self.node.item.info_erreur_item()
129 if (encorevalide == -1) :
130 commentaire=self.node.item.info_erreur_liste()
131 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
132 min,max = self.node.item.GetMinMax()
133 if len(self.Liste_valeurs.get_liste()) >= max :
134 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
136 if testvalide and (encorevalide == 1):
137 min,max = self.node.item.GetMinMax()
140 liste_valeurs = self.Liste_valeurs.get_liste()
141 if len(liste_valeurs) >= max :
142 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
144 if (self.Liste_valeurs.selection != None):
145 ligne=self.Liste_valeurs.cherche_selected_item()
146 liste_valeurs.insert(ligne,valeur)
148 liste_valeurs.append(valeur)
150 self.set_valeur_texte(str(self.entry.get()))
153 self.Liste_valeurs.put_liste(liste_valeurs)
155 commentaire="Nouvelle valeur acceptée"
157 commentaire ="Type de la valeur incorrecte"
160 self.parent.appli.affiche_infos(commentaire)
162 def sup_valeur_sans_into(self,name=None):
164 Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée
167 self.Liste_valeurs.remove_selected_item()
168 self.display_valeur(self.selected_valeur)
169 self.selected_valeur = None
171 # la valeur sélectionnée n'est pas dans la liste
174 def display_valeur(self,val=None):
176 Affiche la valeur passée en argument dans l'entry de saisie.
177 Par défaut affiche la valeur du mot-clé simple
180 #valeur = self.node.item.getval()
181 valeur = self.node.item.object.getval()
184 self.entry.delete(0,END)
185 if not valeur : return
186 self.entry.insert(0,str(valeur))