X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fui_config.h;h=b30c76fa1199a0ae574c72396379cc811d95ee40;hb=dc934ab90dd9ed1a564681b7395c538957b69d49;hp=bfa8859afdc671994b52935dfaae33a06e604bf5;hpb=2ba58dfe65bb0c5ba7d5eb18a1566fa79eeb6993;p=ardour.git diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h index bfa8859afd..b30c76fa11 100644 --- a/gtk2_ardour/ui_config.h +++ b/gtk2_ardour/ui_config.h @@ -24,60 +24,26 @@ #include #include +#include +#include + #include "pbd/stateful.h" #include "pbd/xml++.h" #include "ardour/configuration_variable.h" -template -class UIConfigVariable : public ARDOUR::ConfigVariableBase -{ - public: - UIConfigVariable (std::string str) : ARDOUR::ConfigVariableBase (str) {} - UIConfigVariable (std::string str, T val) : ARDOUR::ConfigVariableBase (str), value (val) {} - - bool set (T val) { - if (val == value) { - return false; - } - value = val; - return true; - } - - T get() const { - return value; - } - - std::string get_as_string () const { - std::stringstream ss; - ss << std::hex; - ss.fill('0'); - ss.width(8); - ss << value; - return ss.str (); - } - - void set_from_string (std::string const & s) { - std::stringstream ss; - ss << std::hex; - ss << s; - ss >> value; - } - - protected: - T get_for_save() { return value; } - T value; -}; +#include "canvas/colors.h" + +#include "utils.h" class UIConfiguration : public PBD::Stateful { - public: + public: UIConfiguration(); ~UIConfiguration(); - std::map *> canvas_colors; + static UIConfiguration* instance() { return _instance; } - bool dirty () const; - void set_dirty (); + void load_rc_file (bool themechange, bool allow_own = true); int load_state (); int save_state (); @@ -87,42 +53,71 @@ class UIConfiguration : public PBD::Stateful XMLNode& get_state (void); XMLNode& get_variables (std::string); void set_variables (const XMLNode&); - void pack_canvasvars (); - - uint32_t color_by_name (const std::string&); + typedef std::map Colors; + typedef std::map ColorAliases; + typedef std::map Modifiers; + + Colors colors; + ColorAliases color_aliases; + Modifiers modifiers; + + void set_alias (std::string const & name, std::string const & alias); + void set_color (const std::string& name, ArdourCanvas::Color); + + std::string color_as_alias (ArdourCanvas::Color c); + ArdourCanvas::Color quantized (ArdourCanvas::Color) 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::HSV color_hsv (const std::string&) const; + ArdourCanvas::SVAModifier modifier (const std::string&) const; + sigc::signal ParameterChanged; void map_parameters (boost::function&); + void parameter_changed (std::string); + #undef UI_CONFIG_VARIABLE #define UI_CONFIG_VARIABLE(Type,var,name,value) \ Type get_##var () const { return var.get(); } \ bool set_##var (Type val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; } #include "ui_config_vars.h" #undef UI_CONFIG_VARIABLE -#undef CANVAS_VARIABLE -#define CANVAS_VARIABLE(var,name) \ - uint32_t get_##var () const { return var.get(); } \ - bool set_##var (uint32_t val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; } +#define CANVAS_FONT_VARIABLE(var,name) \ + Pango::FontDescription get_##var () const { return ARDOUR_UI_UTILS::sanitized_font (var.get()); } \ + bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; } #include "canvas_vars.h" -#undef CANVAS_VARIABLE +#undef CANVAS_FONT_VARIABLE private: - /* declare variables */ #undef UI_CONFIG_VARIABLE -#define UI_CONFIG_VARIABLE(Type,var,name,value) UIConfigVariable var; +#define UI_CONFIG_VARIABLE(Type,var,name,value) ARDOUR::ConfigVariable var; #include "ui_config_vars.h" #undef UI_CONFIG_VARIABLE -#undef CANVAS_VARIABLE -#define CANVAS_VARIABLE(var,name) UIConfigVariable var; +#define CANVAS_FONT_VARIABLE(var,name) ARDOUR::ConfigVariable var; #include "canvas_vars.h" -#undef CANVAS_VARIABLE +#undef CANVAS_FONT_VARIABLE XMLNode& state (); bool _dirty; + bool aliases_modified; + bool colors_modified; + + static UIConfiguration* _instance; + + int store_color_theme (); + void load_color_aliases (XMLNode const &); + void load_colors (XMLNode const &); + void load_modifiers (XMLNode const &); + void reset_gtk_theme (); + void colors_changed (); + int load_color_theme (bool allow_own=true); + + uint32_t block_save; }; #endif /* __ardour_ui_configuration_h__ */