From 5abdc19cfa68aac572b800546f47651e458ee9de Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Thu, 16 Sep 2021 16:05:53 +0200 Subject: [PATCH] Improve bugprone enabling/disabling of menu items in TraceAnalyzer --- DRAMSys/traceAnalyzer/traceanalyzer.cpp | 41 +++++++++---------------- DRAMSys/traceAnalyzer/traceanalyzer.h | 5 +-- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/DRAMSys/traceAnalyzer/traceanalyzer.cpp b/DRAMSys/traceAnalyzer/traceanalyzer.cpp index 0a3454fb..dda259b9 100644 --- a/DRAMSys/traceAnalyzer/traceanalyzer.cpp +++ b/DRAMSys/traceAnalyzer/traceanalyzer.cpp @@ -65,13 +65,6 @@ TraceAnalyzer::TraceAnalyzer(QWidget *parent) : ui(new Ui::TraceAnalyzer) { setUpGui(); - // Disable actions except for "Open" until some file is open. - ui->actionReload_all->setEnabled(false); - ui->actionSaveChangesToDB->setEnabled(false); - ui->actionExportAsVCD->setEnabled(false); - ui->actionClose_all->setEnabled(false); - ui->actionTest->setEnabled(false); - ui->actionMetrics->setEnabled(false); } TraceAnalyzer::TraceAnalyzer(QSet paths, StartupOption option, @@ -120,20 +113,24 @@ void TraceAnalyzer::openTracefile(const QString &path) ui->traceFileTabs->addTab(tab, QFileInfo(path).baseName()); openedTraceFiles.insert(path); - // Enable actions - ui->actionReload_all->setEnabled(true); - ui->actionSaveChangesToDB->setEnabled(true); - - if (PythonCaller::instance().vcdExportDependenciesAvailable()) - ui->actionExportAsVCD->setEnabled(true); - - ui->actionClose_all->setEnabled(true); - ui->actionTest->setEnabled(true); - ui->actionMetrics->setEnabled(true); - statusLabel->clear(); } +void TraceAnalyzer::on_menuFile_aboutToShow() +{ + ui->actionOpen->setEnabled(true); + + bool tabsOpen = ui->traceFileTabs->count() > 0; + bool exportAsVcdAvailable = PythonCaller::instance().vcdExportDependenciesAvailable(); + + ui->actionReload_all->setEnabled(tabsOpen); + ui->actionSaveChangesToDB->setEnabled(tabsOpen); + ui->actionExportAsVCD->setEnabled(tabsOpen && exportAsVcdAvailable); + ui->actionClose_all->setEnabled(tabsOpen); + ui->actionTest->setEnabled(tabsOpen); + ui->actionMetrics->setEnabled(tabsOpen); +} + void TraceAnalyzer::on_traceFileTabs_tabCloseRequested(int index) { TraceFileTab *traceFileTab = static_cast @@ -154,14 +151,6 @@ void TraceAnalyzer::on_actionClose_all_triggered() on_traceFileTabs_tabCloseRequested(i); } - // All files closed. Disable actions except for "Open". - ui->actionReload_all->setEnabled(false); - ui->actionSaveChangesToDB->setEnabled(false); - ui->actionExportAsVCD->setEnabled(false); - ui->actionClose_all->setEnabled(false); - ui->actionTest->setEnabled(false); - ui->actionMetrics->setEnabled(false); - statusLabel->clear(); } diff --git a/DRAMSys/traceAnalyzer/traceanalyzer.h b/DRAMSys/traceAnalyzer/traceanalyzer.h index cfcf9e58..e6916862 100644 --- a/DRAMSys/traceAnalyzer/traceanalyzer.h +++ b/DRAMSys/traceAnalyzer/traceanalyzer.h @@ -76,14 +76,15 @@ private: QSet openedTraceFiles; private Q_SLOTS: + void on_menuFile_aboutToShow(); + void on_traceFileTabs_tabCloseRequested(int index); + void on_actionOpen_triggered(); void on_actionReload_all_triggered(); void on_actionSaveChangesToDB_triggered(); void on_actionExportAsVCD_triggered(); - void on_traceFileTabs_tabCloseRequested(int index); void on_actionClose_all_triggered(); void on_actionTest_triggered(); - void on_actionMetrics_triggered(); public Q_SLOTS: