ardour
ui_config.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2000-2007 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __ardour_ui_configuration_h__
21 #define __ardour_ui_configuration_h__
22 
23 #include <sstream>
24 #include <ostream>
25 #include <iostream>
26 
27 #include <boost/function.hpp>
28 #include <boost/bind.hpp>
29 
30 #include "pbd/stateful.h"
31 #include "pbd/xml++.h"
33 
34 #include "canvas/colors.h"
35 
36 #include "utils.h"
37 
39 {
40  public:
43 
44  static UIConfiguration* instance() { return _instance; }
45 
46  void load_rc_file (bool themechange, bool allow_own = true);
47 
48  int load_state ();
49  int save_state ();
50  int load_defaults ();
51 
52  int set_state (const XMLNode&, int version);
53  XMLNode& get_state (void);
54  XMLNode& get_variables (std::string);
55  void set_variables (const XMLNode&);
56 
57  typedef std::map<std::string,ArdourCanvas::Color> Colors;
58  typedef std::map<std::string,std::string> ColorAliases;
59  typedef std::map<std::string,ArdourCanvas::SVAModifier> Modifiers;
60 
61  Colors colors;
62  ColorAliases color_aliases;
63  Modifiers modifiers;
64 
65  void set_alias (std::string const & name, std::string const & alias);
66  void set_color (const std::string& name, ArdourCanvas::Color);
67  void set_modifier (std::string const &, ArdourCanvas::SVAModifier svam);
68 
69  std::string color_as_alias (ArdourCanvas::Color c);
70  ArdourCanvas::Color quantized (ArdourCanvas::Color) const;
71 
72  ArdourCanvas::Color color (const std::string&, bool* failed = 0) const;
73  ArdourCanvas::Color color_mod (std::string const & color, std::string const & modifier) const;
74  ArdourCanvas::Color color_mod (const ArdourCanvas::Color& color, std::string const & modifier) const;
75  ArdourCanvas::HSV color_hsv (const std::string&) const;
76  ArdourCanvas::SVAModifier modifier (const std::string&) const;
77 
78  sigc::signal<void,std::string> ParameterChanged;
79  void map_parameters (boost::function<void (std::string)>&);
80 
81  void parameter_changed (std::string);
82 
83 #undef UI_CONFIG_VARIABLE
84 #define UI_CONFIG_VARIABLE(Type,var,name,value) \
85  Type get_##var () const { return var.get(); } \
86  bool set_##var (Type val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
87 #include "ui_config_vars.h"
88 #undef UI_CONFIG_VARIABLE
89 #define CANVAS_FONT_VARIABLE(var,name) \
90  Pango::FontDescription get_##var () const { return ARDOUR_UI_UTILS::sanitized_font (var.get()); } \
91  bool set_##var (const std::string& val) { bool ret = var.set (val); if (ret) { ParameterChanged (name); } return ret; }
92 #include "canvas_vars.h"
93 #undef CANVAS_FONT_VARIABLE
94 
95  private:
96  /* declare variables */
97 
98 #undef UI_CONFIG_VARIABLE
99 #define UI_CONFIG_VARIABLE(Type,var,name,value) PBD::ConfigVariable<Type> var;
100 #include "ui_config_vars.h"
101 #undef UI_CONFIG_VARIABLE
102 
103 #define CANVAS_FONT_VARIABLE(var,name) PBD::ConfigVariable<std::string> var;
104 #include "canvas_vars.h"
105 #undef CANVAS_FONT_VARIABLE
106 
107  XMLNode& state ();
108  bool _dirty;
112 
114 
115  int store_color_theme ();
116  void load_color_aliases (XMLNode const &);
117  void load_colors (XMLNode const &);
118  void load_modifiers (XMLNode const &);
119  void reset_gtk_theme ();
120  void colors_changed ();
121  int load_color_theme (bool allow_own=true);
122 
123  uint32_t block_save;
124 };
125 
126 #endif /* __ardour_ui_configuration_h__ */
127 
bool modifiers_modified
Definition: ui_config.h:111
ArdourCanvas::Color color(const std::string &, bool *failed=0) const
Definition: ui_config.cc:567
XMLNode & state()
void load_colors(XMLNode const &)
Definition: ui_config.cc:482
ArdourCanvas::SVAModifier modifier(const std::string &) const
Definition: ui_config.cc:545
Colors colors
Definition: ui_config.h:61
int store_color_theme()
Definition: ui_config.cc:240
bool aliases_modified
Definition: ui_config.h:109
std::string color_as_alias(ArdourCanvas::Color c)
XMLNode & get_state(void)
Definition: ui_config.cc:375
static UIConfiguration * instance()
Definition: ui_config.h:44
void map_parameters(boost::function< void(std::string)> &)
Definition: ui_config.cc:146
void load_color_aliases(XMLNode const &)
Definition: ui_config.cc:459
std::map< std::string, ArdourCanvas::SVAModifier > Modifiers
Definition: ui_config.h:59
ColorAliases color_aliases
Definition: ui_config.h:62
std::map< std::string, ArdourCanvas::Color > Colors
Definition: ui_config.h:57
void set_color(const std::string &name, ArdourCanvas::Color)
Definition: ui_config.cc:614
std::map< std::string, std::string > ColorAliases
Definition: ui_config.h:58
void load_rc_file(bool themechange, bool allow_own=true)
Definition: ui_config.cc:656
static UIConfiguration * _instance
Definition: ui_config.h:113
void parameter_changed(std::string)
Definition: ui_config.cc:109
ArdourCanvas::HSV color_hsv(const std::string &) const
uint32_t block_save
Definition: ui_config.h:123
bool colors_modified
Definition: ui_config.h:110
void colors_changed()
Definition: ui_config.cc:92
int load_defaults()
Definition: ui_config.cc:155
const char * name
Definition: xml++.h:95
ArdourCanvas::Color color_mod(std::string const &color, std::string const &modifier) const
Definition: ui_config.cc:555
Modifiers modifiers
Definition: ui_config.h:63
void set_alias(std::string const &name, std::string const &alias)
Definition: ui_config.cc:627
sigc::signal< void, std::string > ParameterChanged
Definition: ui_config.h:78
int load_color_theme(bool allow_own=true)
Definition: ui_config.cc:190
ArdourCanvas::Color quantized(ArdourCanvas::Color) const
Definition: ui_config.cc:606
void set_variables(const XMLNode &)
Definition: ui_config.cc:533
void set_modifier(std::string const &, ArdourCanvas::SVAModifier svam)
Definition: ui_config.cc:641
XMLNode & get_variables(std::string)
Definition: ui_config.cc:393
void load_modifiers(XMLNode const &)
Definition: ui_config.cc:507
void reset_gtk_theme()
Definition: ui_config.cc:123
int set_state(const XMLNode &, int version)
Definition: ui_config.cc:413