padder: add numerical parameters in the gui + transmission to the component and then the padder executable

This commit is contained in:
uhz 2017-03-20 17:02:57 +01:00
parent 7dbb2914d9
commit 465570a935
2 changed files with 77 additions and 35 deletions

View File

@ -38,6 +38,14 @@ from inputdata import InputData
DEBUG_MODE=True
GROUPNAME_MAXLENGTH=8
INPUTDATA_KEY_FILES="meshfiles"
INPUTDATA_KEY_PARAM="parameters"
PARAM_KEY_NBITER = "NbIteration"
PARAM_KEY_RMINRMAX = "RminRmax"
PARAM_NBITER_DEFAULT_VALUE = 3
PARAM_RMINRMAX_DEFAULT_VALUE = 1.5
class InputDialog(GenericDialog):
TBL_HEADER_LABEL=["Input Mesh", "Output group name"]
@ -116,7 +124,8 @@ class InputDialog(GenericDialog):
# name item.
# Setup default values for numerical parameters
self.__ui.txtParamNbIter.setValue(3)
self.__ui.txtParamNbIter.setValue(PARAM_NBITER_DEFAULT_VALUE)
self.__ui.txtParamRminRmax.setValue(PARAM_RMINRMAX_DEFAULT_VALUE)
# Note that PADDER does not support group name longer than 8
# characters. We apply then this limit in the gui field.
@ -138,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
@ -231,7 +240,7 @@ 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()
@ -240,7 +249,7 @@ class InputDialog(GenericDialog):
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:
@ -272,7 +281,7 @@ class InputDialog(GenericDialog):
This function removes the specified entry from the internal
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:
@ -283,12 +292,14 @@ 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()
if dictInputData.has_key(INPUTDATA_KEY_FILES):
listInputData = dictInputData["meshfiles"]
for inputData in listInputData:
meshName = inputData.meshName
@ -302,14 +313,30 @@ class InputDialog(GenericDialog):
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_RMINRMAX):
self.__ui.txtParamRminRmax.setValue(dictInputParameters[PARAM_KEY_RMINRMAX])
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_RMINRMAX] = self.__ui.txtParamRminRmax.value()
dictInputData[INPUTDATA_KEY_PARAM] = dictInputParameters
return dictInputData
def checkData(self):
"""
@ -328,7 +355,6 @@ class InputDialog(GenericDialog):
return True
#def setParameters(self,
# ==============================================================================
# Basic use case

View File

@ -23,7 +23,8 @@
from qtsalome import QDialog, QIcon, Qt
from plugindialog_ui import Ui_PluginDialog
from inputdialog import InputDialog
from inputdialog import InputDialog, INPUTDATA_KEY_FILES, INPUTDATA_KEY_PARAM
from inputdialog import PARAM_KEY_NBITER, PARAM_KEY_RMINRMAX
from inputdata import InputData
# __GBO__: uncomment this line and comment the previous one to use the
# demo input dialog instead of the real one.
@ -218,6 +219,7 @@ class PluginDialog(QDialog):
This function clears the log area and the states of the buttons
"""
self.__listInputData = []
self.__dictInputParameters = {}
self.__ui.txtLog.clear()
self.__setGuiState(["CAN_SELECT"])
self.__isRunning = False
@ -241,7 +243,10 @@ class PluginDialog(QDialog):
windows to process the validation event (see the slot
onProcessInput which is connected to this event).
'''
self.__inputDialog.setData(self.__listInputData)
dictInputData = {}
dictInputData[INPUTDATA_KEY_FILES] = self.__listInputData
dictInputData[INPUTDATA_KEY_PARAM] = self.__dictInputParameters
self.__inputDialog.setData(dictInputData)
self.__inputDialog.open()
def onProcessInput(self):
@ -252,7 +257,10 @@ class PluginDialog(QDialog):
"""
# The processing simply consists in requesting the input data
# from the dialog window.
self.__listInputData = self.__inputDialog.getData()
dictInputData = self.__inputDialog.getData()
self.__listInputData = dictInputData[INPUTDATA_KEY_FILES]
self.__dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
self.__ui.lblStatusBar.setText("Input data OK")
self.__log("INF: Press \"Compute\" to start the job")
self.__setGuiState(["CAN_SELECT", "CAN_COMPUTE"])
@ -283,8 +291,16 @@ class PluginDialog(QDialog):
group_name = inputData.groupName)
meshJobFileList.append(parameter)
# And to create a list of the additional parameters.
# WARN: the CORBA interface requires string values.
meshJobParameterList=[]
for inputParameterKey in self.__dictInputParameters.keys():
value = self.__dictInputParameters[inputParameterKey]
parameter = MESHJOB.MeshJobParameter(name=inputParameterKey,value=str(value))
meshJobParameterList.append(parameter)
jobManager = self.__getJobManager()
self.__jobid = jobManager.initialize(meshJobFileList, self.__configId)
self.__jobid = jobManager.initialize(meshJobFileList, meshJobParameterList, self.__configId)
if self.__jobid < 0:
self.__log("ERR: the job can't be initialized")
self.__log("ERR: %s"%jobManager.getLastErrorMessage())