mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 18:30:06 +00:00
Enable loading color palettes from embedded Qt resources
This commit is contained in:
parent
1f9392e9f6
commit
1d597eb120
8 changed files with 88 additions and 9 deletions
|
|
@ -156,6 +156,7 @@ set(UI_UI source/scwx/qt/ui/alert_dialog.ui
|
||||||
source/scwx/qt/ui/radar_site_dialog.ui
|
source/scwx/qt/ui/radar_site_dialog.ui
|
||||||
source/scwx/qt/ui/settings_dialog.ui)
|
source/scwx/qt/ui/settings_dialog.ui)
|
||||||
set(HDR_UTIL source/scwx/qt/util/color.hpp
|
set(HDR_UTIL source/scwx/qt/util/color.hpp
|
||||||
|
source/scwx/qt/util/file.hpp
|
||||||
source/scwx/qt/util/font.hpp
|
source/scwx/qt/util/font.hpp
|
||||||
source/scwx/qt/util/font_buffer.hpp
|
source/scwx/qt/util/font_buffer.hpp
|
||||||
source/scwx/qt/util/json.hpp
|
source/scwx/qt/util/json.hpp
|
||||||
|
|
@ -164,6 +165,7 @@ set(HDR_UTIL source/scwx/qt/util/color.hpp
|
||||||
source/scwx/qt/util/q_file_buffer.hpp
|
source/scwx/qt/util/q_file_buffer.hpp
|
||||||
source/scwx/qt/util/q_file_input_stream.hpp)
|
source/scwx/qt/util/q_file_input_stream.hpp)
|
||||||
set(SRC_UTIL source/scwx/qt/util/color.cpp
|
set(SRC_UTIL source/scwx/qt/util/color.cpp
|
||||||
|
source/scwx/qt/util/file.cpp
|
||||||
source/scwx/qt/util/font.cpp
|
source/scwx/qt/util/font.cpp
|
||||||
source/scwx/qt/util/font_buffer.cpp
|
source/scwx/qt/util/font_buffer.cpp
|
||||||
source/scwx/qt/util/json.cpp
|
source/scwx/qt/util/json.cpp
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,20 @@
|
||||||
<file>res/icons/font-awesome-6/sliders-solid.svg</file>
|
<file>res/icons/font-awesome-6/sliders-solid.svg</file>
|
||||||
<file>res/icons/font-awesome-6/square-minus-regular.svg</file>
|
<file>res/icons/font-awesome-6/square-minus-regular.svg</file>
|
||||||
<file>res/icons/font-awesome-6/square-plus-regular.svg</file>
|
<file>res/icons/font-awesome-6/square-plus-regular.svg</file>
|
||||||
|
<file>res/palettes/wct/CC.pal</file>
|
||||||
|
<file>res/palettes/wct/Default16.pal</file>
|
||||||
|
<file>res/palettes/wct/DOD_DSD.pal</file>
|
||||||
|
<file>res/palettes/wct/DR.pal</file>
|
||||||
|
<file>res/palettes/wct/DV.pal</file>
|
||||||
|
<file>res/palettes/wct/ET.pal</file>
|
||||||
|
<file>res/palettes/wct/KDP.pal</file>
|
||||||
|
<file>res/palettes/wct/KDP2.pal</file>
|
||||||
|
<file>res/palettes/wct/OHP.pal</file>
|
||||||
|
<file>res/palettes/wct/SRV.pal</file>
|
||||||
|
<file>res/palettes/wct/STP.pal</file>
|
||||||
|
<file>res/palettes/wct/SW.pal</file>
|
||||||
|
<file>res/palettes/wct/VIL.pal</file>
|
||||||
|
<file>res/palettes/wct/ZDR.pal</file>
|
||||||
<file>res/textures/lines/default-1x7.png</file>
|
<file>res/textures/lines/default-1x7.png</file>
|
||||||
<file>res/textures/lines/test-pattern.png</file>
|
<file>res/textures/lines/test-pattern.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include <scwx/qt/map/radar_product_layer.hpp>
|
#include <scwx/qt/map/radar_product_layer.hpp>
|
||||||
#include <scwx/qt/map/radar_range_layer.hpp>
|
#include <scwx/qt/map/radar_range_layer.hpp>
|
||||||
#include <scwx/qt/model/imgui_context_model.hpp>
|
#include <scwx/qt/model/imgui_context_model.hpp>
|
||||||
|
#include <scwx/qt/util/file.hpp>
|
||||||
#include <scwx/qt/view/radar_product_view_factory.hpp>
|
#include <scwx/qt/view/radar_product_view_factory.hpp>
|
||||||
#include <scwx/util/logger.hpp>
|
#include <scwx/util/logger.hpp>
|
||||||
#include <scwx/util/threads.hpp>
|
#include <scwx/util/threads.hpp>
|
||||||
|
|
@ -415,7 +416,7 @@ void MapWidget::SelectRadarProduct(
|
||||||
radarId,
|
radarId,
|
||||||
common::GetRadarProductGroupName(group),
|
common::GetRadarProductGroupName(group),
|
||||||
product,
|
product,
|
||||||
util::TimeString(time));
|
scwx::util::TimeString(time));
|
||||||
|
|
||||||
p->SetRadarSite(radarId);
|
p->SetRadarSite(radarId);
|
||||||
p->selectedTime_ = time;
|
p->selectedTime_ = time;
|
||||||
|
|
@ -796,7 +797,7 @@ void MapWidgetImpl::RadarProductManagerConnect()
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load file
|
// Load file
|
||||||
util::async(
|
scwx::util::async(
|
||||||
[=]()
|
[=]()
|
||||||
{
|
{
|
||||||
if (group == common::RadarProductGroup::Level2)
|
if (group == common::RadarProductGroup::Level2)
|
||||||
|
|
@ -830,7 +831,7 @@ void MapWidgetImpl::RadarProductManagerDisconnect()
|
||||||
void MapWidgetImpl::InitializeNewRadarProductView(
|
void MapWidgetImpl::InitializeNewRadarProductView(
|
||||||
const std::string& colorPalette)
|
const std::string& colorPalette)
|
||||||
{
|
{
|
||||||
util::async(
|
scwx::util::async(
|
||||||
[=]()
|
[=]()
|
||||||
{
|
{
|
||||||
auto radarProductView = context_->radar_product_view();
|
auto radarProductView = context_->radar_product_view();
|
||||||
|
|
@ -841,8 +842,10 @@ void MapWidgetImpl::InitializeNewRadarProductView(
|
||||||
.GetValue();
|
.GetValue();
|
||||||
if (!colorTableFile.empty())
|
if (!colorTableFile.empty())
|
||||||
{
|
{
|
||||||
|
std::unique_ptr<std::istream> colorTableStream =
|
||||||
|
util::OpenFile(colorTableFile);
|
||||||
std::shared_ptr<common::ColorTable> colorTable =
|
std::shared_ptr<common::ColorTable> colorTable =
|
||||||
common::ColorTable::Load(colorTableFile);
|
common::ColorTable::Load(*colorTableStream);
|
||||||
radarProductView->LoadColorTable(colorTable);
|
radarProductView->LoadColorTable(colorTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include <scwx/qt/settings/settings_interface.hpp>
|
#include <scwx/qt/settings/settings_interface.hpp>
|
||||||
#include <scwx/qt/ui/radar_site_dialog.hpp>
|
#include <scwx/qt/ui/radar_site_dialog.hpp>
|
||||||
#include <scwx/qt/util/color.hpp>
|
#include <scwx/qt/util/color.hpp>
|
||||||
|
#include <scwx/qt/util/file.hpp>
|
||||||
#include <scwx/util/logger.hpp>
|
#include <scwx/util/logger.hpp>
|
||||||
#include <scwx/util/threads.hpp>
|
#include <scwx/util/threads.hpp>
|
||||||
|
|
||||||
|
|
@ -557,8 +558,10 @@ void SettingsDialogImpl::LoadColorTablePreview(const std::string& key,
|
||||||
scwx::util::async(
|
scwx::util::async(
|
||||||
[key, value, imageLabel]()
|
[key, value, imageLabel]()
|
||||||
{
|
{
|
||||||
|
std::unique_ptr<std::istream> is = util::OpenFile(value);
|
||||||
std::shared_ptr<common::ColorTable> colorTable =
|
std::shared_ptr<common::ColorTable> colorTable =
|
||||||
common::ColorTable::Load(value);
|
common::ColorTable::Load(*is);
|
||||||
|
|
||||||
if (colorTable->IsValid())
|
if (colorTable->IsValid())
|
||||||
{
|
{
|
||||||
auto& conversions = kColorTableConversions_.at(key);
|
auto& conversions = kColorTableConversions_.at(key);
|
||||||
|
|
|
||||||
32
scwx-qt/source/scwx/qt/util/file.cpp
Normal file
32
scwx-qt/source/scwx/qt/util/file.cpp
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
#include <scwx/qt/util/file.hpp>
|
||||||
|
#include <scwx/qt/util/q_file_input_stream.hpp>
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace util
|
||||||
|
{
|
||||||
|
|
||||||
|
static const std::string logPrefix_ = "scwx::qt::util::file";
|
||||||
|
|
||||||
|
std::unique_ptr<std::istream> OpenFile(const std::string& filename,
|
||||||
|
std::ios_base::openmode mode)
|
||||||
|
{
|
||||||
|
if (filename.starts_with(':'))
|
||||||
|
{
|
||||||
|
return std::make_unique<QFileInputStream>(filename, mode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return std::make_unique<std::ifstream>(filename, mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace util
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
20
scwx-qt/source/scwx/qt/util/file.hpp
Normal file
20
scwx-qt/source/scwx/qt/util/file.hpp
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <istream>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace qt
|
||||||
|
{
|
||||||
|
namespace util
|
||||||
|
{
|
||||||
|
|
||||||
|
std::unique_ptr<std::istream>
|
||||||
|
OpenFile(const std::string& filename,
|
||||||
|
std::ios_base::openmode mode = std::ios_base::in);
|
||||||
|
|
||||||
|
} // namespace util
|
||||||
|
} // namespace qt
|
||||||
|
} // namespace scwx
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <istream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
@ -40,6 +41,7 @@ public:
|
||||||
bool IsValid() const;
|
bool IsValid() const;
|
||||||
|
|
||||||
static std::shared_ptr<ColorTable> Load(const std::string& filename);
|
static std::shared_ptr<ColorTable> Load(const std::string& filename);
|
||||||
|
static std::shared_ptr<ColorTable> Load(std::istream& is);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<ColorTableImpl> p;
|
std::unique_ptr<ColorTableImpl> p;
|
||||||
|
|
|
||||||
|
|
@ -137,13 +137,16 @@ bool ColorTable::IsValid() const
|
||||||
std::shared_ptr<ColorTable> ColorTable::Load(const std::string& filename)
|
std::shared_ptr<ColorTable> ColorTable::Load(const std::string& filename)
|
||||||
{
|
{
|
||||||
logger_->debug("Loading color table: {}", filename);
|
logger_->debug("Loading color table: {}", filename);
|
||||||
|
std::ifstream f(filename, std::ios_base::in);
|
||||||
|
return Load(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<ColorTable> ColorTable::Load(std::istream& is)
|
||||||
|
{
|
||||||
std::shared_ptr<ColorTable> p = std::make_shared<ColorTable>();
|
std::shared_ptr<ColorTable> p = std::make_shared<ColorTable>();
|
||||||
|
|
||||||
std::ifstream f(filename, std::ios_base::in);
|
|
||||||
|
|
||||||
std::string line;
|
std::string line;
|
||||||
while (scwx::util::getline(f, line))
|
while (scwx::util::getline(is, line))
|
||||||
{
|
{
|
||||||
std::string token;
|
std::string token;
|
||||||
std::istringstream tokens(line);
|
std::istringstream tokens(line);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue