aboutsummaryrefslogtreecommitdiffstats
path: root/gui/ice40/worker.h
diff options
context:
space:
mode:
Diffstat (limited to 'gui/ice40/worker.h')
-rw-r--r--gui/ice40/worker.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/gui/ice40/worker.h b/gui/ice40/worker.h
new file mode 100644
index 00000000..181fafa3
--- /dev/null
+++ b/gui/ice40/worker.h
@@ -0,0 +1,55 @@
+#ifndef WORKER_H
+#define WORKER_H
+
+#include <QMutex>
+#include <QThread>
+#include "nextpnr.h"
+
+NEXTPNR_NAMESPACE_BEGIN
+
+class TaskManager;
+
+class Worker : public QObject
+{
+ Q_OBJECT
+ public:
+ Worker(Context *ctx, TaskManager *parent);
+ public Q_SLOTS:
+ void parsejson(const std::string &filename);
+ Q_SIGNALS:
+ void log(const std::string &text);
+
+ private:
+ Context *ctx;
+};
+
+class TaskManager : public QObject
+{
+ Q_OBJECT
+ QThread workerThread;
+
+ public:
+ TaskManager(Context *ctx);
+ ~TaskManager();
+ bool shouldTerminate();
+ void clearTerminate();
+ bool isPaused();
+ public Q_SLOTS:
+ void info(const std::string &text);
+ void terminate_thread();
+ void pause_thread();
+ void continue_thread();
+ Q_SIGNALS:
+ void terminate();
+ void parsejson(const std::string &);
+ void log(const std::string &text);
+
+ private:
+ QMutex mutex;
+ bool toTerminate;
+ bool toPause;
+};
+
+NEXTPNR_NAMESPACE_END
+
+#endif // WORKER_H