From b7e775ef33731b3ceedae5036413edb8abef9d8c Mon Sep 17 00:00:00 2001 From: pimin <362371171@qq.com> Date: Tue, 28 Oct 2025 16:12:14 +0800 Subject: [PATCH] modified simurun --- doc/~$$流程图.~vsdx | Bin 0 -> 4096 bytes src/Dyt.qrc | 58 +++++----- src/res/default/Command.png | Bin 0 -> 36641 bytes src/res/dyt.aps | Bin 0 -> 4940 bytes src/ui/DockWidget.cpp | 2 + src/ui/Layout/AddParamSetting.cpp | 28 ++--- src/ui/Layout/AddParamSetting.h | 1 - src/ui/Layout/AddParamSetting.ui | 42 +++---- src/ui/MainWindow.cpp | 144 +++++++++++------------ src/ui/Menu/SimuRunMenu.cpp | 183 ++++++++++++++++++++++-------- src/ui/Menu/SimuRunMenu.h | 12 +- 11 files changed, 282 insertions(+), 188 deletions(-) create mode 100644 doc/~$$流程图.~vsdx create mode 100644 src/res/default/Command.png create mode 100644 src/res/dyt.aps diff --git a/doc/~$$流程图.~vsdx b/doc/~$$流程图.~vsdx new file mode 100644 index 0000000000000000000000000000000000000000..c63ca2a28fdc9ee1b374c70f579fb2174cdc84d6 GIT binary patch literal 4096 zcmeHJ!A`7c>4~9d3fCLD_%}9(fTsUwc9Eq6N12h5D_&I)p{)m2n2mKJK z?~!dNMCxwj0(P3+ola-xZD(h8_U-lPOoXy1Oys*)=(Q(DMvFW0- z$@uHsf7OB{^2(>d%hh{EHRaqW-{XccH-^tB941X(@hy*RMs-JZN&B!uZ9%-lH#Jd! z2jXfCMck3|aZOpD5<4moU%0Yoi?8(-jQKgf9p19mfx%ZTw#ApP4vitr5o!HVEl_@@ zHDTtKt?vftG2(9-_sRnI9PpTVaVMFuN*t8>p3zvuPn`DSN9MmXz6|mDx;AqC|Fr=d zLw~`Kay>rA?WO#7d!W;76)UAmwNxwDyX_0-(Cnaz7SD|eN^Dj3HIz|D7j4*BYxD>H n&>v4my-6@~Mh6 res/sys_close.png - res/sys_float.png + res/sys_float.png res/sys_max.png res/sys_min.png res/sys_restore.png res/sys_icon.png - res/sys_down.png - res/sys_up.png - res/select_file.ico - res/default/menu_new_file.png - res/default/menu_open_file.png - res/default/menu_save_file.png - res/default/menu_wave_file.png - res/default/menu_light_file.png - res/default/menu_table_file.png - res/default/menu_surface_file.png - res/default/menu_save_shape_file.png - res/default/menu_save_store_file.png - res/default/menu_report_mesh.png - res/default/menu_exit.png - res/default/menu_helper.png - res/default/menu_license.png - res/default/menu_logs.png - res/default/menu_logs_clean.png - res/default/menu_restart.png - res/default/menu_setting_restore.png - res/default/menu_setting.png - res/default/menu_uisetting.png - res/default/menu_window_manager.png - res/default/menu_window_setting.png + res/sys_down.png + res/sys_up.png + res/select_file.ico + res/default/menu_new_file.png + res/default/menu_open_file.png + res/default/menu_save_file.png + res/default/menu_wave_file.png + res/default/menu_light_file.png + res/default/menu_table_file.png + res/default/menu_surface_file.png + res/default/menu_save_shape_file.png + res/default/menu_save_store_file.png + res/default/menu_report_mesh.png + res/default/menu_exit.png + res/default/menu_helper.png + res/default/menu_license.png + res/default/menu_logs.png + res/default/menu_logs_clean.png + res/default/menu_restart.png + res/default/menu_setting_restore.png + res/default/menu_setting.png + res/default/menu_uisetting.png + res/default/menu_window_manager.png + res/default/menu_window_setting.png + res/default/Command.png - + + + res/fonts/fontawesome-webfont.ttf - - res/fonts/fontawesome-webfont.ttf - diff --git a/src/res/default/Command.png b/src/res/default/Command.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b15f22eea3f515b2574056bb5ad9c6dc2c36a3 GIT binary patch literal 36641 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 } + + //setStyleSheet(QString("border: 1px solid #A2C2DB;")); } DockWidget::DockWidget(QWidget* parent) diff --git a/src/ui/Layout/AddParamSetting.cpp b/src/ui/Layout/AddParamSetting.cpp index 0074b5fa..0a4c10d2 100644 --- a/src/ui/Layout/AddParamSetting.cpp +++ b/src/ui/Layout/AddParamSetting.cpp @@ -41,6 +41,8 @@ AddParamSetting::AddParamSetting(const QString& strDir, QWidget* parent) horizontalHeader->setStyleSheet(QString("QHeaderView::section {background-color: %1;}").arg(headerColor.name())); horizontalHeader->setStretchLastSection(true); + ui.tableWidget->verticalHeader()->setStyleSheet(QString("QHeaderView::section {background-color: %1;}").arg(headerColor.name())); + connect(ui.pushButton, &QPushButton::clicked, this, &AddParamSetting::slotButtonAdd); connect(ui.pushButton_2, &QPushButton::clicked, this, &AddParamSetting::slotButtonRemove); connect(ui.pushButton_3, &QPushButton::clicked, this, &AddParamSetting::slotButtonCommit); @@ -414,20 +416,20 @@ void AddParamSetting::slotButtonRemove() void AddParamSetting::slotButtonCommit() { - QString strMatlabFile =""; - if (WorkSpaceManager::Get().GetCurrent()) - { - if (!WorkSpaceManager::Get().GetCurrent()->GetMatlabParam().isEmpty()) - { - strMatlabFile = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetMatlabParam(); - } - } + QString strMatlabFile = m_strDir + "/MatlabParam.m"; + //if (WorkSpaceManager::Get().GetCurrent()) + //{ + // if (!WorkSpaceManager::Get().GetCurrent()->GetMatlabParam().isEmpty()) + // { + // strMatlabFile = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetMatlabParam(); + // } + //} - if (strMatlabFile.isEmpty()) - { - strMatlabFile = RecourceHelper::Get().GetBasePath() + "/workspace/MatlabParam.m"; - WorkSpaceManager::Get().GetCurrent()->SetMatlabParam("MatlabParam.m"); - } + //if (strMatlabFile.isEmpty()) + //{ + // strMatlabFile = RecourceHelper::Get().GetBasePath() + "/workspace/MatlabParam.m"; + // WorkSpaceManager::Get().GetCurrent()->SetMatlabParam("MatlabParam.m"); + //} QFile file(strMatlabFile); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { diff --git a/src/ui/Layout/AddParamSetting.h b/src/ui/Layout/AddParamSetting.h index f94e21f0..719a5691 100644 --- a/src/ui/Layout/AddParamSetting.h +++ b/src/ui/Layout/AddParamSetting.h @@ -28,7 +28,6 @@ protected slots: void slotButtonRemove(); void slotButtonCommit(); - void slotIntMaxValueChanged(int iValue); void slotIntMinValueChanged(int iValue); diff --git a/src/ui/Layout/AddParamSetting.ui b/src/ui/Layout/AddParamSetting.ui index d998459b..70819476 100644 --- a/src/ui/Layout/AddParamSetting.ui +++ b/src/ui/Layout/AddParamSetting.ui @@ -13,7 +13,7 @@ AddParamSetting - + @@ -65,13 +65,26 @@ - + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - 60 - 60 + 100 + 30 @@ -83,8 +96,8 @@ - 60 - 60 + 100 + 30 @@ -96,8 +109,8 @@ - 60 - 60 + 100 + 30 @@ -105,19 +118,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 60dacba1..c53cb78e 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -114,98 +114,98 @@ void MainWindow::InitUI() { } } - DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0); - fitCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitCurveDock)); - fitCurveDock->setObjectName("Dock.WaveCurveDialog"); - fitCurveDlg_ = new FitCurveDialog(); - fitCurveDlg_->AttachDock(fitCurveDock); - m_mapDockWidget.insert("WaveCurveDialog", fitCurveDock); - addDockWidget(Qt::BottomDockWidgetArea, fitCurveDock); + //DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0); + //fitCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitCurveDock)); + //fitCurveDock->setObjectName("Dock.WaveCurveDialog"); + //fitCurveDlg_ = new FitCurveDialog(); + //fitCurveDlg_->AttachDock(fitCurveDock); + //m_mapDockWidget.insert("WaveCurveDialog", fitCurveDock); + //addDockWidget(Qt::BottomDockWidgetArea, fitCurveDock); //fitCurveDlg_->InitWaveFile(wavePath); - DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0); - fitLgCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitLgCurveDock)); - fitLgCurveDock->setObjectName("Dock.SpeedCurveDialog"); + //DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0); + //fitLgCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitLgCurveDock)); + //fitLgCurveDock->setObjectName("Dock.SpeedCurveDialog"); - fitYLgCurveDlg_ = new FitCurveDialog(); - fitYLgCurveDlg_->AttachDock(fitLgCurveDock); - m_mapDockWidget.insert("SpeedCurveDialog", fitLgCurveDock); - addDockWidget(Qt::BottomDockWidgetArea, fitLgCurveDock); - tabifyDockWidget(fitCurveDock, fitLgCurveDock); + //fitYLgCurveDlg_ = new FitCurveDialog(); + //fitYLgCurveDlg_->AttachDock(fitLgCurveDock); + //m_mapDockWidget.insert("SpeedCurveDialog", fitLgCurveDock); + //addDockWidget(Qt::BottomDockWidgetArea, fitLgCurveDock); + //tabifyDockWidget(fitCurveDock, fitLgCurveDock); //fitYLgCurveDlg_->InitReportFile(speedPath); - DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0); - surfaceCurveDock->SetDockWidgetTitleBar(new DockTitleBar(surfaceCurveDock)); - surfaceCurveDock->setObjectName("Dock.3DCurveDialog"); + //DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0); + //surfaceCurveDock->SetDockWidgetTitleBar(new DockTitleBar(surfaceCurveDock)); + //surfaceCurveDock->setObjectName("Dock.3DCurveDialog"); - surfaceDlg_ = new SurfaceDialog(); - surfaceDlg_->AttachDock(surfaceCurveDock); - m_mapDockWidget.insert("3DCurveDialog", surfaceCurveDock); - addDockWidget(Qt::BottomDockWidgetArea, surfaceCurveDock); - tabifyDockWidget(fitCurveDock, surfaceCurveDock); + //surfaceDlg_ = new SurfaceDialog(); + //surfaceDlg_->AttachDock(surfaceCurveDock); + //m_mapDockWidget.insert("3DCurveDialog", surfaceCurveDock); + //addDockWidget(Qt::BottomDockWidgetArea, surfaceCurveDock); + //tabifyDockWidget(fitCurveDock, surfaceCurveDock); //surfaceDlg_->InitRD(rdPath); - { - targetUITable_ = new TargetListWgt; + //{ + // targetUITable_ = new TargetListWgt; - QStringList headerLabels; - headerLabels << tr("Target number") << tr("Signal-to-noise ratio") - << tr("Azimuth line of sight") << tr("Pitch gaze angle") - << tr("azimuth") << tr("Pitch angle") - << tr("attribute") << tr("Doppler") - << tr("course") << tr("Speed") - << tr("longitude") << tr("latitude") - << tr("distance") << tr("velocity") - << tr("Radial dimensions") << tr("Target RCS"); + // QStringList headerLabels; + // headerLabels << tr("Target number") << tr("Signal-to-noise ratio") + // << tr("Azimuth line of sight") << tr("Pitch gaze angle") + // << tr("azimuth") << tr("Pitch angle") + // << tr("attribute") << tr("Doppler") + // << tr("course") << tr("Speed") + // << tr("longitude") << tr("latitude") + // << tr("distance") << tr("velocity") + // << tr("Radial dimensions") << tr("Target RCS"); - targetUITable_->SetHeader(headerLabels); - //const QString reportPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt"; - //targetUITable_->InitFile(speedPath, 50); + // targetUITable_->SetHeader(headerLabels); + // //const QString reportPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt"; + // //targetUITable_->InitFile(speedPath, 50); - DockWidget* dataTableDock = new DockWidget(tr("Report Table"), 0); - dataTableDock->SetDockWidgetTitleBar(new DockTitleBar(dataTableDock)); - dataTableDock->setObjectName("Dock.TargetListWgt_Table"); - // addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock); - targetUITable_->AttachDock(dataTableDock); - m_mapDockWidget.insert("TargetListWgt_Table", dataTableDock); - addDockWidget(Qt::BottomDockWidgetArea, dataTableDock); - tabifyDockWidget(fitCurveDock, dataTableDock); + // DockWidget* dataTableDock = new DockWidget(tr("Report Table"), 0); + // dataTableDock->SetDockWidgetTitleBar(new DockTitleBar(dataTableDock)); + // dataTableDock->setObjectName("Dock.TargetListWgt_Table"); + // // addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock); + // targetUITable_->AttachDock(dataTableDock); + // m_mapDockWidget.insert("TargetListWgt_Table", dataTableDock); + // addDockWidget(Qt::BottomDockWidgetArea, dataTableDock); + // tabifyDockWidget(fitCurveDock, dataTableDock); - } + //} - const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt"; + //const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt"; - DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0); - signalIndicatorLampDock->SetDockWidgetTitleBar(new DockTitleBar(signalIndicatorLampDock)); - signalIndicatorLampDock->setObjectName("Dock.SignalIndicatorLampUI"); - signalIndicatorLampUI_ = new SignalIndicatorLampUI; - signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock); - //signalIndicatorLampUI_->InitLamp(lampPath); + //DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0); + //signalIndicatorLampDock->SetDockWidgetTitleBar(new DockTitleBar(signalIndicatorLampDock)); + //signalIndicatorLampDock->setObjectName("Dock.SignalIndicatorLampUI"); + //signalIndicatorLampUI_ = new SignalIndicatorLampUI; + //signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock); + ////signalIndicatorLampUI_->InitLamp(lampPath); - m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock); - addDockWidget(Qt::BottomDockWidgetArea, signalIndicatorLampDock); - tabifyDockWidget(fitCurveDock, signalIndicatorLampDock); + //m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock); + //addDockWidget(Qt::BottomDockWidgetArea, signalIndicatorLampDock); + //tabifyDockWidget(fitCurveDock, signalIndicatorLampDock); - DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0); - addParamSettingDock->SetDockWidgetTitleBar(new DockTitleBar(addParamSettingDock)); - addParamSettingDock->setObjectName("Dock.ParamSetting"); - addParamDlg_ = new AddParamSetting(matlabParam); - addParamDlg_->AttachDock(addParamSettingDock); - m_mapDockWidget.insert("ParamSetting", addParamSettingDock); - addDockWidget(Qt::BottomDockWidgetArea, addParamSettingDock); - tabifyDockWidget(fitCurveDock, addParamSettingDock); + // DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0); + // addParamSettingDock->SetDockWidgetTitleBar(new DockTitleBar(addParamSettingDock)); + // addParamSettingDock->setObjectName("Dock.ParamSetting"); + // addParamDlg_ = new AddParamSetting(matlabParam); + // addParamDlg_->AttachDock(addParamSettingDock); + // m_mapDockWidget.insert("ParamSetting", addParamSettingDock); + // addDockWidget(Qt::BottomDockWidgetArea, addParamSettingDock); + // tabifyDockWidget(fitCurveDock, addParamSettingDock); - DockWidget* matlabDock = new DockWidget(tr("bat File"), 0); - matlabDock->SetDockWidgetTitleBar(new DockTitleBar(matlabDock)); - matlabDock->setObjectName("Dock.Matlab"); - matlabFileDlg_ = new CodeEdtUI; - matlabFileDlg_->AttachDock(matlabDock); - m_mapDockWidget.insert("Matlab", matlabDock); - addDockWidget(Qt::BottomDockWidgetArea, matlabDock); - tabifyDockWidget(fitCurveDock, matlabDock); + //DockWidget* matlabDock = new DockWidget(tr("bat File"), 0); + //matlabDock->SetDockWidgetTitleBar(new DockTitleBar(matlabDock)); + //matlabDock->setObjectName("Dock.Matlab"); + //matlabFileDlg_ = new CodeEdtUI; + //matlabFileDlg_->AttachDock(matlabDock); + //m_mapDockWidget.insert("Matlab", matlabDock); + // addDockWidget(Qt::BottomDockWidgetArea, matlabDock); + // tabifyDockWidget(fitCurveDock, matlabDock); //ui->discript->setText(tr("name: 5year 0412")); //ui->status->setText(tr("start: no start")); diff --git a/src/ui/Menu/SimuRunMenu.cpp b/src/ui/Menu/SimuRunMenu.cpp index 1edb0365..f12f4f25 100644 --- a/src/ui/Menu/SimuRunMenu.cpp +++ b/src/ui/Menu/SimuRunMenu.cpp @@ -1,22 +1,23 @@ #include "ui/Menu/SimuRunMenu.h" +#include "ui/Layout/AddParamSetting.h" -#include #include #include +#include #include "workspace/WorkSpaceManager.h" #include "workspace/WorkSpace.h" #include "workspace/CommandManager.h" SimuRunMenu::SimuRunMenu(QWidget *parent) - : QWidget(parent) { - ui.setupUi(this); + : QWidget(parent) +{ + m_pParam = NULL; - // Create a vertical layout to host grouped command rows - auto* layout = new QVBoxLayout(this); - layout->setContentsMargins(9, 0, 0, 0); - layout->setSpacing(6); - setLayout(layout); + QHBoxLayout* layout = new QHBoxLayout(this); + layout->setContentsMargins(9, 0, 0, 0); + layout->setSpacing(6); + setLayout(layout); // Refresh when workspace changes connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, @@ -36,72 +37,154 @@ void SimuRunMenu::OnWorkspaceChanged(WorkSpace* ws) { void SimuRunMenu::RefreshButtons() { // Clear existing buttons - if (auto* layout = qobject_cast(this->layout())) { - while (layout->count() > 0) { - QLayoutItem* item = layout->takeAt(0); - if (item) { - if (auto* w = item->widget()) { - w->deleteLater(); - } - delete item; - } - } - } + ClearAllBtn(); + + CreateMatlabParam(); + CreateLine(); auto* ws = WorkSpaceManager::Get().GetCurrent(); - if (!ws) { + if (!ws) + { // Show hint when no workspace - if (auto* layout = qobject_cast(this->layout())) { + if (auto* layout = qobject_cast(this->layout())) { auto* hint = new QLabel(tr("no workspace"), this); layout->addWidget(hint); } + + CreateSpacer(); + return; } CommandManager mgr; const auto items = mgr.ListCommands(ws); - if (items.empty()) { - if (auto* layout = qobject_cast(this->layout())) { + if (items.empty()) + { + if (auto* layout = qobject_cast(this->layout())) { auto* hint = new QLabel(tr("no commands"), this); layout->addWidget(hint); } + + CreateSpacer(); + return; } - + // Render all commands in a single group without trigger distinction CreateGroup(tr("Commands"), items); + + CreateSpacer(); } void SimuRunMenu::CreateGroup(const QString& title, const std::vector& items) { - auto* root = qobject_cast(this->layout()); + auto* root = qobject_cast(this->layout()); if (!root) return; - auto* label = new QLabel(title, this); - root->addWidget(label); + QGroupBox * groupBox = new QGroupBox; + QHBoxLayout * hGroupLayout = new QHBoxLayout; + hGroupLayout->setContentsMargins(10, 0, 10, 0); + groupBox->setTitle(title); + groupBox->setAlignment(Qt::AlignHCenter); - auto* row = new QHBoxLayout(); - row->setSpacing(6); - for (const auto& item : items) { - auto* btn = new QToolButton(this); - btn->setText(item.name.isEmpty() ? tr("unnamed") : item.name); - QString tip = item.descript; - if (!item.program.isEmpty()) { - tip += QStringLiteral("\nprog: ") + item.program; - } - if (!item.path.isEmpty()) { - tip += QStringLiteral("\npath: ") + item.path; - } - btn->setToolTip(tip); - row->addWidget(btn); + for (const auto& item : items) { + auto* btn = new QToolButton(this); + btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + btn->setText(item.name.isEmpty() ? tr("unnamed") : item.name); + btn->setIcon(QIcon(":/res/default/Command.png")); + QString tip = item.descript; + if (!item.program.isEmpty()) { + tip += QStringLiteral("\nprog: ") + item.program; + } + if (!item.path.isEmpty()) { + tip += QStringLiteral("\npath: ") + item.path; + } + btn->setToolTip(tip); + hGroupLayout->addWidget(btn); - connect(btn, &QToolButton::clicked, this, [name = item.name]() { - auto* wsCur = WorkSpaceManager::Get().GetCurrent(); - if (!wsCur) return; - CommandManager execMgr; - execMgr.ExecuteByName(wsCur, name); - }); - } - row->addStretch(1); - root->addLayout(row); + connect(btn, &QToolButton::clicked, this, [name = item.name]() { + auto* wsCur = WorkSpaceManager::Get().GetCurrent(); + if (!wsCur) return; + CommandManager execMgr; + execMgr.ExecuteByName(wsCur, name); + }); + } + + groupBox->setLayout(hGroupLayout); + root->addWidget(groupBox); } + +void SimuRunMenu::CreateMatlabParam() +{ + QHBoxLayout* layout = qobject_cast(this->layout()); + if (!layout) + return; + + QToolButton *pBtn = new QToolButton(); + pBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + pBtn->setText(tr("MatlabParam")); + pBtn->setIcon(QIcon(":/res/default/menu_setting_restore.png")); + pBtn->setToolTip(tr("MatlabParam")); + + connect(pBtn, SIGNAL(clicked()), this, SLOT(slotHandleMatlabParam())); + + layout->addWidget(pBtn); +} + +void SimuRunMenu::CreateLine() +{ + QHBoxLayout* layout = qobject_cast(this->layout()); + if (!layout) + return; + + QFrame *line = new QFrame(this); + line->setObjectName(QString::fromUtf8("line")); + line->setFrameShadow(QFrame::Plain); + line->setFrameShape(QFrame::VLine); + + layout->addWidget(line); +} + +void SimuRunMenu::CreateSpacer() +{ + QHBoxLayout* layout = qobject_cast(this->layout()); + if (!layout) + return; + + QSpacerItem *horizontalSpacer = new QSpacerItem(441, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + layout->addItem(horizontalSpacer); +} + +void SimuRunMenu::ClearAllBtn() +{ + if (auto* layout = qobject_cast(this->layout())) + { + while (layout->count() > 0) + { + QLayoutItem* item = layout->takeAt(0); + if (item) + { + if (auto* w = item->widget()) + { + w->deleteLater(); + } + delete item; + } + } + } +} + +void SimuRunMenu::slotHandleMatlabParam() +{ + if (WorkSpaceManager::Get().GetCurrent()) + { + if (!m_pParam) + { + QString strDir = WorkSpaceManager::Get().GetCurrent()->GetDir(); + m_pParam = new AddParamSetting(strDir); + } + + m_pParam->setWindowTitle(tr("MatlabParam")); + m_pParam->show(); + } +} \ No newline at end of file diff --git a/src/ui/Menu/SimuRunMenu.h b/src/ui/Menu/SimuRunMenu.h index fb1630b9..bd8b0f74 100644 --- a/src/ui/Menu/SimuRunMenu.h +++ b/src/ui/Menu/SimuRunMenu.h @@ -1,10 +1,12 @@ #pragma once #include -#include "ui_SimuRunMenu.h" +#include #include "workspace/CommandManager.h" #include "workspace/CommandExecutor.h" +class AddParamSetting; + class SimuRunMenu : public QWidget { Q_OBJECT @@ -15,12 +17,18 @@ public: private slots: void OnWorkspaceChanged(class WorkSpace* ws); + void slotHandleMatlabParam(); + private: void RefreshButtons(); void CreateGroup(const QString& title, const std::vector& items); + void CreateMatlabParam(); + void CreateLine(); + void CreateSpacer(); + void ClearAllBtn(); private: - Ui::SimuRunMenuClass ui; + AddParamSetting *m_pParam; };