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