]> SALOME platform Git repositories - tools/eficas.git/blob - InterfaceQT4/compomacro.py
Salome HOME
update version
[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