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):
25 self.format_fichier="python" #par defaut
26 self.top = self #(pour CONFIGURATION)
27 self.QWParent=None #(Pour lancement sans IHM)
33 name='prefs_'+prefs.code
34 prefsCode=__import__(name)
35 nameConf='configuration_'+prefs.code
36 configuration=__import__(nameConf)
38 self.REPINI=prefsCode.REPINI
39 self.RepIcon=prefsCode.INSTALLDIR+"/Editeur/icons"
40 self.CONFIGURATION = configuration.make_config(self,prefsCode.REPINI)
41 self.CONFIGStyle = configuration.make_config_style(self,prefsCode.REPINI)
42 if hasattr(prefsCode,'encoding'):
45 sys.setdefaultencoding(prefsCode.encoding)
47 QMainWindow.__init__(self)
48 Ui_Eficas.__init__(self)
51 self.viewmanager = MyTabview(self)
52 self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
53 self.connecterSignaux()
56 #self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
58 # from Editeur import session
59 # self.ouvreFichiers()
61 self.recent = QStringList()
70 self.MenuBar.removeItem(5)
71 self.MenuBar.removeItem(6)
72 self.MenuBar.removeItem(7)
74 def ajoutIcones(self) :
75 # Pour pallier les soucis de repertoire d icone
76 icon = QIcon(self.RepIcon+"/New24.png")
77 self.action_Nouveau.setIcon(icon)
78 icon1 = QIcon(self.RepIcon+"/Open24.png")
79 self.action_Ouvrir.setIcon(icon1)
80 icon2 = QIcon(self.RepIcon+"/Save24.png")
81 self.actionEnregistrer.setIcon(icon2)
82 icon3 = QIcon(self.RepIcon+"/Cut24.png")
83 self.actionCouper.setIcon(icon3)
84 icon4 = QIcon(self.RepIcon+"/Copy24.png")
85 self.actionCopier.setIcon(icon4)
86 icon5 = QIcon(self.RepIcon+"/Paste24.png")
87 self.actionColler.setIcon(icon5)
90 def connecterSignaux(self) :
91 self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
93 self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew)
94 self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude)
95 self.connect(self.action_Ouvrir,SIGNAL("activated()"),self.fileOpen)
96 self.connect(self.actionEnregistrer,SIGNAL("activated()"),self.fileSave)
97 self.connect(self.actionEnregistrer_sous,SIGNAL("activated()"),self.fileSaveAs)
98 self.connect(self.actionFermer,SIGNAL("activated()"),self.fileClose)
99 self.connect(self.actionFermer_tout,SIGNAL("activated()"),self.fileCloseAll)
100 self.connect(self.actionQuitter,SIGNAL("activated()"),self.fileExit)
102 self.connect(self.actionCouper,SIGNAL("activated()"),self.editCut)
103 self.connect(self.actionCopier,SIGNAL("activated()"),self.editCopy)
104 self.connect(self.actionColler,SIGNAL("activated()"),self.editPaste)
106 self.connect(self.actionRapport_de_Validation,SIGNAL("activated()"),self.jdcRapport)
107 self.connect(self.actionFichier_Source,SIGNAL("activated()"),self.jdcFichierSource)
108 self.connect(self.actionFichier_Resultat,SIGNAL("activated()"),self.visuJdcPy)
110 self.connect(self.actionParametres_Eficas,SIGNAL("activated()"),self.optionEditeur)
111 self.connect(self.actionLecteur_Pdf,SIGNAL("activated()"),self.optionPdf)
113 self.connect(self.actionTraduitV7V8,SIGNAL("activated()"),self.traductionV7V8)
114 self.connect(self.actionTraduitV8V9,SIGNAL("activated()"),self.traductionV8V9)
116 #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
117 #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
118 #self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout)
119 #self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout)
122 def ouvreFichiers(self) :
123 # Ouverture des fichiers de commandes donnes sur la ligne de commande
126 for study in session.d_env.studies:
128 d=session.get_unit(study,self)
129 self.viewmanager.handleOpen(fichier=study["comm"],units=d)
131 def get_source(self,file):
132 # appele par Editeur/session.py
134 p=convert.plugins['python']()
136 texte=p.convert('execnoparseur')
141 def initPatrons(self) :
142 # Mise à jour du menu des fichiers recemment ouverts
143 from Editeur import listePatrons
144 self.listePatrons = listePatrons.listePatrons(self.code)
146 for nomSsMenu in self.listePatrons.liste.keys():
147 ssmenu=self.menuPatrons.addMenu(nomSsMenu)
148 for fichier in self.listePatrons.liste[nomSsMenu]:
149 id = ssmenu.addAction(fichier)
150 self.ficPatrons[id]=fichier
151 self.connect(id, SIGNAL('triggered()'),self.handleOpenPatrons)
152 # self.Patrons.setItemParameter(id,idx)
155 def initRecents(self):
157 rep=self.CONFIGURATION.rep_user
158 monFichier=rep+"/listefichiers_"+self.code
164 l=(ligne.split("\n"))[0]
165 self.recent.append(l)
173 def addToRecentList(self, fn):
175 Public slot to add a filename to the list of recently opened files.
177 @param fn name of the file to be added
179 self.recent.removeAll(fn)
180 self.recent.prepend(fn)
181 if len(self.recent) > 9:
182 self.recent = self.recent[:9]
184 def sauveRecents(self) :
185 rep=self.CONFIGURATION.rep_user
186 monFichier=rep+"/listefichiers_"+self.code
188 f=open(monFichier,'w')
189 if len(self.recent) == 0 : return
191 while ( index < len(self.recent)):
192 ligne=str(self.recent[index])+"\n"
204 def traductionV7V8(self):
205 from gereTraduction import traduction
206 traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V7V8")
208 def traductionV8V9(self):
209 from gereTraduction import traduction
210 traduction(self.CONFIGURATION.rep_user,self.viewmanager,"V8V9")
213 from desVisu import DVisu
215 monVisu=DVisu(parent=self.viewmanager)
216 monVisu.setCaption(titre)
217 monVisu.TB.setText("Eficas V1.13")
222 maD=INSTALLDIR+"/AIDE/fichiers"
223 docsPath = QDir(maD).absPath()
224 self.monAssistant.showPage( QString("%1/index.html").arg(docsPath) )
226 def optionEditeur(self) :
227 from monOptionsEditeur import Options
228 monOption=Options(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
231 def optionPdf(self) :
232 from monOptionsPdf import OptionPdf
233 monOption=OptionPdf(parent=self,modal = 0 ,configuration=self.CONFIGURATION)
236 def handleShowRecentMenu(self):
238 Private method to set up recent files menu.
240 self.recentMenu.clear()
242 for rp in self.recent:
243 id = self.recentMenu.addAction(rp)
244 self.ficRecents[id]=rp
245 self.connect(id, SIGNAL('triggered()'),self.handleOpenRecent)
246 self.recentMenu.addSeparator()
247 self.recentMenu.addAction(self.trUtf8('&Clear'), self.handleClearRecent)
249 def handleOpenPatrons(self):
251 fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
252 self.viewmanager.handleOpen(fichier=fichier, patron = 1)
254 def handleOpenRecent(self):
256 fichier=self.ficRecents[idx]
257 self.viewmanager.handleOpen(fichier=fichier, patron =0 )
259 def handleClearRecent(self):
260 self.recent = QStringList()
263 self.viewmanager.newEditor()
266 self.viewmanager.handleOpen()
269 self.viewmanager.saveCurrentEditor()
271 def fileSaveAs(self):
272 self.viewmanager.saveAsCurrentEditor()
275 self.viewmanager.handleClose()
277 def fileCloseAll(self):
278 self.viewmanager.handleCloseAll()
281 # On peut sortir sur Abort
282 self.viewmanager.handleCloseAll()
286 qApp.closeAllWindows()
289 self.viewmanager.handleEditCopy()
292 self.viewmanager.handleEditCut()
295 self.viewmanager.handleEditPaste()
297 def jdcFichierSource(self):
298 self.viewmanager.handleViewJdcFichierSource()
300 def jdcRapport(self):
301 self.viewmanager.handleViewJdcRapport()
304 self.viewmanager.handleViewJdcPy()
308 AIDE.go3(parent=self)
310 def NewInclude(self):
311 self.viewmanager.newIncludeEditor()
314 if __name__=='__main__':
317 sys.path.append(INSTALLDIR+"/Aster")
318 from Aster import prefsCode
319 if hasattr(prefsCode,'encoding'):
320 # Hack pour changer le codage par defaut des strings
323 sys.setdefaultencoding(prefsCode.encoding)
324 del sys.setdefaultencoding
327 from Editeur import import_code
328 from Editeur import session
330 # Analyse des arguments de la ligne de commande
331 options=session.parse(sys.argv)
335 app = QApplication(sys.argv)
336 #app.setMainWidget(mw) (qt3)
340 #app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))