]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceTK/uniquebasepanel.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / InterfaceTK / uniquebasepanel.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 from Tkinter import Widget
25 import Pmw
26 from copy import copy,deepcopy
27 import traceback
28
29 # Modules Eficas
30 from Editeur import Objecttreeitem
31 import prefs
32 import panels
33 import images
34 from widgets import FenetreDeParametre
35 from widgets import showerror
36
37 from Noyau.N_CR import justify_text
38 from Editeur.utils import substract_list
39
40 # Import des panels
41 from uniquepanel import UNIQUE_Panel
42
43
44 class UNIQUE_BASE_Panel(UNIQUE_Panel):
45   """
46   Classe servant à définir le panneau associé aux mots-clés simples qui attendent
47   une valeur d'un type de base (entier, réel ou string).
48   """
49   def makeValeurPage(self,page):
50       """
51       Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
52       de base cad entier, réel, string ou complexe
53       """
54       # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur,
55       # et de la liste des SD du bon type (constituant la liste des choix)
56       bulle_aide=self.get_bulle_aide()
57       aide=self.get_aide()
58       aide= justify_text(texte=aide)
59       liste_noms_sd = self.node.item.get_sd_avant_du_bon_type()
60       # Remplissage du panneau
61       self.frame_valeur = Frame(page)
62       self.frame_valeur.pack(fill='both',expand=1)
63       self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
64       self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
65       self.label = Label(self.frame_valeur,text='Valeur :')
66       #self.label.place(relx=0.1,rely=0.2)
67       self.label.grid(row=0,padx=5,pady=5)
68       self.entry = Entry(self.frame_valeur,relief='sunken')
69       #self.entry.place(relx=0.28,rely=0.2,relwidth=0.6)
70       self.entry.grid(row=0,column=1,padx=5,pady=5)
71       self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
72       self.entry.bind("<KP_Enter>",lambda e,c=self.valid_valeur:c())
73       # aide associée au panneau
74       self.frame_valeur.update()
75       self.aide = Label(self.frame_valeur, 
76                         text = aide,
77                         wraplength=int(self.frame_valeur.winfo_width()*0.8),
78                         justify='center')
79       #self.aide.place(relx=0.5,rely=0.9,anchor='n')
80       self.aide.grid(row=4,columnspan=2,padx=5,pady=5)
81       # bouton parametre
82       bouton_parametres = Button(self.frame_valeur, text="Parametres", command=self.affiche_parametre)
83       #bouton_parametres.place(relx=0.28,rely=0.5,relwidth=0.4)
84       bouton_parametres.grid(row=2,columnspan=2,padx=5,pady=5)
85       bouton_val = Button(self.frame_valeur, text="Valider", command=self.valide)
86       #bouton_val.place(relx=0.28,rely=0.6,relwidth=0.4)
87       bouton_val.grid(row=3,columnspan=2,padx=5,pady=5)
88       # affichage de la valeur du MCS
89       self.display_valeur()
90
91   def valide(self):
92       self.valid_valeur()
93
94   def affiche_parametre(self) :
95      if self.node.item.get_liste_param_possible() != [ ]:
96         txtparam=""
97         for param in self.node.item.get_liste_param_possible():
98            txtparam=txtparam+repr(param)+"\n"
99         if txtparam=="":
100            showerror("Aucun parametre ","Pas de parametre de ce type")
101         else :
102            try :
103                    self.fenetreparam.destroy()
104            except :
105                 pass
106            self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
107
108   def destroy(self):
109       try :
110               self.fenetreparam.destroy()
111       except :
112         pass
113       Widget.destroy(self)
114
115   def get_aide(self):
116       """
117       Retourne la phrase d'aide indiquant de quel type doit être la valeur
118       du mot-clé simple fournie par l'utilisateur
119       """
120       mc = self.node.item.get_definition()
121       d_aides = { 'TXM' : "Une chaîne de caractères est attendue",
122                   'R'   : "Un réel est attendu",
123                   'I'   : "Un entier est attendu"}
124       type = mc.type[0]
125       commentaire=d_aides.get(type,"Type de base inconnu")
126       aideval=self.node.item.aide()
127       commentaire=commentaire +"\n"+ aideval
128       return commentaire
129
130   def get_bulle_aide(self):
131       """
132       Retourne la bulle d'aide associée au panneau et affichée par clic droit
133       """
134       return """Saisissez la valeur que vous voulez affecter au mot-clé simple
135       dans la zone de saisie et pressez <Return>"""
136       
137   def display_valeur(self):
138       """
139       Affiche la valeur de l'objet pointé par self
140       """
141       valeur = self.node.item.get_valeur()
142       if valeur == None or valeur == '' : # pas de valeur à afficher ...
143          self.entry.delete(0,END)
144          self.entry.focus()
145          return
146
147       valeur_texte=self.get_valeur_texte(valeur)
148       if valeur_texte != "":
149          valeur=valeur_texte
150       self.entry.delete(0,END)
151       self.entry.insert(0,valeur)
152       self.entry.focus()
153