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