Salome HOME
Error
[modules/hydrosolver.git] / src / HYDROGUI / HYDROSOLVERGUI.py
index c921a47368664c005d1f12aef6f802cbef540312..7f95c1e3f897aad88e78db01b118d9b9b84b6c88 100755 (executable)
@@ -36,11 +36,12 @@ import HYDROSOLVER_ORB
 from salome.hydro.interpolz_gui import InterpolzDlg
 from salome.hydro.gui_utils import HSGUIException, wait_cursor, get_and_check_selected_file_path
 import salome.hydro.study as hydro_study
-#from salome.hydro.mascaret.eficas.appli import EficasForMascaretAppli
-#from salome.hydro.telemac2d.eficas.appli import EficasForTelemac2DAppli
-#from salome.hydro.coupling1d2d.eficas.appli import EficasForCoupling1D2DAppli
-#import salome.hydro.pytel.gui as pytel_gui
+from salome.hydro.mascaret.eficas.appli import EficasForMascaretAppli
+from salome.hydro.telemac2d.eficas.appli import EficasForTelemac2DAppli
+from salome.hydro.coupling1d2d.eficas.appli import EficasForCoupling1D2DAppli
+from salome.hydro.pytel.gui import create_case_pytel,  run_selected_case_pytel, edit_selected_case_pytel,  generate_job_for_selected_case_pytel
 #from salome.hydro.boundary_conditions.eficas.appli import EficasForBoundaryConditionsAppli
+from eficasSalome import runEficas
 
 import BndConditionsDialog
 
@@ -62,13 +63,15 @@ class GUIcontext:
     CREATE_COUPLING1D2D_CASE_ID = 948
     EDIT_COUPLING1D2D_CASE_ID = 949
     OPEN_SCHEMA_IN_YACS_ID = 950
-    #CREATE_PYTEL_CASE_ID = 951
-    #RUN_PYTEL_ID = 952
-    #EDIT_PYTEL_CASE_ID = 953
+    CREATE_PYTEL_CASE_ID = 951
+    RUN_PYTEL_ID = 952
+    EDIT_PYTEL_CASE_ID = 953
     GENERATE_JOB = 954
-    DEFINE_BOUNDARY_CONDITIONS_ID = 955
+    #DEFINE_BOUNDARY_CONDITIONS_ID = 955
+    DEFINE_CAS_FILE = 955
     EDIT_BOUNDARY_CONDITIONS_FILE_ID = 956
     GENERATE_INTERPOLZ_PY_ID = 957
+    GEN_TELEMAC2D_PYTHON_ID = 958
 
     def __init__( self ):
         # create top-level menu
@@ -76,13 +79,6 @@ class GUIcontext:
         # create toolbar
         tid = sgPyQt.createTool( "Hydro" )
         # create actions and fill menu and toolbar with actions
