Salome HOME
aec67efe30042886c05712f3e8bbf549de3024ca
[tools/eficas.git] / InterfaceQT4 / compomacro.py
1 # -*- coding: utf-8 -*-
2
3 # Modules Python
4 import os,sys,string
5 import types
6 import traceback
7
8 # Modules Eficas
9 from Editeur import Objecttreeitem
10 import compooper
11 import browser
12 import typeNode
13
14
15 class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):         
16     def getPanel(self):
17       from   monMacroPanel import MonMacroPanel
18       return MonMacroPanel (self,parent=self.editor )
19     
20     def createPopUpMenu(self):
21       typeNode.PopUpMenuNode.createPopUpMenu(self)
22         
23     #def doPaste(self,node_selected):
24     #    print 'je suis la'
25     #    objetACopier = self.item.get_copie_objet()
26     #    child=self.append_brother(objetACopier)
27     #    return child
28
29     
30 class MACROTreeItem(compooper.EtapeTreeItem):
31 #  """ Cette classe hérite d'une grande partie des comportements
32 #      de la classe compooper.EtapeTreeItem
33 #  """
34     itemNode=MACRONode
35
36 # ------------------------------------
37 #  Classes necessaires à INCLUDE
38 # ------------------------------------
39
40 class INCLUDETreeItemBase(MACROTreeItem):
41
42     def __init__(self,appli, labeltext, object, setfunction):    
43        MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
44
45     def iscopiable(self):
46        return 0
47
48
49 class INCLUDENode(browser.JDCNode,typeNode.PopUpMenuNode):    
50     def getPanel(self):
51       from   monIncludePanel import MonIncludePanel
52       return MonIncludePanel (self,parent=self.editor )
53
54     def createPopUpMenu(self):
55       typeNode.PopUpMenuNode.createPopUpMenu(self)
56       
57     def makeEdit(self):    #,appli,node
58         if self.item.object.text_converted == 0:
59                 # Le texte du fichier inclus n'a pas pu etre converti par le module convert
60                 msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
61                 msg=msg+self.item.object.text_error
62                 return
63     
64         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
65                #L'include n'est pas initialise
66                self.item.object.build_include(None,"")
67     
68         # On cree un nouvel onglet dans le bureau
69         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
70      
71
72 class INCLUDETreeItem(INCLUDETreeItemBase):
73     itemNode=INCLUDENode
74     
75
76 # ------------------------------------
77 #  Classes necessaires à POURSUITE
78 # ------------------------------------
79     
80 class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):    
81     def getPanel(self):
82       from   monPoursuitePanel import MonPoursuitePanel
83       return MonPoursuitePanel (self,parent=self.editor )
84
85     def createPopUpMenu(self):
86       typeNode.PopUpMenuNode.createPopUpMenu(self)
87
88     def makeEdit(self):    #,appli,node
89         if self.item.object.text_converted == 0:
90                 msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
91                 msg=msg+self.item.object.text_error
92                 return
93     
94         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
95             text="""DEBUT()
96                     FIN()"""
97             self.object.build_poursuite(None,text)
98     
99         # On cree un nouvel onglet dans le bureau
100         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
101     
102 class POURSUITETreeItem(INCLUDETreeItemBase):
103   itemNode=POURSUITENode
104
105
106 # ----------------------------------------
107 #  Classes necessaires à INCLUDE MATERIAU
108 # ----------------------------------------
109     
110
111 class MATERIAUNode(MACRONode):
112
113     def getPanel(self):
114       from   monMacroPanel import MonMacroPanel
115       return MonMacroPanel (self,parent=self.editor )
116
117     def createPopUpMenu(self):
118       typeNode.PopUpMenuNode.createPopUpMenu(self)
119
120     def makeView(self) :
121       if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None:
122          QMessageBox.information( self, "Include vide","L'include doit etre correctement initialisé pour etre visualisé")
123          return
124       f = open(self.item.object.fichier_ini, "rb")
125       texte = f.read()
126       f.close()
127       from desVisu import DVisu
128       monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0)
129       monVisuDialg.TB.setText(texte)
130       monVisuDialg.show()
131
132
133 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
134     itemNode=MATERIAUNode
135
136 # ------------------------------------
137 # TreeItem
138 # ------------------------------------
139     
140
141 def treeitem(appli, labeltext, object, setfunction=None):
142    """ Factory qui retourne l'item adapte au type de macro : 
143        INCLUDE, POURSUITE, MACRO
144    """
145    if object.nom == "INCLUDE_MATERIAU":
146       return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setfunction)
147    elif object.nom == "INCLUDE":
148       return INCLUDETreeItem(appli, labeltext, object, setfunction)
149    elif object.nom == "POURSUITE":
150       return POURSUITETreeItem(appli, labeltext, object, setfunction)
151    else:
152       return MACROTreeItem(appli, labeltext, object, setfunction)
153
154 import Accas
155 objet=Accas.MACRO_ETAPE
156     
157