1 # -*- coding: iso-8859-1 -*-
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
11 from Editeur import session
14 class Appli(Ui_Eficas,QMainWindow):
16 Class implementing the main user interface.
18 def __init__(self,code="ASTER",salome=0,parent=None,ssCode=None):
22 self.VERSION_EFICAS="Eficas QT4 V2.0"
28 self.top = self #(pour CONFIGURATION)
29 self.QWParent=None #(Pour lancement sans IHM)
35 name='prefs_'+prefs.code
36 prefsCode=__import__(name)
37 self.REPINI=prefsCode.REPINI
38 self.RepIcon=prefsCode.INSTALLDIR+"/Editeur/icons"
39 self.INSTALLDIR=prefsCode.INSTALLDIR
41 self.format_fichier= ssCode #par defaut
42 prefsCode.NAME_SCHEME=ssCode
44 self.format_fichier="python" #par defaut
48 nameConf='configuration_'+prefs.code
49 configuration=__import__(nameConf)
50 self.CONFIGURATION = configuration.make_config(self,prefsCode.REPINI)
51 self.CONFIGStyle = None
52 if hasattr(configuration,'make_config_style'):
53 self.CONFIGStyle = configuration.make_config_style(self,prefsCode.REPINI)
54 if hasattr(prefsCode,'encoding'):
57 sys.setdefaultencoding(prefsCode.encoding)
59 QMainWindow.__init__(self,parent)
60 Ui_Eficas.__init__(self)
63 if code in Appli.__dict__.keys():
64 listeTexte=apply(Appli.__dict__[code],(self,))
66 self.viewmanager = MyTabview(self)
67 self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
68 self.connecterSignaux()
72 # from Editeur import session
73 # self.ouvreFichiers()
75 self.recent = QStringList()
82 self.setWindowTitle(self.VERSION_EFICAS)
85 self.menuTraduction = self.menubar.addMenu("menuTraduction")
86 self.actionTraduitV7V8 = QAction(self)
87 self.actionTraduitV7V8.setObjectName("actionTraduitV7V8")
88 self.actionTraduitV8V9 = QAction(self)
89 self.actionTraduitV8V9.setObjectName("actionTraduitV8V9")
90 self.menuTraduction.addAction(self.actionTraduitV7V8)
91 self.menuTraduction.addAction(self.actionTraduitV8V9)
92 self.menuTraduction.setTitle(QApplication.translate("Eficas", "Traduction", None, QApplication.UnicodeUTF8))
93 self.actionTraduitV7V8.setText(QApplication.translate("Eficas","TraduitV7V8", None, QApplication.UnicodeUTF8))
94 self.actionTraduitV8V9.setText(QApplication.translate("Eficas","TraduitV8V9", None, QApplication.UnicodeUTF8))
95 self.connect(self.actionTraduitV7V8,SIGNAL("activated()"),self.traductionV7V8)
96 self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9)
103 self.actionExecution = QAction(self)
104 icon6 = QIcon(self.RepIcon+"/compute.png")
105 self.actionExecution.setIcon(icon6)
106 self.actionExecution.setObjectName("actionExecution")
107 self.menuJdC.addAction(self.actionExecution)
108 self.toolBar.addAction(self.actionExecution)
109 self.actionExecution.setText(QApplication.translate("Eficas", "Execution", None, QApplication.UnicodeUTF8))
110 self.connect(self.actionExecution,SIGNAL("activated()"),self.run)
112 self.actionEnregistrer_Python = QAction(self)
113 self.actionEnregistrer_Python.setObjectName("actionEnregistrer_Python")
114 self.menuFichier.addAction(self.actionEnregistrer_Python)
115 self.actionEnregistrer_Python.setText(QApplication.translate("Eficas", "Sauve Python", None,QApplication.UnicodeUTF8))
116 self.connect(self.actionEnregistrer_Python,SIGNAL("activated()"),self.saveRun)
118 self.actionEnregistrerYACS = QAction(self)
119 self.actionEnregistrerYACS.setObjectName("actionEnregistrerYACS")
120 self.menuFichier.addAction(self.actionEnregistrerYACS)
121 self.actionEnregistrerYACS.setText(QApplication.translate("Eficas", "Sauve Schema YACS", None,QApplication.UnicodeUTF8))
122 self.connect(self.actionEnregistrerYACS,SIGNAL("activated()"),self.saveYACS)
124 self.actionExecutionYACS = QAction(self)
125 icon7 = QIcon(self.RepIcon+"/application.gif")
126 self.actionExecutionYACS.setIcon(icon7)
127 self.actionExecutionYACS.setObjectName("actionExecutionYACS")
128 self.menuJdC.addAction(self.actionExecutionYACS)
129 self.toolBar.addAction(self.actionExecutionYACS)
130 self.actionExecutionYACS.setText(QApplication.translate("Eficas", "Execution YACS", None, QApplication.UnicodeUTF8))
131 self.connect(self.actionExecutionYACS,SIGNAL("activated()"),self.runYACS)
133 def ajoutIcones(self) :
134 # Pour pallier les soucis de repertoire d icone
135 icon = QIcon(self.RepIcon+"/New24.png")
136 self.action_Nouveau.setIcon(icon)
137 icon1 = QIcon(self.RepIcon+"/Open24.png")
138 self.action_Ouvrir.setIcon(icon1)
139 icon2 = QIcon(self.RepIcon+"/Save24.png")
140 self.actionEnregistrer.setIcon(icon2)
141 icon3 = QIcon(self.RepIcon+"/Cut24.png")
142 self.actionCouper.setIcon(icon3)
143 icon4 = QIcon(self.RepIcon+"/Copy24.png")
144 self.actionCopier.setIcon(icon4)
145 icon5 = QIcon(self.RepIcon+"/Paste24.png")
146 self.actionColler.setIcon(icon5)
149 def connecterSignaux(self) :
150 self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
152 self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew)
153 self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude)
154 self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen)
155 self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave)
156 self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs)
157 self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose)
158 self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll)
159 self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit)
161 self.connect(self.actionEficas,SIGNAL("activated()"),self.aidePPal)
162 self.connect(self.actionVersion,SIGNAL("activated()"),self.version)
164 self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut)
165 self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy)
166 self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste)
167 self.connect(self.actionSupprimer,SIGNAL("activated()"),self.supprimer)
169 self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport)
170 self.connect(self.actionFichier_Source,SIGNAL("activated()"),self.jdcFichierSource)
171 self.connect(self.actionFichier_Resultat,SIGNAL("activated()"),self.visuJdcPy)
173 self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur)
174 self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf)
176 #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
177 #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
180 def ouvreFichiers(self) :
181 # Ouverture des fichiers de commandes donnes sur la ligne de commande
184 for study in session.d_env.studies:
186 d=session.get_unit(study,self)
187 self.viewmanager.handleOpen(fichier=study["comm"],units=d)
189 def get_source(self,file):
190 # appele par Editeur/session.py
192 p=convert.plugins['python']()
194 texte=p.convert('execnoparseur')
199 def initPatrons(self) :
200 # Mise à jour du menu des fichiers recemment ouverts
201 from Editeur import listePatrons
202 self.listePatrons = listePatrons.listePatrons(self.code)
204 for nomSsMenu in self.listePatrons.liste.keys():
205 ssmenu=self.menuPatrons.addMenu(nomSsMenu)
206 for fichier in self.listePatrons.liste[nomSsMenu]:
207 id = ssmenu.addAction(fichier)
208 self.ficPatrons[id]=fichier
209 self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons)
210 # self.Patrons.setItemParameter(id,idx)
213 def initRecents(self):
215 rep=self.CONFIGURATION.rep_user
216 monFichier=rep+"/listefichiers_"+self.code
222 l=(ligne.split("\n"))[0]
223 self.recent.append(l)
231 def addToRecentList(self, fn):
233 Public slot to add a filename to the list of recently opened files.
235 @param fn name of the file to be added
237 self.recent.removeAll(fn)
238 self.recent.prepend(fn)
239 if len(self.recent) > 9:
240 self.recent = self.recent[:9]
242 def sauveRecents(self) :
243 rep=self.CONFIGURATION.rep_user
244 monFichier=rep+"/listefichiers_"+self.code
246 f=open(monFichier,'w')
247 if len(self.recent) == 0 : return
249 while ( index < len(self.recent)):
250 ligne=str(self.recent[index])+"\n"
262 def traductionV7V8(self):
263 from gereTraduction import traduction
264 traduction(self.CONFIGURATION.rep_ini,self.viewmanager,"V7V8")
266 def traductionV8V9(self):
267 from gereTraduction import traduction
268 traduction(self.CONFIGURATION.rep_ini,self.viewmanager,"V8V9")
271 from monVisu import DVisu
273 monVisuDialg=DVisu(parent=self,fl=0)
274 monVisuDialg.setWindowTitle(titre)
275 monVisuDialg.TB.setText(self.VERSION_EFICAS +QString(" pour ") + self.code)
276 monVisuDialg.adjustSize()
280 maD=self.INSTALLDIR+"/Aide"
281 docsPath = QDir(maD).absolutePath()
282 monAssistant=QAssistantClient(QString(""), self)
283 arguments=QStringList()
284 arguments << "-profile" <<docsPath+QDir.separator()+QString("eficas_")+QString(self.code)+QString(".adp");
285 monAssistant.setArguments(arguments);
286 monAssistant.showPage(docsPath+QDir.separator()+QString("fichiers_"+QString(self.code)+QString("/index.html")))
288 def optionEditeur(self) :
289 name='monOptions_'+self.code
292 optionCode=__import__(name)
295 QMessageBox.critical( self, "Parametrage", "Pas de possibilite de personnalisation de la configuration ")
297 monOption=optionCode.Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
300 def optionPdf(self) :
301 from monOptionsPdf import OptionPdf
302 monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
305 def handleShowRecentMenu(self):
307 Private method to set up recent files menu.
309 self.recentMenu.clear()
311 for rp in self.recent:
312 id = self.recentMenu.addAction(rp)
313 self.ficRecents[id]=rp
314 self.connect(id, SIGNAL('triggered()'),self.handleOpenRecent)
315 self.recentMenu.addSeparator()
316 self.recentMenu.addAction(self.trUtf8('&Clear'), self.handleClearRecent)
318 def handleOpenPatrons(self):
320 fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
321 self.viewmanager.handleOpen(fichier=fichier, patron = 1)
323 def handleOpenRecent(self):
325 fichier=self.ficRecents[idx]
326 self.viewmanager.handleOpen(fichier=fichier, patron =0 )
328 def handleClearRecent(self):
329 self.recent = QStringList()
333 self.viewmanager.newEditor()
336 self.viewmanager.handleOpen()
339 self.viewmanager.saveCurrentEditor()
341 def fileSaveAs(self):
342 self.viewmanager.saveAsCurrentEditor()
345 self.viewmanager.handleClose()
347 def fileCloseAll(self):
348 self.viewmanager.handleCloseAll()
351 # On peut sortir sur Abort
352 res=self.viewmanager.handleCloseAll()
357 qApp.closeAllWindows()
360 self.viewmanager.handleEditCopy()
363 self.viewmanager.handleEditCut()
366 self.viewmanager.handleEditPaste()
369 self.viewmanager.run()
372 self.viewmanager.saveRun()
375 self.viewmanager.runYACS()
378 self.viewmanager.saveYACS()
381 self.viewmanager.handleSupprimer()
383 def jdcFichierSource(self):
384 self.viewmanager.handleViewJdcFichierSource()
386 def jdcRapport(self):
387 self.viewmanager.handleViewJdcRapport()
390 self.viewmanager.handleViewJdcPy()
393 def NewInclude(self):
394 self.viewmanager.newIncludeEditor()
397 self.indice=self.indice+1
398 texte="tempo"+str(self.indice)
402 if __name__=='__main__':
405 sys.path.append(INSTALLDIR+"/Aster")
406 from Aster import prefsCode
407 if hasattr(prefsCode,'encoding'):
408 # Hack pour changer le codage par defaut des strings
411 sys.setdefaultencoding(prefsCode.encoding)
412 del sys.setdefaultencoding
415 from Editeur import import_code
416 from Editeur import session
418 # Analyse des arguments de la ligne de commande
419 options=session.parse(sys.argv)
423 app = QApplication(sys.argv)
424 #app.setMainWidget(mw) (qt3)
428 #app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))