From 50144adbc9843b5305b4bd8ba2c5ed5202f0cb16 Mon Sep 17 00:00:00 2001 From: brige Date: Sun, 9 Nov 2025 16:50:59 +0800 Subject: [PATCH] add commond to menu --- src/ui/Menu/SimuRunMenu.cpp | 45 +++++++++++++++++++++---------------- src/ui/Menu/SimuRunMenu.h | 3 +++ src/workspace/WorkSpace.cpp | 1 + src/workspace/WorkSpace.h | 1 + 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/src/ui/Menu/SimuRunMenu.cpp b/src/ui/Menu/SimuRunMenu.cpp index 3cb296b4..fc3ce704 100644 --- a/src/ui/Menu/SimuRunMenu.cpp +++ b/src/ui/Menu/SimuRunMenu.cpp @@ -37,16 +37,22 @@ SimuRunMenu::~SimuRunMenu() { } void SimuRunMenu::OnWorkspaceChanged(WorkSpace* ws) { - Q_UNUSED(ws); + // Reconnect to workspace commands change to refresh buttons when path changes + if (wsCmdConn_) { + QObject::disconnect(wsCmdConn_); + } + if (ws) { + wsCmdConn_ = connect(ws, &WorkSpace::CommandsChanged, this, &SimuRunMenu::RefreshButtons); + } RefreshButtons(); } void SimuRunMenu::RefreshButtons() { // Clear existing buttons - ClearAllBtn(); + ClearAllBtn(); - CreateMatlabParam(); - CreateLine(); + CreateMatlabParam(); + CreateLine(); auto* ws = WorkSpaceManager::Get().GetCurrent(); if (!ws) @@ -122,21 +128,22 @@ void SimuRunMenu::CreateGroup(const QString& title, void SimuRunMenu::CreateMatlabParam() { - QHBoxLayout* layout = qobject_cast(this->layout()); - if (!layout) - return; + QHBoxLayout* layout = qobject_cast(this->layout()); + if (!layout) + return; QToolButton *pBtn = new QToolButton(); pBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - pBtn->setText(QString::fromLocal8Bit("参数设置")); + pBtn->setText(tr("setting param")); pBtn->setIcon(QIcon(":/res/default/menu_setting_restore.png")); - pBtn->setToolTip(QString::fromLocal8Bit("设置Matlab的输入参数")); + pBtn->setToolTip(QString::fromLocal8Bit("set Matlab param")); connect(pBtn, SIGNAL(clicked()), this, SLOT(slotHandleMatlabParam())); - layout->addWidget(pBtn); + layout->addWidget(pBtn); } + void SimuRunMenu::CreateLine() { QHBoxLayout* layout = qobject_cast(this->layout()); @@ -182,18 +189,18 @@ void SimuRunMenu::ClearAllBtn() void SimuRunMenu::slotHandleMatlabParam() { - if (WorkSpaceManager::Get().GetCurrent()) - { - if (!m_pParam) - { - m_pParam = new DockWidget(m_mainWindow); - m_pParam->setAllowedAreas(Qt::NoDockWidgetArea); + if (WorkSpaceManager::Get().GetCurrent()) + { + if (!m_pParam) + { + m_pParam = new DockWidget(m_mainWindow); + m_pParam->setAllowedAreas(Qt::NoDockWidgetArea); DockTitleBar* titleBar = new DockTitleBar(m_pParam); titleBar->SetFloatVisible(false); titleBar->SetMaxVisible(false); m_pParam->SetDockWidgetTitleBar(titleBar); - m_pParam->setWindowTitle(QString::fromLocal8Bit("参数设置")); + m_pParam->setWindowTitle(tr("set param")); QString strDir = WorkSpaceManager::Get().GetCurrent()->GetDir(); AddParamSetting *pParam = new AddParamSetting(strDir); @@ -204,10 +211,10 @@ void SimuRunMenu::slotHandleMatlabParam() m_pParam->setFloating(true); m_pParam->show(); - } + } } void SimuRunMenu::SetMainWindow(MainWindow* mainWindow) { - m_mainWindow = mainWindow; + m_mainWindow = mainWindow; } \ No newline at end of file diff --git a/src/ui/Menu/SimuRunMenu.h b/src/ui/Menu/SimuRunMenu.h index 0d36db4a..bd25c272 100644 --- a/src/ui/Menu/SimuRunMenu.h +++ b/src/ui/Menu/SimuRunMenu.h @@ -32,6 +32,9 @@ private: void ClearAllBtn(); +private: + QMetaObject::Connection wsCmdConn_; + private: DockWidget *m_pParam; MainWindow* m_mainWindow; diff --git a/src/workspace/WorkSpace.cpp b/src/workspace/WorkSpace.cpp index 96877b8e..44c7fb88 100644 --- a/src/workspace/WorkSpace.cpp +++ b/src/workspace/WorkSpace.cpp @@ -53,6 +53,7 @@ void WorkSpace::SetCommondFilePath(const QString& path) { dirPath.toLocal8Bit().data(), sucess); commondPath_ = fileInfo.fileName(); + emit CommandsChanged(); } // Deprecated path APIs removed diff --git a/src/workspace/WorkSpace.h b/src/workspace/WorkSpace.h index d87dc4d0..50e9586e 100644 --- a/src/workspace/WorkSpace.h +++ b/src/workspace/WorkSpace.h @@ -141,6 +141,7 @@ Q_SIGNALS: void TimestepChanged(class Timestep* timestep); void LampStatusChanged(class LampStatus* lampStatus); void FilesChanged(FileEntryType type, std::shared_ptr fileEntry); + void CommandsChanged(); private: QString name_;