mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 02:00:05 +00:00 
			
		
		
		
	Merge pull request #288 from AdenKoperczak/add_qt6ct_darker_theme
Add qt6ct based fusion color palettes.
This commit is contained in:
		
						commit
						94bb3c9430
					
				
					 15 changed files with 465 additions and 224 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							|  | @ -37,3 +37,6 @@ | |||
| [submodule "external/maplibre-native"] | ||||
| 	path = external/maplibre-native | ||||
| 	url = https://github.com/dpaulat/maplibre-gl-native.git | ||||
| [submodule "external/qt6ct"] | ||||
| 	path = external/qt6ct | ||||
| 	url = https://github.com/trialuser02/qt6ct.git | ||||
|  |  | |||
|  | @ -35,6 +35,7 @@ Supercell Wx uses code from the following dependencies: | |||
| | [nunicode](https://bitbucket.org/alekseyt/nunicode/src/master/) | [MIT License](https://spdx.org/licenses/MIT.html) | Modified for MapLibre Native | | ||||
| | [OpenSSL](https://www.openssl.org/) | [OpenSSL License](https://spdx.org/licenses/OpenSSL.html) | | ||||
| | [Qt](https://www.qt.io/) | [GNU Lesser General Public License v3.0 only](https://spdx.org/licenses/LGPL-3.0-only.html) | Qt Core, Qt GUI, Qt Multimedia, Qt Network, Qt OpenGL, Qt Positioning, Qt Serial Port, Qt SQL, Qt SVG, Qt Widgets<br/>Additional Licenses: https://doc.qt.io/qt-6/licenses-used-in-qt.html | | ||||
| | [qt6ct](https://github.com/trialuser02/qt6ct) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | ||||
| | [re2](https://github.com/google/re2) | [BSD 3-Clause "New" or "Revised" License](https://spdx.org/licenses/BSD-3-Clause.html) | | ||||
| | [spdlog](https://github.com/gabime/spdlog) | [MIT License](https://spdx.org/licenses/MIT.html) | | ||||
| | [SQLite](https://www.sqlite.org/) | Public Domain | | ||||
|  | @ -67,6 +68,7 @@ Supercell Wx uses assets from the following sources: | |||
| | [Font Awesome Free](https://fontawesome.com/) | CC BY 4.0 License | | ||||
| | [Inconsolata](https://fonts.google.com/specimen/Inconsolata) | SIL Open Font License | | ||||
| | [NOAA's Weather and Climate Toolkit](https://www.ncdc.noaa.gov/wct/) | Public Domain | Default Color Tables | | ||||
| | [qt6ct](https://github.com/trialuser02/qt6ct) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | ||||
| | [Roboto Flex](https://fonts.google.com/specimen/Roboto+Flex) | SIL Open Font License | | ||||
| | [Supercell thunderstorm with dramatic clouds](https://www.shutterstock.com/image-photo/supercell-thunderstorm-dramatic-clouds-1354353521) | Shutterstock Standard License | Photo by John Sirlin | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										4
									
								
								external/CMakeLists.txt
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								external/CMakeLists.txt
									
										
									
									
										vendored
									
									
								
							|  | @ -11,7 +11,8 @@ set_property(DIRECTORY | |||
|              maplibre-native-qt.cmake | ||||
|              stb.cmake | ||||
|              textflowcpp.cmake | ||||
|              units.cmake) | ||||
|              units.cmake | ||||
|              qt6ct.cmake) | ||||
| 
 | ||||
| include(aws-sdk-cpp.cmake) | ||||
| include(date.cmake) | ||||
|  | @ -21,3 +22,4 @@ include(maplibre-native-qt.cmake) | |||
| include(stb.cmake) | ||||
| include(textflowcpp.cmake) | ||||
| include(units.cmake) | ||||
| include(qt6ct.cmake) | ||||
|  |  | |||
							
								
								
									
										1
									
								
								external/qt6ct
									
										
									
									
										vendored
									
									
										Submodule
									
								
							
							
						
						
									
										1
									
								
								external/qt6ct
									
										
									
									
										vendored
									
									
										Submodule
									
								
							|  | @ -0,0 +1 @@ | |||
| Subproject commit 55dba8704c0a748b0ce9f2d3cc2cf200ca3db464 | ||||
							
								
								
									
										43
									
								
								external/qt6ct.cmake
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								external/qt6ct.cmake
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | |||
| cmake_minimum_required(VERSION 3.16.0) | ||||
| set(PROJECT_NAME scwx-qt6ct) | ||||
| 
 | ||||
| find_package(QT NAMES Qt6 | ||||
|              COMPONENTS Gui | ||||
|              REQUIRED) | ||||
| find_package(Qt${QT_VERSION_MAJOR} | ||||
|              COMPONENTS Gui | ||||
|              REQUIRED) | ||||
| 
 | ||||
| #extract version from qt6ct.h | ||||
| file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/qt6ct/src/qt6ct-common/qt6ct.h" | ||||
|      QT6CT_VERSION_DATA REGEX "^#define[ \t]+QT6CT_VERSION_[A-Z]+[ \t]+[0-9]+.*$") | ||||
| 
 | ||||
| if(QT6CT_VERSION_DATA) | ||||
|   foreach(item IN ITEMS MAJOR MINOR) | ||||
|     string(REGEX REPLACE ".*#define[ \t]+QT6CT_VERSION_${item}[ \t]+([0-9]+).*" | ||||
|        "\\1" QT6CT_VERSION_${item} ${QT6CT_VERSION_DATA}) | ||||
|   endforeach() | ||||
|   set(QT6CT_VERSION "${QT6CT_VERSION_MAJOR}.${QT6CT_VERSION_MINOR}") | ||||
|   set(QT6CT_SOVERSION "${QT6CT_VERSION_MAJOR}") | ||||
|   message(STATUS "qt6ct version: ${QT6CT_VERSION}") | ||||
| else() | ||||
|   message(FATAL_ERROR "invalid header") | ||||
| endif() | ||||
| 
 | ||||
| set(app_SRCS | ||||
|   qt6ct/src/qt6ct-common/qt6ct.cpp | ||||
| ) | ||||
| 
 | ||||
| add_library(qt6ct-common STATIC ${app_SRCS}) | ||||
| set_target_properties(qt6ct-common PROPERTIES VERSION ${QT6CT_VERSION}) | ||||
| target_link_libraries(qt6ct-common PRIVATE Qt6::Gui) | ||||
| target_compile_definitions(qt6ct-common PRIVATE QT6CT_LIBRARY) | ||||
| 
 | ||||
| if (MSVC) | ||||
|     # Produce PDB file for debug | ||||
|     target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:/Zi>") | ||||
| else() | ||||
|     target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:-g>") | ||||
| endif() | ||||
| 
 | ||||
| target_include_directories( qt6ct-common INTERFACE qt6ct/src ) | ||||
|  | @ -21,7 +21,9 @@ find_package(Python COMPONENTS Interpreter) | |||
| find_package(SQLite3) | ||||
| 
 | ||||
| find_package(QT NAMES Qt6 | ||||
|              COMPONENTS Gui | ||||
|              COMPONENTS BuildInternals | ||||
|                         Core | ||||
|                         Gui | ||||
|                         LinguistTools | ||||
|                         Multimedia | ||||
|                         Network | ||||
|  | @ -30,10 +32,14 @@ find_package(QT NAMES Qt6 | |||
|                         Positioning | ||||
|                         SerialPort | ||||
|                         Svg | ||||
|                         Widgets REQUIRED) | ||||
|                         Widgets | ||||
|                         Sql | ||||
|              REQUIRED) | ||||
| 
 | ||||
| find_package(Qt${QT_VERSION_MAJOR} | ||||
|              COMPONENTS Gui | ||||
|              COMPONENTS BuildInternals | ||||
|                         Core | ||||
|                         Gui | ||||
|                         LinguistTools | ||||
|                         Multimedia | ||||
|                         Network | ||||
|  | @ -685,6 +691,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets | |||
|                                      GLEW::GLEW | ||||
|                                      glm::glm | ||||
|                                      imgui | ||||
|                                      qt6ct-common | ||||
|                                      SQLite::SQLite3 | ||||
|                                      wxdata) | ||||
| 
 | ||||
|  |  | |||
|  | @ -70,6 +70,13 @@ | |||
|         <file>res/palettes/wct/SW.pal</file> | ||||
|         <file>res/palettes/wct/VIL.pal</file> | ||||
|         <file>res/palettes/wct/ZDR.pal</file> | ||||
|         <file alias="res/qt6ct_colors/airy.conf">../external/qt6ct/colors/airy.conf</file> | ||||
|         <file alias="res/qt6ct_colors/darker.conf">../external/qt6ct/colors/darker.conf</file> | ||||
|         <file alias="res/qt6ct_colors/dusk.conf">../external/qt6ct/colors/dusk.conf</file> | ||||
|         <file alias="res/qt6ct_colors/ia_ora.conf">../external/qt6ct/colors/ia_ora.conf</file> | ||||
|         <file alias="res/qt6ct_colors/sand.conf">../external/qt6ct/colors/sand.conf</file> | ||||
|         <file alias="res/qt6ct_colors/simple.conf">../external/qt6ct/colors/simple.conf</file> | ||||
|         <file alias="res/qt6ct_colors/waves.conf">../external/qt6ct/colors/waves.conf</file> | ||||
|         <file>res/textures/lines/default-1x7.png</file> | ||||
|         <file>res/textures/lines/test-pattern.png</file> | ||||
|         <file>res/textures/images/cursor-17.png</file> | ||||
|  |  | |||
|  | @ -27,6 +27,12 @@ | |||
| #include <QStandardPaths> | ||||
| #include <QStyleHints> | ||||
| #include <QTranslator> | ||||
| #include <QPalette> | ||||
| #include <QStyle> | ||||
| 
 | ||||
| #define QT6CT_LIBRARY | ||||
| #include <qt6ct-common/qt6ct.h> | ||||
| #undef QT6CT_LIBRARY | ||||
| 
 | ||||
| static const std::string logPrefix_ = "scwx::main"; | ||||
| static const auto        logger_    = scwx::util::Logger::Create(logPrefix_); | ||||
|  | @ -162,6 +168,33 @@ static void ConfigureTheme(const std::vector<std::string>& args) | |||
|    } | ||||
| 
 | ||||
|    QGuiApplication::styleHints()->setColorScheme(qtColorScheme); | ||||
| 
 | ||||
|    std::optional<std::string> paletteFile; | ||||
|    if (uiStyle == scwx::qt::types::UiStyle::FusionCustom) { | ||||
|       paletteFile = generalSettings.theme_file().GetValue(); | ||||
|    } | ||||
|    else | ||||
|    { | ||||
|       paletteFile = scwx::qt::types::GetQtPaletteFile(uiStyle); | ||||
|    } | ||||
| 
 | ||||
|    if (paletteFile) | ||||
|    { | ||||
|       QPalette defaultPalette = QApplication::style()->standardPalette(); | ||||
|       QPalette palette        = Qt6CT::loadColorScheme( | ||||
|          QString::fromStdString(*paletteFile), defaultPalette); | ||||
| 
 | ||||
|       if (defaultPalette == palette) | ||||
|       { | ||||
|          logger_->warn("Failed to load palette file '{}'", *paletteFile); | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|          logger_->info("Loaded palette file '{}'", *paletteFile); | ||||
|       } | ||||
| 
 | ||||
|       QApplication::setPalette(palette); | ||||
|    } | ||||
| } | ||||
| 
 | ||||
| static void | ||||
|  |  | |||
|  | @ -73,6 +73,7 @@ public: | |||
|       showMapCenter_.SetDefault(false); | ||||
|       showMapLogo_.SetDefault(true); | ||||
|       theme_.SetDefault(defaultThemeValue); | ||||
|       themeFile_.SetDefault(""); | ||||
|       trackLocation_.SetDefault(false); | ||||
|       updateNotificationsEnabled_.SetDefault(true); | ||||
|       warningsProvider_.SetDefault(defaultWarningsProviderValue); | ||||
|  | @ -161,6 +162,7 @@ public: | |||
|    SettingsVariable<bool>         showMapCenter_ {"show_map_center"}; | ||||
|    SettingsVariable<bool>         showMapLogo_ {"show_map_logo"}; | ||||
|    SettingsVariable<std::string>  theme_ {"theme"}; | ||||
|    SettingsVariable<std::string>  themeFile_ {"theme_file"}; | ||||
|    SettingsVariable<bool>         trackLocation_ {"track_location"}; | ||||
|    SettingsVariable<bool> updateNotificationsEnabled_ {"update_notifications"}; | ||||
|    SettingsVariable<std::string> warningsProvider_ {"warnings_provider"}; | ||||
|  | @ -193,6 +195,7 @@ GeneralSettings::GeneralSettings() : | |||
|                       &p->showMapCenter_, | ||||
|                       &p->showMapLogo_, | ||||
|                       &p->theme_, | ||||
|                       &p->themeFile_, | ||||
|                       &p->trackLocation_, | ||||
|                       &p->updateNotificationsEnabled_, | ||||
|                       &p->warningsProvider_}); | ||||
|  | @ -325,6 +328,11 @@ SettingsVariable<std::string>& GeneralSettings::theme() const | |||
|    return p->theme_; | ||||
| } | ||||
| 
 | ||||
| SettingsVariable<std::string>& GeneralSettings::theme_file() const | ||||
| { | ||||
|    return p->themeFile_; | ||||
| } | ||||
| 
 | ||||
| SettingsVariable<bool>& GeneralSettings::track_location() const | ||||
| { | ||||
|    return p->trackLocation_; | ||||
|  | @ -385,6 +393,7 @@ bool operator==(const GeneralSettings& lhs, const GeneralSettings& rhs) | |||
|            lhs.p->showMapCenter_ == rhs.p->showMapCenter_ && | ||||
|            lhs.p->showMapLogo_ == rhs.p->showMapLogo_ && | ||||
|            lhs.p->theme_ == rhs.p->theme_ && | ||||
|            lhs.p->themeFile_ == rhs.p->themeFile_ && | ||||
|            lhs.p->trackLocation_ == rhs.p->trackLocation_ && | ||||
|            lhs.p->updateNotificationsEnabled_ == | ||||
|               rhs.p->updateNotificationsEnabled_ && | ||||
|  |  | |||
|  | @ -49,6 +49,7 @@ public: | |||
|    SettingsVariable<bool>&                       show_map_center() const; | ||||
|    SettingsVariable<bool>&                       show_map_logo() const; | ||||
|    SettingsVariable<std::string>&                theme() const; | ||||
|    SettingsVariable<std::string>&                theme_file() const; | ||||
|    SettingsVariable<bool>&                       track_location() const; | ||||
|    SettingsVariable<bool>&        update_notifications_enabled() const; | ||||
|    SettingsVariable<std::string>& warnings_provider() const; | ||||
|  |  | |||
|  | @ -15,6 +15,13 @@ static const std::unordered_map<UiStyle, std::string> qtStyleName_ { | |||
|    {UiStyle::Fusion, "Fusion"}, | ||||
|    {UiStyle::FusionLight, "Fusion"}, | ||||
|    {UiStyle::FusionDark, "Fusion"}, | ||||
|    {UiStyle::FusionAiry, "Fusion"}, | ||||
|    {UiStyle::FusionDarker, "Fusion"}, | ||||
|    {UiStyle::FusionDusk, "Fusion"}, | ||||
|    {UiStyle::FusionIaOra, "Fusion"}, | ||||
|    {UiStyle::FusionSand, "Fusion"}, | ||||
|    {UiStyle::FusionWaves, "Fusion"}, | ||||
|    {UiStyle::FusionCustom, "Fusion"}, | ||||
|    {UiStyle::Unknown, "?"}}; | ||||
| 
 | ||||
| static const std::unordered_map<UiStyle, std::string> uiStyleName_ { | ||||
|  | @ -22,6 +29,13 @@ static const std::unordered_map<UiStyle, std::string> uiStyleName_ { | |||
|    {UiStyle::Fusion, "Fusion"}, | ||||
|    {UiStyle::FusionLight, "Fusion Light"}, | ||||
|    {UiStyle::FusionDark, "Fusion Dark"}, | ||||
|    {UiStyle::FusionAiry, "Fusion Airy"}, | ||||
|    {UiStyle::FusionDarker, "Fusion Darker"}, | ||||
|    {UiStyle::FusionDusk, "Fusion Dusk"}, | ||||
|    {UiStyle::FusionIaOra, "Fusion IA Ora"}, | ||||
|    {UiStyle::FusionSand, "Fusion Sand"}, | ||||
|    {UiStyle::FusionWaves, "Fusion Waves"}, | ||||
|    {UiStyle::FusionCustom, "Fusion Custom"}, | ||||
|    {UiStyle::Unknown, "?"}}; | ||||
| 
 | ||||
| static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ { | ||||
|  | @ -29,8 +43,23 @@ static const std::unordered_map<UiStyle, Qt::ColorScheme> qtColorSchemeMap_ { | |||
|    {UiStyle::Fusion, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionLight, Qt::ColorScheme::Light}, | ||||
|    {UiStyle::FusionDark, Qt::ColorScheme::Dark}, | ||||
|    {UiStyle::FusionAiry, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionDarker, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionDusk, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionIaOra, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionSand, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionWaves, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::FusionCustom, Qt::ColorScheme::Unknown}, | ||||
|    {UiStyle::Unknown, Qt::ColorScheme::Unknown}}; | ||||
| 
 | ||||
| static const std::unordered_map<UiStyle, std::string> paletteFile_ { | ||||
|    {UiStyle::FusionAiry, ":res/qt6ct_colors/airy.conf"}, | ||||
|    {UiStyle::FusionDarker, ":res/qt6ct_colors/darker.conf"}, | ||||
|    {UiStyle::FusionDusk, ":res/qt6ct_colors/dusk.conf"}, | ||||
|    {UiStyle::FusionIaOra, ":res/qt6ct_colors/ia_ora.conf"}, | ||||
|    {UiStyle::FusionSand, ":res/qt6ct_colors/sand.conf"}, | ||||
|    {UiStyle::FusionWaves, ":res/qt6ct_colors/waves.conf"}}; | ||||
| 
 | ||||
| SCWX_GET_ENUM(UiStyle, GetUiStyle, uiStyleName_) | ||||
| 
 | ||||
| Qt::ColorScheme GetQtColorScheme(UiStyle uiStyle) | ||||
|  | @ -43,6 +72,16 @@ std::string GetQtStyleName(UiStyle uiStyle) | |||
|    return qtStyleName_.at(uiStyle); | ||||
| } | ||||
| 
 | ||||
| std::optional<std::string> GetQtPaletteFile(UiStyle uiStyle) | ||||
| { | ||||
|    if (paletteFile_.contains(uiStyle)) | ||||
|    { | ||||
|       return paletteFile_.at(uiStyle); | ||||
|    } | ||||
| 
 | ||||
|    return std::nullopt; | ||||
| } | ||||
| 
 | ||||
| std::string GetUiStyleName(UiStyle uiStyle) | ||||
| { | ||||
|    return uiStyleName_.at(uiStyle); | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| #include <scwx/util/iterator.hpp> | ||||
| 
 | ||||
| #include <optional> | ||||
| #include <string> | ||||
| 
 | ||||
| #include <Qt> | ||||
|  | @ -26,14 +27,23 @@ enum class UiStyle | |||
|    Fusion, | ||||
|    FusionLight, | ||||
|    FusionDark, | ||||
|    FusionAiry, | ||||
|    FusionDarker, | ||||
|    FusionDusk, | ||||
|    FusionIaOra, | ||||
|    FusionSand, | ||||
|    FusionWaves, | ||||
|    FusionCustom, | ||||
|    Unknown | ||||
| }; | ||||
| typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionDark> | ||||
| typedef scwx::util::Iterator<UiStyle, UiStyle::Default, UiStyle::FusionCustom> | ||||
|    UiStyleIterator; | ||||
| 
 | ||||
| Qt::ColorScheme            GetQtColorScheme(UiStyle uiStyle); | ||||
| std::string                GetQtStyleName(UiStyle uiStyle); | ||||
| 
 | ||||
| std::optional<std::string> GetQtPaletteFile(UiStyle uiStyle); | ||||
| 
 | ||||
| UiStyle     GetUiStyle(const std::string& name); | ||||
| std::string GetUiStyleName(UiStyle uiStyle); | ||||
| 
 | ||||
|  |  | |||
|  | @ -121,6 +121,7 @@ public: | |||
|           &mapboxApiKey_, | ||||
|           &mapTilerApiKey_, | ||||
|           &theme_, | ||||
|           &themeFile_, | ||||
|           &defaultAlertAction_, | ||||
|           &clockFormat_, | ||||
|           &customStyleDrawLayer_, | ||||
|  | @ -242,6 +243,7 @@ public: | |||
|    settings::SettingsInterface<std::int64_t> nmeaBaudRate_ {}; | ||||
|    settings::SettingsInterface<std::string>  nmeaSource_ {}; | ||||
|    settings::SettingsInterface<std::string>  theme_ {}; | ||||
|    settings::SettingsInterface<std::string>  themeFile_ {}; | ||||
|    settings::SettingsInterface<std::string>  warningsProvider_ {}; | ||||
|    settings::SettingsInterface<bool>         antiAliasingEnabled_ {}; | ||||
|    settings::SettingsInterface<bool>         showMapAttribution_ {}; | ||||
|  | @ -519,6 +521,21 @@ void SettingsDialogImpl::SetupGeneralTab() | |||
|    settings::GeneralSettings& generalSettings = | ||||
|       settings::GeneralSettings::Instance(); | ||||
| 
 | ||||
| 
 | ||||
|    QObject::connect( | ||||
|          self_->ui->themeComboBox, | ||||
|          &QComboBox::currentTextChanged, | ||||
|          self_, | ||||
|          [this](const QString& text) | ||||
|          { | ||||
|             types::UiStyle style = types::GetUiStyle(text.toStdString()); | ||||
|             bool themeFileEnabled = style == types::UiStyle::FusionCustom; | ||||
| 
 | ||||
|             self_->ui->themeFileLineEdit->setEnabled(themeFileEnabled); | ||||
|             self_->ui->themeFileSelectButton->setEnabled(themeFileEnabled); | ||||
|             self_->ui->resetThemeFileButton->setEnabled(themeFileEnabled); | ||||
|          }); | ||||
| 
 | ||||
|    theme_.SetSettingsVariable(generalSettings.theme()); | ||||
|    SCWX_SETTINGS_COMBO_BOX(theme_, | ||||
|                            self_->ui->themeComboBox, | ||||
|  | @ -526,6 +543,45 @@ void SettingsDialogImpl::SetupGeneralTab() | |||
|                            types::GetUiStyleName); | ||||
|    theme_.SetResetButton(self_->ui->resetThemeButton); | ||||
| 
 | ||||
|    themeFile_.SetSettingsVariable(generalSettings.theme_file()); | ||||
|    themeFile_.SetEditWidget(self_->ui->themeFileLineEdit); | ||||
|    themeFile_.SetResetButton(self_->ui->resetThemeFileButton); | ||||
|    themeFile_.EnableTrimming(); | ||||
| 
 | ||||
|    QObject::connect( | ||||
|       self_->ui->themeFileSelectButton, | ||||
|       &QAbstractButton::clicked, | ||||
|       self_, | ||||
|       [this]() | ||||
|       { | ||||
|          static const std::string themeFilter = "Qt6Ct Theme File (*.conf)"; | ||||
|          static const std::string allFilter   = "All Files (*)"; | ||||
| 
 | ||||
|          QFileDialog* dialog = new QFileDialog(self_); | ||||
| 
 | ||||
|          dialog->setFileMode(QFileDialog::ExistingFile); | ||||
| 
 | ||||
|          dialog->setNameFilters( | ||||
|             {QObject::tr(themeFilter.c_str()), QObject::tr(allFilter.c_str())}); | ||||
|          dialog->setAttribute(Qt::WA_DeleteOnClose); | ||||
| 
 | ||||
|          QObject::connect( | ||||
|             dialog, | ||||
|             &QFileDialog::fileSelected, | ||||
|             self_, | ||||
|             [this](const QString& file) | ||||
|             { | ||||
|                QString path = QDir::toNativeSeparators(file); | ||||
|                logger_->info("Selected theme file: {}", path.toStdString()); | ||||
|                self_->ui->themeFileLineEdit->setText(path); | ||||
| 
 | ||||
|                // setText does not emit the textEdited signal
 | ||||
|                Q_EMIT self_->ui->themeFileLineEdit->textEdited(path); | ||||
|             }); | ||||
| 
 | ||||
|          dialog->open(); | ||||
|       }); | ||||
| 
 | ||||
|    auto radarSites = config::RadarSite::GetAll(); | ||||
| 
 | ||||
|    // Sort radar sites by ID
 | ||||
|  |  | |||
|  | @ -135,9 +135,9 @@ | |||
|               <property name="geometry"> | ||||
|                <rect> | ||||
|                 <x>0</x> | ||||
|                 <y>0</y> | ||||
|                 <width>513</width> | ||||
|                 <height>622</height> | ||||
|                 <y>-133</y> | ||||
|                 <width>511</width> | ||||
|                 <height>676</height> | ||||
|                </rect> | ||||
|               </property> | ||||
|               <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|  | @ -159,15 +159,39 @@ | |||
|                   <property name="bottomMargin"> | ||||
|                    <number>0</number> | ||||
|                   </property> | ||||
|                   <item row="13" column="0"> | ||||
|                    <widget class="QLabel" name="label_6"> | ||||
|                   <item row="3" column="3"> | ||||
|                    <widget class="QToolButton" name="radarSiteSelectButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>MapTiler API Key</string> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="6" column="4"> | ||||
|                    <widget class="QToolButton" name="resetGridHeightButton"> | ||||
|                   <item row="12" column="0"> | ||||
|                    <widget class="QLabel" name="label_4"> | ||||
|                     <property name="text"> | ||||
|                      <string>Mapbox API Key</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="15" column="0"> | ||||
|                    <widget class="QLabel" name="label_27"> | ||||
|                     <property name="text"> | ||||
|                      <string>Custom Map Layer</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="3" column="2"> | ||||
|                    <widget class="QComboBox" name="radarSiteComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="8" column="0"> | ||||
|                    <widget class="QLabel" name="label_23"> | ||||
|                     <property name="text"> | ||||
|                      <string>GPS Plugin</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="9" column="4"> | ||||
|                    <widget class="QToolButton" name="resetNmeaSourceButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -180,15 +204,18 @@ | |||
|                   <item row="11" column="2"> | ||||
|                    <widget class="QComboBox" name="mapProviderComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="4" column="0"> | ||||
|                    <widget class="QLabel" name="label_21"> | ||||
|                   <item row="14" column="2"> | ||||
|                    <widget class="QLineEdit" name="customMapUrlLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="9" column="3"> | ||||
|                    <widget class="QToolButton" name="gpsSourceSelectButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>Default Time Zone</string> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="12" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapboxApiKeyButton"> | ||||
|                   <item row="15" column="4"> | ||||
|                    <widget class="QToolButton" name="resetCustomMapLayerButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -198,30 +225,34 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="6" column="2"> | ||||
|                    <widget class="QSpinBox" name="gridHeightSpinBox"/> | ||||
|                   </item> | ||||
|                   <item row="4" column="4"> | ||||
|                    <widget class="QToolButton" name="resetDefaultTimeZoneButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="11" column="0"> | ||||
|                    <widget class="QLabel" name="label_7"> | ||||
|                     <property name="text"> | ||||
|                      <string>Map Provider</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="4" column="2"> | ||||
|                    <widget class="QComboBox" name="defaultTimeZoneComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="6" column="2"> | ||||
|                    <widget class="QSpinBox" name="gridHeightSpinBox"/> | ||||
|                   </item> | ||||
|                   <item row="11" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapProviderButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="14" column="4"> | ||||
|                    <widget class="QToolButton" name="resetCustomMapUrlButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="18" column="4"> | ||||
|                    <widget class="QToolButton" name="resetThemeButton"> | ||||
|                     <property name="text"> | ||||
|  | @ -233,77 +264,9 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="1" column="2"> | ||||
|                    <widget class="QComboBox" name="clockFormatComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="3" column="2"> | ||||
|                    <widget class="QComboBox" name="radarSiteComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="9" column="3"> | ||||
|                    <widget class="QToolButton" name="gpsSourceSelectButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="12" column="2"> | ||||
|                    <widget class="QLineEdit" name="mapboxApiKeyLineEdit"> | ||||
|                     <property name="echoMode"> | ||||
|                      <enum>QLineEdit::EchoMode::Password</enum> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="8" column="0"> | ||||
|                    <widget class="QLabel" name="label_23"> | ||||
|                     <property name="text"> | ||||
|                      <string>GPS Plugin</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="10" column="0"> | ||||
|                    <widget class="QLabel" name="label_24"> | ||||
|                     <property name="text"> | ||||
|                      <string>GPS Baud Rate</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="5" column="2"> | ||||
|                    <widget class="QSpinBox" name="gridWidthSpinBox"/> | ||||
|                   </item> | ||||
|                   <item row="3" column="3"> | ||||
|                    <widget class="QToolButton" name="radarSiteSelectButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="21" column="4"> | ||||
|                    <widget class="QToolButton" name="resetWarningsProviderButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="5" column="0"> | ||||
|                    <widget class="QLabel" name="label_2"> | ||||
|                     <property name="text"> | ||||
|                      <string>Grid Width</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="9" column="2"> | ||||
|                    <widget class="QLineEdit" name="nmeaSourceLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="18" column="2"> | ||||
|                    <widget class="QComboBox" name="themeComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="8" column="2"> | ||||
|                    <widget class="QComboBox" name="positioningPluginComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="9" column="0"> | ||||
|                    <widget class="QLabel" name="label_25"> | ||||
|                     <property name="text"> | ||||
|  | @ -311,9 +274,16 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="21" column="2"> | ||||
|                   <item row="22" column="2"> | ||||
|                    <widget class="QLineEdit" name="warningsProviderLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="22" column="0"> | ||||
|                    <widget class="QLabel" name="label_22"> | ||||
|                     <property name="text"> | ||||
|                      <string>Warnings Provider</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="3" column="0"> | ||||
|                    <widget class="QLabel" name="label"> | ||||
|                     <property name="text"> | ||||
|  | @ -339,8 +309,8 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="2" column="4"> | ||||
|                    <widget class="QToolButton" name="resetDefaultAlertActionButton"> | ||||
|                   <item row="13" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapTilerApiKeyButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -350,45 +320,66 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="18" column="0"> | ||||
|                    <widget class="QLabel" name="label_5"> | ||||
|                     <property name="text"> | ||||
|                      <string>Theme</string> | ||||
|                   <item row="10" column="2"> | ||||
|                    <widget class="QSpinBox" name="nmeaBaudRateSpinBox"> | ||||
|                     <property name="minimum"> | ||||
|                      <number>1</number> | ||||
|                     </property> | ||||
|                     <property name="maximum"> | ||||
|                      <number>999999999</number> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="1" column="4"> | ||||
|                    <widget class="QToolButton" name="resetClockFormatButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="12" column="0"> | ||||
|                    <widget class="QLabel" name="label_4"> | ||||
|                     <property name="text"> | ||||
|                      <string>Mapbox API Key</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="1" column="0"> | ||||
|                    <widget class="QLabel" name="label_20"> | ||||
|                     <property name="text"> | ||||
|                      <string>Clock Format</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="13" column="2"> | ||||
|                    <widget class="QLineEdit" name="mapTilerApiKeyLineEdit"> | ||||
|                   <item row="12" column="2"> | ||||
|                    <widget class="QLineEdit" name="mapboxApiKeyLineEdit"> | ||||
|                     <property name="echoMode"> | ||||
|                      <enum>QLineEdit::EchoMode::Password</enum> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="22" column="4"> | ||||
|                    <widget class="QToolButton" name="resetWarningsProviderButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="9" column="2"> | ||||
|                    <widget class="QLineEdit" name="nmeaSourceLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="10" column="0"> | ||||
|                    <widget class="QLabel" name="label_24"> | ||||
|                     <property name="text"> | ||||
|                      <string>GPS Baud Rate</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="6" column="4"> | ||||
|                    <widget class="QToolButton" name="resetGridHeightButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="12" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapboxApiKeyButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="5" column="4"> | ||||
|                    <widget class="QToolButton" name="resetGridWidthButton"> | ||||
|                     <property name="text"> | ||||
|  | @ -400,8 +391,8 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="13" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapTilerApiKeyButton"> | ||||
|                   <item row="4" column="4"> | ||||
|                    <widget class="QToolButton" name="resetDefaultTimeZoneButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -411,35 +402,56 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="11" column="0"> | ||||
|                    <widget class="QLabel" name="label_7"> | ||||
|                     <property name="text"> | ||||
|                      <string>Map Provider</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="5" column="2"> | ||||
|                    <widget class="QSpinBox" name="gridWidthSpinBox"/> | ||||
|                   </item> | ||||
|                   <item row="18" column="0"> | ||||
|                    <widget class="QLabel" name="label_5"> | ||||
|                     <property name="text"> | ||||
|                      <string>Theme</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="13" column="0"> | ||||
|                    <widget class="QLabel" name="label_6"> | ||||
|                     <property name="text"> | ||||
|                      <string>MapTiler API Key</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="1" column="4"> | ||||
|                    <widget class="QToolButton" name="resetClockFormatButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="15" column="2"> | ||||
|                    <widget class="QLineEdit" name="customMapLayerLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="14" column="0"> | ||||
|                    <widget class="QLabel" name="label_26"> | ||||
|                     <property name="text"> | ||||
|                      <string>Custom Map URL</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="2" column="2"> | ||||
|                    <widget class="QComboBox" name="defaultAlertActionComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="21" column="0"> | ||||
|                    <widget class="QLabel" name="label_22"> | ||||
|                     <property name="text"> | ||||
|                      <string>Warnings Provider</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="10" column="2"> | ||||
|                    <widget class="QSpinBox" name="nmeaBaudRateSpinBox"> | ||||
|                     <property name="minimum"> | ||||
|                      <number>1</number> | ||||
|                     </property> | ||||
|                     <property name="maximum"> | ||||
|                      <number>999999999</number> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="2" column="0"> | ||||
|                    <widget class="QLabel" name="defaultAlertActionLabel"> | ||||
|                     <property name="text"> | ||||
|                      <string>Default Alert Action</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="11" column="4"> | ||||
|                    <widget class="QToolButton" name="resetMapProviderButton"> | ||||
|                   <item row="10" column="4"> | ||||
|                    <widget class="QToolButton" name="resetNmeaBaudRateButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -449,6 +461,38 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="1" column="0"> | ||||
|                    <widget class="QLabel" name="label_20"> | ||||
|                     <property name="text"> | ||||
|                      <string>Clock Format</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="2" column="4"> | ||||
|                    <widget class="QToolButton" name="resetDefaultAlertActionButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="5" column="0"> | ||||
|                    <widget class="QLabel" name="label_2"> | ||||
|                     <property name="text"> | ||||
|                      <string>Grid Width</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="13" column="2"> | ||||
|                    <widget class="QLineEdit" name="mapTilerApiKeyLineEdit"> | ||||
|                     <property name="echoMode"> | ||||
|                      <enum>QLineEdit::EchoMode::Password</enum> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="8" column="4"> | ||||
|                    <widget class="QToolButton" name="resetPositioningPluginButton"> | ||||
|                     <property name="text"> | ||||
|  | @ -460,61 +504,45 @@ | |||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="9" column="4"> | ||||
|                    <widget class="QToolButton" name="resetNmeaSourceButton"> | ||||
|                   <item row="4" column="0"> | ||||
|                    <widget class="QLabel" name="label_21"> | ||||
|                     <property name="text"> | ||||
|                      <string>Default Time Zone</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="2" column="0"> | ||||
|                    <widget class="QLabel" name="defaultAlertActionLabel"> | ||||
|                     <property name="text"> | ||||
|                      <string>Default Alert Action</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="8" column="2"> | ||||
|                    <widget class="QComboBox" name="positioningPluginComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="1" column="2"> | ||||
|                    <widget class="QComboBox" name="clockFormatComboBox"/> | ||||
|                   </item> | ||||
|                   <item row="19" column="0"> | ||||
|                    <widget class="QLabel" name="label_30"> | ||||
|                     <property name="text"> | ||||
|                      <string>Theme File</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="19" column="2"> | ||||
|                    <widget class="QLineEdit" name="themeFileLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="19" column="3"> | ||||
|                    <widget class="QToolButton" name="themeFileSelectButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="10" column="4"> | ||||
|                    <widget class="QToolButton" name="resetNmeaBaudRateButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="14" column="2"> | ||||
|                    <widget class="QLineEdit" name="customMapUrlLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="15" column="2"> | ||||
|                    <widget class="QLineEdit" name="customMapLayerLineEdit"/> | ||||
|                   </item> | ||||
|                   <item row="14" column="0"> | ||||
|                    <widget class="QLabel" name="label_26"> | ||||
|                     <property name="text"> | ||||
|                      <string>Custom Map URL</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="15" column="0"> | ||||
|                    <widget class="QLabel" name="label_27"> | ||||
|                     <property name="text"> | ||||
|                      <string>Custom Map Layer</string> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="14" column="4"> | ||||
|                    <widget class="QToolButton" name="resetCustomMapUrlButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|                     <property name="icon"> | ||||
|                      <iconset resource="../../../../scwx-qt.qrc"> | ||||
|                       <normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</normaloff>:/res/icons/font-awesome-6/rotate-left-solid.svg</iconset> | ||||
|                     </property> | ||||
|                    </widget> | ||||
|                   </item> | ||||
|                   <item row="15" column="4"> | ||||
|                    <widget class="QToolButton" name="resetCustomMapLayerButton"> | ||||
|                   <item row="19" column="4"> | ||||
|                    <widget class="QToolButton" name="resetThemeFileButton"> | ||||
|                     <property name="text"> | ||||
|                      <string>...</string> | ||||
|                     </property> | ||||
|  | @ -610,8 +638,8 @@ | |||
|                    <rect> | ||||
|                     <x>0</x> | ||||
|                     <y>0</y> | ||||
|                     <width>506</width> | ||||
|                     <height>383</height> | ||||
|                     <width>98</width> | ||||
|                     <height>28</height> | ||||
|                    </rect> | ||||
|                   </property> | ||||
|                   <layout class="QGridLayout" name="gridLayout_3"> | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| Subproject commit 40a367ca89b5b197353ca58dea547a3e3407c7f3 | ||||
| Subproject commit a642d730bd8d6c9b291b90e61b3a3a389139f2f6 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat