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)
78 def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
80 Enregistre val comme valeur de self.node.item.object
81 en evaluant l item et en le validant
82 Si name n'est pas renseigné, la valeur
84 if self.parent.modified == 'n' : self.parent.init_modif()
89 valeurentree= self.entry.get()
90 self.entry.delete(0,END)
91 if valeurentree == '': valeurentree=None
92 valeur,validite=self.node.item.eval_valeur(valeurentree)
94 valeur= self.entry.get()
95 commentaire = "impossible d'évaluer : %s " %`valeurentree`
96 self.parent.appli.affiche_infos(commentaire)
99 validite,commentaire=self.node.item.valide_val(valeur)
102 self.node.item.set_valeur(valeur)
103 self.parent.appli.affiche_infos(mess)
105 self.parent.appli.affiche_infos(commentaire)
107 # ----------------------------------------------------------------------------------------
108 # Méthodes utilisées pour la manipulation des items dans les listes de choix
109 # ----------------------------------------------------------------------------------------
110 def selectValeur(self,name):
111 self.selected_valeur = name
113 def deselectValeur(self,name):
114 self.selectValeur = None
116 def sup_valeur(self,name=None):
118 Supprime la valeur selectionnée de la liste des valeurs et la rajoute
119 à la liste des choix possibles
121 if hasattr(self,'selected_valeur') :
122 if ( self.selected_valeur != None and self.selected_valeur != ''):
123 liste_valeurs = self.Liste_valeurs.get_liste()
124 liste_valeurs.remove(self.selected_valeur)
125 self.Liste_valeurs.put_liste(liste_valeurs)
126 listeActuelle=self.Liste_valeurs.get_liste()
127 liste_choix=self.node.item.get_liste_possible(listeActuelle)
128 self.Liste_choix.put_liste(liste_choix)
129 self.selected_valeur = None
131 def add_choix(self,name=None):
133 Ajoute le choix selectionné à la liste des valeurs et le retire
134 de la liste des choix possibles
137 if hasattr(self,'selected_choix') :
138 if (self.selected_choix != None and self.selected_choix != ''):
139 min,max = self.node.item.GetMinMax()
140 liste_valeurs = self.Liste_valeurs.get_liste()
141 if len(liste_valeurs) >= max :
142 self.parent.appli.affiche_infos("La liste ne peut pas avoir plus de %d éléments" %max)
144 if (self.Liste_valeurs.selection != None):
145 ligne=self.Liste_valeurs.cherche_selected_item()
146 liste_valeurs.insert(ligne,self.selected_choix)
148 liste_valeurs.append(self.selected_choix)
149 self.Liste_valeurs.put_liste(liste_valeurs)
150 listeActuelle=self.Liste_valeurs.get_liste()
151 liste_choix=self.node.item.get_liste_possible(listeActuelle)
152 self.Liste_choix.put_liste(liste_choix)
153 self.selected_choix = None
155 def selectChoix(self,name):
156 self.selected_choix = name
158 def deselectChoix(self,name):
159 self.selectChoix = None
161 def raisecmd(self,page):
167 # ----------------------------------------------------------------------------------------
168 # Méthodes utilisées pour la manipulation des items en notation scientifique
169 # ----------------------------------------------------------------------------------------
170 def set_valeur_texte(self,texte_valeur) :
171 """ Sert à mettre à jour la notation scientifique"""
173 if "R" in self.node.item.object.definition.type:
174 if texte_valeur[0] != "'":
175 clef=eval(texte_valeur)
176 if str(clef) != str(texte_valeur) :
177 self.node.item.object.init_modif()
178 clefobj=self.node.item.object.GetNomConcept()
179 if not self.parent.appli.dict_reels.has_key(clefobj):
180 self.parent.appli.dict_reels[clefobj] = {}
181 self.parent.appli.dict_reels[clefobj][clef]=texte_valeur
182 self.parent.appli.dict_reels[clefobj]
183 self.node.item.object.fin_modif()
188 def get_valeur_texte(self,valeur) :
190 if "R" in self.node.item.object.definition.type:
191 clefobj=self.node.item.object.GetNomConcept()
192 if self.parent.appli.dict_reels.has_key(clefobj):
193 if self.parent.appli.dict_reels[clefobj].has_key(valeur):
194 valeur_texte=self.parent.appli.dict_reels[clefobj][valeur]