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 376a90039291f4cfd258687f099285b9b8a7c4db..1ec31ce65a3994d480393a11b2560161a95e4eb2 100644 (file)
@@ -38,10 +38,18 @@ from inputdata import InputData
 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"]
-    
+
     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
-        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)
@@ -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
-        
+
         # 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
-        # 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.
@@ -135,7 +147,7 @@ class InputDialog(GenericDialog):
             self.__ui.txtSmeshObject.setEnabled(False)
             self.__ui.btnAddInput.setEnabled(False)
         self.__selectedMesh = None
-        self.__dictInputData = {}
+        self.__dictInputFiles = {}
         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 self.__dictInputData.has_key(meshName):
+        if self.__dictInputFiles.has_key(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
-        self.__dictInputData[meshName] = inputData
+        self.__dictInputFiles[meshName] = inputData
         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
-            
+
 
     def onDeleteInput(self):
         """
@@ -267,9 +279,9 @@ class InputDialog(GenericDialog):
     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:
@@ -280,34 +292,52 @@ class InputDialog(GenericDialog):
         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()
-        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.
         """
+        # Get the list of mesh files
         # 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
@@ -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)"
-            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."
@@ -357,9 +387,9 @@ def TEST_InputDialog_setData():
     inputData.groupName  = "myGroup"
     listInputData = []
     listInputData.append(inputData)
-    
+
     dlg.setData2(listInputData)
-    
+
     dlg.displayAndWait()
     if dlg.wasOk():
         print "OK has been pressed"