rec-enable buttons are now ArdourButtons, but with a minor graphical glitch that will be solved/fixed soon-ish

git-svn-id: svn://localhost/ardour2/branches/3.0@10402 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-11-02 19:51:59 +00:00
parent 11fdd6cd18
commit bcac4f1c96
5 changed files with 42 additions and 83 deletions

View file

@ -414,39 +414,39 @@
<Option name="mute button led mid" value="00000000"/> <Option name="mute button led mid" value="00000000"/>
<Option name="mute button text" value="d6d6d3ff"/> <Option name="mute button text" value="d6d6d3ff"/>
<Option name="mute button text active" value="484840ff"/> <Option name="mute button text active" value="484840ff"/>
<Option name="mute button text mid" value="00000000"/> <Option name="mute button text mid" value="484840ff"/>
<Option name="solo button border start" value="00000000"/> <Option name="solo button border start" value="adfa36ff"/>
<Option name="solo button border end" value="00000000"/> <Option name="solo button border end" value="5d8c16ff"/>
<Option name="solo button border start selected" value="00000000"/> <Option name="solo button border start selected" value="00000000"/>
<Option name="solo button border end 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 start" value="636d5fff"/>
<Option name="solo button fill end" value="00000000"/> <Option name="solo button fill end" value="575f53ff"/>
<Option name="solo button fill start active" value="00000000"/> <Option name="solo button fill start active" value="adfa36ff"/>
<Option name="solo button fill end active" value="00000000"/> <Option name="solo button fill end active" value="9ce925ff"/>
<Option name="solo button fill start mid" value="00000000"/> <Option name="solo button fill start mid" value="00000000"/>
<Option name="solo button fill end mid" value="00000000"/> <Option name="solo button fill end mid" value="00000000"/>
<Option name="solo button led" value="00000000"/> <Option name="solo button led" value="00000000"/>
<Option name="solo button led active" value="00000000"/> <Option name="solo button led active" value="00000000"/>
<Option name="solo button led mid" value="00000000"/> <Option name="solo button led mid" value="00000000"/>
<Option name="solo button text" value="00000000"/> <Option name="solo button text" value="b9bcb6ff"/>
<Option name="solo button text active" value="00000000"/> <Option name="solo button text active" value="000000ff"/>
<Option name="solo button text mid" 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 start" value="cc0909ff"/>
<Option name="record enable button border end" value="00000000"/> <Option name="record enable button border end" value="7a0d0dff"/>
<Option name="record enable button border start selected" 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 border end selected" value="00000000"/>
<Option name="record enable button fill start" value="00000000"/> <Option name="record enable button fill start" value="603f3fff"/>
<Option name="record enable button fill end" value="00000000"/> <Option name="record enable button fill end" value="3d2828ff"/>
<Option name="record enable button fill start active" value="00000000"/> <Option name="record enable button fill start active" value="fb0c0cff"/>
<Option name="record enable button fill end active" value="00000000"/> <Option name="record enable button fill end active" value="b50f0fff"/>
<Option name="record enable button fill start mid" value="00000000"/> <Option name="record enable button fill start mid" value="ffa8a8ff"/>
<Option name="record enable button fill end mid" value="00000000"/> <Option name="record enable button fill end mid" value="fb7c7cff"/>
<Option name="record enable button led" 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 active" value="00000000"/>
<Option name="record enable button led mid" 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" value="c6c1c2ff"/>
<Option name="record enable button text active" value="00000000"/> <Option name="record enable button text active" value="00000000"/>
<Option name="record enable button text mid" value="00000000"/> <Option name="record enable button text mid" value="433232ff"/>
<Option name="send alert button border start" value="9baa8dff"/> <Option name="send alert button border start" value="9baa8dff"/>
<Option name="send alert button border end" value="6d7762ff"/> <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 start selected" value="00000000"/>
@ -463,23 +463,5 @@
<Option name="send alert button text" value="e4e4e2ff"/> <Option name="send alert button text" value="e4e4e2ff"/>
<Option name="send alert button text active" value="696959ff"/> <Option name="send alert button text active" value="696959ff"/>
<Option name="send alert button text mid" value="00000000"/> <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> </Canvas>
</Ardour> </Ardour>

View file