-        a = sgPyQt.createAction( GUIcontext.DEFINE_BOUNDARY_CONDITIONS_ID,
-                                 "Define boundary conditions", "Define boundary conditions",
-                                 "Define the boundary conditions for Telemac",
-                                 "define_boundary_conditions.png" )
-        sgPyQt.createMenu( a, mid )
-        sgPyQt.createTool( a, tid )
-
         a = sgPyQt.createAction( GUIcontext.EDIT_BOUNDARY_CONDITIONS_FILE_ID,
                                  "Edit boundary conditions file", "Edit boundary conditions file",
                                  "Create/edit the boundary conditions file for Telemac",
@@ -90,9 +86,6 @@ class GUIcontext:
         sgPyQt.createMenu( a, mid )
         sgPyQt.createTool( a, tid )
 
-        a = sgPyQt.createSeparator()
-        sgPyQt.createMenu( a, mid )
-        sgPyQt.createTool( a, tid )
 
         a = sgPyQt.createAction( GUIcontext.CREATE_MASCARET_CASE_ID,
                                  "Create Mascaret case", "Create Mascaret case",
@@ -113,20 +106,23 @@ class GUIcontext:
         sgPyQt.createTool( a, tid )
 
         a = sgPyQt.createSeparator()
+
+        a = sgPyQt.createAction( GUIcontext.CREATE_PYTEL_CASE_ID,
+                                "Create case for Pytel execution", "Create case for Pytel execution",
+                                "Create a new case for Pytel execution", "create_case_pytel.png" )
+
         sgPyQt.createMenu( a, mid )
         sgPyQt.createTool( a, tid )
 
-        #a = sgPyQt.createAction( GUIcontext.CREATE_PYTEL_CASE_ID,
-        #                         "Create case for Pytel execution", "Create case for Pytel execution",
-        #                         "Create a new case for Pytel execution", "create_case_pytel.png" )
-       
-        #sgPyQt.createMenu( a, mid )
-        #sgPyQt.createTool( a, tid )
+        a = sgPyQt.createAction( GUIcontext.EDIT_PYTEL_CASE_ID,
+                                "Edit case for Pytel execution", "Edit case for Pytel execution",
+                                "Edit a new case for Pytel execution", "edit_case_pytel.png" )
 
-        a = sgPyQt.createSeparator()
         sgPyQt.createMenu( a, mid )
         sgPyQt.createTool( a, tid )
 
+        a = sgPyQt.createSeparator()
+
         a = sgPyQt.createAction( GUIcontext.GENERATE_INTERPOLZ_PY_ID,
                                  "Generate interpolz.py", "Generate interpolz.py",
                                  "Generate interpolation script from the template", "generate_interpolz_py.png" )
@@ -134,6 +130,15 @@ class GUIcontext:
         sgPyQt.createMenu( a, mid )
         sgPyQt.createTool( a, tid )
 
+        a = sgPyQt.createSeparator()
+        a = sgPyQt.createAction( GUIcontext.DEFINE_CAS_FILE,
+                                 "Edit cas file", "Edit cas file",
+                                 "Create/edit a .cas file for Telemac",
+                                 "define_cas_file.png" )
+        sgPyQt.createMenu( a, mid )
+        sgPyQt.createTool( a, tid )
+
+
         # the following action are used in context popup
         sgPyQt.createAction( GUIcontext.RUN_MASCARET_ID, "Compute case", "Compute case",
                              "Run Mascaret solver to compute the case" )
@@ -142,6 +147,9 @@ class GUIcontext:
         sgPyQt.createAction( GUIcontext.SHOW_LOG_ID, "Show log", "Show log",
                              "Show the log for the selected variable" )
 
+        sgPyQt.createAction( GUIcontext.GEN_TELEMAC2D_PYTHON_ID, "Generate Python script", 
+                             "Generate Python script",
+                             "Run Telemac2D solver to compute the case" )
         sgPyQt.createAction( GUIcontext.RUN_TELEMAC2D_ID, "Compute case", "Compute case",
                              "Run Telemac2D solver to compute the case" )
         sgPyQt.createAction( GUIcontext.EDIT_TELEMAC2D_CASE_ID, "Edit case", "Edit case",
@@ -152,13 +160,17 @@ class GUIcontext:
         sgPyQt.createAction( GUIcontext.OPEN_SCHEMA_IN_YACS_ID, "Open schema in YACS", "Open schema in YACS",
                              "Open the selected 1D / 2D coupling schema in YACS" )
 
-        #sgPyQt.createAction( GUIcontext.RUN_PYTEL_ID, "Compute case", "Compute case",
-                            "Run Pytel launcher to compute the case" )
-        #sgPyQt.createAction( GUIcontext.EDIT_PYTEL_CASE_ID, "Edit case", "Edit case",
-                            "Edit the selected Pytel case" )
+        sgPyQt.createAction( GUIcontext.RUN_PYTEL_ID, "Compute case", "Compute case",
+                            "Run Pytel launcher to compute the case" )
+        sgPyQt.createAction( GUIcontext.EDIT_PYTEL_CASE_ID, "Edit case", "Edit case",
+                            "Edit the selected Pytel case" )
         sgPyQt.createAction( GUIcontext.GENERATE_JOB, "Generate batch job", "Generate batch job",
                              "Generate a batch job to run the selected case")
 
+        sgPyQt.createAction( GUIcontext.DEFINE_CAS_FILE, "Edit .cas file", "Edit .cas file",
+                             "Edit .cas file")
+
+
 ################################################
 # Global variables
 ################################################
@@ -266,15 +278,16 @@ def createPopupMenu(popup, context):
         elif selectedType == hydro_study.TELEMAC2D_CASE_TYPE_ID:
             popup.addAction(sgPyQt.action(GUIcontext.EDIT_TELEMAC2D_CASE_ID))
             popup.addAction(sgPyQt.action(GUIcontext.RUN_TELEMAC2D_ID))
+            popup.addAction(sgPyQt.action(GUIcontext.GEN_TELEMAC2D_PYTHON_ID))
         elif selectedType == hydro_study.COUPLING1D2D_CASE_TYPE_ID:
             popup.addAction(sgPyQt.action(GUIcontext.EDIT_COUPLING1D2D_CASE_ID))
             popup.addAction(sgPyQt.action(GUIcontext.OPEN_SCHEMA_IN_YACS_ID))
         elif selectedType == hydro_study.LOG_TYPE_ID:
             popup.addAction(sgPyQt.action(GUIcontext.SHOW_LOG_ID))
-        #elif selectedType == hydro_study.PYTEL_CASE_TYPE_ID:
-           popup.addAction(sgPyQt.action(GUIcontext.EDIT_PYTEL_CASE_ID))
-           popup.addAction(sgPyQt.action(GUIcontext.RUN_PYTEL_ID))
-           popup.addAction(sgPyQt.action(GUIcontext.GENERATE_JOB))
+        elif selectedType == hydro_study.PYTEL_CASE_TYPE_ID:
+           popup.addAction(sgPyQt.action(GUIcontext.EDIT_PYTEL_CASE_ID))
+           popup.addAction(sgPyQt.action(GUIcontext.RUN_PYTEL_ID))
+           popup.addAction(sgPyQt.action(GUIcontext.GENERATE_JOB))
 
 # called when GUI action is activated
 # action ID is passed as parameter
@@ -315,7 +328,7 @@ class MyTextDisplayDialog(Ui_TextDisplayDialog, QDialog):
         Ui_TextDisplayDialog.__init__(self)
         self.setupUi(self)
         (self.closeButton.clicked.connect(self.close)
-    
+
     def set_log(self, log):
         self.contentTextEdit.setPlainText(log)
         self.setWindowTitle("Coupling log")
@@ -408,6 +421,20 @@ def run_telemac2d():
                       "see logs and listing files for more details):"))
         msg += "\n" + unicode(exc)
         raise HSGUIException(msg)
