mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 01:40:05 +00:00
Add theme editor dialog
This commit is contained in:
parent
bdb73b645c
commit
c29c0e82dd
3 changed files with 53 additions and 20 deletions
27
external/qt6ct.cmake
vendored
27
external/qt6ct.cmake
vendored
|
|
@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.16.0)
|
||||||
set(PROJECT_NAME scwx-qt6ct)
|
set(PROJECT_NAME scwx-qt6ct)
|
||||||
|
|
||||||
find_package(QT NAMES Qt6
|
find_package(QT NAMES Qt6
|
||||||
COMPONENTS Gui
|
COMPONENTS Gui Widgets
|
||||||
REQUIRED)
|
REQUIRED)
|
||||||
find_package(Qt${QT_VERSION_MAJOR}
|
find_package(Qt${QT_VERSION_MAJOR}
|
||||||
COMPONENTS Gui
|
COMPONENTS Gui Widgets
|
||||||
REQUIRED)
|
REQUIRED)
|
||||||
|
|
||||||
#extract version from qt6ct.h
|
#extract version from qt6ct.h
|
||||||
|
|
@ -24,20 +24,39 @@ else()
|
||||||
message(FATAL_ERROR "invalid header")
|
message(FATAL_ERROR "invalid header")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(app_SRCS
|
set(qt6ct-common-source
|
||||||
qt6ct/src/qt6ct-common/qt6ct.cpp
|
qt6ct/src/qt6ct-common/qt6ct.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(qt6ct-common STATIC ${app_SRCS})
|
set(qt6ct-widgets-source
|
||||||
|
qt6ct/src/qt6ct/paletteeditdialog.cpp
|
||||||
|
qt6ct/src/qt6ct/paletteeditdialog.ui
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
include_directories(qt6ct/src/qt6ct-common)
|
||||||
|
|
||||||
|
add_library(qt6ct-common STATIC ${qt6ct-common-source})
|
||||||
set_target_properties(qt6ct-common PROPERTIES VERSION ${QT6CT_VERSION})
|
set_target_properties(qt6ct-common PROPERTIES VERSION ${QT6CT_VERSION})
|
||||||
target_link_libraries(qt6ct-common PRIVATE Qt6::Gui)
|
target_link_libraries(qt6ct-common PRIVATE Qt6::Gui)
|
||||||
target_compile_definitions(qt6ct-common PRIVATE QT6CT_LIBRARY)
|
target_compile_definitions(qt6ct-common PRIVATE QT6CT_LIBRARY)
|
||||||
|
|
||||||
|
add_library(qt6ct-widgets STATIC ${qt6ct-widgets-source})
|
||||||
|
set_target_properties(qt6ct-widgets PROPERTIES VERSION ${QT6CT_VERSION})
|
||||||
|
target_link_libraries(qt6ct-widgets PRIVATE Qt6::Widgets Qt6::WidgetsPrivate qt6ct-common)
|
||||||
|
target_compile_definitions(qt6ct-widgets PRIVATE QT6CT_LIBRARY)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
# Produce PDB file for debug
|
# Produce PDB file for debug
|
||||||
target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:/Zi>")
|
target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:/Zi>")
|
||||||
|
target_compile_options(qt6ct-widgets PRIVATE "$<$<CONFIG:Release>:/Zi>")
|
||||||
else()
|
else()
|
||||||
target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:-g>")
|
target_compile_options(qt6ct-common PRIVATE "$<$<CONFIG:Release>:-g>")
|
||||||
|
target_compile_options(qt6ct-widgets PRIVATE "$<$<CONFIG:Release>:-g>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_include_directories( qt6ct-common INTERFACE qt6ct/src )
|
target_include_directories( qt6ct-common INTERFACE qt6ct/src )
|
||||||
|
target_include_directories( qt6ct-widgets INTERFACE qt6ct/src )
|
||||||
|
|
|
||||||
|
|
@ -703,6 +703,7 @@ target_link_libraries(scwx-qt PUBLIC Qt${QT_VERSION_MAJOR}::Widgets
|
||||||
glm::glm
|
glm::glm
|
||||||
imgui
|
imgui
|
||||||
qt6ct-common
|
qt6ct-common
|
||||||
|
qt6ct-widgets
|
||||||
SQLite::SQLite3
|
SQLite::SQLite3
|
||||||
wxdata)
|
wxdata)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,11 @@
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#define QT6CT_LIBRARY
|
||||||
|
#include <qt6ct-common/qt6ct.h>
|
||||||
|
#include <qt6ct/paletteeditdialog.h>
|
||||||
|
#undef QT6CT_LIBRARY
|
||||||
|
|
||||||
namespace scwx
|
namespace scwx
|
||||||
{
|
{
|
||||||
namespace qt
|
namespace qt
|
||||||
|
|
@ -578,31 +583,39 @@ void SettingsDialogImpl::SetupGeneralTab()
|
||||||
self_,
|
self_,
|
||||||
[this]()
|
[this]()
|
||||||
{
|
{
|
||||||
static const std::string themeFilter = "Qt6Ct Theme File (*.conf)";
|
const settings::GeneralSettings& generalSettings =
|
||||||
static const std::string allFilter = "All Files (*)";
|
settings::GeneralSettings::Instance();
|
||||||
|
const QString file =
|
||||||
|
generalSettings.theme_file().GetStagedOrValue().c_str();
|
||||||
|
const QPalette palette =
|
||||||
|
Qt6CT::loadColorScheme(file, QApplication::palette());
|
||||||
|
QStyle* style = QApplication::style();
|
||||||
|
|
||||||
QFileDialog* dialog = new QFileDialog(self_);
|
// WA_DeleteOnClose manages memory
|
||||||
|
// NOLINTNEXTLINE(cppcoreguidelines-owning-memory)
|
||||||
dialog->setFileMode(QFileDialog::ExistingFile);
|
auto* dialog = new PaletteEditDialog(palette, style, self_);
|
||||||
|
|
||||||
dialog->setNameFilters(
|
|
||||||
{QObject::tr(themeFilter.c_str()), QObject::tr(allFilter.c_str())});
|
|
||||||
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
dialog,
|
dialog,
|
||||||
&QFileDialog::fileSelected,
|
&QDialog::accepted,
|
||||||
self_,
|
self_,
|
||||||
[this](const QString& file)
|
[dialog]()
|
||||||
{
|
{
|
||||||
QString path = QDir::toNativeSeparators(file);
|
const QPalette palette = dialog->selectedPalette();
|
||||||
logger_->info("Selected theme file: {}", path.toStdString());
|
const settings::GeneralSettings& generalSettings =
|
||||||
self_->ui->themeFileLineEdit->setText(path);
|
settings::GeneralSettings::Instance();
|
||||||
|
const QString file =
|
||||||
|
generalSettings.theme_file().GetStagedOrValue().c_str();
|
||||||
|
Qt6CT::createColorScheme(file, palette);
|
||||||
|
|
||||||
// setText does not emit the textEdited signal
|
auto uiStyle = scwx::qt::types::GetUiStyle(
|
||||||
Q_EMIT self_->ui->themeFileLineEdit->textEdited(path);
|
generalSettings.theme().GetValue());
|
||||||
|
if (uiStyle == scwx::qt::types::UiStyle::FusionCustom)
|
||||||
|
{
|
||||||
|
QApplication::setPalette(palette);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog->open();
|
dialog->open();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue