mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-15 16:23:42 +00:00
GUI2/Definition: move settings members to their own struct
This commit is contained in:
parent
b1e3bc3e56
commit
01ecc04ac8
|
@ -27,6 +27,8 @@
|
||||||
|
|
||||||
namespace gui2
|
namespace gui2
|
||||||
{
|
{
|
||||||
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
gui_theme_map_t guis;
|
gui_theme_map_t guis;
|
||||||
gui_theme_map_t::iterator current_gui = guis.end();
|
gui_theme_map_t::iterator current_gui = guis.end();
|
||||||
gui_theme_map_t::iterator default_gui = guis.end();
|
gui_theme_map_t::iterator default_gui = guis.end();
|
||||||
|
@ -36,16 +38,7 @@ gui_definition::gui_definition(const config& cfg)
|
||||||
, window_types()
|
, window_types()
|
||||||
, id_(cfg["id"])
|
, id_(cfg["id"])
|
||||||
, description_(cfg["description"].t_str())
|
, description_(cfg["description"].t_str())
|
||||||
, popup_show_delay_(0)
|
, settings_(cfg.mandatory_child("settings"))
|
||||||
, popup_show_time_(0)
|
|
||||||
, help_show_time_(0)
|
|
||||||
, double_click_time_(0)
|
|
||||||
, repeat_button_repeat_time_(0)
|
|
||||||
, sound_button_click_()
|
|
||||||
, sound_toggle_button_click_()
|
|
||||||
, sound_toggle_panel_click_()
|
|
||||||
, sound_slider_adjust_()
|
|
||||||
, has_helptip_message_()
|
|
||||||
, tips_(tip_of_the_day::load(cfg))
|
, tips_(tip_of_the_day::load(cfg))
|
||||||
{
|
{
|
||||||
VALIDATE(!id_.empty(), missing_mandatory_wml_key("gui", "id"));
|
VALIDATE(!id_.empty(), missing_mandatory_wml_key("gui", "id"));
|
||||||
|
@ -111,51 +104,39 @@ gui_definition::gui_definition(const config& cfg)
|
||||||
VALIDATE(window_types.find(window_type) != window_types.end(), error_msg);
|
VALIDATE(window_types.find(window_type) != window_types.end(), error_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***** settings *****/
|
gui_definition::settings_helper::settings_helper(const config& cfg)
|
||||||
|
: popup_show_delay(chrono::parse_duration(cfg["popup_show_delay"], 0ms))
|
||||||
|
, popup_show_time(chrono::parse_duration(cfg["popup_show_time"], 0ms))
|
||||||
|
, help_show_time(chrono::parse_duration(cfg["help_show_time"], 0ms))
|
||||||
|
, double_click_time(chrono::parse_duration(cfg["double_click_time"], 0ms))
|
||||||
|
, repeat_button_repeat_time(chrono::parse_duration(cfg["repeat_button_repeat_time"], 0ms))
|
||||||
|
, sound_button_click(cfg["sound_button_click"])
|
||||||
|
, sound_toggle_button_click(cfg["sound_toggle_button_click"])
|
||||||
|
, sound_toggle_panel_click(cfg["sound_toggle_panel_click"])
|
||||||
|
, sound_slider_adjust(cfg["sound_slider_adjust"])
|
||||||
|
, has_helptip_message(cfg["has_helptip_message"].t_str())
|
||||||
|
{
|
||||||
|
VALIDATE(double_click_time > 0ms,
|
||||||
|
missing_mandatory_wml_key("settings", "double_click_time"));
|
||||||
|
|
||||||
/**
|
VALIDATE(!has_helptip_message.empty(),
|
||||||
* @todo Regarding sounds:
|
missing_mandatory_wml_key("settings", "has_helptip_message"));
|
||||||
* Need to evaluate but probably we want the widget definition be able to:
|
|
||||||
* - Override the default (and clear it). This will allow toggle buttons in a
|
|
||||||
* listbox to sound like a toggle panel.
|
|
||||||
* - Override the default and above per instance of the widget, some buttons
|
|
||||||
* can give a different sound.
|
|
||||||
*/
|
|
||||||
const config& settings = cfg.mandatory_child("settings");
|
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
|
||||||
popup_show_delay_ = chrono::parse_duration(settings["popup_show_delay"], 0ms);
|
|
||||||
popup_show_time_ = chrono::parse_duration(settings["popup_show_time"], 0ms);
|
|
||||||
help_show_time_ = chrono::parse_duration(settings["help_show_time"], 0ms);
|
|
||||||
double_click_time_ = chrono::parse_duration(settings["double_click_time"], 0ms);
|
|
||||||
|
|
||||||
repeat_button_repeat_time_ = chrono::parse_duration(settings["repeat_button_repeat_time"], 0ms);
|
|
||||||
|
|
||||||
VALIDATE(!settings["double_click_time"].blank(), missing_mandatory_wml_key("settings", "double_click_time"));
|
|
||||||
|
|
||||||
sound_button_click_ = settings["sound_button_click"].str();
|
|
||||||
sound_toggle_button_click_ = settings["sound_toggle_button_click"].str();
|
|
||||||
sound_toggle_panel_click_ = settings["sound_toggle_panel_click"].str();
|
|
||||||
sound_slider_adjust_ = settings["sound_slider_adjust"].str();
|
|
||||||
|
|
||||||
has_helptip_message_ = settings["has_helptip_message"].t_str();
|
|
||||||
|
|
||||||
VALIDATE(!has_helptip_message_.empty(), missing_mandatory_wml_key("settings", "has_helptip_message"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_definition::activate() const
|
void gui_definition::activate() const
|
||||||
{
|
{
|
||||||
settings::popup_show_delay = popup_show_delay_;
|
settings::popup_show_delay = settings_.popup_show_delay;
|
||||||
settings::popup_show_time = popup_show_time_;
|
settings::popup_show_time = settings_.popup_show_time;
|
||||||
settings::help_show_time = help_show_time_;
|
settings::help_show_time = settings_.help_show_time;
|
||||||
settings::double_click_time = double_click_time_;
|
settings::double_click_time = settings_.double_click_time;
|
||||||
settings::repeat_button_repeat_time = repeat_button_repeat_time_;
|
settings::repeat_button_repeat_time = settings_.repeat_button_repeat_time;
|
||||||
settings::sound_button_click = sound_button_click_;
|
settings::sound_button_click = settings_.sound_button_click;
|
||||||
settings::sound_toggle_button_click = sound_toggle_button_click_;
|
settings::sound_toggle_button_click = settings_.sound_toggle_button_click;
|
||||||
settings::sound_toggle_panel_click = sound_toggle_panel_click_;
|
settings::sound_toggle_panel_click = settings_.sound_toggle_panel_click;
|
||||||
settings::sound_slider_adjust = sound_slider_adjust_;
|
settings::sound_slider_adjust = settings_.sound_slider_adjust;
|
||||||
settings::has_helptip_message = has_helptip_message_;
|
settings::has_helptip_message = settings_.has_helptip_message;
|
||||||
settings::tips = tips_;
|
settings::tips = tips_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,6 @@ namespace gui2
|
||||||
*
|
*
|
||||||
* Each widget definition and window layout may also define different variations of itself
|
* Each widget definition and window layout may also define different variations of itself
|
||||||
* to be used based on the current game resolution.
|
* to be used based on the current game resolution.
|
||||||
*
|
|
||||||
* As of December 2017 only the default theme is provided.
|
|
||||||
*/
|
*/
|
||||||
class gui_definition
|
class gui_definition
|
||||||
{
|
{
|
||||||
|
@ -69,18 +67,36 @@ private:
|
||||||
|
|
||||||
t_string description_;
|
t_string description_;
|
||||||
|
|
||||||
std::chrono::milliseconds popup_show_delay_;
|
/**
|
||||||
std::chrono::milliseconds popup_show_time_;
|
* Theme-specific settings. These are exposed via globals in the gui2::settings
|
||||||
std::chrono::milliseconds help_show_time_;
|
* namespace by calling @ref activate.
|
||||||
std::chrono::milliseconds double_click_time_;
|
*
|
||||||
std::chrono::milliseconds repeat_button_repeat_time_;
|
* @todo Regarding sounds:
|
||||||
|
* Need to evaluate but probably we want the widget definition be able to:
|
||||||
|
* - Override the default (and clear it). This will allow toggle buttons in a
|
||||||
|
* listbox to sound like a toggle panel.
|
||||||
|
* - Override the default and above per instance of the widget, some buttons
|
||||||
|
* can give a different sound.
|
||||||
|
*/
|
||||||
|
struct settings_helper
|
||||||
|
{
|
||||||
|
explicit settings_helper(const config& cfg);
|
||||||
|
|
||||||
std::string sound_button_click_;
|
std::chrono::milliseconds popup_show_delay;
|
||||||
std::string sound_toggle_button_click_;
|
std::chrono::milliseconds popup_show_time;
|
||||||
std::string sound_toggle_panel_click_;
|
std::chrono::milliseconds help_show_time;
|
||||||
std::string sound_slider_adjust_;
|
std::chrono::milliseconds double_click_time;
|
||||||
|
std::chrono::milliseconds repeat_button_repeat_time;
|
||||||
|
|
||||||
t_string has_helptip_message_;
|
std::string sound_button_click;
|
||||||
|
std::string sound_toggle_button_click;
|
||||||
|
std::string sound_toggle_panel_click;
|
||||||
|
std::string sound_slider_adjust;
|
||||||
|
|
||||||
|
t_string has_helptip_message;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings_helper settings_;
|
||||||
|
|
||||||
std::vector<game_tip> tips_;
|
std::vector<game_tip> tips_;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user