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
34 from widgets import ListeChoix
35 from widgets import FenetreDeSelection
37 from Noyau.N_CR import justify_text
38 from utils import substract_list
41 class newSIMPPanel(panels.OngletPanel):
43 Classe virtuelle servant de classe mère à toutes les classes Panel
44 servant à afficher et récupérer la valeur d'un mot-clé simple.
45 Le panel est différent suivant le type de la valeur attendu
49 Méthode appelée par le constructeur de OngletPanel :
50 construit le notebook à 2 onglets utilisé par tous les panels de
51 tous les mots-clés simples
53 nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
54 nb.pack(fill = 'both', expand = 1)
56 nb.add('Valeur', tab_text='Saisir valeur')
57 self.makeValeurPage(nb.page('Valeur'))
62 # ----------------------------------------------------------------------------------------
63 # Méthodes utilisées pour l'affectation de la valeur donnée par l'utilisateur
65 # ----------------------------------------------------------------------------------------
67 def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
69 Enregistre val comme valeur de self.node.item.object SANS
70 faire de test de validité ni ré-évaluer l'ancienne valeur
71 permet de rester avec des valeurs non entrees et de ne pas
72 ré-évaluer des entiers par exemple
74 if self.parent.modified == 'n' : self.parent.init_modif()
75 self.node.item.set_valeur(name)
76 self.parent.appli.affiche_infos(mess)
77 #if self.node.item.get_position()=='global':
78 #self.node.etape.verif_all()
79 #elif self.node.item.get_position()=='global_jdc':
80 #self.node.racine.verif_all()
82 #self.node.parent.verif()
85 def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
87 Enregistre val comme valeur de self.node.item.object
88 en evaluant l item et en le validant
89 Si name n'est pas renseigné, la valeur
91 if self.parent.modified == 'n' : self.parent.init_modif()
96 valeurentree= self.entry.get()
97 self.entry.delete(0,END)
98 if valeurentree == '': valeurentree=None
99 valeur,validite=self.node.item.eval_valeur(valeurentree)
101 valeur= self.entry.get()
102 commentaire = "impossible d'évaluer : %s " %`valeurentree`
103 self.parent.appli.affiche_infos(commentaire)
106 if self.node.item.is_list() :
107 validite=self.node.item.valide_liste_complete(valeur)
108 commentaire=self.node.item.info_erreur_liste()
110 validite=self.node.item.valide_item(valeur)
111 commentaire=self.node.item.info_erreur_item()
114 self.node.item.set_valeur(valeur)
115 self.parent.appli.affiche_infos(mess)
116 #if self.node.item.get_position()=='global':
117 #self.node.etape.verif_all()
118 #elif self.node.item.get_position()=='global_jdc':
119 #self.node.racine.verif_all()
121 #self.node.parent.verif()
123 #if self.node.item.isvalid():
124 # self.node.parent.select()
126 self.parent.appli.affiche_infos(commentaire)
128 # ----------------------------------------------------------------------------------------
129 # Méthodes utilisées pour la manipulation des items dans les listes de choix
130 # ----------------------------------------------------------------------------------------
131 def selectValeur(self,name):
132 self.selected_valeur = name
134 def deselectValeur(self,name):
135 self.selectValeur = None
137 def sup_valeur(self,name=None):
139 Supprime la valeur selectionnée de la liste des valeurs et la rajoute
140 à la liste des choix possibles
142 if hasattr(self,'selected_valeur') :
143 if ( self.selected_valeur != None and self.selected_valeur != ''):
144 liste_valeurs = self.Liste_valeurs.get_liste()
145 liste_valeurs.remove(self.selected_valeur)
146 self.Liste_valeurs.put_liste(liste_valeurs)
147 listeActuelle=self.Liste_valeurs.get_liste()
148 liste_choix=self.node.item.get_liste_possible(listeActuelle)
149 self.Liste_choix.put_liste(liste_choix)
150 self.selected_valeur = None
152 def add_choix(self,name=None):
154 Ajoute le choix selectionné à la liste des valeurs et le retire
155 de la liste des choix possibles
158 if hasattr(self,'selected_choix') :
159 if (self.selected_choix != None and self.selected_choix != ''):
160 min,max = self.node.item.GetMinMax()
161 liste_valeurs = self.Liste_valeurs.get_liste()
162 if len(liste_valeurs) >= max :
163 self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max)
165 if (self.Liste_valeurs.selection != None):
166 ligne=self.Liste_valeurs.cherche_selected_item()
167 liste_valeurs.insert(ligne,self.selected_choix)
169 liste_valeurs.append(self.selected_choix)
170 self.Liste_valeurs.put_liste(liste_valeurs)
171 listeActuelle=self.Liste_valeurs.get_liste()
172 liste_choix=self.node.item.get_liste_possible(listeActuelle)
173 self.Liste_choix.put_liste(liste_choix)
174 self.selected_choix = None
176 def selectChoix(self,name):
177 self.selected_choix = name
179 def deselectChoix(self,name):
180 self.selectChoix = None
182 def raisecmd(self,page):
188 # ----------------------------------------------------------------------------------------
189 # Méthodes utilisées pour la manipulation des items en notation scientifique
190 # ----------------------------------------------------------------------------------------
191 def set_valeur_texte(self,texte_valeur) :
192 """ Sert à mettre à jour la notation scientifique"""
194 if "R" in self.node.item.object.definition.type:
195 if texte_valeur[0] != "'":
196 clef=eval(texte_valeur)
197 if str(clef) != str(texte_valeur) :
198 self.node.item.object.init_modif()
199 clefobj=self.node.item.object.GetNomConcept()
200 if not self.parent.appli.dict_reels.has_key(clefobj):
201 self.parent.appli.dict_reels[clefobj] = {}
202 self.parent.appli.dict_reels[clefobj][clef]=texte_valeur
203 self.parent.appli.dict_reels[clefobj]
204 self.node.item.object.fin_modif()
209 def get_valeur_texte(self,valeur) :
211 if "R" in self.node.item.object.definition.type:
212 clefobj=self.node.item.object.GetNomConcept()
213 if self.parent.appli.dict_reels.has_key(clefobj):
214 if self.parent.appli.dict_reels[clefobj].has_key(valeur):
215 valeur_texte=self.parent.appli.dict_reels[clefobj][valeur]