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
13 dirCode={"ASTER":"Aster","OPENTURNS_WRAPPER":"Openturns_Wrapper"}
16 class Appli(Ui_Eficas,QMainWindow):
18 Class implementing the main user interface.
20 def __init__(self,code="ASTER",salome=0,parent=None):
27 self.format_fichier="python" #par defaut
28 self.top = self #(pour CONFIGURATION)
31 self.REPINI=prefs.REPINI
33 self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
34 self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
35 if hasattr(prefs,'encoding'):
38 sys.setdefaultencoding(prefs.encoding)
40 QMainWindow.__init__(self)
41 Ui_Eficas.__init__(self)
43 self.viewmanager = MyTabview(self)
44 self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
45 self.connecterSignaux()
48 #self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
50 # from Editeur import session
51 # self.ouvreFichiers()
53 self.recent = QStringList()
62 self.MenuBar.removeItem(5)
63 self.MenuBar.removeItem(6)
64 self.MenuBar.removeItem(7)
67 def connecterSignaux(self) :
68 self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
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)
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)
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)
87 self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur)
88 self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf)
90 self.connect(self.actionTraduitV7V8,SIGNAL("activated()"),self.traductionV7V8)
91 self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9)
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)
99 def ouvreFichiers(self) :
100 # Ouverture des fichiers de commandes donnes sur la ligne de commande
103 for study in session.d_env.studies:
105 d=session.get_unit(study,self)
106 self.viewmanager.handleOpen(fichier=study["comm"],units=d)
108 def get_source(self,file):
109 # appele par Editeur/session.py
111 p=convert.plugins['python']()
113 texte=p.convert('execnoparseur')
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)
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)
132 def initRecents(self):
134 rep=self.CONFIGURATION.rep_user
135 monFichier=rep+"/listefichiers_"+self.code
141 l=(ligne.split("\n"))[0]
142 self.recent.append(l)
150 def addToRecentList(self, fn):
152 Public slot to add a filename to the list of recently opened files.
154 @param fn name of the file to be added
156 self.recent.removeAll(fn)
157 self.recent.prepend(fn)
158 if len(self.recent) > 9:
159 self.recent = self.recent[:9]
161 def sauveRecents(self) :
162 rep=self.CONFIGURATION.rep_user
163 monFichier=rep+"/listefichiers_"+self.code
165 f=open(monFichier,'w')
166 if len(self.recent) == 0 : return
168 while ( index < len(self.recent)):
169 ligne=str(self.recent[index])+"\n"
181 def traductionV7V8(self):
182 from gereTraduction import traduction
183 traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V7V8")
185 def traductionV8V9(self):
186 from gereTraduction import traduction
187 traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V8V9")
190 from desVisu import DVisu
192 monVisu=DVisu(parent=self.viewmanager)
193 monVisu.setCaption(titre)
194 monVisu.TB.setText("Eficas V1.13")
199 maD=INSTALLDIR+"/AIDE/fichiers"
200 docsPath = QDir(maD).absPath()
201 self.monAssistant.showPage( QString("%1/index.html").arg(docsPath) )
203 def optionEditeur(self) :
204 from monOptionsEditeur import Options
205 monOption=Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
208 def optionPdf(self) :
209 from monOptionsPdf import OptionPdf
210 monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
213 def handleShowRecentMenu(self):
215 Private method to set up recent files menu.
217 self.recentMenu.clear()
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)
226 def handleOpenPatrons(self):
228 fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
229 self.viewmanager.handleOpen(fichier=fichier, patron = 1)
231 def handleOpenRecent(self):
233 fichier=self.ficRecents[idx]
234 self.viewmanager.handleOpen(fichier=fichier, patron =0 )
236 def handleClearRecent(self):
237 self.recent = QStringList()
240 self.viewmanager.newEditor()
243 self.viewmanager.handleOpen()
246 self.viewmanager.saveCurrentEditor()
248 def fileSaveAs(self):
249 self.viewmanager.saveAsCurrentEditor()
252 self.viewmanager.handleClose()
254 def fileCloseAll(self):
255 self.viewmanager.handleCloseAll()
258 # On peut sortir sur Abort
259 self.viewmanager.handleCloseAll()
263 qApp.closeAllWindows()
266 self.viewmanager.handleEditCopy()
269 self.viewmanager.handleEditCut()
272 self.viewmanager.handleEditPaste()
274 def jdcFichierSource(self):
275 self.viewmanager.handleViewJdcFichierSource()
277 def jdcRapport(self):
278 self.viewmanager.handleViewJdcRapport()
281 self.viewmanager.handleViewJdcPy()
285 AIDE.go3(parent=self)
287 def NewInclude(self):
288 self.viewmanager.newIncludeEditor()
291 if __name__=='__main__':
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
300 sys.setdefaultencoding(prefs.encoding)
301 del sys.setdefaultencoding
304 from Editeur import import_code
305 from Editeur import session
307 # Analyse des arguments de la ligne de commande
308 options=session.parse(sys.argv)
312 app = QApplication(sys.argv)
313 #app.setMainWidget(mw) (qt3)
317 #app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))