Salome HOME
CCAR: rabattre la version V1_15a4 dans la branche principale
[tools/eficas.git] / InterfaceQT4 / qtEficas.py
1 # -*- coding: iso-8859-1 -*-
2
3 import os, sys
4
5 from PyQt4.QtGui  import *
6 from PyQt4.QtCore import *
7 from PyQt4.QtAssistant import *
8 from myMain import Ui_Eficas
9 from viewManager import MyTabview
10
11 from Editeur import session
12
13 dirCode={"ASTER":"Aster","OPENTURNS_WRAPPER":"Openturns_Wrapper"}
14
15
16 class Appli(Ui_Eficas,QMainWindow):    
17     """
18     Class implementing the main user interface.
19     """
20     def __init__(self,code="ASTER",salome=0,parent=None):
21         """
22         Constructor
23         """
24         self.ihm="QT"
25         self.code=code
26         self.salome=salome
27         self.format_fichier="python"    #par defaut
28         self.top = self #(pour CONFIGURATION)
29
30         import prefs
31         self.REPINI=prefs.REPINI
32         import configuration
33         self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
34         self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
35         if hasattr(prefs,'encoding'):
36            import sys
37            reload(sys)
38            sys.setdefaultencoding(prefs.encoding)
39
40         QMainWindow.__init__(self)
41         Ui_Eficas.__init__(self)
42         self.setupUi(self)
43         self.viewmanager = MyTabview(self) 
44         self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
45         self.connecterSignaux() 
46
47
48         #self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
49         #if self.salome :
50         #   from Editeur import session
51         #   self.ouvreFichiers()
52
53         self.recent =  QStringList()
54         self.ficPatrons={}
55         self.initPatrons()
56         self.ficRecents={}
57         self.initRecents()
58
59         self.ouvreFichiers()
60         
61     def OPENTURNS(self) :
62         self.MenuBar.removeItem(5)
63         self.MenuBar.removeItem(6)
64         self.MenuBar.removeItem(7)
65
66
67     def connecterSignaux(self) :
68         self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
69
70         self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew)
71         self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude)
72         self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen)
73         self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave)
74         self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs)
75         self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose)
76         self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll)
77         self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit)
78
79         self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut)
80         self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy)
81         self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste)
82
83         self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport)
84         self.connect(self.actionFichier_Source,SIGNAL("activated()"),self.jdcFichierSource)
85         self.connect(self.actionFichier_Resultat,SIGNAL("activated()"),self.visuJdcPy)
86
87         self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur)
88         self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf)
89
90         self.connect(self.actionTraduitV7V8,SIGNAL("activated()"),self.traductionV7V8)
91         self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9)
92
93         #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
94         #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
95         #self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout)
96         #self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout)
97                              
98
99     def ouvreFichiers(self) :
100     # Ouverture des fichiers de commandes donnes sur la ligne de commande
101         cwd=os.getcwd()
102         self.dir=cwd
103         for study in session.d_env.studies:
104             os.chdir(cwd)
105             d=session.get_unit(study,self)
106             self.viewmanager.handleOpen(fichier=study["comm"],units=d)
107
108     def  get_source(self,file):
109     # appele par Editeur/session.py
110         import convert
111         p=convert.plugins['python']()
112         p.readfile(file)
113         texte=p.convert('execnoparseur')
114         return texte
115
116
117         
118     def initPatrons(self) :
119     # Mise à jour du menu des fichiers recemment ouverts
120         from Editeur import listePatrons
121         self.listePatrons = listePatrons.listePatrons(self.code)
122         idx = 0
123         for nomSsMenu in self.listePatrons.liste.keys():
124             ssmenu=self.menuPatrons.addMenu(nomSsMenu)
125             for fichier in self.listePatrons.liste[nomSsMenu]:
126                id = ssmenu.addAction(fichier)
127                self.ficPatrons[id]=fichier
128                self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons)
129             #   self.Patrons.setItemParameter(id,idx)
130                idx=idx+1
131
132     def initRecents(self):
133        try :
134            rep=self.CONFIGURATION.rep_user
135            monFichier=rep+"/listefichiers_"+self.code
136            index=0
137            f=open(monFichier)
138            while ( index < 9) :
139               ligne=f.readline()
140               if ligne != "" :
141                  l=(ligne.split("\n"))[0]
142                  self.recent.append(l)
143               index=index+1
144        except :
145            pass
146
147        try    : f.close()
148        except : pass
149
150     def addToRecentList(self, fn):
151         """
152         Public slot to add a filename to the list of recently opened files.
153
154         @param fn name of the file to be added
155         """
156         self.recent.removeAll(fn)
157         self.recent.prepend(fn)
158         if len(self.recent) > 9:
159             self.recent = self.recent[:9]
160
161     def sauveRecents(self) :
162        rep=self.CONFIGURATION.rep_user
163        monFichier=rep+"/listefichiers_"+self.code
164        try :
165             f=open(monFichier,'w')
166             if len(self.recent) == 0 : return
167             index=0
168             while ( index <  len(self.recent)):
169               ligne=str(self.recent[index])+"\n"
170               f.write(ligne)
171               index=index+1
172        except :
173             pass
174        try :
175             f.close()
176        except :
177             pass
178
179
180
181     def traductionV7V8(self):
182         from gereTraduction import traduction
183         traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V7V8")
184
185     def traductionV8V9(self):
186         from gereTraduction import traduction
187         traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V8V9")
188
189     def version(self) :
190         from desVisu import DVisu
191         titre = "version "
192         monVisu=DVisu(parent=self.viewmanager)
193         monVisu.setCaption(titre)
194         monVisu.TB.setText("Eficas V1.13")
195         monVisu.adjustSize()
196         monVisu.show()
197
198     def aidePPal(self) :
199         maD=INSTALLDIR+"/AIDE/fichiers"
200         docsPath = QDir(maD).absPath()
201         self.monAssistant.showPage( QString("%1/index.html").arg(docsPath) )
202
203     def optionEditeur(self) :
204         from monOptionsEditeur import Options
205         monOption=Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
206         monOption.show()
207         
208     def optionPdf(self) :
209         from monOptionsPdf import OptionPdf
210         monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
211         monOption.show()
212         
213     def handleShowRecentMenu(self):
214         """
215         Private method to set up recent files menu.
216         """
217         self.recentMenu.clear()
218         
219         for rp in self.recent:
220             id = self.recentMenu.addAction(rp)
221             self.ficRecents[id]=rp
222             self.connect(id, SIGNAL('triggered()'),self.handleOpenRecent)
223         self.recentMenu.addSeparator()
224         self.recentMenu.addAction(self.trUtf8('&Clear'), self.handleClearRecent)
225         
226     def handleOpenPatrons(self):
227         idx=self.sender()
228         fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
229         self.viewmanager.handleOpen(fichier=fichier, patron = 1)
230
231     def handleOpenRecent(self):
232         idx=self.sender()
233         fichier=self.ficRecents[idx]
234         self.viewmanager.handleOpen(fichier=fichier, patron =0 )
235         
236     def handleClearRecent(self):
237         self.recent = QStringList()
238         
239     def fileNew(self):        
240         self.viewmanager.newEditor()        
241         
242     def fileOpen(self ):
243         self.viewmanager.handleOpen()        
244         
245     def fileSave(self):
246         self.viewmanager.saveCurrentEditor()
247         
248     def fileSaveAs(self):
249         self.viewmanager.saveAsCurrentEditor()
250         
251     def fileClose(self):
252         self.viewmanager.handleClose()
253         
254     def fileCloseAll(self):
255         self.viewmanager.handleCloseAll()
256         
257     def fileExit(self):
258         # On peut sortir sur Abort
259         self.viewmanager.handleCloseAll()
260         if self.salome :
261            self.close()
262         else :
263            qApp.closeAllWindows()
264         
265     def editCopy(self):
266         self.viewmanager.handleEditCopy()
267       
268     def editCut(self):
269         self.viewmanager.handleEditCut()
270     
271     def editPaste(self):
272         self.viewmanager.handleEditPaste()
273         
274     def jdcFichierSource(self):
275         self.viewmanager.handleViewJdcFichierSource()
276         
277     def jdcRapport(self):
278         self.viewmanager.handleViewJdcRapport()
279         
280     def visuJdcPy(self):
281         self.viewmanager.handleViewJdcPy()
282
283     def helpAbout(self):
284         import AIDE
285         AIDE.go3(parent=self)
286
287     def NewInclude(self):
288         self.viewmanager.newIncludeEditor()
289
290
291 if __name__=='__main__':
292
293     # Modules Eficas
294     sys.path.append(INSTALLDIR+"/Aster")
295     from Aster import prefs
296     if hasattr(prefs,'encoding'):
297        # Hack pour changer le codage par defaut des strings
298        import sys
299        reload(sys)
300        sys.setdefaultencoding(prefs.encoding)
301        del sys.setdefaultencoding
302        # Fin hack
303
304     from Editeur import import_code
305     from Editeur import session
306
307     # Analyse des arguments de la ligne de commande
308     options=session.parse(sys.argv)
309     code=options.code
310
311
312     app = QApplication(sys.argv)
313     #app.setMainWidget(mw) (qt3)
314     Eficas=Appli()
315     Eficas.show()
316
317     #app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
318     #mw.ouvreFichiers()
319     #mw.show()
320
321     res=app.exec_()
322     sys.exit(res)