src/relpipe-out-chart.cpp
branchv_0
changeset 13 c84042d014c9
parent 11 0f42346c8fc7
child 16 b6f790137bb8
--- a/src/relpipe-out-chart.cpp	Fri Sep 28 13:23:21 2018 +0200
+++ b/src/relpipe-out-chart.cpp	Sat Sep 29 00:43:16 2018 +0200
@@ -1,6 +1,7 @@
 #include <iostream>
 
 #include <QApplication>
+#include <QThread>
 
 #include <relpipe/cli/CLI.h>
 #include <relpipe/cli/RelpipeCLIException.h>
@@ -9,24 +10,60 @@
 #include <relpipe/reader/RelpipeReaderException.h>
 
 #include "RelpipeChartMainWindow.h"
+#include "QtRelationalReaderStringHadler.h"
 
 using namespace relpipe::cli;
 using namespace relpipe::reader;
 
+class WorkerThread : public QThread {
+private:
+	std::shared_ptr<RelationalReader> reader;
+public:
+
+	// TODO: better background thread; lambda?
+
+	WorkerThread(std::shared_ptr<RelationalReader> reader) :
+	reader(reader) {
+	}
+
+	void run() {
+		try {
+			reader->process();
+		} catch (RelpipeReaderException& e) {
+			// TODO: handle exception, show error dialog
+		}
+	}
+};
+
 int main(int argc, char**argv) {
 	CLI cli(argc, argv);
 	// TODO: argument name collisions? Filter arguments? Use prefix for Qt? Qt: -title, -style, -geometry
 	QApplication app(argc, argv);
-	
+
 	std::cout << "TODO: relpipe-out-chart..." << std::endl;
-	
+
 	std::shared_ptr<RelationalReader> reader(Factory::create(std::cin));
 
+
 	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
-	
+
 	RelpipeChartMainWindow window;
+
+	// TODO: remove; just demo
+	QObject::connect(&window, &RelpipeChartMainWindow::signal123, &window, &RelpipeChartMainWindow::slot123);
+
 	window.show();
-	
+
+	QtRelationalReaderStringHadler handler(&app, &window);
+	reader->addHandler(&handler);
+
+	// Start background thread
+	WorkerThread t(reader);
+	t.start();
+	// ---
+
+	// window.signal123();
+
 	app.exec();
 	//return app.exec();