Salome HOME
CCAR: creation V1_13a1 a partir de la branche Liv-V1_12
[tools/eficas.git] / Editeur / compocomm.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
25 import Objecttreeitem
26 import panels
27 import fontes
28
29 Fonte_Commentaire = fontes.standard_italique
30
31 class COMMPanel(panels.OngletPanel):
32   
33   def init(self):
34     """
35     Initialise les frame des panneaux contextuels relatifs à un COMMENTAIRE
36     """
37     nb = Pmw.NoteBook(self,raisecommand=self.raisecmd)
38     nb.pack(fill = 'both', expand = 1)
39     self.nb=nb
40     nb.add('TexteComm', tab_text='Texte Commentaire')
41     nb.add('Commande', tab_text='Nouvelle Commande')
42     nb.add('Commentaire',tab_text='Paramètre/Commentaire')
43     self.makeCOMMPage(nb.page("TexteComm"))
44     self.makeCommandePage(nb.page("Commande"))
45     self.makeParamCommentPage_for_etape(nb.page("Commentaire"))
46     nb.tab('TexteComm').focus_set()
47     self.enlevebind()
48     self.creebind()
49     nb.setnaturalsize()
50     
51   def makeCOMMPage(self,page):
52     """
53     Crée la page qui permet d'afficher et d'éditer le texte du commentaire
54     """
55     self.frame_valeur = Frame(page)
56     self.frame_valeur.place(relwidth=0.9,relheight=0.9,relx=0.05,rely=0.05,anchor='nw')
57     self.widget_text = Pmw.ScrolledText(self.frame_valeur,
58                                         borderframe=1,
59                                         labelpos='n',
60                                         label_text = 'Texte du commentaire\n ')
61     self.widget_text.pack(side='top',expand=1,fill='both')
62     self.widget_text.configure(hscrollmode='dynamic',
63                                vscrollmode='dynamic')
64     self.make_buttons()
65     self.display_valeur()
66
67   def make_buttons(self):
68     """
69     Crée les boutons du panneau
70     """
71     #self.bouton_sup.place_forget()
72     #self.bouton_doc.place_forget()
73     #self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur,width=14)
74     #self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur,width=14)
75
76     #self.bouton_val.place(relx=0.25,rely=0.5,relheight=0.8,anchor='center')
77     #self.bouton_ann.place(relx=0.50,rely=0.5,relheight=0.8,anchor='center')
78     #self.bouton_sup.place(relx=0.75,rely=0.5,relheight=0.8,anchor='center')
79
80     self.bouton_sup.pack_forget()
81     self.bouton_doc.pack_forget()
82     self.bouton_val = Button(self.fr_but,text='Valider',command=self.change_valeur)
83     self.bouton_ann = Button(self.fr_but,text='Annuler',command=self.display_valeur)
84
85     self.bouton_val.pack(side='left',padx=5, pady=5)
86     self.bouton_ann.pack(side='left',padx=5, pady=5)
87     self.bouton_sup.pack(side='right',padx=5, pady=5)
88
89   def change_valeur(self):
90     """
91     Stocke la nouvelle valeur donnée par l'utilisateur comme valeur du commentaire
92     """
93     if self.parent.modified == 'n' : self.parent.init_modif()
94     new_valeur = self.widget_text.get()
95     self.node.item.set_valeur(new_valeur)
96     self.node.update()
97
98   def display_valeur(self):
99     """
100     Affiche dans self.widget_text la valeur de l'objet commentaire
101     (annule d'éventuelles modifications faite par l'utilisateur)
102     """
103     t=self.node.item.get_valeur()
104     try:
105         self.widget_text.settext(unicode(t))
106     except:
107         # Si probleme avec unicode
108         self.widget_text.settext(t)
109     
110 class COMMTreeItem(Objecttreeitem.ObjectTreeItem):
111     panel = COMMPanel
112
113     def init(self):
114       self.setfunction = self.set_valeur
115
116     def GetIconName(self):
117       """
118       Retourne le nom de l'icône associée au noeud qui porte self,
119       dépendant de la validité de l'objet
120       NB : un commentaire est toujours valide ...
121       """
122       return "ast-white-percent"
123
124     def GetLabelText(self):
125         """ Retourne 3 valeurs :
126         - le texte à afficher dans le noeud représentant l'item
127         - la fonte dans laquelle afficher ce texte
128         - la couleur du texte
129         """
130         return 'commentaire',Fonte_Commentaire,None
131
132     def get_valeur(self):
133       """
134       Retourne la valeur de l'objet Commentaire cad son texte
135       """
136       return self.object.get_valeur() or ''
137     
138     def GetText(self):
139         texte = self.object.valeur
140         texte = string.split(texte,'\n')[0]
141         if len(texte) < 25 :
142             return texte
143         else :
144             return texte[0:24]
145
146     def set_valeur(self,valeur):
147       """
148       Afefcte valeur à l'objet COMMENTAIRE
149       """
150       self.object.set_valeur(valeur)
151       
152     def GetSubList(self):
153       """
154       Retourne la liste des fils de self
155       """
156       return []
157
158
159     def get_objet_commentarise(self):
160        """
161            La méthode get_objet_commentarise() de la classe compocomm.COMMTreeItem
162            surcharge la méthode get_objet_commentarise de la classe Objecttreeitem.ObjectTreeItem
163            elle a pour but d'empecher l'utilisateur final de commentariser un commentaire.
164        """
165        raise Exception( 'Citoyen : tu peux "commentariser" une commande MAIS PAS UN COMMENTAIRE' )
166   
167 import Extensions
168 treeitem =COMMTreeItem
169 objet = Extensions.commentaire.COMMENTAIRE