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
33 from widgets import ListeChoix
34 from widgets import FenetreDeSelection
36 from Noyau.N_CR import justify_text
37 from utils import substract_list
40 from uniquepanel import UNIQUE_Panel
43 class UNIQUE_COMP_Panel(UNIQUE_Panel):
45 Classe servant à définir le panneau associé aux mots-clés simples
46 qui attendent une valeur de type complexe
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 et de l'aide destinée à l'utilisateur
54 bulle_aide=self.get_bulle_aide()
56 aide= justify_text(texte=aide)
57 # Remplissage du panneau
58 self.frame_valeur = Frame(page)
59 self.frame_valeur.pack(fill='both',expand=1)
60 self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
61 self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
62 self.label = Label(self.frame_valeur,text='Complexe de la forme : a+bj')
63 self.label1 = Label(self.frame_valeur,text='Imaginaire')
64 self.label2 = Label(self.frame_valeur,text='Phase')
65 self.label3 = Label(self.frame_valeur,text='OU')
66 self.label.place (relx=0.15,rely=0.1)
67 self.label1.place(relx=0.6,rely=0.50)
68 self.label2.place(relx=0.6,rely=0.57)
69 self.label3.place(relx=0.15,rely=0.4)
70 self.typ_cplx=StringVar()
71 self.typ_cplx.set('RI')
72 rb1 = Radiobutton(self.frame_valeur, text='RI : Réel',variable=self.typ_cplx,value='RI')
73 rb2 = Radiobutton(self.frame_valeur, text='MP : Module',variable=self.typ_cplx,value='MP')
74 rb1.place(relx=0.15,rely = 0.50)
75 rb2.place(relx=0.15,rely = 0.57)
76 self.entry1 = Pmw.EntryField(self.frame_valeur,validate='real')
77 self.entry2 = Pmw.EntryField(self.frame_valeur,validate='real')
78 self.entry3 = Pmw.EntryField(self.frame_valeur)
79 self.entry1.component('entry').bind("<Return>",lambda e,s=self:s.entry2.component('entry').focus())
80 self.entry1.component('entry').bind("<KP_Enter>",lambda e,s=self:s.entry2.component('entry').focus())
81 self.entry2.component('entry').bind("<Return>",lambda e,c=self.valid_valeur:c())
82 self.entry2.component('entry').bind("<KP_Enter>",lambda e,c=self.valid_valeur:c())
83 self.entry3.component('entry').bind("<Return>",lambda e,c=self.valid_complexe:c())
84 self.entry3.component('entry').bind("<KP_Enter>",lambda e,c=self.valid_complexe:c())
85 self.entry1.place(relx=0.15,rely = 0.65,relwidth=0.35)
86 self.entry2.place(relx=0.60,rely = 0.65,relwidth=0.35)
87 self.entry3.place(relx=0.15,rely = 0.20,relwidth=0.60)
89 self.bouton_val=Button(self.frame_valeur,text="Valider",command=self.valider,width=14)
90 self.bouton_val.place(relx=0.4,rely=0.8)
91 self.frame_valeur.update()
92 self.aide = Label(self.frame_valeur,
94 wraplength=int(self.frame_valeur.winfo_width()*0.8),
96 self.aide.place(relx=0.5,rely=0.9,anchor='n')
97 # affichage de la valeur du MCS
101 if ((self.entry3.get() != None) and (self.entry3.get() != "" )):
103 self.valid_complexe()
108 def display_valeur(self):
110 Affiche la valeur de l'objet pointé par self
112 valeur = self.node.item.get_valeur()
113 if valeur == None or valeur == '' : return # pas de valeur à afficher ...
114 self.entry1.delete(0,END)
115 self.entry2.delete(0,END)
116 self.entry3.delete(0,END)
117 if type(valeur) not in (types.ListType,types.TupleType) :
118 self.display_complexe()
120 typ_cplx,x1,x2=valeur
121 self.typ_cplx.set(typ_cplx)
122 self.entry1.setentry(x1)
123 self.entry2.setentry(x2)
125 def display_complexe(self):
126 valeur = self.node.item.get_valeur()
127 self.entry3.setentry(valeur)
129 def get_bulle_aide(self):
131 Retourne la bulle d'aide du panneau
133 return """-Choisissez votre format de saisie du complexe :
134 \t 'RI' = parties réelle et imaginaire
135 \t 'MP' = module/phase (en degrés)
136 - Saisissez ensuite dans les deux zones de saisie les deux nombres attendus"""
140 Retourne la phrase d'aide décrivant le type de la valeur que peut prendre
141 le mot-clé simple courant
143 commentaire='Un complexe est attendu'
144 aideval=self.node.item.aide()
145 commentaire=commentaire +"\n"+ aideval
148 def get_valeur(self):
150 Retourne le complexe saisi par l'utilisateur
153 l.append(self.typ_cplx.get())
155 l.append(string.atof(self.entry1.get()))
156 l.append(string.atof(self.entry2.get()))
161 def erase_valeur(self):
163 Efface les entries de saisie
165 self.typ_cplx.set('RI')
166 self.entry1.delete(0,END)
167 self.entry2.delete(0,END)
169 def valid_complexe(self):
170 valeurentree=self.entry3.get()
171 self.valid_valeur(valeurentree=valeurentree)