add write bitstream

This commit is contained in:
Miodrag Milanovic 2018-08-04 11:21:38 +02:00
parent e68ca65e9e
commit 17f461ed4f
5 changed files with 77 additions and 2 deletions

View File

@ -18,6 +18,10 @@
*/
#include "mainwindow.h"
#include "bitstream.h"
#include "log.h"
#include <QFileDialog>
static void initMainResource() { Q_INIT_RESOURCE(nextpnr); }
@ -44,7 +48,29 @@ void MainWindow::newContext(Context *ctx)
setWindowTitle(title.c_str());
}
void MainWindow::createMenu() {}
void MainWindow::createMenu() {
// Add arch specific actions
actionLoadBase = new QAction("Open Base Config", this);
actionLoadBase->setIcon(QIcon(":/icons/resources/open_base.png"));
actionLoadBase->setStatusTip("Open Base Config file");
actionLoadBase->setEnabled(false);
connect(actionLoadBase, &QAction::triggered, this, &MainWindow::open_base);
actionSaveConfig = new QAction("Save Bitstream", this);
actionSaveConfig->setIcon(QIcon(":/icons/resources/save_config.png"));
actionSaveConfig->setStatusTip("Save Bitstream config file");
actionSaveConfig->setEnabled(false);
connect(actionSaveConfig, &QAction::triggered, this, &MainWindow::save_config);
// Add actions in menus
mainActionBar->addSeparator();
mainActionBar->addAction(actionLoadBase);
mainActionBar->addAction(actionSaveConfig);
menuDesign->addSeparator();
menuDesign->addAction(actionLoadBase);
menuDesign->addAction(actionSaveConfig);
}
void MainWindow::new_proj() {}
@ -52,4 +78,38 @@ void MainWindow::open_proj() {}
bool MainWindow::save_proj() { return false; }
void MainWindow::load_base_config(std::string filename)
{
disableActions();
currentBaseConfig = filename;
actionSaveConfig->setEnabled(true);
}
void MainWindow::open_base()
{
QString fileName = QFileDialog::getOpenFileName(this, QString("Open Base Config"), QString(), QString("*.config"));
if (!fileName.isEmpty()) {
load_base_config(fileName.toStdString());
}
}
void MainWindow::save_config()
{
QString fileName = QFileDialog::getSaveFileName(this, QString("Save Bitstream"), QString(), QString("*.config"));
if (!fileName.isEmpty()) {
std::string fn = fileName.toStdString();
disableActions();
write_bitstream(ctx.get(), currentBaseConfig, fileName.toStdString());
log("Saving Bitstream successful.\n");
}
}
void MainWindow::onDisableActions()
{
actionLoadBase->setEnabled(false);
actionSaveConfig->setEnabled(false);
}
void MainWindow::onRouteFinished() { actionLoadBase->setEnabled(true); }
NEXTPNR_NAMESPACE_END

View File

@ -34,15 +34,26 @@ class MainWindow : public BaseMainWindow
public:
void createMenu();
void load_base_config(std::string filename);
protected:
void onDisableActions() override;
void onRouteFinished() override;
protected Q_SLOTS:
virtual void new_proj();
virtual void open_proj();
virtual bool save_proj();
void newContext(Context *ctx);
void open_base();
void save_config();
private:
QAction *actionLoadBase;
QAction *actionSaveConfig;
ArchArgs chipArgs;
std::string currentBaseConfig;
};
NEXTPNR_NAMESPACE_END

View File

@ -1,2 +1,6 @@
<RCC>
<qresource prefix="/icons">
<file>resources/open_base.png</file>
<file>resources/save_config.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB