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