]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/newsimppanel.py
Salome HOME
CCAR: creation V1_13a1 a partir de la branche Liv-V1_12
[tools/eficas.git] / Editeur / newsimppanel.py
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.
9 #
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.
14 #
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.
18 #
19 #
20 # ======================================================================
21 # Modules Python
22 import string,types,os
23 from Tkinter import *
24 import Pmw
25 from copy import copy,deepcopy
26 import traceback
27
28 # Modules Eficas
29 import Objecttreeitem
30 import prefs
31 import panels
32 import images
33 import composimp
34 from widgets import ListeChoix
35 from widgets import FenetreDeSelection
36
37 from Noyau.N_CR import justify_text
38 from utils import substract_list
39
40
41 class newSIMPPanel(panels.OngletPanel):
42   """
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
46   """
47   def init(self):
48       """
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
52       """
53       nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
54       nb.pack(fill = 'both', expand = 1)
55       self.nb=nb
56       nb.add('Valeur', tab_text='Saisir valeur')
57       self.makeValeurPage(nb.page('Valeur'))
58       self.enlevebind()
59       self.creebind()
60       nb.setnaturalsize()
61       
62 # ----------------------------------------------------------------------------------------
63 #   Méthodes utilisées pour l'affectation de la valeur donnée par l'utilisateur
64 #    au mot-clé courant
65 # ----------------------------------------------------------------------------------------
66
67   def reset_old_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
68       """
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
73       """
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
78   def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
79       """
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 
83       """
84       if self.parent.modified == 'n' : self.parent.init_modif()
85       if name != None:
86           valeur = name
87           validite = 1
88       else :
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)
93           if not validite :
94                   valeur= self.entry.get()
95                   commentaire = "impossible d'évaluer : %s " %`valeurentree`
96                   self.parent.appli.affiche_infos(commentaire)
97                 
98       if validite : 
99           validite,commentaire=self.node.item.valide_val(valeur)
100  
101       if validite :
102           self.node.item.set_valeur(valeur)
103           self.parent.appli.affiche_infos(mess)
104       else :
105           self.parent.appli.affiche_infos(commentaire)
106
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
112
113   def deselectValeur(self,name):
114       self.selectValeur = None
115
116   def sup_valeur(self,name=None):
117       """
118       Supprime la valeur selectionnée de la liste des valeurs et la rajoute
119       à la liste des choix possibles
120       """
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
130
131   def add_choix(self,name=None):
132       """
133       Ajoute le choix selectionné à la liste des valeurs et le retire
134       de la liste des choix possibles
135       """
136       
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)
143                 return
144             if (self.Liste_valeurs.selection != None):
145                 ligne=self.Liste_valeurs.cherche_selected_item()
146                 liste_valeurs.insert(ligne,self.selected_choix)
147             else :
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
154
155   def selectChoix(self,name):
156       self.selected_choix = name
157
158   def deselectChoix(self,name):
159       self.selectChoix = None
160       
161   def raisecmd(self,page):
162       try:
163          self.entry.focus()
164       except:
165          pass
166
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"""
172       try :
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()
184       except:
185         pass
186
187
188   def get_valeur_texte(self,valeur) :
189      valeur_texte=""
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]
195      return valeur_texte
196