def __init__(self, solver_runner_obj):
ui_path = os.path.dirname(__file__) + os.path.sep + "TaskPanelCfdSolverControl.ui"
self.form = FreeCADGui.PySideUic.loadUi(ui_path)
self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem")
self.analysis_object = FemGui.getActiveAnalysis()
self.solver_runner = solver_runner_obj
self.solver_object = solver_runner_obj.solver
self.SolverProcess = QtCore.QProcess()
self.Timer = QtCore.QTimer()
self.Timer.start(3000) # may not enough for CFD
# update UI
self.fem_console_message = ''
#======================================================================================================
#
# Code associated with running solver from GUI
#
#======================================================================================================
self.solver_run_process = QtCore.QProcess()
QtCore.QObject.connect(self.solver_run_process, QtCore.SIGNAL("started()"), self.solverProcessStarted)
#QtCore.QObject.connect(self.solver_run_process, QtCore.SIGNAL("stateChanged(QProcess::ProcessState)"), self.solverProcessStateChanged)
QtCore.QObject.connect(self.solver_run_process, QtCore.SIGNAL("finished(int)"), self.solverProcessFinished)
QtCore.QObject.connect(self.solver_run_process, QtCore.SIGNAL("error(QProcess::ProcessError)"), self.solverProcessError)
#self.solver_run_process.readyReadStandardOutput.connect(self.stdoutReady)
QtCore.QObject.connect(self.solver_run_process, QtCore.SIGNAL("readyReadStandardOutput()"), self.plotResiduals)
#======================================================================================================
# Connect Signals and Slots
QtCore.QObject.connect(self.form.tb_choose_working_dir, QtCore.SIGNAL("clicked()"), self.chooseWorkingDir)
QtCore.QObject.connect(self.form.pb_write_inp, QtCore.SIGNAL("clicked()"), self.writeSolverInput)
QtCore.QObject.connect(self.form.pb_edit_inp, QtCore.SIGNAL("clicked()"), self.editSolverInput)
QtCore.QObject.connect(self.form.pb_run_solver, QtCore.SIGNAL("clicked()"), self.runSolverProcess)
QtCore.QObject.connect(self.form.pb_terminate_solver, QtCore.SIGNAL("clicked()"), self.killSolverProcess)
QtCore.QObject.connect(self.form.pb_show_result, QtCore.SIGNAL("clicked()"), self.showResult)
QtCore.QObject.connect(self.form.pb_view_externally, QtCore.SIGNAL("clicked()"), self.viewResultExternally)
self.form.pb_terminate_solver.setEnabled(False)
self.form.pb_show_result.setEnabled(False)
self.form.pb_view_externally.setEnabled(True) # can be used to view init field
QtCore.QObject.connect(self.Timer, QtCore.SIGNAL("timeout()"), self.updateText)
self.form.pb_show_result.setEnabled(True) # delete this once finished signal is correctly managed
if self.solver_object.ResultObtained:
self.form.pb_show_result.setEnabled(True)
self.form.pb_view_externally.setEnabled(True)
self.Start = time.time() #debug tobe removed, it is not used in this taskpanel
self.update() # update UI from FemSolverObject, like WorkingDir
评论列表
文章目录