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
24 from Tkinter import Widget
26 from copy import copy,deepcopy
30 from Editeur import Objecttreeitem
33 from widgets import FenetreDeParametre
34 from widgets import showerror
36 from Noyau.N_CR import justify_text
37 from Editeur.utils import substract_list
40 from uniquepanel import UNIQUE_Panel
43 class UNIQUE_BASE_Panel(UNIQUE_Panel):
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).
48 def makeValeurPage(self,page):
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
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()
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.grid(row=0,padx=5,pady=5)
66 self.entry = Entry(self.frame_valeur,relief='sunken')
67 self.entry.grid(row=0,column=1,padx=5,pady=5)
68 self.entry.bind("<Return>",lambda e,c=self.valid_valeur:c())
69 self.entry.bind("<KP_Enter>",lambda e,c=self.valid_valeur:c())
70 # aide associée au panneau
71 self.frame_valeur.update()
72 self.aide = Label(self.frame_valeur,
74 wraplength=int(self.frame_valeur.winfo_width()*0.8),
76 self.aide.grid(row=4,columnspan=2,padx=5,pady=5)
78 bouton_parametres = Button(self.frame_valeur, text="Parametres", command=self.affiche_parametre)
79 bouton_parametres.grid(row=2,columnspan=2,padx=5,pady=5)
80 bouton_val = Button(self.frame_valeur, text="Valider", command=self.valide)
81 bouton_val.grid(row=3,columnspan=2,padx=5,pady=5)
82 # affichage de la valeur du MCS
88 def affiche_parametre(self) :
89 if self.node.item.get_liste_param_possible() != [ ]:
91 for param in self.node.item.get_liste_param_possible():
92 txtparam=txtparam+repr(param)+"\n"
94 showerror("Aucun parametre ","Pas de parametre de ce type")
97 self.fenetreparam.destroy()
100 self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
104 self.fenetreparam.destroy()
111 Retourne la phrase d'aide indiquant de quel type doit être la valeur
112 du mot-clé simple fournie par l'utilisateur
114 mc = self.node.item.get_definition()
115 d_aides = { 'TXM' : "Une chaîne de caractères est attendue",
116 'R' : "Un réel est attendu",
117 'I' : "Un entier est attendu"}
119 commentaire=d_aides.get(type,"Type de base inconnu")
120 aideval=self.node.item.aide()
121 commentaire=commentaire +"\n"+ aideval
124 def get_bulle_aide(self):
126 Retourne la bulle d'aide associée au panneau et affichée par clic droit
128 return """Saisissez la valeur que vous voulez affecter au mot-clé simple
129 dans la zone de saisie et pressez <Return>"""
131 def display_valeur(self):
133 Affiche la valeur de l'objet pointé par self
135 valeur = self.node.item.get_valeur()
136 if valeur == None or valeur == '' : # pas de valeur à afficher ...
137 self.entry.delete(0,END)
141 valeur_texte=self.get_valeur_texte(valeur)
142 if valeur_texte != "":
144 self.entry.delete(0,END)
145 self.entry.insert(0,valeur)