From 8be9cc72de5388ce1fc66b0ec8126b6ce577fa30 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Fri, 28 Feb 2025 12:20:12 -0500 Subject: [PATCH] Fall back to default color palette on failure to load color palette. --- scwx-qt/source/scwx/qt/map/map_widget.cpp | 42 +++++++++++++++++------ 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index b7e9abee..d2d480de 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -1866,26 +1866,48 @@ void MapWidgetImpl::InitializeNewRadarProductView( const std::string& colorPalette) { boost::asio::post(threadPool_, - [=, this]() + [colorPalette, this]() { try { auto radarProductView = context_->radar_product_view(); + auto& paletteSetting = + settings::PaletteSettings::Instance().palette( + colorPalette); + std::string colorTableFile = - settings::PaletteSettings::Instance() - .palette(colorPalette) - .GetValue(); - if (!colorTableFile.empty()) + paletteSetting.GetValue(); + if (colorTableFile.empty()) { - std::unique_ptr colorTableStream = - util::OpenFile(colorTableFile); - std::shared_ptr colorTable = - common::ColorTable::Load(*colorTableStream); - radarProductView->LoadColorTable(colorTable); + colorTableFile = paletteSetting.GetDefault(); } + std::unique_ptr colorTableStream = + util::OpenFile(colorTableFile); + if (colorTableStream->fail()) + { + logger_->warn("Could not open color table {}", + colorTableFile); + colorTableStream = + util::OpenFile(paletteSetting.GetDefault()); + } + + std::shared_ptr colorTable = + common::ColorTable::Load(*colorTableStream); + if (!colorTable->IsValid()) + { + logger_->warn("Could not load color table {}", + colorTableFile); + colorTableStream = + util::OpenFile(paletteSetting.GetDefault()); + colorTable = + common::ColorTable::Load(*colorTableStream); + } + + radarProductView->LoadColorTable(colorTable); + radarProductView->Initialize(); } catch (const std::exception& ex)