From 8e54ac15421be441ece2a85ff0d61e850a99b2e9 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 13 Jul 2018 09:14:48 +0200 Subject: Use command line parameters settings for GUI as well. --- gui/ice40/mainwindow.cc | 49 ++++++++++++++++++++++++++++++------------------- gui/ice40/mainwindow.h | 6 ++++-- 2 files changed, 34 insertions(+), 21 deletions(-) (limited to 'gui/ice40') diff --git a/gui/ice40/mainwindow.cc b/gui/ice40/mainwindow.cc index 6f0a9b97..e8476fcf 100644 --- a/gui/ice40/mainwindow.cc +++ b/gui/ice40/mainwindow.cc @@ -34,7 +34,8 @@ static void initMainResource() { Q_INIT_RESOURCE(nextpnr); } NEXTPNR_NAMESPACE_BEGIN -MainWindow::MainWindow(QWidget *parent) : BaseMainWindow(parent), timing_driven(false) +MainWindow::MainWindow(std::unique_ptr context, QWidget *parent) + : BaseMainWindow(std::move(context), parent), timing_driven(false) { initMainResource(); @@ -60,6 +61,8 @@ MainWindow::MainWindow(QWidget *parent) : BaseMainWindow(parent), timing_driven( connect(this, SIGNAL(contextChanged(Context *)), task, SIGNAL(contextChanged(Context *))); createMenu(); + + Q_EMIT contextChanged(ctx.get()); } MainWindow::~MainWindow() { delete task; } @@ -75,7 +78,7 @@ void MainWindow::createMenu() actionLoadJSON->setIcon(iconLoadJSON); actionLoadJSON->setStatusTip("Open an existing JSON file"); connect(actionLoadJSON, SIGNAL(triggered()), this, SLOT(open_json())); - actionLoadJSON->setEnabled(false); + actionLoadJSON->setEnabled(true); actionLoadPCF = new QAction("Open PCF", this); QIcon iconLoadPCF; @@ -239,22 +242,36 @@ void MainWindow::new_proj() if (ok && !item.isEmpty()) { disableActions(); + preload_pcf = ""; chipArgs.package = package.toStdString().c_str(); - if (ctx) - delete ctx; - ctx = new Context(chipArgs); - - Q_EMIT contextChanged(ctx); + ctx = std::unique_ptr(new Context(chipArgs)); - actionLoadJSON->setEnabled(true); + Q_EMIT contextChanged(ctx.get()); } } } +void MainWindow::load_json(std::string filename, std::string pcf) +{ + tabWidget->setCurrentWidget(info); + preload_pcf = pcf; + disableActions(); + Q_EMIT task->loadfile(filename); +} + +void MainWindow::load_pcf(std::string filename) +{ + tabWidget->setCurrentWidget(info); + + disableActions(); + Q_EMIT task->loadpcf(filename); +} + void MainWindow::newContext(Context *ctx) { std::string title = "nextpnr-ice40 - " + ctx->getChipName() + " ( " + chipArgs.package + " )"; setWindowTitle(title.c_str()); + info->clearBuffer(); } void MainWindow::open_proj() @@ -272,12 +289,7 @@ void MainWindow::open_json() { QString fileName = QFileDialog::getOpenFileName(this, QString("Open JSON"), QString(), QString("*.json")); if (!fileName.isEmpty()) { - tabWidget->setCurrentWidget(info); - - std::string fn = fileName.toStdString(); - disableActions(); - timing_driven = false; - Q_EMIT task->loadfile(fn); + load_json(fileName.toStdString(), ""); } } @@ -285,11 +297,7 @@ void MainWindow::open_pcf() { QString fileName = QFileDialog::getOpenFileName(this, QString("Open PCF"), QString(), QString("*.pcf")); if (!fileName.isEmpty()) { - tabWidget->setCurrentWidget(info); - - std::string fn = fileName.toStdString(); - disableActions(); - Q_EMIT task->loadpcf(fn); + load_pcf(fileName.toStdString()); } } @@ -330,9 +338,12 @@ void MainWindow::loadfile_finished(bool status) log("Loading design successful.\n"); actionLoadPCF->setEnabled(true); actionPack->setEnabled(true); + if (!preload_pcf.empty()) + load_pcf(preload_pcf); Q_EMIT updateTreeView(); } else { log("Loading design failed.\n"); + preload_pcf = ""; } } diff --git a/gui/ice40/mainwindow.h b/gui/ice40/mainwindow.h index 8e847adc..2bed925f 100644 --- a/gui/ice40/mainwindow.h +++ b/gui/ice40/mainwindow.h @@ -30,12 +30,13 @@ class MainWindow : public BaseMainWindow Q_OBJECT public: - explicit MainWindow(QWidget *parent = 0); + explicit MainWindow(std::unique_ptr context, QWidget *parent = 0); virtual ~MainWindow(); public: void createMenu(); - + void load_json(std::string filename, std::string pcf); + void load_pcf(std::string filename); protected Q_SLOTS: virtual void new_proj(); virtual void open_proj(); @@ -78,6 +79,7 @@ class MainWindow : public BaseMainWindow bool timing_driven; ArchArgs chipArgs; + std::string preload_pcf; }; NEXTPNR_NAMESPACE_END -- cgit v1.2.3