Salome HOME
PN : pour afficher correctement les arguments de la formule nouvelle.
[tools/eficas.git] / Editeur / compocommandecomm.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 from Tkinter import *
22 import Pmw
23 import string
24 from widgets import showerror
25
26 import Objecttreeitem
27 import panels
28 import fontes
29
30 Fonte_Commentaire = fontes.standard_italique
31
32 class COMMANDE_COMMPanel(panels.OngletPanel):
33   """
34   Classe servant à définir le panel associé à une commande commentarisée
35   """
36   def init(self):
37     """
38     Initialise les frame des panneaux contextuels relatifs à une commande commentarisée
39     """
40     panneau=Frame(self)
41     panneau.pack(expand=1,fill='both')
42     self.make_buttons()
43     self.makeCOMMPage(panneau)
44
45   def makeCOMMPage(self,page):
46     """
47     Crée la page qui permet d'afficher et d'éditer le texte de la commande commentarisée
48     """
49     self.frame_valeur = Frame(page)
50     self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
51     self.widget_text = Pmw.ScrolledText(self.frame_valeur,
52                                         borderframe=1,
53                                         labelpos='n',
54                                         label_text = 'Texte de la commande\n ')
55     self.widget_text.pack(side='top',expand=1,fill='both')
56     self.widget_text.configure(hscrollmode='dynamic',
57                                vscrollmode='dynamic')
58     self.display_valeur()
59
60   def make_buttons(self):
61     """
62     Crée les boutons du panneau
63     """
64     self.bouton_sup.place_forget()
65     self.bouton_doc.place_forget()
66     self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
67     self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
68     self.bouton_unc = Button(self.fr_but,text='Décommentariser',command=self.uncomment,width=14)
69
70     self.bouton_val.place(relx=0.20,rely=0.5,relheight=0.8,anchor='center')
71     self.bouton_ann.place(relx=0.40,rely=0.5,relheight=0.8,anchor='center')
72     self.bouton_sup.place(relx=0.60,rely=0.5,relheight=0.8,anchor='center')
73     self.bouton_unc.place(relx=0.80,rely=0.5,relheight=0.8,anchor='center')
74
75   def change_valeur(self):
76     """
77     Stocke la nouvelle valeur donnée par l'utilisateur comme valeur de la commande commentarisée
78     """
79     if self.parent.modified == 'n' : self.parent.init_modif()
80     new_valeur = self.widget_text.get()
81     self.node.item.set_valeur(new_valeur)
82     self.node.update()
83
84   def display_valeur(self):
85     """
86     Affiche dans self.widget_text la valeur de la commande commentarisée
87     (annule d'éventuelles modifications faite par l'utilisateur)
88     """
89     self.widget_text.settext(self.node.item.get_valeur())
90
91   def uncomment(self):
92       """
93       Réalise la décommentarisation de self
94       """
95       try:
96           commande,nom = self.node.item.uncomment()
97       except Exception,e:
98           showerror("Erreur !",str(e))
99           return
100       self.parent.appli.bureau.JDCDisplay_courant.ReplaceObjectNode(self.node,commande,nom)
101     
102 class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
103     panel = COMMANDE_COMMPanel
104
105     def init(self):
106       self.setfunction = self.set_valeur
107
108     def GetIconName(self):
109       """
110       Retourne le nom de l'icône associée au noeud qui porte self,
111       dépendant de la validité de l'objet
112       NB : une commande commentarisée est toujours valide ...
113       """
114       if self.isvalid():
115           return "ast-green-percent"
116       else:
117           return "ast-red-percent"
118
119     def GetLabelText(self):
120         """ Retourne 3 valeurs :
121         - le texte à afficher dans le noeud représentant l'item
122         - la fonte dans laquelle afficher ce texte
123         - la couleur du texte
124         """
125         return 'commande commentarisée',Fonte_Commentaire,None
126
127     def get_valeur(self):
128       """
129       Retourne la valeur de la commande commentarisée cad son texte
130       """
131       return self.object.get_valeur() or ''
132     
133     def GetText(self):
134         texte = self.object.valeur
135         texte = string.split(texte,'\n')[0]
136         if len(texte) < 25 :
137             return texte
138         else :
139             return texte[0:24]
140
141     def set_valeur(self,valeur):
142       """
143       Afefcte valeur à l'objet commande commentarisée
144       """
145       self.object.set_valeur(valeur)
146       
147     def GetSubList(self):
148       """
149       Retourne la liste des fils de self
150       """
151       return []
152
153     def uncomment(self):
154       """
155       Demande à l'objet commande commentarisée de se décommentariser.
156       Si l'opération s'effectue correctement, retourne l'objet commande
157       et éventuellement le nom de la sd produite, sinon lève une exception
158       """
159       try:
160         commande,nom = self.object.uncomment()
161       except Exception,e:
162         raise e
163       return commande,nom
164   
165 import Accas
166 treeitem =COMMANDE_COMMTreeItem
167 objet = Accas.COMMANDE_COMM