+# Generate a python script from the eficas file
+def generate_telemac2d_python():
+    try:
+        with wait_cursor:
+            ed = hydro_study.HydroStudyEditor()
+            sobj = ed.editor.study.FindObjectID(salome.sg.getSelected(0))
+            ed.find_or_create_telemac2d_case(sobj)
+    except SALOME.SALOME_Exception, exc:
+        salome.sg.updateObjBrowser( 0 )
+        msg = unicode(QApplication.translate("generate_telemac2d_python",
+                      "An error happened while trying to generate telemac2d Python script:"))
+        msg += "\n" + exc.details.text
+        raise HSGUIException(msg)
+
 
 ###
 # Open Eficas for 1D / 2D Coupling to create a new coupling case
@@ -436,8 +463,8 @@ def open_schema_in_yacs():
 ###
 # Open Eficas for boundary conditions definition
 ###
-def define_boundary_conditions():
-    EficasForBoundaryConditionsAppli()
+#def define_boundary_conditions():
+#    EficasForBoundaryConditionsAppli()
 
 ###
 # Open dialog for boundary conditions edition
@@ -456,6 +483,11 @@ def generate_interpolz_py():
     dlg.show()
 
 ###
+# Open dialog for boundary conditions edition
+###
+def eficas_for_cas_Telemac2D():
+   runEficas(code='TELEMAC')
+###
 # Commands dictionary
 ###
 dict_command = {
@@ -465,15 +497,17 @@ dict_command = {
     GUIcontext.SHOW_LOG_ID: show_log,
     GUIcontext.CREATE_TELEMAC2D_CASE_ID: create_telemac2d_case,
     GUIcontext.RUN_TELEMAC2D_ID: run_telemac2d,
+    GUIcontext.GEN_TELEMAC2D_PYTHON_ID: generate_telemac2d_python,
     GUIcontext.EDIT_TELEMAC2D_CASE_ID: edit_telemac2d_case,
     GUIcontext.CREATE_COUPLING1D2D_CASE_ID: create_coupling1d2d_case,
     GUIcontext.EDIT_COUPLING1D2D_CASE_ID: edit_coupling1d2d_case,
     GUIcontext.OPEN_SCHEMA_IN_YACS_ID: open_schema_in_yacs,
-    #GUIcontext.CREATE_PYTEL_CASE_ID: pytel_gui.create_case,
-    #GUIcontext.RUN_PYTEL_ID: pytel_gui.run_selected_case,
-    #GUIcontext.EDIT_PYTEL_CASE_ID: pytel_gui.edit_selected_case,
-    #GUIcontext.GENERATE_JOB: pytel_gui.generate_job_for_selected_case,
-    GUIcontext.DEFINE_BOUNDARY_CONDITIONS_ID: define_boundary_conditions,
+    GUIcontext.CREATE_PYTEL_CASE_ID: create_case_pytel,
+    GUIcontext.RUN_PYTEL_ID: run_selected_case_pytel,
+    GUIcontext.EDIT_PYTEL_CASE_ID: edit_selected_case_pytel,
+    GUIcontext.GENERATE_JOB: generate_job_for_selected_case_pytel,
+    #GUIcontext.DEFINE_BOUNDARY_CONDITIONS_ID: define_boundary_conditions,
     GUIcontext.EDIT_BOUNDARY_CONDITIONS_FILE_ID: edit_boundary_conditions_file,
     GUIcontext.GENERATE_INTERPOLZ_PY_ID: generate_interpolz_py,
+    GUIcontext.DEFINE_CAS_FILE: eficas_for_cas_Telemac2D,
     }