X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FviewManager.py;h=c393cf34cb49e420699003c37ddaf377500b6c97;hb=80eb29926b88137b9f0f19175c0d0c52d7dcc206;hp=12a9f825f1d77d3079025bc396d42c24f2106b3c;hpb=7e72a676f0cd6fcb60eb9515ba411fdc6dfabc1a;p=tools%2Feficas.git diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index 12a9f825..c393cf34 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -1,28 +1,29 @@ # -*- coding: utf-8 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY -# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY -# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR -# (AT YOUR OPTION) ANY LATER VERSION. +# Copyright (C) 2007-2013 EDF R&D # -# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT -# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU -# GENERAL PUBLIC LICENSE FOR MORE DETAILS. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # -# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE -# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# ====================================================================== import os, string from PyQt4.QtGui import * from PyQt4.QtCore import * +from Extensions.i18n import tr +DictExtensions= {"MAP" : ".map"} class MyTabview: def __init__(self,appliEficas): @@ -35,71 +36,137 @@ class MyTabview: self.untitledCount = 0 self.doubles = {} - self.gridLayout = QGridLayout(self.appliEficas.centralWidget()) - self.myQtab = QTabWidget(self.appliEficas.centralWidget()) - self.gridLayout.addWidget(self.myQtab) + self.myQtab = self.appliEficas.myQtab + self.myQtab.connect(self.myQtab, SIGNAL('tabCloseRequested(int)'), self.closeTab) + if self.appliEficas.multi== True: + self.myQtab.connect(self.myQtab,SIGNAL("currentChanged(int)"),self.indexChanged) + def indexChanged(self): + index=self.myQtab.currentIndex() + if self.dict_editors.has_key(index): + editor=self.dict_editors[index] + self.appliEficas.CONFIGURATION=editor.CONFIGURATION + self.appliEficas.code=editor.CONFIGURATION.code + self.appliEficas.setWindowTitle(editor.titre) + self.appliEficas.construitMenu() def handleOpen(self,fichier=None,patron=0,units=None): + result = None if fichier is None: + if self.appliEficas.multi==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + + if DictExtensions.has_key(self.appliEficas.code) : + chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;" + extensions=tr(chaine+ "All Files (*)") + else : + extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)') + fichier = QFileDialog.getOpenFileName(self.appliEficas, - self.appliEficas.trUtf8('Ouvrir Fichier'), + tr('Ouvrir Fichier'), self.appliEficas.CONFIGURATION.savedir, - self.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)')) - if fichier.isNull(): return + extensions) + if fichier.isNull(): + return result fichier = os.path.abspath(unicode(fichier)) + ulfile = os.path.abspath(unicode(fichier)) + self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0] self.appliEficas.addToRecentList(fichier) maPage=self.getEditor( fichier,units=units) + if maPage: result = maPage + if maPage : self.myQtab.setTabText(self.myQtab.indexOf(maPage),os.path.basename(fichier)) + return result - def handleClose(self,doitSauverRecent = 1): - #print "passage dans handleClose" - #print self.dict_editors + def closeTab(self): + self.handleClose() + + def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter')): if doitSauverRecent : self.appliEficas.sauveRecents() index=self.myQtab.currentIndex() if index < 0 : return - self.checkDirty(self.dict_editors[index]) + res=self.checkDirty(self.dict_editors[index],texte) + if res == 2 : return 2 # l utilisateur a annule index=self.myQtab.currentIndex() - while index < len(self.dict_editors) -1 : - self.dict_editors[index]=self.dict_editors[index+1] - index = index + 1 + idx=index + while idx < len(self.dict_editors) -1 : + self.dict_editors[idx]=self.dict_editors[idx+1] + idx = idx + 1 del self.dict_editors[len (self.dict_editors) -1] try : del self.doubles[self.dict_editors[index]] except : pass - print self.dict_editors self.myQtab.removeTab(index) + return res - def handleCloseAll(self): + def run(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.run() + + def saveRun(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.saveRun() + + def handleCloseAll(self,texte=tr('Quitter')): + res=0 self.appliEficas.sauveRecents() - print "passage dans CloseAll" - print "self.dict_editors", self.dict_editors while len(self.dict_editors) > 0 : self.myQtab.setCurrentIndex(0) - self.handleClose(0) + res=self.handleClose(0,texte) + if res==2 : return res # l utilsateur a annule + return res + def handleRechercher(self): + #print "passage dans handleRechercher" + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.handleRechercher() + + def handleDeplier(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.handleDeplier() + def handleEditCopy(self): - print "passage dans handleEditCopy" + #print "passage dans handleEditCopy" index=self.myQtab.currentIndex() + if index < 0 : return editor=self.dict_editors[index] editor.handleEditCopy() def handleEditCut(self): - print "passage dans handleEditCut" + #print "passage dans handleEditCut" index=self.myQtab.currentIndex() + if index < 0 : return editor=self.dict_editors[index] editor.handleEditCut() def handleEditPaste(self): - print "passage dans handleEditPaste" + #print "passage dans handleEditPaste" index=self.myQtab.currentIndex() + if index < 0 : return editor=self.dict_editors[index] editor.handleEditPaste() + def handleSupprimer(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.handleSupprimer() + def newEditor(self,include=0): - print "passage dans newEditor" - maPage=self.getEditor() + if self.appliEficas.multi==True : + self.appliEficas.definitCode(None,None) + if self.appliEficas.code == None:return + maPage=self.getEditor(include=include) def newIncludeEditor(self): self.newEditor(include=1) @@ -109,6 +176,13 @@ class MyTabview: if index < 0 : return self.dict_editors[index].viewJdcSource() + def handlegestionParam(self): + index=self.myQtab.currentIndex() + if index < 0 : + QMessageBox.warning( self.appliEficas,tr(u"Creation Parametre indisponible"),tr(u"les parametres sont lies a un jeu de donnees")) + return + self.dict_editors[index].gestionParam() + def handleViewJdcRapport(self): index=self.myQtab.currentIndex() if index < 0 : return @@ -126,14 +200,33 @@ class MyTabview: if editor in self.doubles.keys() : QMessageBox.warning( None, - self.appliEficas.trUtf8("Fichier Duplique"), - self.appliEficas.trUtf8("Le fichier ne sera pas sauvegarde."), - self.appliEficas.trUtf8("&Annuler")) + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."), + tr("&Annuler")) return ok, newName = editor.saveFile() if ok : fileName=os.path.basename(unicode(newName)) self.myQtab.setTabText(index,fileName) + return ok + + def sauveLigneCurrentEditor(self): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + if editor in self.doubles.keys() : + QMessageBox.warning( + None, + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."), + tr("&Annuler")) + return + ok, newName = editor.sauveLigneFile() + if ok : + fileName=os.path.basename(unicode(newName)) + self.myQtab.setTabText(index,fileName) + return ok + def saveAsCurrentEditor(self): index=self.myQtab.currentIndex() @@ -146,7 +239,7 @@ class MyTabview: if editor in self.doubles.keys(): if oldName != newName : del self.doubles[editor] - + return ok def displayJDC(self,jdc,fn=None): """ @@ -167,10 +260,10 @@ class MyTabview: editor=self.dict_editors[indexEditor] if self.samepath(fichier, editor.getFileName()): abort = QMessageBox.warning(self.appliEficas, - self.appliEficas.trUtf8("Fichier"), - self.appliEficas.trUtf8("Le fichier %1 est deja ouvert.").arg(fichier), - self.appliEficas.trUtf8("&Duplication"), - self.appliEficas.trUtf8("&Abort")) + tr("Fichier"), + tr("Le fichier %s est deja ouvert.",str(fichier)), + tr("&Duplication"), + tr("&Abort")) if abort: break double=editor else : @@ -195,15 +288,17 @@ class MyTabview: return editor def addView(self, win, fichier=None): +#PNPNPNPN --> a affiner if fichier is None: self.untitledCount += 1 - self.myQtab.addTab(win, self.appliEficas.trUtf8("Untitled %1").arg(self.untitledCount)) + self.myQtab.addTab(win, tr("Fichier non encore nomme ", self.untitledCount)) + #self.myQtab.addTab(win, str(self.appliEficas.code)) else: liste=fichier.split('/') txt = liste[-1] if not QFileInfo(fichier).isWritable(): txt = '%s (ro)' % txt - self.myQtab.addTab(win, txt) + self.myQtab.addTab(win,txt ) self.myQtab.setCurrentWidget(win) self.currentEditor=win win.setFocus() @@ -225,35 +320,33 @@ class MyTabview: return 0 - def checkDirty(self, editor): + def checkDirty(self, editor,texte): """ Private method to check dirty status and open a message window. @param editor editor window to check @return flag indicating successful reset of the dirty flag (boolean) """ - - print "checkDirty" + res=1 if (editor.modified) and (editor in self.doubles.keys()) : res = QMessageBox.warning( None, - self.appliEficas.trUtf8("Fichier Duplique"), - self.appliEficas.trUtf8("Le fichier ne sera pas sauvegarde."), - self.appliEficas.trUtf8("&Quitter"), - self.appliEficas.trUtf8("&Annuler")) + tr("Fichier Duplique"), + tr("Le fichier ne sera pas sauvegarde."), + tr(texte), + tr("&Annuler")) if res == 0 : return 1 - return 0 + return 2 if editor.modified: fn = editor.getFileName() if fn is None: fn = self.appliEficas.trUtf8('Noname') res = QMessageBox.warning(self.appliEficas, - self.appliEficas.trUtf8("Fichier Modifie"), - self.appliEficas.trUtf8("Le fichier %1 n a pas ete sauvegarde.") - .arg(fn), - self.appliEficas.trUtf8("&Sauvegarder"), - self.appliEficas.trUtf8("&Quitter "), - self.appliEficas.trUtf8("&Annuler"), 0, 2) + tr("Fichier Modifie"), + tr("Le fichier %s n a pas ete sauvegarde.",str(fn)), + tr("&Sauvegarder"), + tr(texte), + tr("&Annuler") ) if res == 0: (ok, newName) = editor.saveFile() if ok: @@ -261,7 +354,10 @@ class MyTabview: index=self.myQtab.currentIndex() self.myQtab.setTabText(index,fileName) return ok - elif res == 2: - return 0 - return 1 - + return res + + def handleAjoutGroup(self,listeGroup): + index=self.myQtab.currentIndex() + if index < 0 : return + editor=self.dict_editors[index] + editor.handleAjoutGroup(listeGroup)