Salome HOME
general crack dialog, user message mecanism for some errors
[modules/smesh.git] / src / Tools / blocFissure / ihm / fissureGenerale_plugin.py
index e7c0ef3571521d5340aa83182359cabc5abf0557..e2d5d9dc1ba5b8edf89d123851609ccda7c36b63 100644 (file)
@@ -41,6 +41,7 @@ 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):
@@ -74,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)
@@ -90,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):
@@ -105,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
   
@@ -190,17 +199,17 @@ def fissureGeneraleDlg(context):
       #self.initDefaut()
       self.initDialog(self.defaut)
       
-    def setLogVerbosity(self):
+    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()
+        initLog.setRelease(logfile)
       elif index == 1:
-        initLog.setVerbose()
+        initLog.setVerbose(logfile)
       elif index == 2:
-        initLog.setDebug()
+        initLog.setDebug(logfile)
       
       
     def sauver(self):
@@ -256,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()),
@@ -267,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
@@ -282,10 +323,32 @@ def fissureGeneraleDlg(context):
       if not(NOK):
         self.writeDefault(dico)
         self.ui.lb_calcul.show()
-        self.setLogVerbosity()
+        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
-        execInstance = casStandard(dico)
+        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()