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'))
60 # ----------------------------------------------------------------------------------------
61 # Méthodes utilisées pour l'affectation de la valeur donnée par l'utilisateur
63 # ----------------------------------------------------------------------------------------
65 def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
67 Enregistre val comme valeur de self.node.item.object SANS
68 faire de test de validité ni ré-évaluer l'ancienne valeur
69 permet de rester avec des valeurs non entrees et de ne pas
70 ré-évaluer des entiers par exemple
72 if self.parent.modified == 'n' : self.parent.init_modif()
73 self.node.item.set_valeur(name)
74 self.parent.appli.affiche_infos(mess)
75 #if self.node.item.get_position()=='global':
76 #self.node.etape.verif_all()
77 #elif self.node.item.get_position()=='global_jdc':
78 #self.node.racine.verif_all()
80 #self.node.parent.verif()
83 def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
85 Enregistre val comme valeur de self.node.item.object
86 en evaluant l item et en le validant
87 Si name n'est pas renseigné, la valeur
89 if self.parent.modified == 'n' : self.parent.init_modif()
94 valeurentree= self.entry.get()
95 self.entry.delete(0,END)
96 if valeurentree == '': valeurentree=None
97 valeur,validite=self.node.item.eval_valeur(valeurentree)
99 valeur= self.entry.get()
100 commentaire = "impossible d'évaluer : %s " %`valeurentree`
101 self.parent.appli.affiche_infos(commentaire)
104 if self.node.item.is_list() :
105 validite=self.node.item.valide_liste_complete(valeur)
106 commentaire=self.node.item.info_erreur_liste()
108 validite=self.node.item.valide_item(valeur)
109 commentaire=self.node.item.info_erreur_item()
112 self.node.item.set_valeur(valeur)
113 self.parent.appli.affiche_infos(mess)
114 #if self.node.item.get_position()=='global':
115 #self.node.etape.verif_all()
116 #elif self.node.item.get_position()=='global_jdc':
117 #self.node.racine.verif_all()
119 #self.node.parent.verif()
121 #if self.node.item.isvalid():
122 # self.node.parent.select()
124 self.parent.appli.affiche_infos(commentaire)
126 # ----------------------------------------------------------------------------------------
127 # Méthodes utilisées pour la manipulation des items dans les listes de choix
128 # ----------------------------------------------------------------------------------------
129 def selectValeur(self,name):
130 self.selected_valeur = name
132 def deselectValeur(self,name):
133 self.selectValeur = None
135 def sup_valeur(self,name=None):
137 Supprime la valeur selectionnée de la liste des valeurs et la rajoute
138 à la liste des choix possibles
140 if hasattr(self,'selected_valeur') :
141 if ( self.selected_valeur != None and self.selected_valeur != ''):
142 liste_valeurs = self.Liste_valeurs.get_liste()
143 liste_valeurs.remove(self.selected_valeur)
144 self.Liste_valeurs.put_liste(liste_valeurs)
145 listeActuelle=self.Liste_valeurs.get_liste()
146 liste_choix=self.node.item.get_liste_possible(listeActuelle)
147 self.Liste_choix.put_liste(liste_choix)
148 self.selected_valeur = None
150 def add_choix(self,name=None):
152 Ajoute le choix selectionné à la liste des valeurs et le retire
153 de la liste des choix possibles
156 if hasattr(self,'selected_choix') :
157 if (self.selected_choix != None and self.selected_choix != ''):
158 min,max = self.node.item.GetMinMax()
159 liste_valeurs = self.Liste_valeurs.get_liste()
160 if len(liste_valeurs) >= max :
161 self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max)
163 if (self.Liste_valeurs.selection != None):
164 ligne=self.Liste_valeurs.cherche_selected_item()
165 liste_valeurs.insert(ligne,self.selected_choix)
167 liste_valeurs.append(self.selected_choix)
168 self.Liste_valeurs.put_liste(liste_valeurs)
169 listeActuelle=self.Liste_valeurs.get_liste()
170 liste_choix=self.node.item.get_liste_possible(listeActuelle)
171 self.Liste_choix.put_liste(liste_choix)
172 self.selected_choix = None
174 def selectChoix(self,name):
175 self.selected_choix = name
177 def deselectChoix(self,name):
178 self.selectChoix = None
180 def raisecmd(self,page):
186 # ----------------------------------------------------------------------------------------
187 # Méthodes utilisées pour la manipulation des items en notation scientifique
188 # ----------------------------------------------------------------------------------------
189 def set_valeur_texte(self,texte_valeur) :
190 """ Sert à mettre à jour la notation scientifique"""
192 if "R" in self.node.item.object.definition.type:
193 if texte_valeur[0] != "'":
194 clef=eval(texte_valeur)
195 if str(clef) != str(texte_valeur) :
196 self.node.item.object.init_modif()
197 clefobj=self.node.item.object.GetNomConcept()
198 if not self.parent.appli.dict_reels.has_key(clefobj):
199 self.parent.appli.dict_reels[clefobj] = {}
200 self.parent.appli.dict_reels[clefobj][clef]=texte_valeur
201 self.parent.appli.dict_reels[clefobj]
202 self.node.item.object.fin_modif()
207 def get_valeur_texte(self,valeur) :
209 if "R" in self.node.item.object.definition.type:
210 clefobj=self.node.item.object.GetNomConcept()
211 if self.parent.appli.dict_reels.has_key(clefobj):
212 if self.parent.appli.dict_reels[clefobj].has_key(valeur):
213 valeur_texte=self.parent.appli.dict_reels[clefobj][valeur]