Salome HOME
ajout pour accepter les accents sous python 2.3
[tools/eficas.git] / Editeur / 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 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 from widgets import ListeChoix
34 from widgets import FenetreDeSelection
35
36 from Noyau.N_CR import justify_text
37 from utils import substract_list
38
39 # Import des panels
40 from uniquepanel import UNIQUE_Panel
41
42
43 class UNIQUE_BASE_Panel(UNIQUE_Panel):
44   """
45   Classe servant à définir le panneau associé aux mots-clés simples qui attendent
46   une valeur d'un type de base (entier, réel ou string).
47   """
48   def makeValeurPage(self,page):
49       """
50       Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
51       de base cad entier, réel, string ou complexe
52       """
53       # Récupération de l'aide associée au panneau, de l'aide destinée à l'utilisateur,
54       # et de la liste des SD du bon type (constituant la liste des choix)
55       bulle_aide=self.get_bulle_aide()
56       aide=self.get_aide()
57       aide= justify_text(texte=aide)
58       liste_noms_sd = self.node.item.get_sd_avant_du_bon_type()
59       # Remplissage du panneau
60       self.frame_valeur = Frame(page)
61       self.frame_valeur.pack(fill='both',expand=1)
62       self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
63       self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
64       self.label = Label(self.frame_valeur,text='Valeur :')
65       self.label.place(relx=0.1,rely=0.5)
66       self.entry = Entry(self.frame_valeur,relief='sunken')
67       self.entry.place(relx=0.28,rely=0.5,relwidth=0.6)
68       self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
69       self.entry.focus()
70       # aide associée au panneau
71       self.frame_valeur.update()
72       self.aide = Label(self.frame_valeur, 
73                         text = aide,
74                         wraplength=int(self.frame_valeur.winfo_width()*0.8),
75                         justify='center')
76       self.aide.place(relx=0.5,rely=0.7,anchor='n')
77       # affichage de la valeur du MCS
78       self.display_valeur()
79
80   def get_aide(self):
81       """
82       Retourne la phrase d'aide indiquant de quel type doit être la valeur
83       du mot-clé simple fournie par l'utilisateur
84       """
85       mc = self.node.item.get_definition()
86       d_aides = { 'TXM' : "Une chaîne de caractères est attendue",
87                   'R'   : "Un réel est attendu",
88                   'I'   : "Un entier est attendu"}
89       type = mc.type[0]
90       commentaire=d_aides.get(type,"Type de base inconnu")
91       aideval=self.node.item.aide()
92       commentaire=commentaire +"\n"+ aideval
93       return commentaire
94
95   def get_bulle_aide(self):
96       """
97       Retourne la bulle d'aide associée au panneau et affichée par clic droit
98       """
99       return """Saisissez la valeur que vous voulez affecter au mot-clé simple
100       dans la zone de saisie et pressez <Return>"""
101       
102   def display_valeur(self):
103       """
104       Affiche la valeur de l'objet pointé par self
105       """
106       valeur = self.node.item.get_valeur()
107       if valeur == None or valeur == '' : return # pas de valeur à afficher ...
108       self.entry.delete(0,END)
109       self.entry.insert(0,valeur)
110       self.entry.focus()
111