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