aboutsummaryrefslogtreecommitdiffstats
path: root/gui/ice40/worker.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2018-06-26 13:49:32 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2018-06-26 14:17:41 +0200
commite770f16a22d5255de53f23f9a95e8ef3fc664107 (patch)
tree19f8b93cbf57d009f4215ec80cbbe0411133c9a0 /gui/ice40/worker.cc
parent103dde79de25e2f9250b27134aa3d547d42408e2 (diff)
downloadnextpnr-e770f16a22d5255de53f23f9a95e8ef3fc664107.tar.gz
nextpnr-e770f16a22d5255de53f23f9a95e8ef3fc664107.tar.bz2
nextpnr-e770f16a22d5255de53f23f9a95e8ef3fc664107.zip
Added Save ASC option
Diffstat (limited to 'gui/ice40/worker.cc')
-rw-r--r--gui/ice40/worker.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/gui/ice40/worker.cc b/gui/ice40/worker.cc
index 9986ff3b..f6d6d261 100644
--- a/gui/ice40/worker.cc
+++ b/gui/ice40/worker.cc
@@ -80,6 +80,19 @@ void Worker::loadpcf(const std::string &filename)
}
}
+void Worker::saveasc(const std::string &filename)
+{
+ Q_EMIT taskStarted();
+ std::string fn = filename;
+ std::ofstream f(fn);
+ try {
+ write_asc(ctx, f);
+ Q_EMIT saveasc_finished(true);
+ } catch (WorkerInterruptionRequested) {
+ Q_EMIT taskCanceled();
+ }
+}
+
void Worker::pack()
{
Q_EMIT taskStarted();
@@ -132,6 +145,7 @@ TaskManager::TaskManager(Context *ctx) : toTerminate(false), toPause(false)
connect(this, &TaskManager::loadfile, worker, &Worker::loadfile);
connect(this, &TaskManager::loadpcf, worker, &Worker::loadpcf);
+ connect(this, &TaskManager::saveasc, worker, &Worker::saveasc);
connect(this, &TaskManager::pack, worker, &Worker::pack);
connect(this, &TaskManager::budget, worker, &Worker::budget);
connect(this, &TaskManager::place, worker, &Worker::place);
@@ -140,6 +154,7 @@ TaskManager::TaskManager(Context *ctx) : toTerminate(false), toPause(false)
connect(worker, &Worker::log, this, &TaskManager::info);
connect(worker, &Worker::loadfile_finished, this, &TaskManager::loadfile_finished);
connect(worker, &Worker::loadpcf_finished, this, &TaskManager::loadpcf_finished);
+ connect(worker, &Worker::saveasc_finished, this, &TaskManager::saveasc_finished);
connect(worker, &Worker::pack_finished, this, &TaskManager::pack_finished);
connect(worker, &Worker::budget_finish, this, &TaskManager::budget_finish);
connect(worker, &Worker::place_finished, this, &TaskManager::place_finished);