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