diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-07-18 11:50:21 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-07-18 11:50:38 -0400 |
commit | 56c4b3c9b05ec22a89ba594061ba4ec4cb7c5da1 (patch) | |
tree | a71554f0096297cfc1e726dd115877e50de3c6ea /gtk2_ardour | |
parent | 8c944c08eacf8372fc714c9c00257ec13a263ae8 (diff) |
turn back towards color theme files ALWAYS including the program name. also load both default and user colors (if present)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/color_theme_manager.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/default_ui_config.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/ui_config.cc | 108 | ||||
-rw-r--r-- | gtk2_ardour/ui_config.h | 7 | ||||
-rw-r--r-- | gtk2_ardour/wscript | 8 |
5 files changed, 65 insertions, 70 deletions
diff --git a/gtk2_ardour/color_theme_manager.cc b/gtk2_ardour/color_theme_manager.cc index e038493c96..be0278ef9b 100644 --- a/gtk2_ardour/color_theme_manager.cc +++ b/gtk2_ardour/color_theme_manager.cc @@ -71,7 +71,6 @@ ColorThemeManager::ColorThemeManager () theme_list = TreeStore::create (color_theme_columns); TreeModel::iterator selected_iter = theme_list->children().end(); - const bool running_from_source = running_from_source_tree(); for (std::map<string,string>::iterator c = color_themes.begin(); c != color_themes.end(); ++c) { TreeModel::Row row; @@ -81,13 +80,6 @@ ColorThemeManager::ColorThemeManager () string color_file_name = c->second; - if (running_from_source) { - /* color themes from within the source tree are - suffixed by "-PROGRAM-NAME" (lowercased) - */ - replace_all (color_file_name, string_compose ("-%1", downcase (PROGRAM_NAME)), ""); - } - row[color_theme_columns.path] = color_file_name; /* match second (path; really basename) since that is @@ -233,7 +225,7 @@ ColorThemeManager::reset_canvas_colors() /* look for a versioned user-owned color file, and try to rename it */ - basename = UIConfiguration::instance().color_file_name (true, false, true); + basename = UIConfiguration::instance().color_file_name (true, true); if (find_file (ardour_config_search_path(), basename, cfile)) { string backup = cfile + string (X_(".old")); diff --git a/gtk2_ardour/default_ui_config.in b/gtk2_ardour/default_ui_config.in index 9c815d6331..f4c0c37074 100644 --- a/gtk2_ardour/default_ui_config.in +++ b/gtk2_ardour/default_ui_config.in @@ -3,7 +3,7 @@ <UI> <Option name="icon-set" value="default"/> <Option name="ui-rc-file" value="clearlooks.rc"/> - <Option name="color-file" value="dark"/> + <Option name="color-file" value="dark-ardour"/> <Option name="flat-buttons" value="0"/> <Option name="blink-rec-arm" value="0"/> <Option name="waveform-gradient-depth" value="0"/> diff --git a/gtk2_ardour/ui_config.cc b/gtk2_ardour/ui_config.cc index 301ed5740d..c6e538bb1b 100644 --- a/gtk2_ardour/ui_config.cc +++ b/gtk2_ardour/ui_config.cc @@ -127,7 +127,7 @@ UIConfiguration::parameter_changed (string param) if (param == "ui-rc-file") { load_rc_file (true); } else if (param == "color-file") { - load_color_theme (); + load_color_theme (true); } save_state (); @@ -218,7 +218,7 @@ UIConfiguration::pre_gui_init () UIConfiguration* UIConfiguration::post_gui_init () { - load_color_theme (); + load_color_theme (true); return this; } @@ -258,7 +258,7 @@ UIConfiguration::load_defaults () } std::string -UIConfiguration::color_file_name (bool use_my, bool with_program_name, bool with_version) const +UIConfiguration::color_file_name (bool use_my, bool with_version) const { string basename; @@ -266,12 +266,8 @@ UIConfiguration::color_file_name (bool use_my, bool with_program_name, bool with basename += "my-"; } - basename += color_file.get(); //this is the overall theme file, e.g. "dark" - - if (with_program_name) { - basename += '-'; - basename += downcase (PROGRAM_NAME); - } + //this is the overall theme file, e.g. "dark" plus "-downcase(PROGRAM_NAME)" + basename += color_file.get(); std::string rev (revision); std::size_t pos = rev.find_first_of("-"); @@ -282,11 +278,30 @@ UIConfiguration::color_file_name (bool use_my, bool with_program_name, bool with } basename += color_file_suffix; - return basename; } int +UIConfiguration::load_color_file (string const & path) +{ + XMLTree tree; + + info << string_compose (_("Loading color file %1"), path) << endmsg; + + if (!tree.read (path.c_str())) { + error << string_compose(_("cannot read color file \"%1\""), path) << endmsg; + return -1; + } + + if (set_state (*tree.root(), Stateful::loading_state_version)) { + error << string_compose(_("color file \"%1\" not loaded successfully."), path) << endmsg; + return -1; + } + + return 0; +} + +int UIConfiguration::load_color_theme (bool allow_own) { std::string cfile; @@ -295,36 +310,15 @@ UIConfiguration::load_color_theme (bool allow_own) * in turn calls save_state() */ PBD::Unwinder<uint32_t> uw (block_save, block_save + 1); - const bool running_from_source = ARDOUR_UI_UTILS::running_from_source_tree (); - - if (allow_own) { - - PBD::Searchpath sp (user_config_directory()); - - /* user's own color files never have the program name in them */ - - if (find_file (sp, color_file_name (true, false, true), cfile)) { - found = true; - } - - if (!found) { - if (find_file (sp, color_file_name (true, false, false), cfile)) { - found = true; - } - } + if (find_file (theme_search_path(), color_file_name (false, true), cfile)) { + found = true; } if (!found) { - if (find_file (theme_search_path(), color_file_name (false, running_from_source, true), cfile)) { + if (find_file (theme_search_path(), color_file_name (false, false), cfile)) { found = true; } - - if (!found) { - if (find_file (theme_search_path(), color_file_name (false, running_from_source, false), cfile)) { - found = true; - } - } } if (!found) { @@ -332,21 +326,32 @@ UIConfiguration::load_color_theme (bool allow_own) return -1; } + (void) load_color_file (cfile); - XMLTree tree; + if (allow_own) { - info << string_compose (_("Loading color file %1"), cfile) << endmsg; + found = false; - if (!tree.read (cfile.c_str())) { - error << string_compose(_("cannot read color file \"%1\""), cfile) << endmsg; - return -1; - } + PBD::Searchpath sp (user_config_directory()); - if (set_state (*tree.root(), Stateful::loading_state_version)) { - error << string_compose(_("color file \"%1\" not loaded successfully."), cfile) << endmsg; - return -1; + /* user's own color files never have the program name in them */ + + if (find_file (sp, color_file_name (true, true), cfile)) { + found = true; + } + + if (!found) { + if (find_file (sp, color_file_name (true, false), cfile)) { + found = true; + } } + if (found) { + (void) load_color_file (cfile); + } + + } + ColorsChanged (); return 0; @@ -390,7 +395,7 @@ UIConfiguration::store_color_theme () root->add_child_nocopy (*parent); XMLTree tree; - std::string colorfile = Glib::build_filename (user_config_directory(), color_file_name (true, false, true));; + std::string colorfile = Glib::build_filename (user_config_directory(), color_file_name (true, true));; tree.set_root (root); @@ -584,8 +589,6 @@ UIConfiguration::load_color_aliases (XMLNode const & node) XMLProperty const *name; XMLProperty const *alias; - color_aliases.clear (); - for (niter = nlist.begin(); niter != nlist.end(); ++niter) { XMLNode const * child = *niter; if (child->name() != X_("ColorAlias")) { @@ -595,7 +598,7 @@ UIConfiguration::load_color_aliases (XMLNode const & node) alias = child->property (X_("alias")); if (name && alias) { - color_aliases.insert (make_pair (name->value(), alias->value())); + color_aliases[name->value()] = alias->value(); } } } @@ -608,7 +611,9 @@ UIConfiguration::load_colors (XMLNode const & node) XMLProperty const *name; XMLProperty const *color; - colors.clear (); + /* don't clear colors, so that we can load > 1 color file and have + the subsequent ones overwrite the later ones. + */ for (niter = nlist.begin(); niter != nlist.end(); ++niter) { XMLNode const * child = *niter; @@ -621,7 +626,8 @@ UIConfiguration::load_colors (XMLNode const & node) if (name && color) { ArdourCanvas::Color c; c = strtoul (color->value().c_str(), 0, 16); - colors.insert (make_pair (name->value(), c)); + /* insert or replace color name definition */ + colors[name->value()] = c; } } } @@ -635,8 +641,6 @@ UIConfiguration::load_modifiers (XMLNode const & node) XMLProperty const *name; XMLProperty const *mod; - modifiers.clear (); - for (niter = nlist.begin(); niter != nlist.end(); ++niter) { XMLNode const * child = *niter; if (child->name() != X_("Modifier")) { @@ -648,7 +652,7 @@ UIConfiguration::load_modifiers (XMLNode const & node) if (name && mod) { SVAModifier svam (mod->value()); - modifiers.insert (make_pair (name->value(), svam)); + modifiers[name->value()] = svam; } } } diff --git a/gtk2_ardour/ui_config.h b/gtk2_ardour/ui_config.h index ddfd2f9ecd..559c86a148 100644 --- a/gtk2_ardour/ui_config.h +++ b/gtk2_ardour/ui_config.h @@ -53,14 +53,14 @@ private: int load_state (); int save_state (); int load_defaults (); - int load_color_theme (bool allow_own=true); + 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&); - std::string color_file_name (bool use_my, bool with_program_name, bool with_version) const; + std::string color_file_name (bool use_my, bool with_version) const; typedef std::map<std::string,ArdourCanvas::Color> Colors; typedef std::map<std::string,std::string> ColorAliases; @@ -137,11 +137,12 @@ private: bool colors_modified; bool modifiers_modified; - int store_color_theme (); + int store_color_theme (); void load_color_aliases (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 (); uint32_t block_save; diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 4597ecefb2..398bd57248 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -817,11 +817,9 @@ def build(bld): # Default UI configuration bld.install_files(bld.env['CONFDIR'], 'default_ui_config') - # Color Themes. Find each color file for this program, strip the program name - # and install. - for color_file in bld.path.ant_glob ('themes/*-' + Options.options.program_name.lower() + '.colors'): - shortname = os.path.basename (color_file.srcpath().replace ("-" + Options.options.program_name.lower(), "")) - bld.install_as (os.path.join(bld.env['DATADIR'], 'themes', shortname), color_file) + # Color Themes. Find each color file for this program only + # and install + bld.install_files (os.path.join(bld.env['DATADIR'], 'themes'), bld.path.ant_glob ('themes/*-' + Options.options.program_name.lower() + '.colors')); # Default export stuff bld.install_files(os.path.join(bld.env['CONFDIR'], 'export'), bld.path.ant_glob('export/*.format')) |