Salome HOME
Merge branch 'rnv/win_swig_generation' of salome:modules/smesh into rnv/win_swig_gene...
[modules/smesh.git] / src / Tools / padder / spadderpy / gui / inputdialog.py
index b106c15815fbadf55658570b274193cbab385901..1ec31ce65a3994d480393a11b2560161a95e4eb2 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: iso-8859-1 -*-
 # -*- coding: iso-8859-1 -*-
-# Copyright (C) 2011-2015  EDF R&D
+# Copyright (C) 2011-2016  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
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -38,10 +38,18 @@ from inputdata import InputData
 DEBUG_MODE=True
 GROUPNAME_MAXLENGTH=8
 
 DEBUG_MODE=True
 GROUPNAME_MAXLENGTH=8
 
+INPUTDATA_KEY_FILES="meshfiles"
+INPUTDATA_KEY_PARAM="parameters"
+
+PARAM_KEY_NBITER   = "NbIteration"
+PARAM_KEY_RMAXRMIN = "RmaxRmin"
+PARAM_NBITER_DEFAULT_VALUE = 10
+PARAM_RMAXRMIN_DEFAULT_VALUE = 3
+
 class InputDialog(GenericDialog):
 
     TBL_HEADER_LABEL=["Input Mesh", "Output group name"]
 class InputDialog(GenericDialog):
 
     TBL_HEADER_LABEL=["Input Mesh", "Output group name"]
-    
+
     inputValidated = pyqtSignal()
 
     def __init__(self, parent=None, name="InputDialog", modal=0):
     inputValidated = pyqtSignal()
 
     def __init__(self, parent=None, name="InputDialog", modal=0):
@@ -85,7 +93,7 @@ class InputDialog(GenericDialog):
         # indexation.
         self.MESHTYPE_ICONS = {}
         meshTypeIndex = InputData.MESHTYPES.CONCRETE
         # indexation.
         self.MESHTYPE_ICONS = {}
         meshTypeIndex = InputData.MESHTYPES.CONCRETE
-        self.__ui.cmbMeshType.setItemText(meshTypeIndex, "Béton")
+        self.__ui.cmbMeshType.setItemText(meshTypeIndex, "B?ton")
         icon = QIcon()
         icon.addFile(os.path.join(iconfolder,"concrete.png"))
         self.__ui.cmbMeshType.setItemIcon(meshTypeIndex, icon)
         icon = QIcon()
         icon.addFile(os.path.join(iconfolder,"concrete.png"))
         self.__ui.cmbMeshType.setItemIcon(meshTypeIndex, icon)
@@ -97,7 +105,7 @@ class InputDialog(GenericDialog):
         icon.addFile(os.path.join(iconfolder,"steelbar.png"))
         self.__ui.cmbMeshType.setItemIcon(meshTypeIndex, icon)
         self.MESHTYPE_ICONS[meshTypeIndex] = icon
         icon.addFile(os.path.join(iconfolder,"steelbar.png"))
         self.__ui.cmbMeshType.setItemIcon(meshTypeIndex, icon)
         self.MESHTYPE_ICONS[meshTypeIndex] = icon
-        
+
         # The click on btnSmeshObject (signal clicked() emitted by the
         # button btnSmeshObject) is connected to the slot
         # onSelectSmeshObject, etc ...
         # The click on btnSmeshObject (signal clicked() emitted by the
         # button btnSmeshObject) is connected to the slot
         # onSelectSmeshObject, etc ...
@@ -113,7 +121,11 @@ class InputDialog(GenericDialog):
         self.__ui.tblListInput.horizontalHeader().setStretchLastSection(True)
         # Note that the type is not display explicitly in the Qt table
         # because it is specified using an icon on the text of the
         self.__ui.tblListInput.horizontalHeader().setStretchLastSection(True)
         # Note that the type is not display explicitly in the Qt table
         # because it is specified using an icon on the text of the
