Dark mode

This commit is contained in:
GenevensiS
2025-10-09 17:57:20 +02:00
committed by GitHub
parent 78b93e5701
commit 513612cd0e
76 changed files with 323 additions and 144 deletions
+37 -3
View File
@@ -101,7 +101,12 @@ void GameSettings::initDefaults(const Game& game) {
ar->custom = false;
auto_replaces.push_back(ar);
}
}
}
// make sure things aren't in a problematic state
for (auto it = cardlist_columns.begin(); it != cardlist_columns.end(); ++it) {
if (it->second.width < 20) it->second.width = 20;
}
if (images_export_filename.Trim().empty()) images_export_filename = _("{card.name}.png");
}
IMPLEMENT_REFLECTION_NO_SCRIPT(GameSettings) {
@@ -161,6 +166,14 @@ IMPLEMENT_REFLECTION_ENUM(CutterLinesType) {
VALUE_N("none", CUTTER_NONE);
}
// ----------------------------------------------------------------------------- : Dark mode settings
IMPLEMENT_REFLECTION_ENUM(DarkModeType) {
VALUE_N("yes", DARKMODE_YES);
VALUE_N("system", DARKMODE_SYSTEM);
VALUE_N("no", DARKMODE_NO);
}
// ----------------------------------------------------------------------------- : Settings
Settings settings;
@@ -177,6 +190,7 @@ Settings::Settings()
, symbol_grid_snap (false)
, print_spacing (0.33)
, print_cutter_lines (CUTTER_ALL)
, dark_mode_type (DARKMODE_SYSTEM)
, internal_scale (1.0)
, internal_image_extension(true)
#if USE_OLD_STYLE_UPDATE_CHECKER
@@ -249,6 +263,20 @@ String Settings::settingsFile() {
return user_settings_dir() + _("mse.config");
}
bool Settings::darkMode() {
return wxSystemSettings::GetAppearance().IsDark();
}
String Settings::darkModePrefix() {
if (darkMode()) return _("dark_");
return _("");
}
Color Settings::darkModeColor() {
if (darkMode()) return wxColor(15,8,0);
return wxColor(240,247,255);
}
IMPLEMENT_REFLECTION_NO_SCRIPT(Settings) {
REFLECT(locale);
REFLECT(recent_sets);
@@ -267,6 +295,7 @@ IMPLEMENT_REFLECTION_NO_SCRIPT(Settings) {
REFLECT(default_game);
REFLECT(print_spacing);
REFLECT(print_cutter_lines);
REFLECT(dark_mode_type);
REFLECT(apprentice_location);
REFLECT(internal_scale);
REFLECT(internal_image_extension);
@@ -305,8 +334,13 @@ void Settings::read() {
wxFileInputStream file(filename);
if (!file.Ok()) return; // failure is not an error
Reader reader(file, nullptr, filename);
reader.handle_greedy(*this);
if (locale.Trim().empty()) locale = _("en");
reader.handle_greedy(*this);
// make sure things aren't in a problematic state
if (locale.Trim().empty()) locale = _("en");
if (symbol_grid_size < 30) symbol_grid_size = 30;
if (internal_scale < 1.0) internal_scale = 1.0;
if (default_stylesheet_settings.card_zoom < 0.5) default_stylesheet_settings.card_zoom = 1.0;
if (default_stylesheet_settings.export_zoom < 0.5) default_stylesheet_settings.export_zoom = 1.0;
}
}
+18 -2
View File
@@ -120,7 +120,13 @@ enum CutterLinesType
, CUTTER_NONE
};
// ----------------------------------------------------------------------------- : Dark mode settings
enum DarkModeType
{ DARKMODE_SYSTEM
, DARKMODE_NO
, DARKMODE_YES
};
// ----------------------------------------------------------------------------- : Settings
@@ -192,7 +198,17 @@ public:
double print_spacing;
CutterLinesType print_cutter_lines;
// --------------------------------------------------- : Dark Mode
DarkModeType dark_mode_type;
/// Is the app currently displayed in dark mode?
bool darkMode();
/// Prefix for resource files depending on dark mode
String darkModePrefix();
/// Background color for windows depending on dark mode
Color darkModeColor();
// --------------------------------------------------- : Special game stuff
String apprentice_location;