diff --git a/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.cpp b/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.cpp index 9a45da9c0532b0b17884f66cd7ed97ea893b63b2..dfb097bbde30f8720b101b7353f7a6a2fa5012c0 100644 --- a/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.cpp +++ b/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.cpp @@ -86,7 +86,18 @@ namespace visionx providerName = ""; frameRate = -1.0f; - outputPath = armarx::ArmarXDataPath::getHomePath(); + // Qt Moc does not seem to accept outputDirectory being a std::filesystem::path(). + { + if (const char* home = std::getenv("HOME")) + { + // ToDo: Replace with XDG_PICTURES_DIR standards when available. + outputDirectory = std::filesystem::path(home) / "Pictures"; + } + else + { + outputDirectory = std::filesystem::absolute("."); + } + } imageBufferSize = 100; bufferFps = 5; @@ -273,7 +284,7 @@ namespace visionx { properties.providerName = settings->value("providerName", "").toString().toStdString(); properties.frameRate = settings->value("frameRate", -1).toInt(); - properties.outputPath = settings->value("outputPath", ".").toString().toStdString(); + properties.outputDirectory = settings->value("outputPath", ".").toString().toStdString(); properties.imageBufferSize = settings->value("imageBufferSize", 99).toInt(); properties.bufferFps = settings->value("bufferFps", 5.0f).toFloat(); auto imagesToShowStringList = settings->value("imagesToShow", 0).toStringList(); @@ -297,7 +308,7 @@ namespace visionx { settings->setValue("providerName", QString(properties.providerName.c_str())); settings->setValue("frameRate", properties.frameRate); - settings->setValue("outputPath", QString(properties.outputPath.c_str())); + settings->setValue("outputPath", QString(properties.outputDirectory.c_str())); settings->setValue("imageBufferSize", properties.imageBufferSize); settings->setValue("bufferFps", QString::number(static_cast<double>(properties.bufferFps))); QStringList l; @@ -447,7 +458,7 @@ namespace visionx std::string ImageMonitorWidgetController::getAbsoluteOutputPath() { namespace fs = std::filesystem; - fs::path absPath = fs::absolute(fs::path(properties.outputPath)); + fs::path absPath = fs::absolute(fs::path(properties.outputDirectory)); return absPath.string(); } diff --git a/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.h b/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.h index 7ca3ae91fc5baf0b50650086665ae1fa9c4a9ac5..61bb4a47e675684a5ee82159508b78f1a0665d8b 100644 --- a/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.h +++ b/source/VisionX/gui-plugins/ImageMonitor/ImageMonitorWidgetController.h @@ -27,11 +27,15 @@ // STD/STL #include <mutex> #include <optional> +// <filesystem> needs to be down here. Otherwise, for some reason, +// the Qt AutoMoc will say: 'Parse error at "std"' +#include <filesystem> #include <queue> #include <set> #include <string> #include <vector> + // Boost #include <boost/circular_buffer.hpp> @@ -89,7 +93,7 @@ namespace visionx std::string providerName; int frameRate; - std::string outputPath; + std::filesystem::path outputDirectory; int imageBufferSize; float bufferFps; std::set<size_t> imagesToShow;