Salome HOME
fin du menage
[tools/eficas.git] / InterfaceQT4 / compomacro.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2021   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 from __future__ import absolute_import
23 import os,sys
24 import types
25 import traceback
26
27 # Modules Eficas
28 from Editeur import Objecttreeitem
29 from Extensions.i18n import tr
30 from InterfaceQT4 import compooper
31 from InterfaceQT4 import browser
32 from InterfaceQT4 import typeNode
33
34
35 class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):         
36     
37     def getPanel(self):
38       from   .monWidgetCommande import MonWidgetCommande
39       return MonWidgetCommande (self,self.editor ,self.item.object)
40
41
42     def createPopUpMenu(self):
43       typeNode.PopUpMenuNode.createPopUpMenu(self)
44
45 #    def view3D(self) :
46 #        from Editeur import TroisDPal
47 #        troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
48 #        troisD.envoievisu()
49
50         
51     
52 class MACROTreeItem(compooper.EtapeTreeItem):
53 #  """ Cette classe herite d'une grande partie des comportements
54 #      de la classe compooper.EtapeTreeItem
55 #  """
56     itemNode=MACRONode
57
58 # ------------------------------------
59 #  Classes necessaires a INCLUDE
60 # ------------------------------------
61
62 class INCLUDETreeItemBase(MACROTreeItem):
63
64     def __init__(self,appliEficas, labeltext, object, setFunction):    
65        MACROTreeItem.__init__(self,appliEficas, labeltext, object, setFunction)
66
67     def isCopiable(self):
68        return 0
69
70
71 class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):    
72
73     def getPanel(self):
74       from   .monWidgetCommande import MonWidgetCommande
75       return MonWidgetCommande (self,self.editor ,self.item.object)
76
77     def createPopUpMenu(self):
78       typeNode.PopUpMenuNode.createPopUpMenu(self)
79       
80     def makeEdit(self):    #,appliEficas,node
81         if self.item.object.text_converted == 0:
82                 # Le texte du fichier inclus n'a pas pu etre converti par le module convert
83                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
84                 msg=msg+self.item.object.text_error
85                 return
86     
87         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
88                #L'include n'est pas initialise
89                self.item.object.buildInclude(None,"")
90     
91         # On cree un nouvel onglet dans le bureau
92         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
93      
94
95 class INCLUDETreeItem(INCLUDETreeItemBase):
96     itemNode=INCLUDENode
97     
98
99 # ------------------------------------
100 #  Classes necessaires a POURSUITE
101 # ------------------------------------
102     
103 class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):    
104
105     def getPanel(self):
106       from   .monWidgetCommande import MonWidgetCommande
107       return MonWidgetCommande (self,self.editor ,self.item.object)
108
109     def createPopUpMenu(self):
110       typeNode.PopUpMenuNode.createPopUpMenu(self)
111
112     def makeEdit(self):    #,appliEficas,node
113         if self.item.object.text_converted == 0:
114                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
115                 msg=msg+self.item.object.text_error
116                 return
117     
118         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
119             text="""DEBUT()
120                     FIN()"""
121             self.object.buildPoursuite(None,text)
122     
123         # On cree un nouvel onglet dans le bureau
124         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
125     
126 class POURSUITETreeItem(INCLUDETreeItemBase):
127   itemNode=POURSUITENode
128
129
130 # ----------------------------------------
131 #  Classes necessaires a INCLUDE MATERIAU
132 # ----------------------------------------
133     
134
135 class MATERIAUNode(MACRONode):
136
137     def getPanel(self):
138       from   .monWidgetCommande import MonWidgetCommande
139       return MonWidgetCommande (self,self.editor ,self.item.object)
140
141     def createPopUpMenu(self):
142       typeNode.PopUpMenuNode.createPopUpMenu(self)
143
144     def makeView(self) :
145       if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None:
146          QMessageBox.information( self,tr("Include vide"),tr("L'include doit etre correctement initialise pour etre visualise"))
147          return
148       f = open(self.item.object.fichier_ini, "rb")
149       texte = f.read()
150       f.close()
151       from desVisu import DVisu
152       monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0)
153       monVisuDialg.TB.setText(texte)
154       monVisuDialg.show()
155
156
157 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
158     itemNode=MATERIAUNode
159
160 # ------------------------------------
161 # TreeItem
162 # ------------------------------------
163     
164
165 def treeitem(appliEficas, labeltext, object, setFunction=None):
166    """ Factory qui retourne l'item adapte au type de macro : 
167        INCLUDE, POURSUITE, MACRO
168    """
169    if object.nom == "INCLUDE_MATERIAU":
170       return INCLUDE_MATERIAUTreeItem(appliEficas, labeltext, object, setFunction)
171    elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
172       return INCLUDETreeItem(appliEficas, labeltext, object, setFunction)
173    elif object.nom == "POURSUITE":
174       return POURSUITETreeItem(appliEficas, labeltext, object, setFunction)
175    else:
176       return MACROTreeItem(appliEficas, labeltext, object, setFunction)
177
178 import Accas
179 objet=Accas.MACRO_ETAPE
180     
181