aboutsummaryrefslogtreecommitdiffstats
path: root/gui/ice40/mainwindow.cc
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2018-06-22 14:29:28 +0100
committerSergiusz Bazanski <q3k@q3k.org>2018-06-22 14:29:28 +0100
commit858acc5c1c0ee4bbdfb8d2012b80cda656ca39db (patch)
tree7cc94b94e40c05c5a7baae61c9d0db4f23a31b60 /gui/ice40/mainwindow.cc
parent98b1f0c041b01d07f64e8e04503f8eccb05a93de (diff)
parentf86a0d6c8c8792c36c87cf345665ce7c9fbcc60f (diff)
downloadnextpnr-858acc5c1c0ee4bbdfb8d2012b80cda656ca39db.tar.gz
nextpnr-858acc5c1c0ee4bbdfb8d2012b80cda656ca39db.tar.bz2
nextpnr-858acc5c1c0ee4bbdfb8d2012b80cda656ca39db.zip
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr into q3k/gl
Diffstat (limited to 'gui/ice40/mainwindow.cc')
-rw-r--r--gui/ice40/mainwindow.cc82
1 files changed, 82 insertions, 0 deletions
diff --git a/gui/ice40/mainwindow.cc b/gui/ice40/mainwindow.cc
new file mode 100644
index 00000000..4c7bc18f
--- /dev/null
+++ b/gui/ice40/mainwindow.cc
@@ -0,0 +1,82 @@
+#include "mainwindow.h"
+#include <QAction>
+#include <QFileDialog>
+#include <QIcon>
+#include "bitstream.h"
+#include "design_utils.h"
+#include "jsonparse.h"
+#include "log.h"
+#include "pack.h"
+#include "pcf.h"
+#include "place_sa.h"
+#include "route.h"
+
+static void initMainResource() { Q_INIT_RESOURCE(nextpnr); }
+
+NEXTPNR_NAMESPACE_BEGIN
+
+MainWindow::MainWindow(Context *_ctx, QWidget *parent)
+ : BaseMainWindow(_ctx, parent)
+{
+ initMainResource();
+
+ std::string title = "nextpnr-ice40 - " + ctx->getChipName();
+ setWindowTitle(title.c_str());
+
+ task = new TaskManager(_ctx);
+ connect(task, SIGNAL(log(std::string)), this, SLOT(writeInfo(std::string)));
+
+ createMenu();
+}
+
+MainWindow::~MainWindow() { delete task; }
+
+void MainWindow::createMenu()
+{
+ QMenu *menu_Custom = new QMenu("&ICE 40", menuBar);
+ menuBar->addAction(menu_Custom->menuAction());
+
+ QAction *actionPlay = new QAction("Play", this);
+ QIcon icon1;
+ icon1.addFile(QStringLiteral(":/icons/resources/control_play.png"));
+ actionPlay->setIcon(icon1);
+ actionPlay->setStatusTip("Continue running task");
+ connect(actionPlay, SIGNAL(triggered()), task, SLOT(continue_thread()));
+
+ QAction *actionPause = new QAction("Pause", this);
+ QIcon icon2;
+ icon2.addFile(QStringLiteral(":/icons/resources/control_pause.png"));
+ actionPause->setIcon(icon2);
+ actionPause->setStatusTip("Pause running task");
+ connect(actionPause, SIGNAL(triggered()), task, SLOT(pause_thread()));
+
+ QAction *actionStop = new QAction("Stop", this);
+ QIcon icon3;
+ icon3.addFile(QStringLiteral(":/icons/resources/control_stop.png"));
+ actionStop->setIcon(icon3);
+ actionStop->setStatusTip("Stop running task");
+ connect(actionStop, SIGNAL(triggered()), task, SLOT(terminate_thread()));
+
+ QToolBar *taskToolBar = new QToolBar();
+ addToolBar(Qt::TopToolBarArea, taskToolBar);
+
+ taskToolBar->addAction(actionPlay);
+ taskToolBar->addAction(actionPause);
+ taskToolBar->addAction(actionStop);
+}
+
+void MainWindow::open()
+{
+ QString fileName = QFileDialog::getOpenFileName(this, QString(), QString(),
+ QString("*.json"));
+ if (!fileName.isEmpty()) {
+ tabWidget->setCurrentWidget(info);
+
+ std::string fn = fileName.toStdString();
+ Q_EMIT task->parsejson(fn);
+ }
+}
+
+bool MainWindow::save() { return false; }
+
+NEXTPNR_NAMESPACE_END \ No newline at end of file