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
29 from Editeur import Objecttreeitem
33 from widgets import ListeChoix
34 from widgets import FenetreDeSelection
36 from Noyau.N_CR import justify_text
37 from Editeur.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 #nettoyage de la liste
61 for val in l1_valeurs :
62 if val != '' and val != None :
65 longueur = len(l_valeurs)
66 if longueur < min or longueur > max :
67 self.parent.appli.affiche_infos("Valeur refusée : nombre d'éléments incorrect dans la liste")
70 valeur = tuple(l_valeurs)
76 self.parent.appli.affiche_infos("Valeur acceptée")
77 self.record_valeur(valeur)
78 # fermeture de la fenêtre de sélection
79 if self.ajout_valeurs:
80 self.ajout_valeurs.quit()
82 def annule_modifs_valeur(self):
84 RAZ de la liste des valeurs (annule toutes les valeurs saisies par l'utilisateur)
87 # fermeture de la fenêtre de sélection
88 if self.ajout_valeurs:
89 self.ajout_valeurs.quit()
91 def add_valeur_sans_into(self,name=None,encorevalide=1):
93 Tente d'ajouter la valeur fournie (name) à la liste courante :
94 - si la valeur est acceptable, elle est ajoutée dans la liste des valeurs
95 - sinon elle est refusée
97 encorevalide peut prendre les valeurs suivantes :
99 - valeur 1 si le validateur trouve l item et la liste correctes
100 - valeur 0 si le validateur trouve la valeur de l item incorrecte
101 - valeur -1 si le validateur trouve la liste incorrecte
104 commentaire="Valeur incorrecte : ajout à la liste refusé"
107 # Pas de traitement des valeurs nulles ( a priori clic involontaire
108 if (valeur == None or valeur =="") :
109 commentaire = "Pas de saisie des valeurs nulles"
113 testtype,comment = self.node.item.object.verif_type(valeur)
118 if (encorevalide ==0) :
119 commentaire=self.node.item.info_erreur_item()
120 if (encorevalide == -1) :
121 commentaire=self.node.item.info_erreur_liste()
122 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
123 min,max = self.node.item.GetMinMax()
124 if len(self.Liste_valeurs.get_liste()) >= max :
125 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
127 if testvalide and (encorevalide == 1):
128 min,max = self.node.item.GetMinMax()
131 liste_valeurs = self.Liste_valeurs.get_liste()
132 if len(liste_valeurs) >= max :
133 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
135 if (self.Liste_valeurs.selection != None):
136 ligne=self.Liste_valeurs.cherche_selected_item()
137 liste_valeurs.insert(ligne,valeur)
139 liste_valeurs.append(valeur)
141 self.set_valeur_texte(str(self.entry.get()))
144 self.Liste_valeurs.put_liste(liste_valeurs)
146 commentaire="Nouvelle valeur acceptée"
148 commentaire ="Type de la valeur incorrecte"
150 self.parent.appli.affiche_infos(commentaire)
152 def sup_valeur_sans_into(self,name=None):
154 Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée
157 self.Liste_valeurs.remove_selected_item()
158 self.display_valeur(self.selected_valeur)
159 self.selected_valeur = None
161 # la valeur sélectionnée n'est pas dans la liste
164 def display_valeur(self,val=None):
166 Affiche la valeur passée en argument dans l'entry de saisie.
167 Par défaut affiche la valeur du mot-clé simple
170 #valeur = self.node.item.getval()
171 valeur = self.node.item.object.getval()
174 self.entry.delete(0,END)
175 if not valeur : return
176 self.entry.insert(0,str(valeur))