aboutsummaryrefslogtreecommitdiffstats
path: root/gui/basewindow.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2018-08-08 21:15:54 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2018-08-08 21:15:54 +0200
commit5dd7a74b874cae0bb8b22ef8a385e2546d3bd531 (patch)
tree3c9425eccdf9696f94ed8b0690cfb0110978103a /gui/basewindow.cc
parentbc378fc3e4bbb16251f4076384eb6aaf25ef79e3 (diff)
downloadnextpnr-5dd7a74b874cae0bb8b22ef8a385e2546d3bd531.tar.gz
nextpnr-5dd7a74b874cae0bb8b22ef8a385e2546d3bd531.tar.bz2
nextpnr-5dd7a74b874cae0bb8b22ef8a385e2546d3bd531.zip
Make loading works nice and use settings
Diffstat (limited to 'gui/basewindow.cc')
-rw-r--r--gui/basewindow.cc34
1 files changed, 20 insertions, 14 deletions
diff --git a/gui/basewindow.cc b/gui/basewindow.cc
index 857919ea..66df3ca4 100644
--- a/gui/basewindow.cc
+++ b/gui/basewindow.cc
@@ -298,12 +298,11 @@ void BaseMainWindow::createMenusAndBars()
void BaseMainWindow::load_json(std::string filename)
{
disableActions();
- currentJson = filename;
std::ifstream f(filename);
if (parse_json_file(f, filename, ctx.get())) {
log("Loading design successful.\n");
Q_EMIT updateTreeView();
- updateJsonLoaded();
+ updateLoaded();
} else {
actionLoadJSON->setEnabled(true);
log("Loading design failed.\n");
@@ -420,35 +419,42 @@ void BaseMainWindow::disableActions()
actionNew->setEnabled(true);
actionOpen->setEnabled(true);
- actionSave->setEnabled(!currentJson.empty());
+
+ if (ctx->settings.find(ctx->id("project/input/json")) != ctx->settings.end())
+ actionSave->setEnabled(true);
+ else
+ actionSave->setEnabled(false);
onDisableActions();
}
-void BaseMainWindow::updateJsonLoaded()
+void BaseMainWindow::updateLoaded()
{
disableActions();
actionPack->setEnabled(true);
onJsonLoaded();
+ 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()) {
- try {
- ProjectHandler proj;
- disableActions();
- ctx = proj.load(fileName.toStdString());
- Q_EMIT contextChanged(ctx.get());
- log_info("Loaded project %s...\n", fileName.toStdString().c_str());
- updateJsonLoaded();
- onProjectLoaded();
- } catch (log_execution_error_exception) {
- }
+ projectLoad(fileName.toStdString());
}
}
+void BaseMainWindow::notifyChangeContext() { Q_EMIT contextChanged(ctx.get()); }
void BaseMainWindow::save_proj()
{
if (currentProj.empty()) {