1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 import string,types,os
24 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 class newSIMPPanel(panels.OngletPanel):
42 Classe virtuelle servant de classe mère à toutes les classes Panel
43 servant à afficher et récupérer la valeur d'un mot-clé simple.
44 Le panel est différent suivant le type de la valeur attendu
48 Méthode appelée par le constructeur de OngletPanel :
49 construit le notebook à 2 onglets utilisé par tous les panels de
50 tous les mots-clés simples
52 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
53 nb.pack(fill = 'both', expand = 1)
55 nb.add('Valeur', tab_text='Saisir valeur')
56 self.makeValeurPage(nb.page('Valeur'))
59 # ----------------------------------------------------------------------------------------
60 # Méthodes utilisées pour l'affectation de la valeur donnée par l'utilisateur
62 # ----------------------------------------------------------------------------------------
64 def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
66 Enregistre val comme valeur de self.node.item.object SANS
67 faire de test de validité ni ré-évaluer l'ancienne valeur
68 permet de rester avec des valeurs non entrees et de ne pas
69 ré-évaluer des entiers par exemple
71 if self.parent.modified == 'n' : self.parent.init_modif()
72 self.node.item.set_valeur(name)
73 self.parent.appli.affiche_infos(mess)
74 if self.node.item.get_position()=='global':
75 self.node.etape.verif_all()
76 elif self.node.item.get_position()=='global_jdc':
77 self.node.racine.verif_all()
79 self.node.parent.verif()
82 def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
84 Enregistre val comme valeur de self.node.item.object
85 en evaluant l item et en le validant
86 Si name n'est pas renseigné, la valeur
88 if self.parent.modified == 'n' : self.parent.init_modif()
93 valeurentree= self.entry.get()
94 self.entry.delete(0,END)
95 if valeurentree == '': valeurentree=None
96 valeur,validite=self.node.item.eval_valeur(valeurentree)
98 valeur= self.entry.get()
99 commentaire = "impossible d'évaluer : %s " %`valeurentree`
100 self.parent.appli.affiche_infos(commentaire)
103 if self.node.item.is_list() :
104 validite=self.node.item.valide_liste_complete(valeur)
105 commentaire=self.node.item.info_erreur_liste()
107 validite=self.node.item.valide_item(valeur)
108 commentaire=self.node.item.info_erreur_item()
111 self.node.item.set_valeur(valeur)
112 self.parent.appli.affiche_infos(mess)
113 if self.node.item.get_position()=='global':
114 self.node.etape.verif_all()
115 elif self.node.item.get_position()=='global_jdc':
116 self.node.racine.verif_all()
118 self.node.parent.verif()
120 if self.node.item.isvalid():
121 self.node.parent.select()
123 self.parent.appli.affiche_infos(commentaire)
125 # ----------------------------------------------------------------------------------------
126 # Méthodes utilisées pour la manipulation des items dans les listes de choix
127 # ----------------------------------------------------------------------------------------
128 def selectValeur(self,name):
129 self.selected_valeur = name
131 def deselectValeur(self,name):
132 self.selectValeur = None
134 def sup_valeur(self,name=None):
136 Supprime la valeur selectionnée de la liste des valeurs et la rajoute
137 à la liste des choix possibles
139 if hasattr(self,'selected_valeur') :
140 if ( self.selected_valeur != None and self.selected_valeur != ''):
141 liste_valeurs = self.Liste_valeurs.get_liste()
142 liste_valeurs.remove(self.selected_valeur)
143 self.Liste_valeurs.put_liste(liste_valeurs)
144 listeActuelle=self.Liste_valeurs.get_liste()
145 liste_choix=self.node.item.get_liste_possible(listeActuelle)
146 self.Liste_choix.put_liste(liste_choix)
147 self.selected_valeur = None
149 def add_choix(self,name=None):
151 Ajoute le choix selectionné à la liste des valeurs et le retire
152 de la liste des choix possibles
155 if hasattr(self,'selected_choix') :
156 if (self.selected_choix != None and self.selected_choix != ''):
157 min,max = self.node.item.GetMinMax()
158 liste_valeurs = self.Liste_valeurs.get_liste()
159 if len(liste_valeurs) >= max :
160 self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max)
162 liste_valeurs.append(self.selected_choix)
163 self.Liste_valeurs.put_liste(liste_valeurs)
164 listeActuelle=self.Liste_valeurs.get_liste()
165 liste_choix=self.node.item.get_liste_possible(listeActuelle)
166 self.Liste_choix.put_liste(liste_choix)
167 self.selected_choix = None
169 def selectChoix(self,name):
170 self.selected_choix = name
172 def deselectChoix(self,name):
173 self.selectChoix = None
175 def raisecmd(self,page):