Salome HOME
premiere version
[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
33
34 class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):         
35     def getPanel(self):
36       from   monMacroPanel import MonMacroPanel
37       return MonMacroPanel (self,parent=self.editor )
38     
39     def getPanel2(self):
40         from monWidgetCommande import MonWidgetCommande
41         return MonWidgetCommande(self,self.editor,self.item.object)
42
43     def createPopUpMenu(self):
44       typeNode.PopUpMenuNode.createPopUpMenu(self)
45         
46     #def doPaste(self,node_selected):
47     #    print 'je suis la'
48     #    objetACopier = self.item.get_copie_objet()
49     #    child=self.append_brother(objetACopier)
50     #    return child
51
52     
53 class MACROTreeItem(compooper.EtapeTreeItem):
54 #  """ Cette classe hérite d'une grande partie des comportements
55 #      de la classe compooper.EtapeTreeItem
56 #  """
57     itemNode=MACRONode
58
59 # ------------------------------------
60 #  Classes necessaires a INCLUDE
61 # ------------------------------------
62
63 class INCLUDETreeItemBase(MACROTreeItem):
64
65     def __init__(self,appli, labeltext, object, setfunction):    
66        MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
67
68     def iscopiable(self):
69        return 0
70
71
72 class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):    
73     def getPanel(self):
74       from   monIncludePanel import MonIncludePanel
75       return MonIncludePanel (self,parent=self.editor )
76
77     def createPopUpMenu(self):
78       typeNode.PopUpMenuNode.createPopUpMenu(self)
79       
80     def makeEdit(self):    #,appli,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.build_include(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 à POURSUITE
101 # ------------------------------------
102     
103 class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):    
104     def getPanel(self):
105       from   monPoursuitePanel import MonPoursuitePanel
106       return MonPoursuitePanel (self,parent=self.editor )
107
108     def createPopUpMenu(self):
109       typeNode.PopUpMenuNode.createPopUpMenu(self)
110
111     def makeEdit(self):    #,appli,node
112         if self.item.object.text_converted == 0:
113                 msg=tr("Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n")
114                 msg=msg+self.item.object.text_error
115                 return
116     
117         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
118             text="""DEBUT()
119                     FIN()"""
120             self.object.build_poursuite(None,text)
121     
122         # On cree un nouvel onglet dans le bureau
123         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
124     
125 class POURSUITETreeItem(INCLUDETreeItemBase):
126   itemNode=POURSUITENode
127
128
129 # ----------------------------------------
130 #  Classes necessaires a INCLUDE MATERIAU
131 # ----------------------------------------
132     
133
134 class MATERIAUNode(MACRONode):
135
136     def getPanel(self):
137       from   monMacroPanel import MonMacroPanel
138       return MonMacroPanel (self,parent=self.editor )
139
140     def createPopUpMenu(self):
141       typeNode.PopUpMenuNode.createPopUpMenu(self)
142
143     def makeView(self) :
144       if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None:
145          QMessageBox.information( self,tr("Include vide"),tr("L'include doit etre correctement initialise pour etre visualise"))
146          return
147       f = open(self.item.object.fichier_ini, "rb")
148       texte = f.read()
149       f.close()
150       from desVisu import DVisu
151       monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0)
152       monVisuDialg.TB.setText(texte)
153       monVisuDialg.show()
154
155
156 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
157     itemNode=MATERIAUNode
158
159 # ------------------------------------
160 # TreeItem
161 # ------------------------------------
162     
163
164 def treeitem(appli, labeltext, object, setfunction=None):
165    """ Factory qui retourne l'item adapte au type de macro : 
166        INCLUDE, POURSUITE, MACRO
167    """
168    if object.nom == "INCLUDE_MATERIAU":
169       return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setfunction)
170    elif object.nom == "INCLUDE" or object.nom== "DICTDATA":
171       return INCLUDETreeItem(appli, labeltext, object, setfunction)
172    elif object.nom == "POURSUITE":
173       return POURSUITETreeItem(appli, labeltext, object, setfunction)
174    else:
175       return MACROTreeItem(appli, labeltext, object, setfunction)
176
177 import Accas
178 objet=Accas.MACRO_ETAPE
179     
180