From 1cd4a4d17aeaab26664add714c8a02f76f6a6a90 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 13 Jun 2019 17:42:41 +0200 Subject: Remove concept of project and code connected --- gui/basewindow.cc | 76 ------------------------------------------------------- 1 file changed, 76 deletions(-) (limited to 'gui/basewindow.cc') diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 346efb88..afc80694 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -31,7 +31,6 @@ #include "jsonparse.h" #include "log.h" #include "mainwindow.h" -#include "project.h" #include "pythontab.h" static void initBasenameResource() { Q_INIT_RESOURCE(base); } @@ -130,25 +129,6 @@ void BaseMainWindow::writeInfo(std::string text) { console->info(text); } void BaseMainWindow::createMenusAndBars() { // File menu / project toolbar actions - actionNew = new QAction("New", this); - actionNew->setIcon(QIcon(":/icons/resources/new.png")); - actionNew->setShortcuts(QKeySequence::New); - actionNew->setStatusTip("New project file"); - connect(actionNew, &QAction::triggered, this, &BaseMainWindow::new_proj); - - actionOpen = new QAction("Open", this); - actionOpen->setIcon(QIcon(":/icons/resources/open.png")); - actionOpen->setShortcuts(QKeySequence::Open); - actionOpen->setStatusTip("Open an existing project file"); - connect(actionOpen, &QAction::triggered, this, &BaseMainWindow::open_proj); - - actionSave = new QAction("Save", this); - actionSave->setIcon(QIcon(":/icons/resources/save.png")); - actionSave->setShortcuts(QKeySequence::Save); - actionSave->setStatusTip("Save existing project to disk"); - actionSave->setEnabled(false); - connect(actionSave, &QAction::triggered, this, &BaseMainWindow::save_proj); - QAction *actionExit = new QAction("Exit", this); actionExit->setIcon(QIcon(":/icons/resources/exit.png")); actionExit->setShortcuts(QKeySequence::Quit); @@ -243,10 +223,6 @@ void BaseMainWindow::createMenusAndBars() menuBar->addAction(menuHelp->menuAction()); // Add File menu actions - menuFile->addAction(actionNew); - menuFile->addAction(actionOpen); - menuFile->addAction(actionSave); - menuFile->addSeparator(); menuFile->addAction(actionExit); // Add Design menu actions @@ -261,13 +237,6 @@ void BaseMainWindow::createMenusAndBars() // Add Help menu actions menuHelp->addAction(actionAbout); - // Project toolbar - QToolBar *projectToolBar = new QToolBar("Project"); - addToolBar(Qt::TopToolBarArea, projectToolBar); - projectToolBar->addAction(actionNew); - projectToolBar->addAction(actionOpen); - projectToolBar->addAction(actionSave); - // Main action bar mainActionBar = new QToolBar("Main"); addToolBar(Qt::TopToolBarArea, mainActionBar); @@ -386,9 +355,6 @@ void BaseMainWindow::taskStarted() disableActions(); actionPause->setEnabled(true); actionStop->setEnabled(true); - - actionNew->setEnabled(false); - actionOpen->setEnabled(false); } void BaseMainWindow::taskPaused() @@ -396,9 +362,6 @@ void BaseMainWindow::taskPaused() disableActions(); actionPlay->setEnabled(true); actionStop->setEnabled(true); - - actionNew->setEnabled(false); - actionOpen->setEnabled(false); } void BaseMainWindow::budget() @@ -427,14 +390,6 @@ void BaseMainWindow::disableActions() actionPause->setEnabled(false); actionStop->setEnabled(false); - actionNew->setEnabled(true); - actionOpen->setEnabled(true); - - if (ctx->settings.find(ctx->id("input/json")) != ctx->settings.end()) - actionSave->setEnabled(true); - else - actionSave->setEnabled(false); - onDisableActions(); } @@ -446,24 +401,6 @@ void BaseMainWindow::updateLoaded() onProjectLoaded(); } -void BaseMainWindow::projectLoad(std::string filename) -{ - ProjectHandler proj; - disableActions(); - ctx = proj.load(filename); - Q_EMIT contextChanged(ctx.get()); - log_info("Loaded project %s...\n", filename.c_str()); - updateLoaded(); -} - -void BaseMainWindow::open_proj() -{ - QString fileName = QFileDialog::getOpenFileName(this, QString("Open Project"), QString(), QString("*.proj")); - if (!fileName.isEmpty()) { - projectLoad(fileName.toStdString()); - } -} - void BaseMainWindow::execute_python() { QString fileName = QFileDialog::getOpenFileName(this, QString("Execute Python"), QString(), QString("*.py")); @@ -473,18 +410,5 @@ void BaseMainWindow::execute_python() } void BaseMainWindow::notifyChangeContext() { Q_EMIT contextChanged(ctx.get()); } -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 -- cgit v1.2.3 From 053bd48bef73668e5c7bdf84e826a996a519c5bb Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 14 Jun 2019 10:07:59 +0200 Subject: Cleanup --- gui/basewindow.cc | 1 - 1 file changed, 1 deletion(-) (limited to 'gui/basewindow.cc') diff --git a/gui/basewindow.cc b/gui/basewindow.cc index afc80694..63e30f27 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -398,7 +398,6 @@ void BaseMainWindow::updateLoaded() disableActions(); actionPack->setEnabled(true); onJsonLoaded(); - onProjectLoaded(); } void BaseMainWindow::execute_python() -- cgit v1.2.3 From 0d8c80ad5daafc02030385da90c5a57182a5d4e5 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 14 Jun 2019 11:14:18 +0200 Subject: gui for json write and proper statuses --- gui/basewindow.cc | 71 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 17 deletions(-) (limited to 'gui/basewindow.cc') diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 63e30f27..59dd6f7b 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -29,6 +29,7 @@ #include "designwidget.h" #include "fpgaviewwidget.h" #include "jsonparse.h" +#include "jsonwrite.h" #include "log.h" #include "mainwindow.h" #include "pythontab.h" @@ -138,13 +139,26 @@ void BaseMainWindow::createMenusAndBars() // Help menu actions QAction *actionAbout = new QAction("About", this); - // Design menu options + // Gile menu options + actionNew = new QAction("New", this); + actionNew->setIcon(QIcon(":/icons/resources/new.png")); + actionNew->setShortcuts(QKeySequence::New); + actionNew->setStatusTip("New project"); + connect(actionNew, &QAction::triggered, this, &BaseMainWindow::new_proj); + actionLoadJSON = new QAction("Open JSON", this); actionLoadJSON->setIcon(QIcon(":/icons/resources/open_json.png")); actionLoadJSON->setStatusTip("Open an existing JSON file"); actionLoadJSON->setEnabled(true); connect(actionLoadJSON, &QAction::triggered, this, &BaseMainWindow::open_json); + actionSaveJSON = new QAction("Save JSON", this); + actionSaveJSON->setIcon(QIcon(":/icons/resources/save_json.png")); + actionSaveJSON->setStatusTip("Write to JSON file"); + actionSaveJSON->setEnabled(true); + connect(actionSaveJSON, &QAction::triggered, this, &BaseMainWindow::save_json); + + // Design menu options actionPack = new QAction("Pack", this); actionPack->setIcon(QIcon(":/icons/resources/pack.png")); actionPack->setStatusTip("Pack current design"); @@ -223,10 +237,13 @@ void BaseMainWindow::createMenusAndBars() menuBar->addAction(menuHelp->menuAction()); // Add File menu actions + menuFile->addAction(actionNew); + menuFile->addAction(actionLoadJSON); + menuFile->addAction(actionSaveJSON); + menuFile->addSeparator(); menuFile->addAction(actionExit); // Add Design menu actions - menuDesign->addAction(actionLoadJSON); menuDesign->addAction(actionPack); menuDesign->addAction(actionAssignBudget); menuDesign->addAction(actionPlace); @@ -240,7 +257,10 @@ void BaseMainWindow::createMenusAndBars() // Main action bar mainActionBar = new QToolBar("Main"); addToolBar(Qt::TopToolBarArea, mainActionBar); + mainActionBar->addAction(actionNew); mainActionBar->addAction(actionLoadJSON); + mainActionBar->addAction(actionSaveJSON); + mainActionBar->addSeparator(); mainActionBar->addAction(actionPack); mainActionBar->addAction(actionAssignBudget); mainActionBar->addAction(actionPlace); @@ -280,7 +300,7 @@ void BaseMainWindow::load_json(std::string filename) if (parse_json_file(f, filename, ctx.get())) { log("Loading design successful.\n"); Q_EMIT updateTreeView(); - updateLoaded(); + updateActions(); } else { actionLoadJSON->setEnabled(true); log("Loading design failed.\n"); @@ -295,15 +315,26 @@ void BaseMainWindow::open_json() } } +void BaseMainWindow::save_json() +{ + QString fileName = QFileDialog::getSaveFileName(this, QString("Save JSON"), QString(), QString("*.json")); + if (!fileName.isEmpty()) { + std::string fn = fileName.toStdString(); + std::ofstream f(fn); + if (write_json_file(f, fn, ctx.get())) + log("Saving JSON successful.\n"); + else + log("Saving JSON failed.\n"); + } +} + void BaseMainWindow::pack_finished(bool status) { disableActions(); if (status) { log("Packing design successful.\n"); Q_EMIT updateTreeView(); - actionPlace->setEnabled(true); - actionAssignBudget->setEnabled(true); - onPackFinished(); + updateActions(); } else { log("Packing design failed.\n"); } @@ -313,9 +344,8 @@ void BaseMainWindow::budget_finish(bool status) { disableActions(); if (status) { - log("Assigning timing budget successful.\n"); - actionPlace->setEnabled(true); - onBudgetFinished(); + log("Assigning timing budget successful.\n"); + updateActions(); } else { log("Assigning timing budget failed.\n"); } @@ -327,8 +357,7 @@ void BaseMainWindow::place_finished(bool status) if (status) { log("Placing design successful.\n"); Q_EMIT updateTreeView(); - actionRoute->setEnabled(true); - onPlaceFinished(); + updateActions(); } else { log("Placing design failed.\n"); } @@ -339,7 +368,7 @@ void BaseMainWindow::route_finished(bool status) if (status) { log("Routing design successful.\n"); Q_EMIT updateTreeView(); - onRouteFinished(); + updateActions(); } else log("Routing design failed.\n"); } @@ -379,11 +408,12 @@ void BaseMainWindow::place() { Q_EMIT task->place(timing_driven); } void BaseMainWindow::disableActions() { - actionLoadJSON->setEnabled(false); + actionLoadJSON->setEnabled(true); actionPack->setEnabled(false); actionAssignBudget->setEnabled(false); actionPlace->setEnabled(false); actionRoute->setEnabled(false); + actionExecutePy->setEnabled(true); actionPlay->setEnabled(false); @@ -393,11 +423,18 @@ void BaseMainWindow::disableActions() onDisableActions(); } -void BaseMainWindow::updateLoaded() +void BaseMainWindow::updateActions() { - disableActions(); - actionPack->setEnabled(true); - onJsonLoaded(); + if (ctx->settings.find(ctx->id("pack"))==ctx->settings.end()) + actionPack->setEnabled(true); + else if (ctx->settings.find(ctx->id("place"))==ctx->settings.end()) { + actionAssignBudget->setEnabled(true); + actionPlace->setEnabled(true); + } + else if (ctx->settings.find(ctx->id("route"))==ctx->settings.end()) + actionRoute->setEnabled(true); + + onUpdateActions(); } void BaseMainWindow::execute_python() -- cgit v1.2.3 From 66ea9f39f7f5d6e1152105328f9a48a367bd8ce0 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 14 Jun 2019 15:18:35 +0200 Subject: enable lading of jsons and setting up context --- gui/basewindow.cc | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'gui/basewindow.cc') diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 59dd6f7b..5b03b667 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -38,8 +38,8 @@ static void initBasenameResource() { Q_INIT_RESOURCE(base); } NEXTPNR_NAMESPACE_BEGIN -BaseMainWindow::BaseMainWindow(std::unique_ptr context, ArchArgs args, QWidget *parent) - : QMainWindow(parent), chipArgs(args), ctx(std::move(context)), timing_driven(false) +BaseMainWindow::BaseMainWindow(std::unique_ptr context, CommandHandler *handler, QWidget *parent) + : QMainWindow(parent), handler(handler), ctx(std::move(context)), timing_driven(false) { initBasenameResource(); qRegisterMetaType(); @@ -293,25 +293,16 @@ void BaseMainWindow::createMenusAndBars() setStatusBar(statusBar); } -void BaseMainWindow::load_json(std::string filename) -{ - disableActions(); - std::ifstream f(filename); - if (parse_json_file(f, filename, ctx.get())) { - log("Loading design successful.\n"); - Q_EMIT updateTreeView(); - updateActions(); - } else { - actionLoadJSON->setEnabled(true); - log("Loading design failed.\n"); - } -} - void BaseMainWindow::open_json() { QString fileName = QFileDialog::getOpenFileName(this, QString("Open JSON"), QString(), QString("*.json")); if (!fileName.isEmpty()) { - load_json(fileName.toStdString()); + disableActions(); + ctx = handler->load_json(fileName.toStdString()); + Q_EMIT contextChanged(ctx.get()); + Q_EMIT updateTreeView(); + log("Loading design successful.\n"); + updateActions(); } } -- cgit v1.2.3 From be47fc3e9a81a4890b05223ae18803cb07674dc9 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Tue, 25 Jun 2019 18:19:25 +0200 Subject: clangformat run --- gui/basewindow.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'gui/basewindow.cc') diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 5b03b667..550a4b93 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -310,11 +310,11 @@ void BaseMainWindow::save_json() { QString fileName = QFileDialog::getSaveFileName(this, QString("Save JSON"), QString(), QString("*.json")); if (!fileName.isEmpty()) { - std::string fn = fileName.toStdString(); + std::string fn = fileName.toStdString(); std::ofstream f(fn); if (write_json_file(f, fn, ctx.get())) log("Saving JSON successful.\n"); - else + else log("Saving JSON failed.\n"); } } @@ -335,7 +335,7 @@ void BaseMainWindow::budget_finish(bool status) { disableActions(); if (status) { - log("Assigning timing budget successful.\n"); + log("Assigning timing budget successful.\n"); updateActions(); } else { log("Assigning timing budget failed.\n"); @@ -399,7 +399,7 @@ void BaseMainWindow::place() { Q_EMIT task->place(timing_driven); } void BaseMainWindow::disableActions() { - actionLoadJSON->setEnabled(true); + actionLoadJSON->setEnabled(true); actionPack->setEnabled(false); actionAssignBudget->setEnabled(false); actionPlace->setEnabled(false); @@ -416,13 +416,12 @@ void BaseMainWindow::disableActions() void BaseMainWindow::updateActions() { - if (ctx->settings.find(ctx->id("pack"))==ctx->settings.end()) + if (ctx->settings.find(ctx->id("pack")) == ctx->settings.end()) actionPack->setEnabled(true); - else if (ctx->settings.find(ctx->id("place"))==ctx->settings.end()) { + else if (ctx->settings.find(ctx->id("place")) == ctx->settings.end()) { actionAssignBudget->setEnabled(true); - actionPlace->setEnabled(true); - } - else if (ctx->settings.find(ctx->id("route"))==ctx->settings.end()) + actionPlace->setEnabled(true); + } else if (ctx->settings.find(ctx->id("route")) == ctx->settings.end()) actionRoute->setEnabled(true); onUpdateActions(); -- cgit v1.2.3