Salome HOME
961be5be1a5e30af9e60f6e5a0a433746a368162
[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       #self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit )
57       
58     def makeEdit(self):    #,appli,node
59         if self.item.object.text_converted == 0:
60                 # Le texte du fichier inclus n'a pas pu etre converti par le module convert
61                 msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
62                 msg=msg+self.item.object.text_error
63                 return
64     
65         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
66                #L'include n'est pas initialise
67                self.item.object.build_include(None,"")
68     
69         # On cree un nouvel onglet dans le bureau
70         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom )
71      
72
73 class INCLUDETreeItem(INCLUDETreeItemBase):
74     itemNode=INCLUDENode
75     
76
77 # ------------------------------------
78 #  Classes necessaires à POURSUITE
79 # ------------------------------------
80     
81 class POURSUITENode(browser.JDCNode, typeNode.PopUpMenuNode):    
82     def getPanel(self):
83       from   monPoursuitePanel import MonPoursuitePanel
84       return MonPoursuitePanel (self,parent=self.editor )
85
86     def createPopUpMenu(self):
87       typeNode.PopUpMenuNode.createPopUpMenu(self)
88       self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit )
89
90     def makeEdit(self):    #,appli,node
91         if self.item.object.text_converted == 0:
92                 msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
93                 msg=msg+self.item.object.text_error
94                 return
95     
96         if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
97             text="""DEBUT()
98                     FIN()"""
99             self.object.build_poursuite(None,text)
100     
101         # On cree un nouvel onglet dans le bureau
102         self.editor.vm.displayJDC( self.item.object.jdc_aux , self.item.object.jdc_aux.nom)
103     
104 class POURSUITETreeItem(INCLUDETreeItemBase):
105   itemNode=POURSUITENode
106
107
108 # ----------------------------------------
109 #  Classes necessaires à INCLUDE MATERIAU
110 # ----------------------------------------
111     
112
113 class MATERIAUNode(MACRONode):
114
115     def getPanel(self):
116       from   monMacroPanel import MonMacroPanel
117       return MonMacroPanel (self,parent=self.editor )
118
119     def createPopUpMenu(self):
120       typeNode.PopUpMenuNode.createPopUpMenu(self)
121       self.menu.insertItem( qApp.translate('Browser','View'), self.makeView )
122
123     def makeView(self) :
124       if hasattr(self.item.object,'fichier_ini') and self.item.object.fichier_ini==None:
125          QMessageBox.information( self, "Include vide","L'include doit etre correctement initialisé pour etre visualisé")
126          return
127       f = open(self.item.object.fichier_ini, "rb")
128       texte = f.read()
129       f.close()
130       from desVisu import DVisu
131       monVisuDialg=DVisu(parent=self.editor.appliEficas,fl=0)
132       monVisuDialg.TB.setText(texte)
133       monVisuDialg.show()
134
135
136 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
137     itemNode=MATERIAUNode
138
139 # ------------------------------------
140 # TreeItem
141 # ------------------------------------
142     
143
144 def treeitem(appli, labeltext, object, setfunction=None):
145    """ Factory qui retourne l'item adapte au type de macro : 
146        INCLUDE, POURSUITE, MACRO
147    """
148    if object.nom == "INCLUDE_MATERIAU":
149       return INCLUDE_MATERIAUTreeItem(appli, labeltext, object, setfunction)
150    elif object.nom == "INCLUDE":
151       return INCLUDETreeItem(appli, labeltext, object, setfunction)
152    elif object.nom == "POURSUITE":
153       return POURSUITETreeItem(appli, labeltext, object, setfunction)
154    else:
155       return MACROTreeItem(appli, labeltext, object, setfunction)
156
157 import Accas
158 objet=Accas.MACRO_ETAPE
159     
160