solo buttons are now ArdourButtons

git-svn-id: svn://localhost/ardour2/branches/3.0@10401 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-11-02 18:48:32 +00:00
parent f9bff66f9b
commit 11fdd6cd18
11 changed files with 135 additions and 133 deletions

View File

@ -399,40 +399,87 @@
<Option name="rude audition text" value="979797ff"/>
<Option name="rude audition text active" value="ffffffff"/>
<Option name="rude audition text mid" value="00000000"/>
<Option name="mute button border start" value="a50303ff"/>
<Option name="mute button border end" value="684d4dff"/>
<Option name="mute button border start" value="fbf675ff"/>
<Option name="mute button border end" value="8e8b41ff"/>
<Option name="mute button border start selected" value="00000000"/>
<Option name="mute button border end selected" value="00000000"/>
<Option name="mute button fill start" value="684d4dff"/>
<Option name="mute button fill end" value="513c3cff"/>
<Option name="mute button fill start active" value="ff1f1fff"/>
<Option name="mute button fill end active" value="e21b1bff"/>
<Option name="mute button fill start mid" value="00000000"/>
<Option name="mute button fill end mid" value="00000000"/>
<Option name="mute button fill start" value="7f7d55ff"/>
<Option name="mute button fill end" value="5d5d59ff"/>
<Option name="mute button fill start active" value="fcf88dff"/>
<Option name="mute button fill end active" value="fbf675ff"/>
<Option name="mute button fill start mid" value="fffee9ff"/>
<Option name="mute button fill end mid" value="f8f4a7ff"/>
<Option name="mute button led" value="00000000"/>
<Option name="mute button led active" value="00000000"/>
<Option name="mute button led mid" value="00000000"/>
<Option name="mute button text" value="979797ff"/>
<Option name="mute button text active" value="ffffffff"/>
<Option name="mute button text" value="d6d6d3ff"/>
<Option name="mute button text active" value="484840ff"/>
<Option name="mute button text mid" value="00000000"/>
<Option name="send alert button border start" value="a50303ff"/>
<Option name="send alert button border end" value="684d4dff"/>
<Option name="solo button border start" value="00000000"/>
<Option name="solo button border end" value="00000000"/>
<Option name="solo button border start selected" value="00000000"/>
<Option name="solo button border end selected" value="00000000"/>
<Option name="solo button fill start" value="00000000"/>
<Option name="solo button fill end" value="00000000"/>
<Option name="solo button fill start active" value="00000000"/>
<Option name="solo button fill end active" value="00000000"/>
<Option name="solo button fill start mid" value="00000000"/>
<Option name="solo button fill end mid" value="00000000"/>
<Option name="solo button led" value="00000000"/>
<Option name="solo button led active" value="00000000"/>
<Option name="solo button led mid" value="00000000"/>
<Option name="solo button text" value="00000000"/>
<Option name="solo button text active" value="00000000"/>
<Option name="solo button text mid" value="00000000"/>
<Option name="record enable button border start" value="00000000"/>
<Option name="record enable button border end" value="00000000"/>
<Option name="record enable button border start selected" value="00000000"/>
<Option name="record enable button border end selected" value="00000000"/>
<Option name="record enable button fill start" value="00000000"/>
<Option name="record enable button fill end" value="00000000"/>
<Option name="record enable button fill start active" value="00000000"/>
<Option name="record enable button fill end active" value="00000000"/>
<Option name="record enable button fill start mid" value="00000000"/>
<Option name="record enable button fill end mid" value="00000000"/>
<Option name="record enable button led" value="00000000"/>
<Option name="record enable button led active" value="00000000"/>
<Option name="record enable button led mid" value="00000000"/>
<Option name="record enable button text" value="00000000"/>
<Option name="record enable button text active" value="00000000"/>
<Option name="record enable button text mid" value="00000000"/>
<Option name="send alert button border start" value="9baa8dff"/>
<Option name="send alert button border end" value="6d7762ff"/>
<Option name="send alert button border start selected" value="00000000"/>
<Option name="send alert button border end selected" value="00000000"/>
<Option name="send alert button fill start" value="684d4dff"/>
<Option name="send alert button fill end" value="513c3cff"/>
<Option name="send alert button fill start active" value="ff1f1fff"/>
<Option name="send alert button fill end active" value="e21b1bff"/>
<Option name="send alert button fill start" value="4e5647ff"/>
<Option name="send alert button fill end" value="43493cff"/>
<Option name="send alert button fill start active" value="91f928ff"/>
<Option name="send alert button fill end active" value="85e524ff"/>
<Option name="send alert button fill start mid" value="00000000"/>
<Option name="send alert button fill end mid" value="00000000"/>
<Option name="send alert button led" value="00000000"/>
<Option name="send alert button led active" value="00000000"/>
<Option name="send alert button led mid" value="00000000"/>
<Option name="send alert button text" value="979797ff"/>
<Option name="send alert button text active" value="ffffffff"/>
<Option name="send alert button text" value="e4e4e2ff"/>
<Option name="send alert button text active" value="696959ff"/>
<Option name="send alert button text mid" value="00000000"/>
<Option name="solo button border start" value="9baa8dff"/>
<Option name="solo button border end" value="6d7762ff"/>
<Option name="solo button border start selected" value="00000000"/>
<Option name="solo button border end selected" value="00000000"/>
<Option name="solo button fill start" value="4e5647ff"/>
<Option name="solo button fill end" value="43493cff"/>
<Option name="solo button fill start active" value="91f928ff"/>
<Option name="solo button fill end active" value="85e524ff"/>
<Option name="solo button fill start mid" value="00000000"/>
<Option name="solo button fill end mid" value="00000000"/>
<Option name="solo button led" value="00000000"/>
<Option name="solo button led active" value="00000000"/>
<Option name="solo button led mid" value="00000000"/>
<Option name="solo button text" value="e4e4e2ff"/>
<Option name="solo button text active" value="696959ff"/>
<Option name="solo button text mid" value="00000000"/>
</Canvas>
</Ardour>

