Salome HOME
sauve du 9 mai
[tools/eficas.git] / InterfaceQT4 / editor.py
index 076c60a25cfb5ed91c1a846138ea32d514e1fde4..346d877913147e5adaeef30f04e3a4702ca9b376 100755 (executable)
@@ -23,9 +23,9 @@ import traceback
 
 from determine import monEnvQT5
 if monEnvQT5:
-    from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication
+    from PyQt5.QtWidgets import QWidget, QMessageBox, QFileDialog, QApplication, QSplitter
     from PyQt5.QtGui import QPalette
-    from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt
+    from PyQt5.QtCore import QProcess, QFileInfo, QTimer, Qt, QDir, QSize
 else :
     from PyQt4.QtGui  import *
     from PyQt4.QtCore import *
@@ -49,6 +49,7 @@ import readercata
 
 DictExtensions= {"MAP" : ".map"}
 
+    
 
 
 class JDCEditor(Ui_baseWidget,QWidget):
@@ -61,7 +62,9 @@ class JDCEditor(Ui_baseWidget,QWidget):
     #----------------------------------------------------------------------------------------------------------#
 
         QWidget.__init__(self,None)
+        self.i=0
         self.setupUi(self)
+        self.inhibeSplitter=0
         self.widgetOptionnel=None
         self.fenetreCentraleAffichee=None
         self.dejaDansPlieTout=False
@@ -98,7 +101,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
            self.widgetTree=None
            self.appliEficas.resize(1440,self.appliEficas.height())
         else :
-           self.appliEficas.resize(2000,self.appliEficas.height())
+           self.appliEficas.resize(1800,self.appliEficas.height())
 
         self.version_code = session.d_env.cata
 
@@ -115,6 +118,8 @@ class JDCEditor(Ui_baseWidget,QWidget):
         self.format =  self.appliEficas.format_fichier
 
         self.dict_reels={}
+        self.splitterSizes =  [320,1320,320]
+        self.oldSizeWidgetOptionnel = 320
         self.liste_simp_reel=[]
         self.ihm="QT"
 
@@ -210,11 +215,13 @@ class JDCEditor(Ui_baseWidget,QWidget):
  
 
 
-        if jdc_item:
+        if jdc_item and self.appliEficas.ssIhm==False:
             self.tree = browser.JDCTree( jdc_item,  self )
         self.appliEficas.construitMenu()
-        self.splitterSizes = []
-
+        self.saveSplitterSizes()
+        #if monEnvQT5:
+        #   self.splitter./s
+        #else :
 
 
     #-------------------#  Pour execution avec output et error dans le bash
@@ -631,10 +638,8 @@ class JDCEditor(Ui_baseWidget,QWidget):
       if (self.QWParent.edit != "couper"):
         try:
            if noeudOuColler == self.tree.racine :
-              print 1 
               child=noeudOuColler.doPastePremier(noeudACopier)
            else :
-              print 2 
               child=noeudACopier.doPaste(noeudOuColler,pos)
            if child==None or child==0:
                QMessageBox.critical( self,tr( "Copie refusee"),tr('Eficas n a pas reussi a copier l objet'))
@@ -953,15 +958,23 @@ class JDCEditor(Ui_baseWidget,QWidget):
              tr("sauvegarde"), path,
              extensions,None,
              QFileDialog.DontConfirmOverwrite)
-      if fn.isNull(): return (0, None)
       if fn == None : return (0, None)
       if monEnvQT5 :  fn=fn[0]
+      if fn=='': return (0, None)
 
       ext = QFileInfo(fn).suffix()
-      if ext.isEmpty(): fn.append(extension)
+      if ext == '': fn+=extension
 
       if QFileInfo(fn).exists():