-        # name item. 
+        # name item.
+
+        # Setup default values for numerical parameters
+        self.__ui.txtParamNbIter.setValue(PARAM_NBITER_DEFAULT_VALUE)
+        self.__ui.txtParamRmaxRmin.setValue(PARAM_RMAXRMIN_DEFAULT_VALUE)
 
         # Note that PADDER does not support group name longer than 8
         # characters. We apply then this limit in the gui field.
 
         # Note that PADDER does not support group name longer than 8
         # characters. We apply then this limit in the gui field.
@@ -135,7 +147,7 @@ class InputDialog(GenericDialog):
             self.__ui.txtSmeshObject.setEnabled(False)
             self.__ui.btnAddInput.setEnabled(False)
         self.__selectedMesh = None
             self.__ui.txtSmeshObject.setEnabled(False)
             self.__ui.btnAddInput.setEnabled(False)
         self.__selectedMesh = None
-        self.__dictInputData = {}
+        self.__dictInputFiles = {}
         self.__nbConcreteMesh = 0
         self.__nbSteelbarMesh = 0
 
         self.__nbConcreteMesh = 0
         self.__nbSteelbarMesh = 0
 
@@ -228,16 +240,16 @@ class InputDialog(GenericDialog):
         """
         # if the entry already exists, we remove it to replace by a
         # new one
         """
         # if the entry already exists, we remove it to replace by a
         # new one
-        if self.__dictInputData.has_key(meshName):
+        if self.__dictInputFiles.has_key(meshName):
             self.__delInputFromMap(meshName)
             self.__delInputFromMap(meshName)
-        
+
         inputData = InputData()
         inputData.meshName   = meshName
         inputData.meshObject = meshObject
         inputData.meshType   = meshType
         inputData.groupName  = groupName
         # The key of the map is the mesh name
         inputData = InputData()
         inputData.meshName   = meshName
         inputData.meshObject = meshObject
         inputData.meshType   = meshType
         inputData.groupName  = groupName
         # The key of the map is the mesh name
-        self.__dictInputData[meshName] = inputData
+        self.__dictInputFiles[meshName] = inputData
         if inputData.meshType == InputData.MESHTYPES.CONCRETE:
             self.__nbConcreteMesh += 1
         else:
         if inputData.meshType == InputData.MESHTYPES.CONCRETE:
             self.__nbConcreteMesh += 1
         else:
@@ -247,7 +259,7 @@ class InputDialog(GenericDialog):
         print "meshType = ",inputData.meshType
         print "nb concrete mesh ",self.__nbConcreteMesh
         print "nb steelbar mesh ",self.__nbSteelbarMesh
         print "meshType = ",inputData.meshType
         print "nb concrete mesh ",self.__nbConcreteMesh
         print "nb steelbar mesh ",self.__nbSteelbarMesh
-            
+
 
     def onDeleteInput(self):
         """
 
     def onDeleteInput(self):
         """
@@ -267,9 +279,9 @@ class InputDialog(GenericDialog):
     def __delInputFromMap(self, meshName):
         """
         This function removes the specified entry from the internal
     def __delInputFromMap(self, meshName):
         """
         This function removes the specified entry from the internal
-        map (for data management purpose) 
+        map (for data management purpose)
         """
         """
-        inputData = self.__dictInputData.pop(meshName)
+        inputData = self.__dictInputFiles.pop(meshName)
         if inputData.meshType == InputData.MESHTYPES.CONCRETE:
             self.__nbConcreteMesh -= 1
         else:
         if inputData.meshType == InputData.MESHTYPES.CONCRETE:
             self.__nbConcreteMesh -= 1
         else:
@@ -280,34 +292,52 @@ class InputDialog(GenericDialog):
         print "nb steelbar mesh ",self.__nbSteelbarMesh
 
 
         print "nb steelbar mesh ",self.__nbSteelbarMesh
 
 
-    def setData(self, listInputData=[]):
+    def setData(self, dictInputData={}):
         """
         This function fills the dialog widgets with values provided by
         the specified data list.
         """
         self.clear()
         """
         This function fills the dialog widgets with values provided by
         the specified data list.
         """
         self.clear()
