]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceTK/compocommandecomm.py
Salome HOME
Modif V6_4_°
[tools/eficas.git] / InterfaceTK / 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 from Editeur 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     self.bouton_sup.pack_forget()
78     self.bouton_doc.pack_forget()
79     self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur)
80     self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur)
81     self.bouton_unc = Button(self.fr_but,text='Décommentariser',command=self.uncomment)
82     self.bouton_val.pack(side='left',padx=5, pady=5)
83     self.bouton_ann.pack(side='left',padx=5, pady=5)
84     self.bouton_sup.pack(side='left',padx=5, pady=5)
85     self.bouton_unc.pack(side='right',padx=5, pady=5)
86
87   def change_valeur(self):
88     """
89     Stocke la nouvelle valeur donnée par l'utilisateur comme valeur de la commande commentarisée
90     """
91     if self.parent.modified == 'n' : self.parent.init_modif()
92     new_valeur = self.widget_text.get()
93     self.node.item.set_valeur(new_valeur)
94     self.node.update()
95
96   def display_valeur(self):
97     """
98     Affiche dans self.widget_text la valeur de la commande commentarisée
99     (annule d'éventuelles modifications faite par l'utilisateur)
100     """
101     self.widget_text.settext(self.node.item.get_valeur())
102
103   def uncomment(self):
104       """
105       Réalise la décommentarisation de self
106       """
107       try:
108           pos=self.node.parent.children.index(self.node)
109           commande,nom = self.node.item.uncomment()
110           self.node.parent.children[pos].select()
111       except Exception,e:
112           showerror("Erreur !",str(e))
113           return
114       #self.parent.appli.bureau.JDCDisplay_courant.ReplaceObjectNode(self.node,commande,nom)
115     
116 class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem):
117     panel = COMMANDE_COMMPanel
118
119     def init(self):
120       self.setfunction = self.set_valeur
121
122     def GetIconName(self):
123       """
124       Retourne le nom de l'icône associée au noeud qui porte self,
125       dépendant de la validité de l'objet
126       NB : une commande commentarisée est toujours valide ...
127       """
128       if self.isvalid():
129           return "ast-green-percent"
130       else:
131           return "ast-red-percent"
132
133     def GetLabelText(self):
134         """ Retourne 3 valeurs :
135         - le texte à afficher dans le noeud représentant l'item
136         - la fonte dans laquelle afficher ce texte
137         - la couleur du texte
138         """
139         return 'commande commentarisée',Fonte_Commentaire,None
140
141     def get_valeur(self):
142       """
143       Retourne la valeur de la commande commentarisée cad son texte
144       """
145       return self.object.get_valeur() or ''
146     
147     def GetText(self):
148         texte = self.object.valeur
149         texte = string.split(texte,'\n')[0]
150         if len(texte) < 25 :
151             return texte
152         else :
153             return texte[0:24]
154
155     def set_valeur(self,valeur):
156       """
157       Afefcte valeur à l'objet commande commentarisée
158       """
159       self.object.set_valeur(valeur)
160       
161     def GetSubList(self):
162       """
163       Retourne la liste des fils de self
164       """
165       return []
166
167     def uncomment(self):
168       """
169       Demande à l'objet commande commentarisée de se décommentariser.
170       Si l'opération s'effectue correctement, retourne l'objet commande
171       et éventuellement le nom de la sd produite, sinon lève une exception
172       """
173       try:
174         commande,nom = self.object.uncomment()
175       except Exception,e:
176         traceback.print_exc()
177         raise e
178       return commande,nom
179   
180 import Accas
181 treeitem =COMMANDE_COMMTreeItem
182 objet = Accas.COMMANDE_COMM