-           abort = QMessageBox.warning(self,
+           if monEnvQT5 :
+             msgBox = QMessageBox(self)
+             msgBox.setWindowTitle(tr("Sauvegarde du Fichier"))
+             msgBox.setText(tr("Le fichier <b>%s</b> existe deja.", unicode(fn)))
+             msgBox.addButton(tr("&Ecraser"),0)
+             msgBox.addButton(tr("&Abandonner"),1)
+             abort=msgBox.exec_()
+           else :
+             abort = QMessageBox.warning(self,
                    tr("Sauvegarde du Fichier"),
                    tr("Le fichier <b>%s</b> existe deja.",str(fn)),
                    tr("&Ecraser"),
@@ -1126,16 +1139,15 @@ class JDCEditor(Ui_baseWidget,QWidget):
         newName = None
         fn = self.fichier
         if self.fichier is None or saveas:
-          if path is None:
-             path=self.CONFIGURATION.savedir
+          if path is None: path=self.CONFIGURATION.savedir
           bOK, fn=self.determineNomFichier(path,extension)
           if bOK == 0 : return (0, None)
           if fn == None : return (0, None)
-          if fn.isNull(): return (0, None)
+          if fn== '' : return (0, None)
 
           ulfile = os.path.abspath(unicode(fn))
           self.appliEficas.CONFIGURATION.savedir=os.path.split(ulfile)[0]
-          fn = unicode(QDir.convertSeparators(fn))
+          fn = unicode(QDir.toNativeSeparators(fn))
           newName = fn
 
 
@@ -1153,6 +1165,8 @@ class JDCEditor(Ui_baseWidget,QWidget):
 
         if self.jdc.isvalid() != 0 and hasattr(self.generator, "writeDefault"):
             self.generator.writeDefault(fn)
+        if self.code=="TELEMAC" and hasattr(self.generator, "writeDefault"):
+            self.generator.writeDefault(fn)
 
         if self.salome :
                self.appliEficas.addJdcInSalome( self.fichier)
@@ -1212,7 +1226,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
                    self.appliEficas.CONFIGURATION.savedir)
 
         # ce retour est impose par le get_file d'I_JDC
-        if fn.isNull(): return None," "
+        if fn== '' : return None," "
         if not fn : return (0, " ")
         if monEnvQT5 :  fn=fn[0]
 
@@ -1385,24 +1399,59 @@ class JDCEditor(Ui_baseWidget,QWidget):
       self.nomMaillage="A_partir_de_SMESH"
       self.openfile.close()
 
-   #-----------------------------
-    def saveSplitterSizes(self):
-    #----------------------------
-      if self.splitter != None :
-        self.splitterSizes = self.splitter.sizes()
-
+    #-------------------------------------
+    def saveSplitterSizes(self,event=None):
+    #------------------------------------
+      if self.inhibeSplitter : return
+      if not hasattr(self,'splitter') : return
+      if self.splitterSizes[2] != 0 : self.oldSizeWidgetOptionnel = self.splitterSizes[2]
+      # print  self.splitterSizes
+      #print self.splitter.sizes()
+      # PNPNPNPN parfoir self.splitter.sizes() a une longueur de 4...
+      nbAGarder=len(self.splitter.sizes())
+      if nbAGarder > 3 : nbAGarder=3
+      for i in range(nbAGarder):
+         self.splitterSizes[i] = self.splitter.sizes()[i]
+         self.splitter.widget(i).resizeEvent=self.saveSplitterSizes
+
+
+    #-----------------------------------------
+    def restoreSplitterSizes(self,nbWigdet=3):
+    #----------------------------------------
+      self.inhibeSplitter = 1
+      self.i+=1
+      if not(hasattr(self,'splitter')) : return
+      newSizes=self.splitterSizes[:nbWigdet]
+      self.splitter.setSizes(newSizes)
+      self.inhibeSplitter = 0
+   
+    #------------------------
+    def fermeOptionnel(self):
+    #------------------------
+      if self.widgetOptionnel == None : return
+
+      self.inhibeSplitter=1
+      self.splitterSizes[1] = self.splitterSizes[1] + self.splitterSizes[2]
+      if self.splitterSizes[2]!=0 : self.oldSizeWidgetOptionnel = self.splitterSizes[2]
+      self.splitterSizes[2]=0
+
+      self.widgetOptionnel.setParent(None)
+      self.widgetOptionnel.close()
+      self.widgetOptionnel.deleteLater()
+      self.widgetOptionnel=None
+      self.inhibeSplitter=0
+      self.restoreSplitterSizes(2)
+      
+    #------------------------
+    def ajoutOptionnel(self):
+    #------------------------
+      #print "ajoutOptionnel"
+      #print self.splitterSizes
+      self.splitterSizes[2] = self.oldSizeWidgetOptionnel
+      self.splitterSizes[1] = self.splitterSizes[1] - self.splitterSizes[2]
+      self.inhibeSplitter=0
+      self.restoreSplitterSizes(3)
 
-    #-----------------------------
-    def restoreSplitterSizes(self):
-    #----------------------------
-      if hasattr(self,'splitterSizes') :
-        lenSizes = len(self.splitterSizes)
-        if lenSizes > 0 :
-          if self.splitter != None and self.splitter.count() >= lenSizes :
-            newSizes = self.splitter.sizes()
-            newSizes[:len(self.splitterSizes)-1] = self.splitterSizes[:len(self.splitterSizes)-1]
-            newSizes[len(newSizes)-1] = self.splitterSizes[len(self.splitterSizes)-1]
-            self.splitter.setSizes(newSizes)
 
     #-----------------------------
     def getTreeIndex(self,noeud):