Salome HOME
general crack dialog, user message mecanism for some errors
[modules/smesh.git] / src / Tools / blocFissure / ihm / fissureGenerale_plugin.py
index c0a20805926b5a12c9bb67ff417c8d73b66d190f..e2d5d9dc1ba5b8edf89d123851609ccda7c36b63 100644 (file)
 import sys, traceback
 import math
 from blocFissure import gmu
-from blocFissure.gmu import initLog
-#initLog.setDebug()
-initLog.setVerbose()
-
-from blocFissure.gmu import geomsmesh
-from blocFissure.gmu.casStandard import casStandard
 
 def fissureGeneraleDlg(context):
   # get context study, studyId, salomeGui
@@ -47,11 +41,13 @@ def fissureGeneraleDlg(context):
   from PyQt4.QtGui import QMessageBox
   from PyQt4.QtGui import QPalette
   from PyQt4.QtGui import QColor
+  from PyQt4.QtCore import QString
   from fissureGenerale_ui import Ui_Dialog
   
   class fissureGeneraleDialog(QtGui.QDialog):
     
     def __init__(self):
+      print "__init__"
       QtGui.QDialog.__init__(self)
       # Set up the user interface from Designer.
       self.ui = Ui_Dialog()
@@ -79,6 +75,10 @@ def fissureGeneraleDlg(context):
                    self.selectMaillage)
       self.connect(self.ui.pb_facefiss, QtCore.SIGNAL("clicked()"),
                    self.selectFacefiss)
+      self.connect(self.ui.pb_reptrav, QtCore.SIGNAL("clicked()"),
+                   self.selectReptrav)
+      self.connect(self.ui.pb_nomres, QtCore.SIGNAL("clicked()"),
+                   self.selectNomres)
       self.disconnect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"), self.accept)
       self.connect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"),
                    self.execute)
@@ -95,7 +95,9 @@ def fissureGeneraleDlg(context):
         lenSegPipe        = 2.5,
         nbSegRad          = 5,
         nbSegCercle       = 32,
-        areteFaceFissure  = 10)
+        areteFaceFissure  = 10,
+        reptrav           = '.',
+        nomres            = 'casStandard_fissure.med')
 
       
     def initDialog(self, dico):
@@ -110,6 +112,8 @@ def fissureGeneraleDlg(context):
       self.ui.sb_couronnes.setValue(dico['nbSegRad'])
       self.ui.sb_secteurs.setValue(dico['nbSegCercle'])
       self.ui.dsb_areteFaceFissure.setValue(dico['areteFaceFissure'])
+      self.ui.le_reptrav.setText(os.path.abspath(dico['reptrav']))
+      self.ui.le_nomres.setText(os.path.split(dico['nomres'])[1])
       incomplet = self.testval(dico)
       pass
   
@@ -195,6 +199,19 @@ def fissureGeneraleDlg(context):
       #self.initDefaut()
       self.initDialog(self.defaut)
       
+    def setLogVerbosity(self, logfile):
+      from blocFissure.gmu import initLog # le mode de log s'initialise une seule fois
+      print "setLogVerbosity"
+      index = self.ui.cb_log.currentIndex()
+      print index
+      if index == 0:
+        initLog.setRelease(logfile)
+      elif index == 1:
+        initLog.setVerbose(logfile)
+      elif index == 2:
+        initLog.setDebug(logfile)
+      
+      
     def sauver(self):
       print "sauver"
       fileDiag = QFileDialog(self)
@@ -248,6 +265,35 @@ def fissureGeneraleDlg(context):
         print filedef
         self.ui.le_facefiss.setText(filedef)
          
+    def selectReptrav(self):
+      fileDiag = QFileDialog(self)
+      fileDiag.setFileMode(QFileDialog.Directory)
+      fileDiag.setViewMode(QFileDialog.Detail)
+      fileDiag.setDirectory(self.ui.le_reptrav.text())
+      if fileDiag.exec_() :
+        fileNames = fileDiag.selectedFiles()
+        reptrav = str(fileNames[0])
+        print "reptrav ", reptrav
+        self.ui.le_reptrav.setText(os.path.abspath(reptrav))
+        
+         
+    def selectNomres(self):
+      fileDiag = QFileDialog(self)
+      fileDiag.setFileMode(QFileDialog.AnyFile)
+      fileDiag.setViewMode(QFileDialog.Detail)
+      nomres=str(os.path.split(str(self.ui.le_nomres.text()))[1])
+      fileDiag.setDirectory(self.ui.le_reptrav.text())
+      fileDiag.selectFile(nomres)
+      fileDiag.setNameFilter("Maillage *.med (*.med)")
+      self.ui.le_nomres.setText(nomres)
+      if fileDiag.exec_() :
+        fileNames = fileDiag.selectedFiles()
+        tempnom = os.path.split(str(fileNames[0]))[1]
+        print "nomres ", tempnom
+        self.ui.le_nomres.setText(tempnom)
+      else:
+        self.ui.le_nomres.setText(nomres)
+         
     def creeDico(self):
       dico = dict(
                   maillageSain     = str(self.ui.le_maillage.text()),
@@ -259,7 +305,10 @@ def fissureGeneraleDlg(context):
                   lenSegPipe       = self.ui.dsb_lenSegPipe.value(),
                   nbSegRad         = self.ui.sb_couronnes.value(),
                   nbSegCercle      = self.ui.sb_secteurs.value(),
-                  areteFaceFissure = self.ui.dsb_areteFaceFissure.value()
+                  areteFaceFissure = self.ui.dsb_areteFaceFissure.value(),
+                  reptrav          = str(self.ui.le_reptrav.text()),
+                  nomres           = str(self.ui.le_nomres.text()),
+                  verbosite        = self.ui.cb_log.currentIndex()
                   )
       print dico
       return dico
@@ -268,19 +317,46 @@ def fissureGeneraleDlg(context):
       return self.NOK
 
     def execute(self):
+      print "execute"
       dico = self.creeDico()
       NOK = self.testval(dico)
       if not(NOK):
         self.writeDefault(dico)
         self.ui.lb_calcul.show()
-        execInstance = casStandard(dico)
+        logfile=os.path.join(dico['reptrav'], dico['nomres']+".log")
+        self.setLogVerbosity(logfile)
+        from blocFissure.gmu import geomsmesh               # après intialisation log dans setLogVerbosity
+        from blocFissure.gmu.casStandard import casStandard # après intialisation log dans setLogVerbosity
+        from blocFissure.gmu.fissError import fissError
+        try:
+          execInstance = casStandard(dico)
+        except fissError as erreur:
+          print '-'*60
+          print type(erreur)
+          print '-'*60
+          print erreur.msg
+          print '-'*60
+          for ligne in erreur.pile:
+            print repr(ligne)        
+          print '-'*60
+          texte = erreur.msg
+#           texte += +"<br>" +'-'*60 +"<br>"
+#           for ligne in erreur.pile:
+#             texte += repr(ligne) +"<br>"
+          mbox = QMessageBox(self)
+          mbox.setWindowTitle("erreur blocFissure")
+          mbox.setText(QString.fromUtf8(texte))
+          mbox.exec_()          
+#        except Exception as erreur:
+#          print "exception non répertoriée"
       self.NOK = NOK
       self.accept()
     
     pass 
 
 # ----------------------------------------------------------------------------
-                     
+  
+  print "main"                   
   window = fissureGeneraleDialog()
   retry = True
   while(retry):