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
32 from widgets import ListeChoix
33 from widgets import FenetreDeSelection
35 from Noyau.N_CR import justify_text
36 from Editeur.utils import substract_list
39 from newsimppanel import newSIMPPanel
42 class PLUSIEURS_Panel(newSIMPPanel):
44 Classe virtuelle servant de classe mère à toutes celles définissant
45 un panneau pour un mot-clé simple qui attend une liste de valeurs
47 def accepte_modifs_valeur(self,min,max,liste=None):
49 Méthode qui récupère la liste des valeurs donnée par l'utilisateur
50 et l'affecte au mot-clé courant.
51 le parametre None n'est pas rempli sauf par l appel a partir de fonctionpanel
54 l1_valeurs = self.Liste_valeurs.get_liste()
58 #nettoyage de la liste
60 for val in l1_valeurs :
61 if val != '' and val != None :
64 longueur = len(l_valeurs)
65 if longueur < min or longueur > max :
66 self.parent.appli.affiche_infos("Valeur refusée : nombre d'éléments incorrect dans la liste")
69 valeur = tuple(l_valeurs)
75 self.parent.appli.affiche_infos("Valeur acceptée")
76 self.record_valeur(valeur)
77 # fermeture de la fenêtre de sélection
78 if self.ajout_valeurs:
79 self.ajout_valeurs.quit()
81 def annule_modifs_valeur(self):
83 RAZ de la liste des valeurs (annule toutes les valeurs saisies par l'utilisateur)
86 # fermeture de la fenêtre de sélection
87 if self.ajout_valeurs:
88 self.ajout_valeurs.quit()
90 def add_valeur_sans_into(self,name=None,encorevalide=1):
92 Tente d'ajouter la valeur fournie (name) à la liste courante :
93 - si la valeur est acceptable, elle est ajoutée dans la liste des valeurs
94 - sinon elle est refusée
96 encorevalide peut prendre les valeurs suivantes :
98 - valeur 1 si le validateur trouve l item et la liste correctes
99 - valeur 0 si le validateur trouve la valeur de l item incorrecte
100 - valeur -1 si le validateur trouve la liste incorrecte
103 commentaire="Valeur incorrecte : ajout à la liste refusé"
106 # Pas de traitement des valeurs nulles ( a priori clic involontaire
107 if (valeur == None or valeur =="") :
108 commentaire = "Pas de saisie des valeurs nulles"
112 testtype,comment = self.node.item.object.verif_type(valeur)
117 if (encorevalide ==0) :
118 commentaire=self.node.item.info_erreur_item()
119 if (encorevalide == -1) :
120 commentaire=self.node.item.info_erreur_liste()
121 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
122 min,max = self.node.item.GetMinMax()
123 if len(self.Liste_valeurs.get_liste()) >= max :
124 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
126 if testvalide and (encorevalide == 1):
127 min,max = self.node.item.GetMinMax()
130 liste_valeurs = self.Liste_valeurs.get_liste()
131 if len(liste_valeurs) >= max :
132 commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
134 if (self.Liste_valeurs.selection != None):
135 ligne=self.Liste_valeurs.cherche_selected_item()
136 liste_valeurs.insert(ligne,valeur)
138 liste_valeurs.append(valeur)
140 self.set_valeur_texte(str(self.entry.get()))
143 self.Liste_valeurs.put_liste(liste_valeurs)
145 commentaire="Nouvelle valeur acceptée"
147 commentaire ="Type de la valeur incorrecte"
149 self.parent.appli.affiche_infos(commentaire)
151 def sup_valeur_sans_into(self,name=None):
153 Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée
156 self.Liste_valeurs.remove_selected_item()
157 self.display_valeur(self.selected_valeur)
158 self.selected_valeur = None
160 # la valeur sélectionnée n'est pas dans la liste
163 def display_valeur(self,val=None):
165 Affiche la valeur passée en argument dans l'entry de saisie.
166 Par défaut affiche la valeur du mot-clé simple
169 #valeur = self.node.item.getval()
170 valeur = self.node.item.object.getval()
173 self.entry.delete(0,END)
174 if not valeur : return
175 self.entry.insert(0,str(valeur))