X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2FviewManager.py;h=c393cf34cb49e420699003c37ddaf377500b6c97;hb=68af27699b3d841d7d3b21223cbf4e27e4ddd45c;hp=67e4c75e48e582c905db7e993797bfea4d64a8e2;hpb=d41b1c52d0c35b655f6feabfe816a3c541f3a92a;p=tools%2Feficas.git
diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py
index 67e4c75e..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"
index=self.myQtab.currentIndex()
+ if index < 0 : return
editor=self.dict_editors[index]
editor.handleEditCopy()
def handleEditCut(self):
#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"
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)