@ -302,12 +302,6 @@ MixerStrip::init ()
input_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::input_press), false); input_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::input_press), false);
output_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::output_press), false); output_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::output_press), false);
/* we don't need this if its not an audio track, but we don't know that yet and it doesn't
hurt (much).
*/
rec_enable_button->set_name ("MixerRecordEnableButton");
/* ditto for this button and busses */ /* ditto for this button and busses */
name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false); name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false);
@ -1783,7 +1777,7 @@ MixerStrip::set_button_names ()
{ {
switch (_width) { switch (_width) {
case Wide: case Wide:
rec_enable_button_label.set_text (_("Rec")); rec_enable_button->set_text (_("Rec"));
mute_button->set_text (_("Mute")); mute_button->set_text (_("Mute"));
monitor_input_button->set_text (_("In")); monitor_input_button->set_text (_("In"));
monitor_disk_button->set_text (_("Disk")); monitor_disk_button->set_text (_("Disk"));
@ -1812,7 +1806,7 @@ MixerStrip::set_button_names ()
break; break;
default: default:
rec_enable_button_label.set_text (_("R")); rec_enable_button->set_text (_("R"));
mute_button->set_text (_("M")); mute_button->set_text (_("M"));
monitor_input_button->set_text (_("I")); monitor_input_button->set_text (_("I"));
monitor_disk_button->set_text (_("D")); monitor_disk_button->set_text (_("D"));

View file

@ -179,10 +179,10 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
switch (track()->mode()) { switch (track()->mode()) {
case ARDOUR::Normal: case ARDOUR::Normal:
case ARDOUR::NonLayered: case ARDOUR::NonLayered:
rec_enable_button->add (*(manage (new Image (::get_icon (X_("record_normal_red")))))); rec_enable_button->set_image (::get_icon (X_("record_normal_red")));
break; break;
case ARDOUR::Destructive: case ARDOUR::Destructive:
rec_enable_button->add (*(manage (new Image (::get_icon (X_("record_tape_red")))))); rec_enable_button->set_image (::get_icon (X_("record_tape_red")));
break; break;
} }
rec_enable_button->show_all (); rec_enable_button->show_all ();
@ -754,10 +754,10 @@ RouteTimeAxisView::set_track_mode (TrackMode mode, bool apply_to_selection)
switch (mode) { switch (mode) {
case ARDOUR::NonLayered: case ARDOUR::NonLayered:
case ARDOUR::Normal: case ARDOUR::Normal:
rec_enable_button->add (*(manage (new Image (::get_icon (X_("record_normal_red")))))); rec_enable_button->set_image (::get_icon (X_("record_normal_red")));
break; break;
case ARDOUR::Destructive: case ARDOUR::Destructive:
rec_enable_button->add (*(manage (new Image (::get_icon (X_("record_tape_red")))))); rec_enable_button->set_image (::get_icon (X_("record_tape_red")));
break; break;
} }
@ -2348,7 +2348,7 @@ RouteTimeAxisView::remove_underlay (StreamView* v)
void void
RouteTimeAxisView::set_button_names () RouteTimeAxisView::set_button_names ()
{ {
rec_enable_button_label.set_text (_("r")); rec_enable_button->set_text (_("r"));
if (_route && _route->solo_safe()) { if (_route && _route->solo_safe()) {
solo_button->remove (); solo_button->remove ();

View file

@ -119,10 +119,8 @@ RouteUI::init ()
UI::instance()->set_tip (solo_button, _("Mute other (non-soloed) tracks"), ""); UI::instance()->set_tip (solo_button, _("Mute other (non-soloed) tracks"), "");
solo_button->set_no_show_all (true); solo_button->set_no_show_all (true);
rec_enable_button = manage (new BindableToggleButton); rec_enable_button = manage (new ArdourButton);
rec_enable_button->set_name ("record enable button"); rec_enable_button->set_name ("record enable button");
rec_enable_button->add (rec_enable_button_label);
rec_enable_button_label.show ();
UI::instance()->set_tip (rec_enable_button, _("Enable recording on this track"), ""); UI::instance()->set_tip (rec_enable_button, _("Enable recording on this track"), "");
show_sends_button = manage (new ArdourButton); show_sends_button = manage (new ArdourButton);
@ -541,6 +539,10 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
} }
} }
cerr << name() << " re button press, i am " << _i_am_the_modifier << " active state = "
<< rec_enable_button->active_state()
<< endl;
if (!_i_am_the_modifier && is_track() && rec_enable_button) { if (!_i_am_the_modifier && is_track() && rec_enable_button) {
if (Keyboard::is_button2_event (ev)) { if (Keyboard::is_button2_event (ev)) {
@ -550,7 +552,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) { } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
_session->set_record_enabled (_session->get_routes(), !rec_enable_button->get_active()); _session->set_record_enabled (_session->get_routes(), !rec_enable_button->active_state());
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
@ -558,7 +560,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
NOTE: Primary-button2 is MIDI learn. NOTE: Primary-button2 is MIDI learn.
*/ */
if (ev->button == 1 && _route->route_group()) { if (ev->button == 1 && _route->route_group()) {
_session->set_record_enabled (_route->route_group()->route_list(), !rec_enable_button->get_active(), Session::rt_cleanup, true); _session->set_record_enabled (_route->route_group()->route_list(), !rec_enable_button->active_state(), Session::rt_cleanup, true);
} }
} else if (Keyboard::is_context_menu_event (ev)) { } else if (Keyboard::is_context_menu_event (ev)) {
@ -569,7 +571,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
boost::shared_ptr<RouteList> rl (new RouteList); boost::shared_ptr<RouteList> rl (new RouteList);
rl->push_back (route()); rl->push_back (route());
_session->set_record_enabled (rl, !rec_enable_button->get_active()); _session->set_record_enabled (rl, !rec_enable_button->active_state());
} }
} }
@ -734,7 +736,7 @@ RouteUI::step_edit_changed (bool yn)
{ {
if (yn) { if (yn) {
if (rec_enable_button) { if (rec_enable_button) {
rec_enable_button->set_visual_state (3); rec_enable_button->set_active_state (Active);
} }
start_step_editing (); start_step_editing ();
@ -746,7 +748,7 @@ RouteUI::step_edit_changed (bool yn)
} else { } else {
if (rec_enable_button) { if (rec_enable_button) {
rec_enable_button->set_visual_state (0); rec_enable_button->unset_active_state ();
} }
stop_step_editing (); stop_step_editing ();
@ -1126,30 +1128,15 @@ RouteUI::update_rec_display ()
return; return;
} }
bool model = _route->record_enabled(); if (_route->record_enabled()) {
bool view = rec_enable_button->get_active();
/* first make sure the button's "depressed" visual
is correct.
*/
if (model != view) {
++_i_am_the_modifier;
rec_enable_button->set_active (model);
--_i_am_the_modifier;
}
/* now make sure its color state is correct */
if (model) {
switch (_session->record_status ()) { switch (_session->record_status ()) {
case Session::Recording: case Session::Recording:
rec_enable_button->set_visual_state (1); rec_enable_button->set_active_state (Active);
break; break;
case Session::Disabled: case Session::Disabled:
case Session::Enabled: case Session::Enabled:
rec_enable_button->set_visual_state (2); rec_enable_button->set_active_state (Mid);
break; break;
} }
@ -1159,7 +1146,7 @@ RouteUI::update_rec_display ()
} }
} else { } else {
rec_enable_button->set_visual_state (0); rec_enable_button->unset_active_state ();
if (step_edit_item) { if (step_edit_item) {
step_edit_item->set_sensitive (true); step_edit_item->set_sensitive (true);
@ -1699,7 +1686,7 @@ RouteUI::save_as_template ()
void void
RouteUI::check_rec_enable_sensitivity () RouteUI::check_rec_enable_sensitivity ()
{ {
if (_session->transport_rolling() && rec_enable_button->get_active() && Config->get_disable_disarm_during_roll()) { if (_session->transport_rolling() && rec_enable_button->active_state() && Config->get_disable_disarm_during_roll()) {
rec_enable_button->set_sensitive (false); rec_enable_button->set_sensitive (false);
} else { } else {
rec_enable_button->set_sensitive (true); rec_enable_button->set_sensitive (true);

View file

@ -94,7 +94,7 @@ class RouteUI : public virtual AxisView
Gtk::HBox _invert_button_box; Gtk::HBox _invert_button_box;
ArdourButton* mute_button; ArdourButton* mute_button;
ArdourButton* solo_button; ArdourButton* solo_button;
BindableToggleButton* rec_enable_button; /* audio tracks */ ArdourButton* rec_enable_button; /* audio tracks */
ArdourButton* show_sends_button; /* busses */ ArdourButton* show_sends_button; /* busses */
ArdourButton* monitor_input_button; ArdourButton* monitor_input_button;
ArdourButton* monitor_disk_button; ArdourButton* monitor_disk_button;
@ -104,16 +104,12 @@ class RouteUI : public virtual AxisView
ArdourButton* solo_safe_led; ArdourButton* solo_safe_led;
ArdourButton* solo_isolated_led; ArdourButton* solo_isolated_led;
Gtk::Label rec_enable_button_label;
Gtk::Label monitor_input_button_label; Gtk::Label monitor_input_button_label;
Gtk::Label monitor_disk_button_label; Gtk::Label monitor_disk_button_label;
void send_blink (bool); void send_blink (bool);
sigc::connection send_blink_connection; sigc::connection send_blink_connection;
virtual std::string solo_button_name () const { return "SoloButton"; }
virtual std::string safe_solo_button_name () const { return "SafeSoloButton"; }
Gtk::Menu* mute_menu; Gtk::Menu* mute_menu;
Gtk::Menu* solo_menu; Gtk::Menu* solo_menu;
Gtk::Menu* sends_menu; Gtk::Menu* sends_menu;