From ecf28b00a349e333670e36cfb501ca343df7cd4a Mon Sep 17 00:00:00 2001 From: twanvl Date: Mon, 20 Nov 2006 00:09:09 +0000 Subject: [PATCH] implemented most of DataEditor; fixed some bugs in Settings git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@78 0fc631ac-6414-0410-93d0-97cfa31319b6 --- src/data/settings.cpp | 34 +++++-- src/data/settings.hpp | 12 ++- src/data/stylesheet.hpp | 3 + src/gui/control/card_editor.cpp | 170 +++++++++++++++++++++++++++++++- src/gui/control/card_editor.hpp | 62 ++++++++++++ src/gui/value/editor.hpp | 16 +-- src/render/card/viewer.cpp | 6 +- src/render/card/viewer.hpp | 2 - src/util/defaultable.hpp | 9 +- src/util/string.cpp | 2 +- 10 files changed, 288 insertions(+), 28 deletions(-) diff --git a/src/data/settings.cpp b/src/data/settings.cpp index 9fa2f3a9..06f20fd4 100644 --- a/src/data/settings.cpp +++ b/src/data/settings.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -39,6 +40,10 @@ IMPLEMENT_REFLECTION(ColumnSettings) { REFLECT(visible); } +GameSettings::GameSettings() + : sort_cards_ascending(true) +{} + IMPLEMENT_REFLECTION(GameSettings) { REFLECT(default_stylesheet); REFLECT(default_export); @@ -47,6 +52,23 @@ IMPLEMENT_REFLECTION(GameSettings) { REFLECT(sort_cards_ascending); } + +StyleSheetSettings::StyleSheetSettings() + : card_zoom (1.0, true) + , card_angle (0, true) + , card_anti_alias (true, true) + , card_borders (true, true) + , card_normal_export(true, true) +{} + +void StyleSheetSettings::useDefault(const StyleSheetSettings& ss) { + if (card_zoom .isDefault()) card_zoom .assignDefault(ss.card_zoom()); + if (card_angle .isDefault()) card_angle .assignDefault(ss.card_angle()); + if (card_anti_alias .isDefault()) card_anti_alias .assignDefault(ss.card_anti_alias()); + if (card_borders .isDefault()) card_borders .assignDefault(ss.card_borders()); + if (card_normal_export.isDefault()) card_normal_export.assignDefault(ss.card_normal_export()); +} + IMPLEMENT_REFLECTION(StyleSheetSettings) { REFLECT(card_zoom); REFLECT(card_angle); @@ -85,7 +107,7 @@ void Settings::addRecentFile(const String& filename) { } GameSettings& Settings::gameSettingsFor(const Game& game) { - GameSettingsP& gs = settings.game_settings[game.name()]; + GameSettingsP& gs = game_settings[game.name()]; if (!gs) gs.reset(new GameSettings); return *gs; } @@ -102,14 +124,12 @@ ColumnSettings& Settings::columnSettingsFor(const Game& game, const Field& field } return cs; } -/* -StyleSettings& Settings::styleSettingsFor(const CardStyle& style) { - StyleSettingsP& ss = settings.styleSettings#(style.name()); - if (!ss) ss = new_shared(); - ss->useDefault(defaultStyleSettings); // update default settings +StyleSheetSettings& Settings::stylesheetSettingsFor(const StyleSheet& stylesheet) { + StyleSheetSettingsP& ss = stylesheet_settings[stylesheet.name()]; + if (!ss) ss.reset(new StyleSheetSettings); + ss->useDefault(default_stylesheet_settings); // update default settings return *ss; } -*/ String user_settings_dir() { return _(""); // TODO diff --git a/src/data/settings.hpp b/src/data/settings.hpp index df69ee17..a35b14ed 100644 --- a/src/data/settings.hpp +++ b/src/data/settings.hpp @@ -43,6 +43,8 @@ class ColumnSettings { /// Settings for a Game class GameSettings { public: + GameSettings(); + String default_stylesheet; String default_export; map columns; @@ -55,6 +57,8 @@ class GameSettings { /// Settings for a StyleSheet class StyleSheetSettings { public: + StyleSheetSettings(); + // Rendering/display settings Defaultable card_zoom; Defaultable card_angle; @@ -62,10 +66,10 @@ class StyleSheetSettings { Defaultable card_borders; Defaultable card_normal_export; - DECLARE_REFLECTION(); + /// Where the settings are the default, use the value from ss + void useDefault(const StyleSheetSettings& ss); -// /// Where the settings are the default, use the value from ss -// void useDefault(const StyleSheetSettings& ss); + DECLARE_REFLECTION(); }; // ----------------------------------------------------------------------------- : Settings @@ -102,7 +106,7 @@ class Settings { /// Get the settings for a column for a specific field in a game ColumnSettings& columnSettingsFor (const Game& game, const Field& field); /// Get the settings object for a specific stylesheet - StyleSheetSettings& styleSheetSettingsFor(const StyleSheet& stylesheet); + StyleSheetSettings& stylesheetSettingsFor(const StyleSheet& stylesheet); private: map game_settings; diff --git a/src/data/stylesheet.hpp b/src/data/stylesheet.hpp index 7d8f56ba..2c1a6705 100644 --- a/src/data/stylesheet.hpp +++ b/src/data/stylesheet.hpp @@ -11,6 +11,7 @@ #include #include +#include #include