View File

@ -397,3 +397,4 @@ widget "*processor postfader" style:highest "processor"
widget "*MonitorSectionLabel" style:highest "very_small_text"
widget "*mute button" style:highest "small_text"
widget "*send alert button" style:highest "small_text"
widget "*solo button" style:highest "small_text"

View File

@ -99,7 +99,7 @@ AudioTimeAxisView::set_route (boost::shared_ptr<Route> rt)
ignore_toggle = false;
mute_button->unset_active_state ();
solo_button->set_active (false);
solo_button->unset_active_state ();
if (is_audio_track()) {
controls_ebox.set_name ("AudioTrackControlsBaseUnselected");

View File

@ -131,9 +131,9 @@ EditorRoutes::EditorRoutes (Editor* e)
// Solo enable toggle
CellRendererPixbufMulti* solo_col_renderer = manage (new CellRendererPixbufMulti());
solo_col_renderer->set_pixbuf (0, ::get_icon("solo-disabled"));
solo_col_renderer->set_pixbuf (1, ::get_icon("solo-enabled"));
solo_col_renderer->set_pixbuf (3, ::get_icon("soloed-by-others"));
solo_col_renderer->set_pixbuf (ActiveState(0), ::get_icon("solo-disabled"));
solo_col_renderer->set_pixbuf (Active, ::get_icon("solo-enabled"));
solo_col_renderer->set_pixbuf (Mid, ::get_icon("soloed-by-others"));
solo_col_renderer->signal_changed().connect (sigc::mem_fun (*this, &EditorRoutes::on_tv_solo_enable_toggled));
TreeViewColumn* solo_state_column = manage (new TreeViewColumn("S", *solo_col_renderer));
@ -600,7 +600,7 @@ EditorRoutes::routes_added (list<RouteTimeAxisView*> routes)
}
row[_columns.mute_state] = (*x)->route()->muted() ? Active : ActiveState (0);
row[_columns.solo_state] = RouteUI::solo_visual_state ((*x)->route());
row[_columns.solo_state] = RouteUI::solo_active_state ((*x)->route());
row[_columns.solo_isolate_state] = (*x)->route()->solo_isolated();
row[_columns.solo_safe_state] = (*x)->route()->solo_safe();
row[_columns.name_editable] = true;
@ -1396,7 +1396,7 @@ EditorRoutes::update_solo_display (bool /* selfsoloed */)
for (i = rows.begin(); i != rows.end(); ++i) {
boost::shared_ptr<Route> route = (*i)[_columns.route];
(*i)[_columns.solo_state] = RouteUI::solo_visual_state (route);
(*i)[_columns.solo_state] = RouteUI::solo_active_state (route);
}
}
@ -1408,7 +1408,7 @@ EditorRoutes::update_solo_isolate_display ()
for (i = rows.begin(); i != rows.end(); ++i) {
boost::shared_ptr<Route> route = (*i)[_columns.route];
(*i)[_columns.solo_isolate_state] = RouteUI::solo_isolate_visual_state (route) > 0 ? 1 : 0;
(*i)[_columns.solo_isolate_state] = RouteUI::solo_isolate_active_state (route) ? 1 : 0;
}
}
@ -1420,7 +1420,7 @@ EditorRoutes::update_solo_safe_display ()
for (i = rows.begin(); i != rows.end(); ++i) {
boost::shared_ptr<Route> route = (*i)[_columns.route];
(*i)[_columns.solo_safe_state] = RouteUI::solo_safe_visual_state (route) > 0 ? 1 : 0;
(*i)[_columns.solo_safe_state] = RouteUI::solo_safe_active_state (route) ? 1 : 0;
}
}

