]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/uniquecomppanel.py
Salome HOME
PN : pour les clefs documentaires
[tools/eficas.git] / Editeur / uniquecomppanel.py
1 #            CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 #
18 #
19 # ======================================================================
20 # Modules Python
21 import string,types,os
22 from Tkinter import *
23 import Pmw
24 from copy import copy,deepcopy
25 import traceback
26
27 # Modules Eficas
28 import Objecttreeitem
29 import prefs
30 import panels
31 import images
32 from widgets import ListeChoix
33 from widgets import FenetreDeSelection
34
35 from Noyau.N_CR import justify_text
36 from utils import substract_list
37
38 # Import des panels
39 from uniquepanel import UNIQUE_Panel
40
41       
42 class UNIQUE_COMP_Panel(UNIQUE_Panel):
43   """
44   Classe servant à définir le panneau associé aux mots-clés simples
45   qui attendent une valeur de type complexe
46   """
47   def makeValeurPage(self,page):
48       """
49       Génère la page de saisie de la valeur du mot-clé simple courant qui doit être de type
50       de base cad entier, réel, string ou complexe
51       """
52       # Récupération de l'aide associée au panneau et de l'aide destinée à l'utilisateur
53       bulle_aide=self.get_bulle_aide()
54       aide=self.get_aide()
55       aide= justify_text(texte=aide)
56       # Remplissage du panneau
57       self.frame_valeur = Frame(page)
58       self.frame_valeur.pack(fill='both',expand=1)
59       self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
60       self.frame_valeur.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
61       self.label = Label(self.frame_valeur,text='Valeur :')
62       self.label.place(relx=0.1,rely=0.5)
63       self.typ_cplx=StringVar()
64       self.typ_cplx.set('RI')
65       rb1 = Radiobutton(self.frame_valeur, text='RI',variable=self.typ_cplx,value='RI')
66       rb2 = Radiobutton(self.frame_valeur, text='MP',variable=self.typ_cplx,value='MP')
67       self.entry1 = Pmw.EntryField(self.frame_valeur,validate='real')
68       self.entry2 = Pmw.EntryField(self.frame_valeur,validate='real')
69       rb1.place(relx=0.05,rely = 0.4)
70       rb2.place(relx=0.05,rely = 0.6)
71       self.entry1.component('entry').bind("<Return>",lambda e,s=self:s.entry2.component('entry').focus())
72       self.entry2.component('entry').bind("<Return>",lambda e,c=self.valid_valeur:c())
73       self.entry1.place(relx=0.27,rely = 0.5,relwidth=0.35)
74       self.entry2.place(relx=0.65,rely = 0.5,relwidth=0.35)
75       self.entry1.focus()
76       self.frame_valeur.update()
77       self.aide = Label(self.frame_valeur,
78                         text = aide,
79                         wraplength=int(self.frame_valeur.winfo_width()*0.8),
80                         justify='center')
81       self.aide.place(relx=0.5,rely=0.7,anchor='n')
82       # affichage de la valeur du MCS
83       self.display_valeur()
84
85   def display_valeur(self):
86       """
87       Affiche la valeur de l'objet pointé par self
88       """
89       valeur = self.node.item.get_valeur()
90       if valeur == None or valeur == '' : return # pas de valeur à afficher ...
91       typ_cplx,x1,x2=valeur
92       self.entry1.delete(0,END)
93       self.entry2.delete(0,END)
94       self.typ_cplx.set(typ_cplx)
95       self.entry1.setentry(x1)
96       self.entry2.setentry(x2)
97
98   def get_bulle_aide(self):
99       """
100       Retourne la bulle d'aide du panneau
101       """
102       return """-Choisissez votre format de saisie du complexe :
103       \t 'RI' = parties réelle et imaginaire
104       \t 'MP' = module/phase (en degrés)
105       - Saisissez ensuite dans les deux zones de saisie les deux nombres attendus"""
106
107   def get_aide(self):
108       """
109       Retourne la phrase d'aide décrivant le type de la valeur que peut prendre
110       le mot-clé simple courant
111       """
112       commentaire='Un complexe est attendu'
113       aideval=self.node.item.aide()
114       commentaire=commentaire +"\n"+ aideval
115       return commentaire
116
117   def get_valeur(self):
118       """
119       Retourne le complexe saisi par l'utilisateur
120       """
121       l=[]
122       l.append(self.typ_cplx.get())
123       l.append(string.atof(self.entry1.get()))
124       l.append(string.atof(self.entry2.get()))
125       return `tuple(l)`
126
127   def erase_valeur(self):
128       """
129       Efface les entries de saisie
130       """
131       self.typ_cplx.set('RI')
132       self.entry1.delete(0,END)
133       self.entry2.delete(0,END)
134