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"]
# 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.
self.__ui.txtSmeshObject.setEnabled(False)
self.__ui.btnAddInput.setEnabled(False)
self.__selectedMesh = None
- self.__dictInputData = {}
+ self.__dictInputFiles = {}
self.__nbConcreteMesh = 0
self.__nbSteelbarMesh = 0
"""
# 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.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:
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:
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
+ meshName = inputData.meshName
+ meshObject = inputData.meshObject
+ meshType = inputData.meshType
+ groupName = inputData.groupName
- self.__addInputInGui(meshName, meshObject, meshType, groupName)
- self.__addInputInMap(meshName, meshObject, meshType, groupName)
+ self.__addInputInGui(meshName, meshObject, meshType, groupName)
+ self.__addInputInMap(meshName, meshObject, meshType, groupName)
- if not DEBUG_MODE:
- self.onSelectSmeshObject()
+ 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):
"""
return True
- #def setParameters(self,
# ==============================================================================
# Basic use case
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.
self.clear()
self.setupJobManager()
-
+
def setupJobManager(self):
'''
the initialize step, by specifing the name of the resource to
be used.
'''
- # We first
-
+ # We first
+
configReader = ConfigReader()
config = configReader.getLocalConfig()
configId = config.resname
# The signal inputValidated emitted from inputDialog is
# connected to the slot function onProcessInput:
self.__inputDialog.inputValidated.connect( self.onProcessInput )
-
+
else:
self.__ui.frameInput.setVisible(True)
self.__ui.btnInput.setVisible(False)
def getInputFrame(self):
return self.__ui.frameInput
-
+
def __setGuiState(self,states=["CAN_SELECT"]):
if "CAN_SELECT" in states:
self.__ui.btnInput.setEnabled(True)
else:
self.__ui.btnInput.setEnabled(False)
-
+
if "CAN_COMPUTE" in states:
self.__ui.btnCompute.setEnabled(True)
else:
def __log(self, message):
"""
This function prints the specified message in the log area
- """
+ """
self.__ui.txtLog.append(message)
def __exportMesh(self, meshName, meshObject):
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
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):
"""
# 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"])
-
+
def onCompute(self):
'''
This function is the slot connected to the Compute button. It
initializes a mesh computation job and start it using the
- SALOME launcher.
+ SALOME launcher.
'''
# We first have to create the list of parameters for the
# initialize function. For that, we have to create the files
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())
return
self.__log("INF: the job has been initialized with jobid = "+str(self.__jobid))
-
+
startOk = jobManager.start(self.__jobid)
if not startOk:
self.__log("ERR: the job with jobid = "+str(self.__jobid)+" can't be started")
This function is the slot connected on the Publish button. It
requests the mesh job manager to download the results data
from the computation resource host and load the med file in
- the SALOME study.
+ the SALOME study.
"""
jobManager = self.__getJobManager()
state = jobManager.getState(self.__jobid)
one is running.
"""
self.clear()
-
+
__dialog=None
def getDialog():
"""
- This function returns a singleton instance of the plugin dialog.
+ This function returns a singleton instance of the plugin dialog.
"""
global __dialog
if __dialog is None:
if __name__ == "__main__":
TEST_PluginDialog()
-
+