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