From fc3cae7a0a19a9de8b1ff0b418c79de8357d8cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Offringa?= <offringa@astron.nl> Date: Thu, 4 May 2023 16:34:19 +0200 Subject: [PATCH] Work in progress --- applications/rfigui.cpp | 19 ++++++++++++++----- util/progress/stdoutreporter.h | 14 +++++++++++++- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/applications/rfigui.cpp b/applications/rfigui.cpp index b8f7d674..99857222 100644 --- a/applications/rfigui.cpp +++ b/applications/rfigui.cpp @@ -4,6 +4,7 @@ #include "../rfigui/controllers/rfiguicontroller.h" #include "../util/logger.h" +#include "../util/progress/stdoutreporter.h" #include "../imagesets/msimageset.h" #include "../imagesets/msoptions.h" @@ -152,16 +153,24 @@ static void run(int argc, char* argv[]) { if (imageSet == nullptr) throw std::runtime_error( "Option -save-baseline can only be used for measurement sets.\n"); - MaskedHeatMap& plot = controller.TFController().Plot(); - plot.SetShowOriginalMask(plotFlags); - plot.SetShowXAxisDescription(true); - plot.SetShowYAxisDescription(true); - plot.SetShowZAxisDescription(true); for (const SavedBaseline& b : savedBaselines) { auto index = imageSet->Index(b.a1Index, b.a2Index, b.bandIndex, b.sequenceIndex); if (!index) throw std::runtime_error("Baseline not found!"); controller.SetImageSetIndex(*index); + StdOutReporter reporter; + reporter.SignalFinished().connect([&](bool success) { + std::cout << "FINISH\n"; + //controller.LoadCurrentTFDataFinish(success); + }); + std::thread thread( + [&]() { controller.LoadCurrentTFDataAsync(reporter); }); + thread.join(); + MaskedHeatMap& plot = controller.TFController().Plot(); + plot.SetShowOriginalMask(plotFlags); + plot.SetShowXAxisDescription(true); + plot.SetShowYAxisDescription(true); + plot.SetShowZAxisDescription(true); plot.SaveByExtension(b.filename, 800, 480); } } diff --git a/util/progress/stdoutreporter.h b/util/progress/stdoutreporter.h index 9ff62e78..9ae2a301 100644 --- a/util/progress/stdoutreporter.h +++ b/util/progress/stdoutreporter.h @@ -7,6 +7,8 @@ #include <string> #include <iostream> +#include <sigc++/signal.h> + class StdOutReporter final : public ProgressListener { public: void OnStartTask(const std::string& description) override { @@ -21,10 +23,20 @@ class StdOutReporter final : public ProgressListener { std::cout << '.' << std::flush; } } - void OnFinish() override { std::cout << "100\n"; } + void OnFinish() override { std::cout << "100\n"; _signalFinished(true); } void OnException(std::exception& thrown_exception) override { std::cerr << "ERROR! " << thrown_exception.what() << '\n'; + _signalError(thrown_exception.what()); + _signalFinished(false); + } + sigc::signal<void, bool /*errors occurred? */>& SignalFinished() { + return _signalFinished; } + sigc::signal<void, const std::string&>& SignalError() { return _signalError; } + +private: + sigc::signal<void, bool> _signalFinished; + sigc::signal<void, const std::string&> _signalError; }; #endif // UTIL_PROGRESS_STD_OUT_REPORTER_H_ -- GitLab