From ecc21caa77b09075a97d131890019f6b97281928 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 8 Aug 2018 18:14:22 +0200 Subject: [PATCH] move load/save proj to base --- gui/basewindow.cc | 33 +++++++++++++++++++++++++++++++++ gui/basewindow.h | 7 +++++-- gui/ice40/mainwindow.cc | 35 +---------------------------------- gui/ice40/mainwindow.h | 4 +--- 4 files changed, 40 insertions(+), 39 deletions(-) diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 98dc9e20..98315ee9 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -31,6 +31,7 @@ #include "jsonparse.h" #include "log.h" #include "mainwindow.h" +#include "project.h" #include "pythontab.h" static void initBasenameResource() { Q_INIT_RESOURCE(base); } @@ -431,4 +432,36 @@ void BaseMainWindow::updateJsonLoaded() onJsonLoaded(); } +void BaseMainWindow::open_proj() +{ + QString fileName = QFileDialog::getOpenFileName(this, QString("Open Project"), QString(), QString("*.proj")); + if (!fileName.isEmpty()) { + try { + ProjectHandler proj; + disableActions(); + ctx = proj.load(fileName.toStdString()); + Q_EMIT contextChanged(ctx.get()); + log_info("Loaded project %s...\n", fileName.toStdString().c_str()); + updateJsonLoaded(); + onProjectLoaded(); + } catch (log_execution_error_exception) { + } + } +} + +void BaseMainWindow::save_proj() +{ + if (currentProj.empty()) { + QString fileName = QFileDialog::getSaveFileName(this, QString("Save Project"), QString(), QString("*.proj")); + if (fileName.isEmpty()) + return; + currentProj = fileName.toStdString(); + } + if (!currentProj.empty()) { + ProjectHandler proj; + proj.save(ctx.get(), currentProj); + } +} + + NEXTPNR_NAMESPACE_END diff --git a/gui/basewindow.h b/gui/basewindow.h index 67f39ac2..ef3e252c 100644 --- a/gui/basewindow.h +++ b/gui/basewindow.h @@ -56,6 +56,7 @@ class BaseMainWindow : public QMainWindow virtual void onDisableActions(){}; virtual void onJsonLoaded(){}; + virtual void onProjectLoaded(){}; virtual void onPackFinished(){}; virtual void onBudgetFinished(){}; virtual void onPlaceFinished(){}; @@ -66,8 +67,9 @@ class BaseMainWindow : public QMainWindow void closeTab(int index); virtual void new_proj() = 0; - virtual void open_proj() = 0; - virtual bool save_proj() = 0; + + void open_proj(); + void save_proj(); void open_json(); void budget(); @@ -93,6 +95,7 @@ class BaseMainWindow : public QMainWindow TaskManager *task; bool timing_driven; std::string currentJson; + std::string currentProj; // main widgets QTabWidget *tabWidget; diff --git a/gui/ice40/mainwindow.cc b/gui/ice40/mainwindow.cc index 9870cb0d..4a2eaaa9 100644 --- a/gui/ice40/mainwindow.cc +++ b/gui/ice40/mainwindow.cc @@ -29,7 +29,6 @@ #include "jsonparse.h" #include "log.h" #include "pcf.h" -#include "project.h" #include static void initMainResource() { Q_INIT_RESOURCE(nextpnr); } @@ -166,23 +165,6 @@ void MainWindow::newContext(Context *ctx) setWindowTitle(title.c_str()); } -void MainWindow::open_proj() -{ - QString fileName = QFileDialog::getOpenFileName(this, QString("Open Project"), QString(), QString("*.proj")); - if (!fileName.isEmpty()) { - try { - ProjectHandler proj; - disableActions(); - ctx = proj.load(fileName.toStdString()); - Q_EMIT contextChanged(ctx.get()); - log_info("Loaded project %s...\n", fileName.toStdString().c_str()); - updateJsonLoaded(); - actionLoadPCF->setEnabled(false); - } catch (log_execution_error_exception) { - } - } -} - void MainWindow::open_pcf() { QString fileName = QFileDialog::getOpenFileName(this, QString("Open PCF"), QString(), QString("*.pcf")); @@ -191,22 +173,6 @@ void MainWindow::open_pcf() } } -bool MainWindow::save_proj() -{ - if (currentProj.empty()) { - QString fileName = QFileDialog::getSaveFileName(this, QString("Save Project"), QString(), QString("*.proj")); - if (fileName.isEmpty()) - return false; - currentProj = fileName.toStdString(); - } - if (!currentProj.empty()) { - ProjectHandler proj; - proj.save(ctx.get(), currentProj); - return true; - } - return false; -} - void MainWindow::save_asc() { QString fileName = QFileDialog::getSaveFileName(this, QString("Save ASC"), QString(), QString("*.asc")); @@ -227,5 +193,6 @@ void MainWindow::onDisableActions() void MainWindow::onJsonLoaded() { actionLoadPCF->setEnabled(true); } void MainWindow::onRouteFinished() { actionSaveAsc->setEnabled(true); } +void MainWindow::onProjectLoaded() { actionLoadPCF->setEnabled(false); } NEXTPNR_NAMESPACE_END diff --git a/gui/ice40/mainwindow.h b/gui/ice40/mainwindow.h index c235f0a4..201bf1b1 100644 --- a/gui/ice40/mainwindow.h +++ b/gui/ice40/mainwindow.h @@ -41,11 +41,10 @@ class MainWindow : public BaseMainWindow void onDisableActions() override; void onJsonLoaded() override; void onRouteFinished() override; + void onProjectLoaded() override; protected Q_SLOTS: virtual void new_proj(); - virtual void open_proj(); - virtual bool save_proj(); void open_pcf(); void save_asc(); @@ -56,7 +55,6 @@ class MainWindow : public BaseMainWindow QAction *actionLoadPCF; QAction *actionSaveAsc; - std::string currentProj; std::string currentPCF; };