Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[tools/eficas.git] / InterfaceQT4 / viewManager.py
index e2fcece0b9b0e6a982743786a1b52b2ec3024ae4..fffd16d868e12f397e5268056f465a38598a1cb5 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   EDF R&D
+# Copyright (C) 2007-2021   EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-import os, string
-from PyQt4.QtGui  import *
-from PyQt4.QtCore import *
+from __future__ import absolute_import
+try :
+    from builtins import str
+    from builtins import object
+except : pass
+
+import os
 from Extensions.i18n import tr
+from  PyQt5.QtWidgets  import QFileDialog, QMessageBox
+from  PyQt5.QtCore     import QFileInfo
 
 DictExtensions= {"MAP" : ".map"}
-class MyTabview:
-
-   def __init__(self,appliEficas):
-       self.appliEficas=appliEficas
-       self.tabWidgets = []
-       self.mesIndexes = {}
-       self.appliEficas=appliEficas
-       self.editors = []
-       self.dict_editors={}
-       self.untitledCount = 0
-       self.doubles = {}
-
-       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 (*)")
+class MyViewManager(object):
+
+    def __init__(self,appliEficas):
+        self.appliEficas=appliEficas
+        self.tabWidgets = []
+        self.mesIndexes = {}
+        self.appliEficas=appliEficas
+        self.editors = []
+        self.dictEditors={}
+        self.untitledCount = 0
+        self.doubles = {}
+
+        self.myQtab = self.appliEficas.myQtab
+
+        self.myQtab.currentChanged.connect(self.indexChanged)
+        self.myQtab.tabCloseRequested.connect(self.closeTab)
+
+    def indexChanged(self):
+        index=self.myQtab.currentIndex()
+        if index in self.dictEditors:
+            editor=self.dictEditors[index]
+            if editor.jdc !=None :
+                CONTEXT.unsetCurrentJdC()
+                CONTEXT.setCurrentJdC(editor.jdc)
+            self.appliEficas.maConfiguration=editor.maConfiguration
+            self.appliEficas.code=editor.maConfiguration.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.demande==True :
+                self.appliEficas.definitCode(None,None)
+                if self.appliEficas.code == None:return
+
+            if self.appliEficas.code in DictExtensions:
+                chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;"
+                extensions=tr(chaine+ "All Files (*)")
+            elif self.appliEficas.code== "TELEMAC" : extensions=tr('CAS (*.cas);;All Files (*)')
             else :
