aboutsummaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2018-06-15 12:22:44 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2018-06-15 12:22:44 +0200
commit3c6f1548d64d23fa1a252b0a64ac92e5f2e7b375 (patch)
treea936f6a4d8925dd852b35ef954139d6bfdadc8ee /gui
parentfe4d56a45a880993b87ff0790ad93f5d145d6d4e (diff)
downloadnextpnr-3c6f1548d64d23fa1a252b0a64ac92e5f2e7b375.tar.gz
nextpnr-3c6f1548d64d23fa1a252b0a64ac92e5f2e7b375.tar.bz2
nextpnr-3c6f1548d64d23fa1a252b0a64ac92e5f2e7b375.zip
Create all without ui file, enables more control
Diffstat (limited to 'gui')
-rw-r--r--gui/gui.cmake4
-rw-r--r--gui/mainwindow.cc99
-rw-r--r--gui/mainwindow.h10
-rw-r--r--gui/mainwindow.ui153
4 files changed, 93 insertions, 173 deletions
diff --git a/gui/gui.cmake b/gui/gui.cmake
index fb7f2db4..961d498a 100644
--- a/gui/gui.cmake
+++ b/gui/gui.cmake
@@ -21,10 +21,6 @@ set(GENERATED_MOC_FILES
${CMAKE_CURRENT_BINARY_DIR}/generated/moc_designwidget.cc
)
-set(UI_SOURCES
- gui/mainwindow.ui
-)
-qt5_wrap_ui_custom(GENERATED_UI_HEADERS ${UI_SOURCES})
qt5_add_resources_custom(GUI_RESOURCE_FILES gui/nextpnr.qrc)
aux_source_directory(gui/ GUI_ALL_SOURCE_FILES)
diff --git a/gui/mainwindow.cc b/gui/mainwindow.cc
index bd38cc40..76addbba 100644
--- a/gui/mainwindow.cc
+++ b/gui/mainwindow.cc
@@ -1,34 +1,115 @@
#include "mainwindow.h"
+#include <QAction>
+#include <QGridLayout>
+#include <QIcon>
+#include <QMenu>
+#include <QMenuBar>
+#include <QSplitter>
+#include <QStatusBar>
+#include <QToolBar>
#include "designwidget.h"
#include "fpgaviewwidget.h"
#include "pythontab.h"
-#include "ui_mainwindow.h"
MainWindow::MainWindow(Design *_design, QWidget *parent)
- : QMainWindow(parent), ui(new Ui::MainWindow), design(_design)
+ : QMainWindow(parent), design(_design)
{
- ui->setupUi(this);
std::string title = "nextpnr-ice40 - " + design->chip.getChipName();
setWindowTitle(title.c_str());
+ setObjectName(QStringLiteral("MainWindow"));
+ resize(1024, 768);
- ui->splitter->addWidget(new FPGAViewWidget());
+ createMenusAndBars();
+
+ QWidget *centralWidget = new QWidget(this);
+
+ QGridLayout *gridLayout = new QGridLayout(centralWidget);
+ gridLayout->setSpacing(6);
+ gridLayout->setContentsMargins(11, 11, 11, 11);
+
+ QSplitter *splitter_h = new QSplitter(Qt::Horizontal, centralWidget);
+ QSplitter *splitter_v = new QSplitter(Qt::Vertical, splitter_h);
+ splitter_h->addWidget(splitter_v);
+
+ gridLayout->addWidget(splitter_h, 0, 0, 1, 1);
+
+ setCentralWidget(centralWidget);
DesignWidget *designview = new DesignWidget(design);
designview->setMinimumWidth(300);
designview->setMaximumWidth(300);
+ splitter_h->addWidget(designview);
connect(designview, SIGNAL(info(std::string)), this,
SLOT(writeInfo(std::string)));
- ui->splitter_2->addWidget(designview);
-
- tabWidget = new QTabWidget();
+ QTabWidget *tabWidget = new QTabWidget();
tabWidget->addTab(new PythonTab(), "Python");
info = new InfoTab();
tabWidget->addTab(info, "Info");
- ui->splitter->addWidget(tabWidget);
+ splitter_v->addWidget(new FPGAViewWidget());
+ splitter_v->addWidget(tabWidget);
}
-MainWindow::~MainWindow() { delete ui; }
+MainWindow::~MainWindow() {}
void MainWindow::writeInfo(std::string text) { info->info(text); }
+
+void MainWindow::createMenusAndBars()
+{
+ QAction *actionNew = new QAction("New", this);
+ QIcon icon;
+ icon.addFile(QStringLiteral(":/icons/resources/new.png"));
+ actionNew->setIcon(icon);
+
+ QAction *actionOpen = new QAction("Open", this);
+ QIcon icon1;
+ icon1.addFile(QStringLiteral(":/icons/resources/open.png"));
+ actionOpen->setIcon(icon1);
+
+ QAction *actionSave = new QAction("Save", this);
+ QIcon icon2;
+ icon2.addFile(QStringLiteral(":/icons/resources/save.png"));
+ actionSave->setIcon(icon2);
+
+ QAction *actionSave_as = new QAction("Save as ...", this);
+
+ QAction *actionClose = new QAction("Close", this);
+
+ QAction *actionExit = new QAction("Exit", this);
+
+ QIcon icon3;
+ icon3.addFile(QStringLiteral(":/icons/resources/exit.png"));
+ actionExit->setIcon(icon3);
+
+ QAction *actionAbout = new QAction("About", this);
+
+ QMenuBar *menuBar = new QMenuBar();
+ menuBar->setGeometry(QRect(0, 0, 1024, 27));
+ QMenu *menu_File = new QMenu("&File", menuBar);
+ QMenu *menu_Help = new QMenu("&Help", menuBar);
+ menuBar->addAction(menu_File->menuAction());
+ menuBar->addAction(menu_Help->menuAction());
+ setMenuBar(menuBar);
+
+ QToolBar *mainToolBar = new QToolBar();
+ addToolBar(Qt::TopToolBarArea, mainToolBar);
+
+ QStatusBar *statusBar = new QStatusBar();
+ setStatusBar(statusBar);
+
+ menu_File->addAction(actionNew);
+ menu_File->addAction(actionOpen);
+ menu_File->addAction(actionSave);
+ menu_File->addAction(actionSave_as);
+ menu_File->addAction(actionClose);
+ menu_File->addSeparator();
+ menu_File->addAction(actionExit);
+ menu_Help->addAction(actionAbout);
+
+ mainToolBar->addAction(actionNew);
+ mainToolBar->addAction(actionOpen);
+ mainToolBar->addAction(actionSave);
+
+ connect(actionExit, SIGNAL(triggered()), this, SLOT(close()));
+}
diff --git a/gui/mainwindow.h b/gui/mainwindow.h
index 40bb98ef..6516a986 100644
--- a/gui/mainwindow.h
+++ b/gui/mainwindow.h
@@ -10,10 +10,6 @@
// FIXME
USING_NEXTPNR_NAMESPACE
-namespace Ui {
-class MainWindow;
-}
-
class MainWindow : public QMainWindow
{
Q_OBJECT
@@ -23,14 +19,14 @@ class MainWindow : public QMainWindow
~MainWindow();
Design *getDesign() { return design; }
+ private:
+ void createMenusAndBars();
+
private Q_SLOTS:
void writeInfo(std::string text);
private:
- Ui::MainWindow *ui;
Design *design;
-
- QTabWidget *tabWidget;
InfoTab *info;
};
diff --git a/gui/mainwindow.ui b/gui/mainwindow.ui
deleted file mode 100644
index 7260c7ea..00000000
--- a/gui/mainwindow.ui
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>969</width>
- <height>629</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>nextpnr</string>
- </property>
- <widget class="QWidget" name="centralWidget">
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
- <widget class="QSplitter" name="splitter_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <widget class="QSplitter" name="splitter">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- </widget>
- <widget class="QSplitter" name="splitter_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>969</width>
- <height>27</height>
- </rect>
- </property>
- <widget class="QMenu" name="menu_File">
- <property name="title">
- <string>&amp;File</string>
- </property>
- <addaction name="actionNew"/>
- <addaction name="actionOpen"/>
- <addaction name="actionSave"/>
- <addaction name="actionSave_as"/>
- <addaction name="actionClose"/>
- <addaction name="separator"/>
- <addaction name="actionExit"/>
- </widget>
- <widget class="QMenu" name="menu_Help">
- <property name="title">
- <string>&amp;Help</string>
- </property>
- <addaction name="actionAbout"/>
- </widget>
- <addaction name="menu_File"/>
- <addaction name="menu_Help"/>
- </widget>
- <widget class="QToolBar" name="mainToolBar">
- <attribute name="toolBarArea">
- <enum>TopToolBarArea</enum>
- </attribute>
- <attribute name="toolBarBreak">
- <bool>false</bool>
- </attribute>
- <addaction name="actionNew"/>
- <addaction name="actionOpen"/>
- <addaction name="actionSave"/>
- </widget>
- <widget class="QStatusBar" name="statusBar"/>
- <action name="actionNew">
- <property name="icon">
- <iconset resource="nextpnr.qrc">
- <normaloff>:/icons/resources/new.png</normaloff>:/icons/resources/new.png</iconset>
- </property>
- <property name="text">
- <string>New</string>
- </property>
- </action>
- <action name="actionOpen">
- <property name="icon">
- <iconset resource="nextpnr.qrc">
- <normaloff>:/icons/resources/open.png</normaloff>:/icons/resources/open.png</iconset>
- </property>
- <property name="text">
- <string>Open</string>
- </property>
- </action>
- <action name="actionSave">
- <property name="icon">
- <iconset resource="nextpnr.qrc">
- <normaloff>:/icons/resources/save.png</normaloff>:/icons/resources/save.png</iconset>
- </property>
- <property name="text">
- <string>Save</string>
- </property>
- </action>
- <action name="actionSave_as">
- <property name="text">
- <string>Save as ...</string>
- </property>
- </action>
- <action name="actionClose">
- <property name="text">
- <string>Close</string>
- </property>
- </action>
- <action name="actionExit">
- <property name="icon">
- <iconset resource="nextpnr.qrc">
- <normaloff>:/icons/resources/exit.png</normaloff>:/icons/resources/exit.png</iconset>
- </property>
- <property name="text">
- <string>Exit</string>
- </property>
- </action>
- <action name="actionAbout">
- <property name="text">
- <string>About</string>
- </property>
- </action>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources>
- <include location="nextpnr.qrc"/>
- </resources>
- <connections>
- <connection>
- <sender>actionExit</sender>
- <signal>triggered()</signal>
- <receiver>MainWindow</receiver>
- <slot>close()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>-1</x>
- <y>-1</y>
- </hint>
- <hint type="destinationlabel">
- <x>484</x>
- <y>314</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>