From 5dd7a74b874cae0bb8b22ef8a385e2546d3bd531 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 8 Aug 2018 21:15:54 +0200 Subject: Make loading works nice and use settings --- gui/basewindow.cc | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'gui/basewindow.cc') 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()) { -- cgit v1.2.3