diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 79d38c786e..372622aeda 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -1419,29 +1419,38 @@ MixerStrip::reset_strip_style () } else { - if (is_midi_track()) { - if (_route->active()) { - set_name ("MidiTrackStripBase"); - } else { - set_name ("MidiTrackStripBaseInactive"); - } - gpm.set_fader_name ("MidiTrackFader"); - } else if (is_audio_track()) { - if (_route->active()) { - set_name ("AudioTrackStripBase"); - } else { - set_name ("AudioTrackStripBaseInactive"); - } - gpm.set_fader_name ("AudioTrackFader"); - } else { - if (_route->active()) { - set_name ("AudioBusStripBase"); - } else { - set_name ("AudioBusStripBaseInactive"); - } - gpm.set_fader_name ("AudioBusFader"); + if (UIConfiguration::instance().get_use_route_color_for_bg()) { - /* (no MIDI busses yet) */ + set_bg_color_from_route (*this, true); + + } else { + + set_bg_color_from_route (*this, false); + + if (is_midi_track()) { + if (_route->active()) { + set_name ("MidiTrackStripBase"); + } else { + set_name ("MidiTrackStripBaseInactive"); + } + gpm.set_fader_name ("MidiTrackFader"); + } else if (is_audio_track()) { + if (_route->active()) { + set_name ("AudioTrackStripBase"); + } else { + set_name ("AudioTrackStripBaseInactive"); + } + gpm.set_fader_name ("AudioTrackFader"); + } else { + if (_route->active()) { + set_name ("AudioBusStripBase"); + } else { + set_name ("AudioBusStripBaseInactive"); + } + gpm.set_fader_name ("AudioBusFader"); + + /* (no MIDI busses yet) */ + } } } } @@ -1792,6 +1801,8 @@ MixerStrip::parameter_changed (string p) } } else if (p == "show-triggers-inline") { /* XXX do something or get rid of this parameter */ + } else if (p == "use-route-color-for-bg") { + reset_strip_style (); } } @@ -2100,4 +2111,3 @@ MixerStrip::set_trigger_display (boost::shared_ptr tb) _tmaster->set_triggerbox (tb); trigger_display.set_triggerbox (tb.get()); } - diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 499aa38131..70d8136e86 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2521,6 +2521,13 @@ RCOptionEditor::RCOptionEditor () add_option (_("Appearance"), new OptionEditorHeading (_("Theme"))); + add_option (_("Appearance"), new BoolOption ( + "use-route-color-for-bg", + _("Use track/bus colors in backgrounds"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_use_route_color_for_bg), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_use_route_color_for_bg) + )); + add_option (_("Appearance"), new BoolOption ( "flat-buttons", _("Draw \"flat\" buttons"), diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index d6ac9fa516..ec91321a02 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -497,6 +497,8 @@ RouteTimeAxisView::parameter_changed (string const & p) } else { gm.get_level_meter().set_max_audio_meter_count (0); } + } else if (p == "use-route-color-for-bg") { + route_color_changed (); } } @@ -1034,6 +1036,8 @@ RouteTimeAxisView::route_color_changed () _view->apply_color (color(), StreamView::RegionColor); } number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color())); + + set_bg_color_from_route (controls_ebox, UIConfiguration::instance().get_use_route_color_for_bg()); } void diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index ff3610bd6f..bed678467a 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -2743,3 +2743,37 @@ RouteUI::rename_current_playlist () } } } + +void +RouteUI::set_bg_color_from_route (Gtk::Widget& w, bool yn) +{ + using namespace ARDOUR_UI_UTILS; + + Glib::RefPtr rc = w.get_modifier_style (); + + if (yn) { + Gdk::Color lighter_bg; + + HSV l (gdk_color_to_rgba (route_color())); + l.h += std::min (l.h + 0.08, 1.0); + l.s = 0.15; + l.v -= std::max (0.0, 0.05); + set_color_from_rgba (lighter_bg, l.color ()); + + rc->set_bg (Gtk::STATE_PRELIGHT, lighter_bg); + rc->set_bg (Gtk::STATE_NORMAL, lighter_bg); + rc->set_bg (Gtk::STATE_SELECTED, lighter_bg); + rc->set_bg (Gtk::STATE_ACTIVE, lighter_bg); + rc->set_color_flags (Gtk::STATE_PRELIGHT, Gtk::RC_BG); + rc->set_color_flags (Gtk::STATE_NORMAL, Gtk::RC_BG); + rc->set_color_flags (Gtk::STATE_SELECTED, Gtk::RC_BG); + rc->set_color_flags (Gtk::STATE_ACTIVE, Gtk::RC_BG); + } else { + rc->unset_color_flags (Gtk::STATE_PRELIGHT, Gtk::RC_BG); + rc->unset_color_flags (Gtk::STATE_NORMAL, Gtk::RC_BG); + rc->unset_color_flags (Gtk::STATE_SELECTED, Gtk::RC_BG); + rc->unset_color_flags (Gtk::STATE_ACTIVE, Gtk::RC_BG); + } + + w.modify_style (rc); +} diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 926ffbe220..ce6a318d71 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -241,6 +241,7 @@ protected: bool verify_new_route_name (const std::string& name); void check_rec_enable_sensitivity (); void route_gui_changed (PBD::PropertyChange const&); + void set_bg_color_from_route (Gtk::Widget&, bool yn); PatchChangeGridDialog* patch_change_dialog () const; diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index 47380433eb..7d78a79753 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -33,6 +33,7 @@ UI_CONFIG_VARIABLE (bool, all_floating_windows_are_dialogs, "all-floating-window UI_CONFIG_VARIABLE (bool, floating_monitor_section, "floating-monitor-section", false) UI_CONFIG_VARIABLE (bool, transients_follow_front, "transients-follow-front", false) UI_CONFIG_VARIABLE (bool, color_regions_using_track_color, "color-regions-using-track-color", false) +UI_CONFIG_VARIABLE (bool, use_route_color_for_bg, "use-route-color-for-bg", false) UI_CONFIG_VARIABLE (uint32_t, vertical_region_gap, "vertical-region-gap", 0) UI_CONFIG_VARIABLE (bool, editor_stereo_only_meters, "editor-stereo-only-meters", true) UI_CONFIG_VARIABLE (bool, show_waveform_clipping, "show-waveform-clipping", true)