X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fui_config.h;h=559c86a14837034854e4caa3308710d97c456115;hb=dde13d288e22ba5dd8e23802c47fac288b089c57;hp=c343da018b8a6136635f3365d3d6dd781bfd1546;hpb=bd430c2080e24e624495858552c217d7bc9101a6;p=ardour.git diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h index c343da018b..559c86a148 100644 --- a/gtk2_ardour/ui_config.h +++ b/gtk2_ardour/ui_config.h @@ -27,9 +27,11 @@ #include #include +#include "ardour/types.h" // required for opeators used in pbd/configuration_variable.h + #include "pbd/stateful.h" #include "pbd/xml++.h" -#include "ardour/configuration_variable.h" +#include "pbd/configuration_variable.h" #include "canvas/colors.h" @@ -37,60 +39,74 @@ class UIConfiguration : public PBD::Stateful { - public: - struct RelativeHSV { - RelativeHSV (const std::string& b, const ArdourCanvas::HSV& mod) - : base_color (b) - , modifier (mod) - , quantized_hue (-1.0) {} - std::string base_color; - ArdourCanvas::HSV modifier; - double quantized_hue; - - ArdourCanvas::HSV get() const; - }; - +private: UIConfiguration(); ~UIConfiguration(); - static UIConfiguration* instance() { return _instance; } + public: + static UIConfiguration& instance(); + + static std::string color_file_suffix; void load_rc_file (bool themechange, bool allow_own = true); int load_state (); int save_state (); int load_defaults (); + int load_color_theme (bool allow_own); int set_state (const XMLNode&, int version); XMLNode& get_state (void); XMLNode& get_variables (std::string); void set_variables (const XMLNode&); - typedef std::map RelativeColors; + std::string color_file_name (bool use_my, bool with_version) const; + + typedef std::map Colors; typedef std::map ColorAliases; - typedef std::map BaseColors; + typedef std::map Modifiers; - BaseColors base_colors; - RelativeColors relative_colors; + Colors colors; ColorAliases color_aliases; + Modifiers modifiers; void set_alias (std::string const & name, std::string const & alias); - void set_relative (const std::string& name, const RelativeHSV& new_value); - void set_base (const std::string& name, ArdourCanvas::Color); - - RelativeHSV color_as_relative_hsv (ArdourCanvas::Color c); + void set_color (const std::string& name, ArdourCanvas::Color); + void set_modifier (std::string const &, ArdourCanvas::SVAModifier svam); + std::string color_as_alias (ArdourCanvas::Color c); ArdourCanvas::Color quantized (ArdourCanvas::Color) const; - ArdourCanvas::Color base_color_by_name (const std::string&) const; ArdourCanvas::Color color (const std::string&, bool* failed = 0) const; + ArdourCanvas::Color color_mod (std::string const & color, std::string const & modifier) const; + ArdourCanvas::Color color_mod (const ArdourCanvas::Color& color, std::string const & modifier) const; ArdourCanvas::HSV color_hsv (const std::string&) const; + ArdourCanvas::SVAModifier modifier (const std::string&) const; + + sigc::signal ColorsChanged; + + void reset_dpi (); + void set_pango_fontsize (); - sigc::signal ParameterChanged; + float get_ui_scale (); + + sigc::signal DPIReset; + + sigc::signal ParameterChanged; void map_parameters (boost::function&); void parameter_changed (std::string); - + + /** called before initializing any part of the GUI. Sets up + * any runtime environment required to make the GUI work + * in specific ways. + */ + int pre_gui_init (); + + /** called after the GUI toolkit has been initialized. + */ + UIConfiguration* post_gui_init (); + #undef UI_CONFIG_VARIABLE #define UI_CONFIG_VARIABLE(Type,var,name,value) \ Type get_##var () const { return var.get(); } \ @@ -103,49 +119,33 @@ class UIConfiguration : public PBD::Stateful #include "canvas_vars.h" #undef CANVAS_FONT_VARIABLE -#undef CANVAS_BASE_COLOR -#define CANVAS_BASE_COLOR(var,name,val) \ - ArdourCanvas::Color get_##var() const { return base_color_by_name (name); } -#include "base_colors.h" -#undef CANVAS_BASE_COLOR - -#undef COLOR_ALIAS -#define COLOR_ALIAS(var,name,alias) ArdourCanvas::Color get_##var() const { return color (name); } -#include "color_aliases.h" -#undef COLOR_ALIAS - private: /* declare variables */ #undef UI_CONFIG_VARIABLE -#define UI_CONFIG_VARIABLE(Type,var,name,value) ARDOUR::ConfigVariable var; +#define UI_CONFIG_VARIABLE(Type,var,name,value) PBD::ConfigVariable var; #include "ui_config_vars.h" #undef UI_CONFIG_VARIABLE -#define CANVAS_FONT_VARIABLE(var,name) ARDOUR::ConfigVariable var; +#define CANVAS_FONT_VARIABLE(var,name) PBD::ConfigVariable var; #include "canvas_vars.h" #undef CANVAS_FONT_VARIABLE XMLNode& state (); bool _dirty; - bool base_modified; bool aliases_modified; - bool derived_modified; - - static UIConfiguration* _instance; + bool colors_modified; + bool modifiers_modified; - int store_color_theme (); - void load_base_colors (XMLNode const &); + int store_color_theme (); void load_color_aliases (XMLNode const &); - void load_relative_colors (XMLNode const &); + void load_colors (XMLNode const &); + void load_modifiers (XMLNode const &); void reset_gtk_theme (); + int load_color_file (std::string const &); void colors_changed (); - int load_color_theme (bool allow_own=true); uint32_t block_save; }; -std::ostream& operator<< (std::ostream& o, const UIConfiguration::RelativeHSV& rhsv); - #endif /* __ardour_ui_configuration_h__ */ -