-        for inputData in listInputData:
+        if dictInputData.has_key(INPUTDATA_KEY_FILES):
+            listInputData = dictInputData["meshfiles"]
+            for inputData in listInputData:
 
 
-            meshName   = inputData.meshName
-            meshObject = inputData.meshObject
-            meshType   = inputData.meshType
-            groupName  = inputData.groupName
-            
-            self.__addInputInGui(meshName, meshObject, meshType, groupName)
-            self.__addInputInMap(meshName, meshObject, meshType, groupName)
+                meshName   = inputData.meshName
+                meshObject = inputData.meshObject
+                meshType   = inputData.meshType
+                groupName  = inputData.groupName
 
 
-            if not DEBUG_MODE:
-                self.onSelectSmeshObject()
+                self.__addInputInGui(meshName, meshObject, meshType, groupName)
+                self.__addInputInMap(meshName, meshObject, meshType, groupName)
+
+                if not DEBUG_MODE:
+                    self.onSelectSmeshObject()
+
+           if dictInputData.has_key(INPUTDATA_KEY_PARAM):
+               dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
+            if dictInputParameters.has_key(PARAM_KEY_NBITER):
+                self.__ui.txtParamNbIter.setValue(dictInputParameters[PARAM_KEY_NBITER])
+            if dictInputParameters.has_key(PARAM_KEY_RMAXRMIN):
+                self.__ui.txtParamRmaxRmin.setValue(dictInputParameters[PARAM_KEY_RMAXRMIN])
 
     def getData(self):
         """
         This function returns a list of InputData that corresponds to
         the data in the dialog widgets of the current dialog.
         """
 
     def getData(self):
         """
         This function returns a list of InputData that corresponds to
         the data in the dialog widgets of the current dialog.
         """
+        # Get the list of mesh files
         # Note that the values() function returns a copy of the list
         # of values.
         # Note that the values() function returns a copy of the list
         # of values.
-        return self.__dictInputData.values()
-        
+        dictInputData={}
+        dictInputData[INPUTDATA_KEY_FILES] = self.__dictInputFiles.values()
+
+        # Get the list of additionnal parameters
+        dictInputParameters = {}
+        dictInputParameters[PARAM_KEY_NBITER] = self.__ui.txtParamNbIter.value()
+        dictInputParameters[PARAM_KEY_RMAXRMIN] = self.__ui.txtParamRmaxRmin.value()
+        dictInputData[INPUTDATA_KEY_PARAM] = dictInputParameters
+        return dictInputData
+
     def checkData(self):
         """
         This function checks if the data are valid, from the dialog
     def checkData(self):
         """
         This function checks if the data are valid, from the dialog
@@ -315,7 +345,7 @@ class InputDialog(GenericDialog):
         """
         if self.__nbConcreteMesh == 0 and self.__nbSteelbarMesh == 0:
             self.checkDataMessage = "You must define at least one mesh (CONCRETE or STEELBAR)"
         """
         if self.__nbConcreteMesh == 0 and self.__nbSteelbarMesh == 0:
             self.checkDataMessage = "You must define at least one mesh (CONCRETE or STEELBAR)"
-            return False        
+            return False
         if self.__nbConcreteMesh > 1:
             self.checkDataMessage  = "You define multiple CONCRETE meshes."
             self.checkDataMessage += "You should verify first that your version of PADDER support this configuration."
         if self.__nbConcreteMesh > 1:
             self.checkDataMessage  = "You define multiple CONCRETE meshes."
             self.checkDataMessage += "You should verify first that your version of PADDER support this configuration."
@@ -357,9 +387,9 @@ def TEST_InputDialog_setData():
     inputData.groupName  = "myGroup"
     listInputData = []
     listInputData.append(inputData)
     inputData.groupName  = "myGroup"
     listInputData = []
     listInputData.append(inputData)
-    
+
     dlg.setData2(listInputData)
     dlg.setData2(listInputData)
-    
+
     dlg.displayAndWait()
     if dlg.wasOk():
         print "OK has been pressed"
     dlg.displayAndWait()
     if dlg.wasOk():
         print "OK has been pressed"