View File

@ -124,7 +124,7 @@ private:
Gtk::TreeModelColumn<std::string> text;
Gtk::TreeModelColumn<bool> visible;
Gtk::TreeModelColumn<uint32_t> rec_state;
Gtk::TreeModelColumn<Gtkmm2ext::ActiveState> mute_state;
Gtk::TreeModelColumn<uint32_t> mute_state;
Gtk::TreeModelColumn<uint32_t> solo_state;
Gtk::TreeModelColumn<uint32_t> solo_isolate_state;
Gtk::TreeModelColumn<uint32_t> solo_safe_state;

View File

@ -137,7 +137,7 @@ MidiTimeAxisView::set_route (boost::shared_ptr<Route> rt)
ignore_toggle = false;
mute_button->unset_active_state ();
solo_button->set_active (false);
solo_button->unset_active_state ();
if (is_midi_track()) {
controls_ebox.set_name ("MidiTimeAxisViewControlsBaseUnselected");

View File

@ -187,9 +187,6 @@ MixerStrip::init ()
hide_button.set_events (hide_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK));
// mute_button->set_name ("MixerMuteButton");
solo_button->set_name ("MixerSoloButton");
monitor_input_button->set_diameter (3);
monitor_disk_button->set_diameter (3);
@ -1792,25 +1789,22 @@ MixerStrip::set_button_names ()
monitor_disk_button->set_text (_("Disk"));
if (_route && _route->solo_safe()) {
solo_button->remove ();
if (solo_safe_image == 0) {
solo_safe_image = new Gtk::Image (::get_icon("solo-safe-enabled"));
solo_safe_image->show ();
if (solo_safe_pixbuf == 0) {
solo_safe_pixbuf = ::get_icon("solo-safe-icon");
}
solo_button->add (*solo_safe_image);
solo_button->set_image (solo_safe_pixbuf);
solo_button->set_text (string());
} else {
solo_button->remove ();
solo_button->add (solo_button_label);
solo_button_label.show ();
solo_button->set_image (Glib::RefPtr<Gdk::Pixbuf>());
if (!Config->get_solo_control_is_listen_control()) {
solo_button_label.set_text (_("Solo"));
solo_button->set_text (_("Solo"));
} else {
switch (Config->get_listen_position()) {
case AfterFaderListen:
solo_button_label.set_text (_("AFL"));
solo_button->set_text (_("AFL"));
break;
case PreFaderListen:
solo_button_label.set_text (_("PFL"));
solo_button->set_text (_("PFL"));
break;
}
}
@ -1824,24 +1818,22 @@ MixerStrip::set_button_names ()
monitor_disk_button->set_text (_("D"));
if (_route && _route->solo_safe()) {
solo_button->remove ();
if (solo_safe_image == 0) {
solo_safe_image = new Gtk::Image (::get_icon("solo-safe-enabled"));
solo_safe_image->show ();
if (solo_safe_pixbuf == 0) {
solo_safe_pixbuf =::get_icon("solo-safe-icon");
}
solo_button->add (*solo_safe_image);
solo_button->set_image (solo_safe_pixbuf);
solo_button->set_text (string());
} else {
solo_button->remove ();
solo_button->add (solo_button_label);
solo_button_label.show ();
solo_button->set_image (Glib::RefPtr<Gdk::Pixbuf>());
if (!Config->get_solo_control_is_listen_control()) {
solo_button_label.set_text (_("S"));
solo_button->set_text (_("S"));
} else {
switch (Config->get_listen_position()) {
case AfterFaderListen:
solo_button_label.set_text (_("A"));
solo_button->set_text (_("A"));
break;
case PreFaderListen:
solo_button_label.set_text (_("P"));
solo_button->set_text (_("P"));
break;
}
}

View File

@ -2352,26 +2352,23 @@ RouteTimeAxisView::set_button_names ()
if (_route && _route->solo_safe()) {
solo_button->remove ();
if (solo_safe_image == 0) {
solo_safe_image = new Gtk::Image (::get_icon("solo-safe-enabled"));
solo_safe_image->show ();
if (solo_safe_pixbuf == 0) {
solo_safe_pixbuf = ::get_icon("solo-safe-icon");
}
solo_button->add (*solo_safe_image);
solo_button->set_image (solo_safe_pixbuf);
solo_button->set_text (string());
} else {
solo_button->remove ();
solo_button->add (solo_button_label);
solo_button_label.show ();
if (Config->get_solo_control_is_listen_control()) {
switch (Config->get_listen_position()) {
case AfterFaderListen:
solo_button_label.set_text (_("A"));
solo_button->set_text (_("A"));
break;
case PreFaderListen:
solo_button_label.set_text (_("P"));
solo_button->set_text (_("P"));
break;
}
} else {
solo_button_label.set_text (_("s"));
solo_button->set_text (_("s"));
}
}
mute_button->set_text (_("m"));

View File

@ -81,7 +81,6 @@ RouteUI::~RouteUI()
delete sends_menu;
delete record_menu;
delete _invert_menu;
delete solo_safe_image;
}
void
@ -108,20 +107,15 @@ RouteUI::init ()
multiple_mute_change = false;
multiple_solo_change = false;
_i_am_the_modifier = 0;
solo_safe_image = 0;
setup_invert_buttons ();
mute_button = manage (new ArdourButton);
// mute_button->set_self_managed (true);
mute_button->set_name ("mute button");
UI::instance()->set_tip (mute_button, _("Mute this track"), "");
solo_button = manage (new BindableToggleButton);
// solo_button->set_self_managed (true);
solo_button = manage (new ArdourButton);
solo_button->set_name ("solo button");
solo_button->add (solo_button_label);
solo_button_label.show ();
UI::instance()->set_tip (solo_button, _("Mute other (non-soloed) tracks"), "");
solo_button->set_no_show_all (true);
@ -133,7 +127,6 @@ RouteUI::init ()
show_sends_button = manage (new ArdourButton);
show_sends_button->set_name ("send alert button");
// show_sends_button->set_self_managed (true);
UI::instance()->set_tip (show_sends_button, _("make mixer strips show sends to this bus"), "");
monitor_input_button = manage (new ArdourButton (ArdourButton::led_default_elements));
@ -935,89 +928,59 @@ RouteUI::send_blink (bool onoff)
}
}
int
RouteUI::solo_visual_state (boost::shared_ptr<Route> r)
Gtkmm2ext::ActiveState
RouteUI::solo_active_state (boost::shared_ptr<Route> r)
{
if (r->is_master() || r->is_monitor()) {
return 0;
return ActiveState (0);
}
if (Config->get_solo_control_is_listen_control()) {
if (r->listening_via_monitor()) {
return 1;
return Active;
} else {
return 0;
return ActiveState (0);
}
}
if (r->soloed()) {
if (!r->self_soloed()) {
return 3;
return Mid;
} else {
return 1;
return Active;
}
} else {
return 0;
return ActiveState(0);
}
}
int
RouteUI::solo_visual_state_with_isolate (boost::shared_ptr<Route> r)
Gtkmm2ext::ActiveState
RouteUI::solo_isolate_active_state (boost::shared_ptr<Route> r)
{
if (r->is_master() || r->is_monitor()) {
return 0;
}
if (Config->get_solo_control_is_listen_control()) {
if (r->listening_via_monitor()) {
return 1;
} else {
return 0;
}
return ActiveState (0);
}
if (r->solo_isolated()) {
return 2;
} else if (r->soloed()) {
if (!r->self_soloed()) {
return 3;
} else {
return 1;
}
return Active;
} else {
return 0;
return ActiveState(0);
}
}
int
RouteUI::solo_isolate_visual_state (boost::shared_ptr<Route> r)
Gtkmm2ext::ActiveState
RouteUI::solo_safe_active_state (boost::shared_ptr<Route> r)
{
if (r->is_master() || r->is_monitor()) {
return 0;
}
if (r->solo_isolated()) {
return 1;
} else {
return 0;
}
}
int
RouteUI::solo_safe_visual_state (boost::shared_ptr<Route> r)
{
if (r->is_master() || r->is_monitor()) {
return 0;
return ActiveState (0);
}
if (r->solo_safe()) {
return 1;
return Active;
} else {
return 0;
return ActiveState (0);
}
}
@ -1028,17 +991,21 @@ RouteUI::update_solo_display ()
if (Config->get_solo_control_is_listen_control()) {
if (solo_button->get_active() != (x = _route->listening_via_monitor())) {
if ((solo_button->active_state() == Active)!= (x = _route->listening_via_monitor())) {
++_i_am_the_modifier;
solo_button->set_active(x);
solo_button->set_active_state (Active);
--_i_am_the_modifier;
}
} else {
if (solo_button->get_active() != (x = _route->soloed())) {
if ((solo_button->active_state() == Active) != (x = _route->soloed())) {
++_i_am_the_modifier;
solo_button->set_active (x);
if (x) {
solo_button->set_active_state (Active);
} else {
solo_button->unset_active_state();
}
--_i_am_the_modifier;
}
@ -1074,7 +1041,7 @@ RouteUI::update_solo_display ()
}
}
solo_button->set_visual_state (solo_visual_state (_route));
solo_button->set_active_state (solo_active_state (_route));
/* some changes to solo status can affect mute display, so catch up
*/

View File

@ -93,18 +93,17 @@ class RouteUI : public virtual AxisView
Gtk::HBox _invert_button_box;
ArdourButton* mute_button;
BindableToggleButton* solo_button;
ArdourButton* solo_button;
BindableToggleButton* rec_enable_button; /* audio tracks */
ArdourButton* show_sends_button; /* busses */
ArdourButton* monitor_input_button;
ArdourButton* monitor_disk_button;
Gtk::Image* solo_safe_image;
Glib::RefPtr<Gdk::Pixbuf> solo_safe_pixbuf;
ArdourButton* solo_safe_led;
ArdourButton* solo_isolated_led;
Gtk::Label solo_button_label;
Gtk::Label rec_enable_button_label;
Gtk::Label monitor_input_button_label;
Gtk::Label monitor_disk_button_label;
@ -219,10 +218,9 @@ class RouteUI : public virtual AxisView
void save_as_template ();
void open_remote_control_id_dialog ();
static int solo_visual_state (boost::shared_ptr<ARDOUR::Route>);
static int solo_visual_state_with_isolate (boost::shared_ptr<ARDOUR::Route>);
static int solo_isolate_visual_state (boost::shared_ptr<ARDOUR::Route>);
static int solo_safe_visual_state (boost::shared_ptr<ARDOUR::Route>);
static Gtkmm2ext::ActiveState solo_active_state (boost::shared_ptr<ARDOUR::Route>);
static Gtkmm2ext::ActiveState solo_isolate_active_state (boost::shared_ptr<ARDOUR::Route>);
static Gtkmm2ext::ActiveState solo_safe_active_state (boost::shared_ptr<ARDOUR::Route>);
static Gtkmm2ext::ActiveState mute_active_state (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Route>);
protected:

View File

@ -292,7 +292,7 @@ UIConfiguration::color_by_name (const std::string& name)
return i->second->get();
}
cerr << string_compose (_("Color %1 not found"), name) << endl;
// cerr << string_compose (_("Color %1 not found"), name) << endl;
return RGBA_TO_UINT (random()%256,random()%256,random()%256,0xff);
}