diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/group_tabs.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/route_group_dialog.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/route_group_dialog.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/streamview.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/streamview.h | 2 |
9 files changed, 42 insertions, 13 deletions
diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index ec80bc4291..2e35d84809 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -517,6 +517,15 @@ GroupTabs::set_group_color (RouteGroup* group, Gdk::Color color) char buf[64]; snprintf (buf, sizeof (buf), "%d:%d:%d", color.get_red(), color.get_green(), color.get_blue()); gui_state.set (group_gui_id (group), "color", buf); + + /* This is a bit of a hack, but this might change + our route's effective color, so emit gui_changed + for our routes. + */ + + for (RouteList::iterator i = group->route_list()->begin(); i != group->route_list()->end(); ++i) { + (*i)->gui_changed (X_("color"), 0); + } } /** @return the ID string to use for the GUI state of a route group */ diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 9f2f20b22a..ad2891408b 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -375,10 +375,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) revert_to_default_display (); - if (set_color_from_route()) { - set_color (unique_random_color()); - } - if (route()->is_master()) { solo_button->hide (); below_panner_box.hide (); diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc index 6b1b5a3f91..bc497e4467 100644 --- a/gtk2_ardour/route_group_dialog.cc +++ b/gtk2_ardour/route_group_dialog.cc @@ -45,6 +45,7 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) , _select (_("Selection")) , _edit (_("Editing")) , _route_active (_("Route active state")) + , _share_color (_("Color")) { set_modal (true); set_skip_taskbar_hint (true); @@ -84,6 +85,7 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) _name.set_text (_group->name ()); _active.set_active (_group->is_active ()); + _color.set_color (GroupTabs::group_color (_group)); VBox* options_box = manage (new VBox); options_box->set_spacing (6); @@ -102,10 +104,11 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) _select.set_active (_group->is_select()); _edit.set_active (_group->is_edit()); _route_active.set_active (_group->is_route_active()); - _color.set_color (GroupTabs::group_color (_group)); + _share_color.set_active (_group->is_color()); _name.signal_changed().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _active.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); + _color.signal_color_set().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _gain.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _relative.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _mute.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); @@ -114,8 +117,8 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) _select.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _edit.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); _route_active.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); - _color.signal_color_set().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); - + _share_color.signal_toggled().connect (sigc::mem_fun (*this, &RouteGroupDialog::update)); + gain_toggled (); Table* table = manage (new Table (11, 4, false)); @@ -138,7 +141,7 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) table->attach (_select, 1, 3, 6, 7, Gtk::FILL, Gtk::FILL, 0, 0); table->attach (_edit, 1, 3, 7, 8, Gtk::FILL, Gtk::FILL, 0, 0); table->attach (_route_active, 1, 3, 8, 9, Gtk::FILL, Gtk::FILL, 0, 0); - + table->attach (_share_color, 1, 3, 9, 10, Gtk::FILL, Gtk::FILL, 0, 0); options_box->pack_start (*table, false, true); main_vbox->pack_start (*options_box, false, true); @@ -206,10 +209,11 @@ RouteGroupDialog::update () plist.add (Properties::relative, _relative.get_active()); plist.add (Properties::active, _active.get_active()); plist.add (Properties::name, string (_name.get_text())); + plist.add (Properties::color, _share_color.get_active()); - GroupTabs::set_group_color (_group, _color.get_color ()); - _group->apply_changes (plist); + + GroupTabs::set_group_color (_group, _color.get_color ()); } void diff --git a/gtk2_ardour/route_group_dialog.h b/gtk2_ardour/route_group_dialog.h index 9fa242f7e0..c3d4798ce5 100644 --- a/gtk2_ardour/route_group_dialog.h +++ b/gtk2_ardour/route_group_dialog.h @@ -48,6 +48,7 @@ private: Gtk::CheckButton _select; Gtk::CheckButton _edit; Gtk::CheckButton _route_active; + Gtk::CheckButton _share_color; Gtk::Button* _ok; Gtk::ColorButton _color; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 6cf06a048d..66b0192119 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -914,7 +914,7 @@ void RouteTimeAxisView::route_color_changed () { if (_view) { - _view->apply_color (_color, StreamView::RegionColor); + _view->apply_color (color(), StreamView::RegionColor); } } @@ -2487,3 +2487,4 @@ RouteTimeAxisView::state_id() const { return string_compose ("rtav %1", _route->id().to_s()); } + diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index a1a7f49ebc..fc9d878b83 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -44,6 +44,7 @@ #include "mixer_strip.h" #include "automation_time_axis.h" #include "route_time_axis.h" +#include "group_tabs.h" #include "ardour/route.h" #include "ardour/event_type_map.h" @@ -1809,3 +1810,18 @@ RouteUI::route_gui_changed (string what_changed) } } } + +/** @return the color that this route should use; it maybe its own, + or it maybe that of its route group. +*/ +Gdk::Color +RouteUI::color () const +{ + RouteGroup* g = _route->route_group (); + + if (g && g->is_color()) { + return GroupTabs::group_color (g); + } + + return _color; +} diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 7ba9fe6144..e5f240ff5b 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -57,6 +57,8 @@ class RouteUI : public virtual AxisView virtual ~RouteUI(); + Gdk::Color color () const; + virtual void set_route (boost::shared_ptr<ARDOUR::Route>); virtual void set_button_names () = 0; diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index b0c8cd93a4..55e2020874 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -357,7 +357,7 @@ StreamView::diskstream_changed () } void -StreamView::apply_color (Gdk::Color& color, ColorTarget target) +StreamView::apply_color (Gdk::Color color, ColorTarget target) { list<RegionView *>::iterator i; diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index 6e0c39ebc8..795fe0f687 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -89,7 +89,7 @@ public: }; Gdk::Color get_region_color () const { return region_color; } - void apply_color (Gdk::Color&, ColorTarget t); + void apply_color (Gdk::Color, ColorTarget t); uint32_t num_selected_regionviews () const; |