-               extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)')
+                extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)')
 
             fichier = QFileDialog.getOpenFileName(self.appliEficas,
                         tr('Ouvrir Fichier'),
-                        self.appliEficas.CONFIGURATION.savedir,
-                         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 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
-       res=self.checkDirty(self.dict_editors[index],texte)
-       if res == 2 : return 2             # l utilisateur a annule
-       index=self.myQtab.currentIndex()
-       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
-       self.myQtab.removeTab(index)
-       return res
-       
-
-   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()
-       while len(self.dict_editors) > 0 :
-             self.myQtab.setCurrentIndex(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):
-       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)
-
-   def handleViewJdcFichierSource(self):
-       index=self.myQtab.currentIndex()
-       if index < 0 : return
-       self.dict_editors[index].viewJdcSource()
-
-   def handlegestionParam(self):
-       index=self.myQtab.currentIndex()
-       if index < 0 : 
-          QMessageBox.warning( self.appliEficas,tr( "Creation Paramètre indisponible"),tr( "les paramètres sont liés à un jeu de données"))
-          return
-       self.dict_editors[index].gestionParam()
-
-   def handleViewJdcRapport(self):
-       index=self.myQtab.currentIndex()
-       if index < 0 : return
-       self.dict_editors[index].viewJdcRapport()
-
-   def handleViewJdcPy(self):
-       index=self.myQtab.currentIndex()
-       if index < 0 : return
-       self.dict_editors[index].viewJdcPy()
-
-   def saveCurrentEditor(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.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()
-       editor=self.dict_editors[index]
-       oldName=editor.fichier
-       ok,newName = editor.saveFileAs()
-       if ok :
-           fileName=os.path.basename(unicode(newName))
-           self.myQtab.setTabText(index,fileName)
-       if editor in self.doubles.keys():
-          if oldName != newName :
-             del self.doubles[editor]
-       return ok
-
-   def displayJDC(self,jdc,fn=None):
+                        self.appliEficas.maConfiguration.savedir,
+                        extensions)
+            fichier=fichier[0]
+        if len(fichier) == 0: return None
+        fichier = os.path.abspath(fichier)
+        ulfile = os.path.abspath(fichier)
+        self.appliEficas.maConfiguration.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 closeTab(self,indexAFermer):
+        self.handleClose(indexAFermer = indexAFermer)
+
+    def handleClose(self,doitSauverRecent = 1,texte=tr('&Quitter'),indexAFermer=None):
+        if doitSauverRecent : self.appliEficas.sauveRecents()
+        if indexAFermer == None : index=self.myQtab.currentIndex()
+        else : index = indexAFermer
+        if index < 0 : return
+        res=self.checkDirty(self.dictEditors[index],texte)
+        if res == 2 : return 2             # l utilisateur a annule
+        idx=index
+        while idx < len(self.dictEditors) -1 :
+            self.dictEditors[idx]=self.dictEditors[idx+1]
+            idx = idx + 1
+        del self.dictEditors[len (self.dictEditors) -1]
+        try :
+            del self.doubles[self.dictEditors[index]]
+        except :
+            pass
+        self.myQtab.removeTab(index)
+        return res
+
+
+    def run(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.run()
+
+    def saveRun(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.saveRun()
+
+    def handleCloseAll(self,texte=tr('Quitter')):
+        res=0
+        self.appliEficas.sauveRecents()
+        while len(self.dictEditors) > 0 :
+            self.myQtab.setCurrentIndex(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.dictEditors[index]
+        editor.handleRechercher()
+
+    def handleRechercherDsCatalogue(self):
+        #print "passage dans handleRechercher"
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleRechercherDsCatalogue()
+
+    def handleDeplier(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleDeplier()
+
+    def handleEditCopy(self):
+        #print "passage dans handleEditCopy"
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleEditCopy()
+
+    def handleEditCut(self):
+        #print "passage dans handleEditCut"
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleEditCut()
+
+    def handleEditPaste(self):
+        #print "passage dans handleEditPaste"
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleEditPaste()
+
+    def handleSupprimer(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleSupprimer()
+
+    def handleAjoutEtape(self,nomEtape):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleAjoutEtape(nomEtape)
+
+
+    def newEditor(self,include=0):
+        if self.appliEficas.demande==True :
+            self.appliEficas.definitCode(None,None)
+            if self.appliEficas.code == None:return
+        maPage=self.getEditor(include=include)
+
+    def newIncludeEditor(self):
+        self.newEditor(include=1)
+
+    def handleViewJdcFichierSource(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].viewJdcSource()
+
+    def ouvreArbre(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].ouvreArbre()
+
+    def fermeArbre(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].fermeArbre()
+
+    def ajoutCommentaire(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.ajoutCommentaire()
+
+    def handleViewJdcRegles(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].viewJdcRegles()
+
+    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.dictEditors[index].gestionParam()
+
+    def handleViewJdcRapport(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].viewJdcRapport()
+
+    def handleViewJdcPy(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        self.dictEditors[index].viewJdcPy()
+
+    def saveCurrentEditor(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        if editor in self.doubles :
+            QMessageBox.warning(
+                      None,
+                      tr("Fichier Duplique"),
+                      tr("Le fichier ne sera pas sauvegarde."),)
+            return
+        ok, newName = editor.saveFile()
+        if ok :
+            fileName=os.path.basename(newName)
+            self.myQtab.setTabText(index,fileName)
+        return ok
+
+    def saveCompleteCurrentEditor(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        ok, newName = editor.saveCompleteFile()
+        return ok
+
+    def sauveLigneCurrentEditor(self):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        if editor in self.doubles :
+            QMessageBox.warning(
+                      None,
+                      tr("Fichier Duplique"),
+                      tr("Le fichier ne sera pas sauvegarde."),)
+            return
+        ok, newName = editor.sauveLigneFile()
+        if ok :
+            fileName=os.path.basename(newName)
+            self.myQtab.setTabText(index,fileName)
+        return ok
+
+    def saveAsCurrentEditor(self):
+        index=self.myQtab.currentIndex()
+        editor=self.dictEditors[index]
+        oldName=editor.fichier
+        ok,newName = editor.saveFileAs()
+        if ok :
+            fileName=os.path.basename(newName)
+            self.myQtab.setTabText(index,fileName)
+        if editor in self.doubles :
+            if oldName != newName :
+                del self.doubles[editor]
+        return ok
+
+    def displayJDC(self,jdc,fn=None):
         """
         Public slot to display a file in an editor.
         @param fn name of file to be opened
@@ -252,46 +301,47 @@ class MyTabview:
         editor = self.getEditor(fichier= fn, jdc = jdc ,include=1)
         self.appliEficas.addToRecentList(editor.getFileName())
 
-   def getEditor(self,fichier = None,jdc = None, units = None,include=0):
-       newWin = 0
-       double = None
-       indexEditor=0
-       for indexEditor in self.dict_editors.keys():
-           editor=self.dict_editors[indexEditor]
-           if self.samepath(fichier, editor.getFileName()):
-              abort = QMessageBox.warning(self.appliEficas,
-                        tr("Fichier"),
-                        tr("Le fichier <b>%s</b> est deja ouvert.",str(fichier)),
-                        tr("&Duplication"),
-                        tr("&Abort"))
-              if abort: break
-              double=editor
-       else :
-            from editor import JDCEditor
-            editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,vm = self,include=include)
-            if double != None : 
-               self.doubles[editor]=double
+    def getEditor(self,fichier = None,jdc = None, units = None,include=0):
+        newWin = 0
+        double = None
+        indexEditor=0
+        for indexEditor in self.dictEditors :
+            editor=self.dictEditors[indexEditor]
+            if self.samePath(fichier, editor.getFileName()):
+                msgBox = QMessageBox()
+                msgBox.setWindowTitle(tr("Fichier"))
+                msgBox.setText(tr("Le fichier <b>%s</b> est deja ouvert", str(fichier)))
+                msgBox.addButton(tr("&Duplication"),0)
+                msgBox.addButton(tr("&Abandonner"),1)
+                abort=msgBox.exec_()
+                if abort: break
+                double=editor
+        else :
+            from .editor import JDCEditor
+            editor = JDCEditor(self.appliEficas,fichier, jdc, self.myQtab,units=units,include=include)
+            if double != None :
+                self.doubles[editor]=double
             if editor.jdc: # le fichier est bien un jdc
                 self.editors.append(editor)
                 newWin = 1
             else:
                 editor.closeIt()
 
-       if newWin:
+        if newWin:
             self.addView(editor, fichier)
-       elif editor.jdc:
+        elif editor.jdc:
             self.myQtab.setCurrentIndex(indexEditor)
 
-       index=self.myQtab.currentIndex()
-       if index != -1 :
-          self.dict_editors[index]=editor
-       return editor
+        index=self.myQtab.currentIndex()
+        if index != -1 :
+            self.dictEditors[index]=editor
+        return editor
 
-   def addView(self, win, fichier=None):
+    def addView(self, win, fichier=None):
 #PNPNPNPN --> a affiner
         if fichier is None:
             self.untitledCount += 1
-            self.myQtab.addTab(win, tr("Fichier non encore nommé ", self.untitledCount))
+            self.myQtab.addTab(win, tr("Fichier non encore nomme") +  str(self.untitledCount))
             #self.myQtab.addTab(win, str(self.appliEficas.code))
         else:
             liste=fichier.split('/')
@@ -303,61 +353,80 @@ class MyTabview:
         self.currentEditor=win
         win.setFocus()
 
-   def getOpenStartDir(self) :
-       #PN --> Les Preferences
+    def getOpenStartDir(self) :
+        #PN --> Les Preferences
         try :
             userDir=os.path.expanduser("~/Eficas_install/")
             return userDir
         except :
             return ""
 
-   def samepath(self,f1, f2):
-    """
-    compare two paths.
-    """
-    if f1 is None or f2 is None: return 0
-    if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
-    return 0
+    def samePath(self,f1, f2):
+        """
+        compare two paths.
+        """
+        if f1 is None or f2 is None: return 0
+        if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
+        return 0
 
 
-   def checkDirty(self, editor,texte):
+    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)
-        """        
-        res=1 
-        if (editor.modified) and (editor in self.doubles.keys()) :
-            res = QMessageBox.warning(
-                     None,
-                     tr("Fichier Duplique"),
-                     tr("Le fichier ne sera pas sauvegarde."),
-                     tr(texte), 
-                     tr("&Annuler"))
+        """
+        res=1
+        if (editor.modified) and (editor in self.doubles) :
+            msgBox = QMessageBox(None)
+            msgBox.setWindowTitle(tr("Fichier Duplique"))
+            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+            msgBox.addButton(texte,0)
+            msgBox.addButton(tr("&Annuler"),1)
+            res=msgBox.exec_()
             if res == 0 : return 1
             return 2
         if editor.modified:
             fn = editor.getFileName()
-            if fn is None:
-                fn = self.appliEficas.trUtf8('Noname')
-            res = QMessageBox.warning(self.appliEficas, 
-                tr("Fichier Modifie"),
-                tr("Le fichier %s n a pas ete sauvegarde.",str(fn)),
-                tr("&Sauvegarder"),
-                tr(texte),
-                tr("&Annuler") )
+            if fn is None: fn = tr('Noname')
+            msgBox = QMessageBox(None)
+            msgBox.setWindowTitle(tr("Fichier Modifie"))
+            msgBox.setText(tr("Le fichier ne sera pas sauvegarde."))
+            msgBox.addButton(tr("&Sauvegarder"),1)
+            msgBox.addButton(tr("&Quitter sans sauvegarder"),0)
+            msgBox.addButton(tr("&Annuler"),2)
+            res=msgBox.exec_()
+            if res == 2 : return res
             if res == 0:
                 (ok, newName) = editor.saveFile()
                 if ok:
-                    fileName=os.path.basename(unicode(newName))
+                    fileName=os.path.basename(newName)
                     index=self.myQtab.currentIndex()
                     self.myQtab.setTabText(index,fileName)
                 return ok
         return res
 
-   def handleAjoutGroup(self,listeGroup):
-       index=self.myQtab.currentIndex()
-       if index < 0 : return
-       editor=self.dict_editors[index]
-       editor.handleAjoutGroup(listeGroup)
+    def handleAjoutGroup(self,listeGroup):
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        editor.handleAjoutGroup(listeGroup)
+
+    def handleFonctionUtilisateur(self,laFonctionUtilisateur, lesArguments):
+        # Peut-etre a blinder un peu plus sur le nb d argument
+        index=self.myQtab.currentIndex()
+        if index < 0 : return
+        editor=self.dictEditors[index]
+        if editor.getEtapeCourante() == None :
+            QMessageBox.information( self.appliEficas,
+                        tr("Selectionner une etape"),
+                        tr("Le texte ne peut pas etre insere dans un fichier vide,\nCreer un materiau vide ou une zone vide et inserer le catalogue apres"))
+            return
+
+        listeParam = []
+        for p in lesArguments:
+            if hasattr(editor,p): listeParam.append(getattr(editor,p))
+            if p=="editor"      : listeParam.append(editor)
+            if p=="etapeCourante" : listeParam.append(editor.getEtapeCourante())
+        laFonctionUtilisateur(*listeParam)