Merge pull request #723 from YosysHQ/gatecat/fix-722
gui: Don't destroy context when loading JSON
This commit is contained in:
commit
5e18bb1735
@ -473,19 +473,24 @@ int CommandHandler::exec()
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<Context> CommandHandler::load_json(std::string filename)
|
||||
void CommandHandler::load_json(Context *ctx, std::string filename)
|
||||
{
|
||||
dict<std::string, Property> values;
|
||||
std::unique_ptr<Context> ctx = createContext(values);
|
||||
setupContext(ctx.get());
|
||||
setupArchContext(ctx.get());
|
||||
ctx->cells.clear();
|
||||
ctx->nets.clear();
|
||||
ctx->net_aliases.clear();
|
||||
ctx->ports.clear();
|
||||
ctx->hierarchy.clear();
|
||||
ctx->settings.erase(ctx->id("pack"));
|
||||
ctx->settings.erase(ctx->id("place"));
|
||||
ctx->settings.erase(ctx->id("route"));
|
||||
|
||||
setupContext(ctx);
|
||||
setupArchContext(ctx);
|
||||
{
|
||||
std::ifstream f(filename);
|
||||
if (!parse_json(f, filename, ctx.get()))
|
||||
if (!parse_json(f, filename, ctx))
|
||||
log_error("Loading design failed.\n");
|
||||
}
|
||||
customAfterLoad(ctx.get());
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void CommandHandler::clear() { vm.clear(); }
|
||||
|
@ -37,7 +37,7 @@ class CommandHandler
|
||||
virtual ~CommandHandler(){};
|
||||
|
||||
int exec();
|
||||
std::unique_ptr<Context> load_json(std::string filename);
|
||||
void load_json(Context *ctx, std::string filename);
|
||||
void clear();
|
||||
|
||||
protected:
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include <fstream>
|
||||
#include "designwidget.h"
|
||||
#include "fpgaviewwidget.h"
|
||||
#include "json_frontend.h"
|
||||
#include "jsonwrite.h"
|
||||
#include "log.h"
|
||||
#include "mainwindow.h"
|
||||
@ -364,8 +365,7 @@ void BaseMainWindow::open_json()
|
||||
QString fileName = QFileDialog::getOpenFileName(this, QString("Open JSON"), QString(), QString("*.json"));
|
||||
if (!fileName.isEmpty()) {
|
||||
disableActions();
|
||||
ctx = handler->load_json(fileName.toStdString());
|
||||
Q_EMIT contextChanged(ctx.get());
|
||||
handler->load_json(ctx.get(), fileName.toStdString());
|
||||
Q_EMIT updateTreeView();
|
||||
log("Loading design successful.\n");
|
||||
updateActions();
|
||||
|
Loading…
Reference in New Issue
Block a user