/********************************************************************** * @file RunWidget.h * @brief 求解器运行界面 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 *********************************************************************/ #ifndef _RunWidget_H #define _RunWidget_H #include "GUICalculateDialogAPI.h" #include "GUICalculateWidgetBase.h" class QAbstractButton; namespace Ui { class RunWidget; } namespace EventOper { class ParaWidgetInterfaceOperator; } namespace Interface { class FITKOFRunControl; } namespace GUI { /** * @brief 求解器CPU状态 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ enum class RunCPUType { Serial, Parallel, }; /** * @brief 求解器运行界面 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ class GUICalculateDialogAPI RunWidget : public GUICalculateWidgetBase { Q_OBJECT; public: /** * @brief 构造函数 * @param[i] oper 操作器对象 * @param[i] parent 父对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ RunWidget(EventOper::ParaWidgetInterfaceOperator* oper, QWidget* parent = nullptr); /** * @brief 析构函数 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ ~RunWidget(); /** * @brief 初始化 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void init(); /** * @brief 显示事件 * @param[i] event 事件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void showEvent(QShowEvent * event); /** * @brief 隐藏事件 * @param[i] event 事件对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void resizeEvent(QResizeEvent * event); private slots: ; /** * @brief CPU状态修改事件 * @param[i] button QRadioButton对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void slotCPUChange(QAbstractButton* button); /** * @brief 进程结束事件 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void slotProcessFinish(); /** * @brief CPU核数修改事件 * @param[i] arg1 CPU核数 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void on_spinBox_NumOfPro_valueChanged(int arg1); /** * @brief 停止按钮点击事件 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void on_pushButton_Stop_clicked(); /** * @brief 运行按钮点击事件 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void on_pushButton_Run_clicked(); private: /** * @brief 更新时间参数 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void updataTime(); /** * @brief 更新输出参数 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void updateOutput(); /** * @brief 初始化CPU * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void initCPU(); /** * @brief 更新CPU * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void updateCPU(); /** * @brief 清理算例文件 * @param[i] casePath 算例路径 * @return bool 是否成功 * @author BaGuijun (baguijun@163.com) * @date 2024-08-29 */ bool clearCasePath(QString casePath); /** * @brief 写出算例 * @param[i] casePath 算例路径 * @return bool 是否成功 * @author BaGuijun (baguijun@163.com) * @date 2024-08-29 */ bool writeCase(QString casePath); /** * @brief 创建启动脚本 * @param[i] workDir 工作路径 * @param[i] caseDir 算例路劲 * @return QString 脚本路径 * @author BaGuijun (baguijun@163.com) * @date 2024-08-30 */ QString creatStartSh(QString workDir, QString caseDir); /** * @brief 设置是否是运行状态 * @param[i] isRun 是否是运行状态 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ void setRunType(bool isRun); private: /** * @brief UI对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ Ui::RunWidget* _ui = nullptr; /** * @brief 求解器运行参数对象 * @author BaGuijun (baguijun@163.com) * @date 2024-09-02 */ Interface::FITKOFRunControl* _runConObj = nullptr; }; } #endif