Salome HOME
pb d accent. on les enleve en français
[tools/eficas.git] / InterfaceQT4 / compomacro.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2013   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 # Modules Python
22 import os,sys,string
23 import types
24 import traceback
25
26 # Modules Eficas
27 from Editeur import Objecttreeitem
28 from Extensions.i18n import tr
29 import compooper
30 import browser
31 import typeNode
32 from PyQt4.QtGui import QAction
33 from PyQt4.QtCore import Qt, SIGNAL, QVariant
34
35
36 class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):         
37     def getPanel(self):
38       from   monMacroPanel import MonMacroPanel
39       return MonMacroPanel (self,parent=self.editor )
40     
41     def getPanel2(self):
42       from   monWidgetCommande import MonWidgetCommande
43       return MonWidgetCommande (self,self.editor ,self.item.object)
44
45
46     def createPopUpMenu(self):
47       typeNode.PopUpMenuNode.createPopUpMenu(self)
48       if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
49            self.ViewElt = QAction(tr('View3D'),self.tree)
50            self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D)
51            self.ViewElt.setStatusTip(tr("affiche dans Geom les elements de structure"))
52            self.menu.addAction(self.ViewElt)
53            if self.item.isvalid() :
54               self.ViewElt.setEnabled(1)
55            else:
56               self.ViewElt.setEnabled(0)
57
58     def view3D(self) :
59         from Editeur import TroisDPal
60         troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
61         troisD.envoievisu()
62
63         
64     #def doPaste(self,node_selected):
65     #    print 'je suis la'
66     #    objetACopier = self.item.get_copie_objet()
67     #    child=self.append_brother(objetACopier)
68     #    return child
69
70     
71 class MACROTreeItem(compooper.EtapeTreeItem):
72 #  """ Cette classe hérite d'une grande partie des comportements
73 #      de la classe compooper.EtapeTreeItem
74 #  """
75     itemNode=MACRONode
76
77 # ------------------------------------
78 #  Classes necessaires a INCLUDE
79 # ------------------------------------
80
81 class INCLUDETreeItemBase(MACROTreeItem):
82
83     def __init__(self,appli, labeltext, object, setfunction):    
84        MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
85
86     def iscopiable(self):
87        return 0
88
89
90 class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):    
91     def getPanel(self):
92       from   monIncludePanel import MonIncludePanel
93       return MonIncludePanel (self,parent=self.editor )
94
95     def getPanel2(self):
96       from   monWidgetCommande import MonWidgetCommande
97       return MonWidgetCommande (self,self.editor ,self.item.object)
98
99     def createPopUpMenu(self):
100       typeNode.PopUpMenuNode.createPopUpMenu(self)
101       
102     def makeEdit(self):    #,appli,node
103         if self.item.object.text_converted == 0:
104                 # Le texte du fichier inclus n'a pas pu etre converti par le module convert
105                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
106                 msg=msg+self.item.object.text_error
107                 return
108     
109         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
110                #L'include n'est pas initialise
111                self.item.object.build_include(None,"")
112     
113         # On cree un nouvel onglet dans le bureau
114         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
115      
116
117 class INCLUDETreeItem(INCLUDETreeItemBase):
118     itemNode=INCLUDENode
119     
120
121 # ------------------------------------
122 #  Classes necessaires à POURSUITE
123 # ------------------------------------
124     
125 class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):    
126     def getPanel(self):
127       from   monPoursuitePanel import MonPoursuitePanel
128       return MonPoursuitePanel (self,parent=self.editor )
129
130     def getPanel2(self):
131       from   monWidgetCommande import MonWidgetCommande
132       return MonWidgetCommande (self,self.editor ,self.item.object)
133
134     def createPopUpMenu(self):
135       typeNode.PopUpMenuNode.createPopUpMenu(self)
136
137     def makeEdit(self):    #,appli,node
138         if self.item.object.text_converted == 0:
139                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
140                 msg=msg+self.item.object.text_error
141                 return
142     
143         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
144             text="""DEBUT()
145                     FIN()"""
146             self.object.build_poursuite(None,text)
147     
148         # On cree un nouvel onglet dans le bureau
149         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
150     
151 class POURSUITETreeItem(INCLUDETreeItemBase):
152   itemNode=POURSUITENode
153
154
155 # ----------------------------------------
156 #  Classes necessaires a INCLUDE MATERIAU
157 # ----------------------------------------
158     
159
160 class MATERIAUNode(MACRONode):
161
162     def getPanel(self):
163       from   monMacroPanel import MonMacroPanel
164       return MonMacroPanel (self,parent=self.editor )
165
166     def createPopUpMenu(self):
167       typeNode.PopUpMenuNode.createPopUpMenu(self)
168
169     def makeView(self) :
170       if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None:
171          QMessageBox.information( self,tr("Include vide"),tr("L'include doit etre correctement initialise pour etre visualise"))
172          return
173       f = open(self.item.object.fichier_ini, "rb")
174       texte = f.read()
175       f.close()
176       from desVisu import DVisu
177       monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0)
178       monVisuDialg.TB.setText(texte)
179       monVisuDialg.show()
180
181
182 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
183     itemNode=MATERIAUNode
184
185 # ------------------------------------
186 # TreeItem
187 # ------------------------------------
188     
189
190 def treeitem(appli, labeltext, object, setfunction=None):
191    """ Factory qui retourne l'item adapte au type de macro : 
192        INCLUDE, POURSUITE, MACRO
193    """
194    if object.nom == "INCLUDE_MATERIAU":
195       return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setfunction)
196    elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
197       return INCLUDETreeItem(appli, labeltext, object, setfunction)
198    elif object.nom == "POURSUITE":
199       return POURSUITETreeItem(appli, labeltext, object, setfunction)
200    else:
201       return MACROTreeItem(appli, labeltext, object, setfunction)
202
203 import Accas
204 objet=Accas.MACRO_ETAPE
205     
206