convert transport buttons to ArdourButton

git-svn-id: svn://localhost/ardour2/branches/3.0@10473 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-11-07 17:23:27 +00:00
parent a5788defff
commit f690d687d3
5 changed files with 76 additions and 123 deletions

View file

@ -138,13 +138,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
, gui_object_state (new GUIObjectState) , gui_object_state (new GUIObjectState)
, primary_clock (new AudioClock (X_("primary"), false, X_("TransportClockDisplay"), true, true, false, true)) , primary_clock (new AudioClock (X_("primary"), false, X_("TransportClockDisplay"), true, true, false, true))
, secondary_clock (new AudioClock (X_("secondary"), false, X_("SecondaryClockDisplay"), true, true, false, true)) , secondary_clock (new AudioClock (X_("secondary"), false, X_("SecondaryClockDisplay"), true, true, false, true))
, preroll_clock (new AudioClock (X_("preroll"), false, X_("PreRollClock"), true, false, true))
, postroll_clock (new AudioClock (X_("postroll"), false, X_("PostRollClock"), true, false, true))
/* preroll stuff */
, preroll_button (_("pre\nroll"))
, postroll_button (_("post\nroll"))
/* big clock */ /* big clock */
@ -160,14 +153,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
, play_selection_controllable (new TransportControllable ("transport play selection", *this, TransportControllable::PlaySelection)) , play_selection_controllable (new TransportControllable ("transport play selection", *this, TransportControllable::PlaySelection))
, rec_controllable (new TransportControllable ("transport rec-enable", *this, TransportControllable::RecordEnable)) , rec_controllable (new TransportControllable ("transport rec-enable", *this, TransportControllable::RecordEnable))
, roll_button (roll_controllable)
, stop_button (stop_controllable)
, goto_start_button (goto_start_controllable)
, goto_end_button (goto_end_controllable)
, auto_loop_button (auto_loop_controllable)
, play_selection_button (play_selection_controllable)
, rec_button (rec_controllable)
, auto_return_button (_("Auto Return")) , auto_return_button (_("Auto Return"))
, auto_play_button (_("Auto Play")) , auto_play_button (_("Auto Play"))
, auto_input_button (_("Auto Input")) , auto_input_button (_("Auto Input"))
@ -235,14 +220,22 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
original_big_clock_height = -1; original_big_clock_height = -1;
original_big_clock_font_size = 0; original_big_clock_font_size = 0;
roll_button.unset_flags (Gtk::CAN_FOCUS); roll_button.set_controllable (roll_controllable);
stop_button.unset_flags (Gtk::CAN_FOCUS); stop_button.set_controllable (stop_controllable);
goto_start_button.unset_flags (Gtk::CAN_FOCUS); goto_start_button.set_controllable (goto_start_controllable);
goto_end_button.unset_flags (Gtk::CAN_FOCUS); goto_end_button.set_controllable (goto_end_controllable);
auto_loop_button.unset_flags (Gtk::CAN_FOCUS); auto_loop_button.set_controllable (auto_loop_controllable);
play_selection_button.unset_flags (Gtk::CAN_FOCUS); play_selection_button.set_controllable (play_selection_controllable);
rec_button.unset_flags (Gtk::CAN_FOCUS); rec_button.set_controllable (rec_controllable);
join_play_range_button.unset_flags (Gtk::CAN_FOCUS);
roll_button.set_name ("transport button");
stop_button.set_name ("transport button");
goto_start_button.set_name ("transport button");
goto_end_button.set_name ("transport button");
auto_loop_button.set_name ("transport button");
play_selection_button.set_name ("transport button");
rec_button.set_name ("transport recenable button");
last_configure_time= 0; last_configure_time= 0;
last_peak_grab = 0; last_peak_grab = 0;
@ -1714,12 +1707,12 @@ ARDOUR_UI::transport_roll ()
if (!Config->get_seamless_loop()) { if (!Config->get_seamless_loop()) {
_session->request_play_loop (false, true); _session->request_play_loop (false, true);
} }
} else if (_session->get_play_range () && !join_play_range_button.get_active()) { } else if (_session->get_play_range () && !join_play_range_button.active_state()) {
/* stop playing a range if we currently are */ /* stop playing a range if we currently are */
_session->request_play_range (0, true); _session->request_play_range (0, true);
} }
if (join_play_range_button.get_active()) { if (join_play_range_button.active_state()) {
_session->request_play_range (&editor->get_selection().time, true); _session->request_play_range (&editor->get_selection().time, true);
} }
@ -1778,7 +1771,7 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
if (rolling) { if (rolling) {
_session->request_stop (with_abort, true); _session->request_stop (with_abort, true);
} else { } else {
if (join_play_range_button.get_active()) { if (join_play_range_button.active_state()) {
_session->request_play_range (&editor->get_selection().time, true); _session->request_play_range (&editor->get_selection().time, true);
} }
@ -1909,10 +1902,10 @@ void
ARDOUR_UI::map_transport_state () ARDOUR_UI::map_transport_state ()
{ {
if (!_session) { if (!_session) {
auto_loop_button.set_visual_state (0); auto_loop_button.unset_active_state ();
play_selection_button.set_visual_state (0); play_selection_button.unset_active_state ();
roll_button.set_visual_state (0); roll_button.unset_active_state ();
stop_button.set_visual_state (1); stop_button.set_active_state (Gtkmm2ext::Active);
return; return;
} }
@ -1926,37 +1919,37 @@ ARDOUR_UI::map_transport_state ()
if (_session->get_play_range()) { if (_session->get_play_range()) {
play_selection_button.set_visual_state (1); play_selection_button.set_active_state (Gtkmm2ext::Active);
roll_button.set_visual_state (0); roll_button.unset_active_state ();
auto_loop_button.set_visual_state (0); auto_loop_button.unset_active_state ();
} else if (_session->get_play_loop ()) { } else if (_session->get_play_loop ()) {
auto_loop_button.set_visual_state (1); auto_loop_button.set_active_state (Gtkmm2ext::Active);
play_selection_button.set_visual_state (0); play_selection_button.unset_active_state ();
roll_button.set_visual_state (0); roll_button.unset_active_state ();
} else { } else {
roll_button.set_visual_state (1); roll_button.set_active_state (Gtkmm2ext::Active);
play_selection_button.set_visual_state (0); play_selection_button.unset_active_state ();
auto_loop_button.set_visual_state (0); auto_loop_button.unset_active_state ();
} }
if (join_play_range_button.get_active()) { if (join_play_range_button.active_state()) {
/* light up both roll and play-selection if they are joined */ /* light up both roll and play-selection if they are joined */
roll_button.set_visual_state (1); roll_button.set_active_state (Gtkmm2ext::Active);
play_selection_button.set_visual_state (1); play_selection_button.set_active_state (Gtkmm2ext::Active);
} }
stop_button.set_visual_state (0); stop_button.unset_active_state ();
} else { } else {
stop_button.set_visual_state (1); stop_button.set_active_state (Gtkmm2ext::Active);
roll_button.set_visual_state (0); roll_button.unset_active_state ();
play_selection_button.set_visual_state (0); play_selection_button.unset_active_state ();
auto_loop_button.set_visual_state (0); auto_loop_button.unset_active_state ();
update_disk_space (); update_disk_space ();
} }
} }
@ -2382,14 +2375,14 @@ ARDOUR_UI::transport_rec_enable_blink (bool onoff)
if (r == Session::Enabled || (r == Session::Recording && !h)) { if (r == Session::Enabled || (r == Session::Recording && !h)) {
if (onoff) { if (onoff) {
rec_button.set_visual_state (2); rec_button.set_active_state (Active);
} else { } else {
rec_button.set_visual_state (0); rec_button.set_active_state (Mid);
} }
} else if (r == Session::Recording && h) { } else if (r == Session::Recording && h) {
rec_button.set_visual_state (1); rec_button.set_active_state (Mid);
} else { } else {
rec_button.set_visual_state (0); rec_button.unset_active_state ();
} }
} }
@ -3607,10 +3600,10 @@ ARDOUR_UI::step_edit_status_change (bool yn)
// we make insensitive // we make insensitive
if (yn) { if (yn) {
rec_button.set_visual_state (3); rec_button.set_active_state (Mid);
rec_button.set_sensitive (false); rec_button.set_sensitive (false);
} else { } else {
rec_button.set_visual_state (0); rec_button.unset_active_state ();;
rec_button.set_sensitive (true); rec_button.set_sensitive (true);
} }
} }

View file

@ -64,6 +64,7 @@
#include "ardour/session_handle.h" #include "ardour/session_handle.h"
#include "ardour_dialog.h" #include "ardour_dialog.h"
#include "ardour_button.h"
#include "editing.h" #include "editing.h"
#include "ui_config.h" #include "ui_config.h"
#include "window_proxy.h" #include "window_proxy.h"
@ -201,8 +202,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
AudioClock* primary_clock; AudioClock* primary_clock;
AudioClock* secondary_clock; AudioClock* secondary_clock;
AudioClock* preroll_clock;
AudioClock* postroll_clock;
TimeInfoBox* time_info_box; TimeInfoBox* time_info_box;
@ -301,9 +300,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void toggle_mixer_window (); void toggle_mixer_window ();
void toggle_mixer_on_top (); void toggle_mixer_on_top ();
Gtk::ToggleButton preroll_button;
Gtk::ToggleButton postroll_button;
int setup_windows (); int setup_windows ();
void setup_transport (); void setup_transport ();
void setup_clock (); void setup_clock ();
@ -424,14 +420,14 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void set_transport_controllable_state (const XMLNode&); void set_transport_controllable_state (const XMLNode&);
XMLNode& get_transport_controllable_state (); XMLNode& get_transport_controllable_state ();
BindableButton roll_button; ArdourButton roll_button;
BindableButton stop_button; ArdourButton stop_button;
BindableButton goto_start_button; ArdourButton goto_start_button;
BindableButton goto_end_button; ArdourButton goto_end_button;
BindableButton auto_loop_button; ArdourButton auto_loop_button;
BindableButton play_selection_button; ArdourButton play_selection_button;
BindableButton rec_button; ArdourButton rec_button;
BindableToggleButton join_play_range_button; ArdourButton join_play_range_button;
void toggle_external_sync (); void toggle_external_sync ();
void toggle_time_master (); void toggle_time_master ();

View file

@ -236,15 +236,6 @@ ARDOUR_UI::setup_transport ()
transport_tearoff->Visible.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::reattach_tearoff), static_cast<Box*> (&top_packer), transport_tearoff->Visible.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::reattach_tearoff), static_cast<Box*> (&top_packer),
static_cast<Widget*> (&transport_frame), 1)); static_cast<Widget*> (&transport_frame), 1));
goto_start_button.set_name ("TransportButton");
goto_end_button.set_name ("TransportButton");
roll_button.set_name ("TransportButton");
stop_button.set_name ("TransportButton");
play_selection_button.set_name ("TransportButton");
rec_button.set_name ("TransportRecButton");
auto_loop_button.set_name ("TransportButton");
join_play_range_button.set_name ("TransportButton");
auto_return_button.set_name ("TransportButton"); auto_return_button.set_name ("TransportButton");
auto_play_button.set_name ("TransportButton"); auto_play_button.set_name ("TransportButton");
auto_input_button.set_name ("TransportButton"); auto_input_button.set_name ("TransportButton");
@ -262,49 +253,36 @@ ARDOUR_UI::setup_transport ()
Widget* w; Widget* w;
stop_button.set_visual_state (1); stop_button.set_active_state (Active);
w = manage (new Image (get_icon (X_("transport_start"))));
w->show(); goto_start_button.set_image (get_icon (X_("transport_start")));
goto_start_button.add (*w); goto_end_button.set_image (get_icon (X_("transport_end")));
w = manage (new Image (get_icon (X_("transport_end")))); roll_button.set_image (get_icon (X_("transport_play")));
w->show(); stop_button.set_image (get_icon (X_("transport_stop")));
goto_end_button.add (*w); play_selection_button.set_image (get_icon (X_("transport_range")));
w = manage (new Image (get_icon (X_("transport_play")))); rec_button.set_image (get_icon (X_("transport_record")));
w->show(); auto_loop_button.set_image (get_icon (X_("transport_loop")));
roll_button.add (*w); join_play_range_button.set_image (get_icon (X_("tool_object_range")));
w = manage (new Image (get_icon (X_("transport_stop"))));
w->show();
stop_button.add (*w);
w = manage (new Image (get_icon (X_("transport_range"))));
w->show();
play_selection_button.add (*w);
w = manage (new Image (get_icon (X_("transport_record"))));
w->show();
rec_button.add (*w);
w = manage (new Image (get_icon (X_("transport_loop"))));
w->show();
auto_loop_button.add (*w);
w = manage (new Image (get_icon (X_("tool_object_range"))));
w->show ();
join_play_range_button.add (*w);
RefPtr<Action> act; RefPtr<Action> act;
act = ActionManager::get_action (X_("Transport"), X_("Stop")); act = ActionManager::get_action (X_("Transport"), X_("Stop"));
act->connect_proxy (stop_button); stop_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("Roll")); act = ActionManager::get_action (X_("Transport"), X_("Roll"));
act->connect_proxy (roll_button); roll_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("Record")); act = ActionManager::get_action (X_("Transport"), X_("Record"));
act->connect_proxy (rec_button); rec_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("GotoStart")); act = ActionManager::get_action (X_("Transport"), X_("GotoStart"));
act->connect_proxy (goto_start_button); goto_start_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("GotoEnd")); act = ActionManager::get_action (X_("Transport"), X_("GotoEnd"));
act->connect_proxy (goto_end_button); goto_end_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("Loop")); act = ActionManager::get_action (X_("Transport"), X_("Loop"));
act->connect_proxy (auto_loop_button); auto_loop_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("PlaySelection")); act = ActionManager::get_action (X_("Transport"), X_("PlaySelection"));
act->connect_proxy (play_selection_button); play_selection_button.set_related_action (act);
act = ActionManager::get_action (X_("Transport"), X_("ToggleTimeMaster")); act = ActionManager::get_action (X_("Transport"), X_("ToggleTimeMaster"));
act->connect_proxy (time_master_button); act->connect_proxy (time_master_button);
act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync")); act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync"));
@ -324,14 +302,6 @@ ARDOUR_UI::setup_transport ()
ActionManager::get_action ("Transport", "ToggleAutoPlay")->connect_proxy (auto_play_button); ActionManager::get_action ("Transport", "ToggleAutoPlay")->connect_proxy (auto_play_button);
ActionManager::get_action ("Transport", "ToggleAutoInput")->connect_proxy (auto_input_button); ActionManager::get_action ("Transport", "ToggleAutoInput")->connect_proxy (auto_input_button);
preroll_button.set_name ("TransportButton");
postroll_button.set_name ("TransportButton");
preroll_clock->set_mode (AudioClock::MinSec);
preroll_clock->set_name ("TransportClockDisplay");
postroll_clock->set_mode (AudioClock::MinSec);
postroll_clock->set_name ("TransportClockDisplay");
/* alerts */ /* alerts */
/* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */ /* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */
@ -440,12 +410,6 @@ ARDOUR_UI::setup_transport ()
set_transport_sensitivity (false); set_transport_sensitivity (false);
// toggle_box->pack_start (preroll_button, false, false);
// toggle_box->pack_start (preroll_clock, false, false);
// toggle_box->pack_start (postroll_button, false, false);
// toggle_box->pack_start (postroll_clock, false, false);
transport_tearoff_hbox.pack_start (*toggle_box, false, false, 4); transport_tearoff_hbox.pack_start (*toggle_box, false, false, 4);
if (Profile->get_small_screen()) { if (Profile->get_small_screen()) {
transport_tearoff_hbox.pack_start (_editor_transport_box, false, false, 4); transport_tearoff_hbox.pack_start (_editor_transport_box, false, false, 4);

View file

@ -109,8 +109,6 @@ ARDOUR_UI::set_session (Session *s)
primary_clock->set_session (s); primary_clock->set_session (s);
secondary_clock->set_session (s); secondary_clock->set_session (s);
big_clock->set_session (s); big_clock->set_session (s);
preroll_clock->set_session (s);
postroll_clock->set_session (s);
time_info_box->set_session (s); time_info_box->set_session (s);
/* sensitize menu bar options that are now valid */ /* sensitize menu bar options that are now valid */

View file

@ -177,4 +177,6 @@ BUTTON_VARS(MuteButton, "mute button")
BUTTON_VARS(SoloButton, "solo button") BUTTON_VARS(SoloButton, "solo button")
BUTTON_VARS(RecEnableButton, "record enable button") BUTTON_VARS(RecEnableButton, "record enable button")
BUTTON_VARS(SendButton, "send alert button") BUTTON_VARS(SendButton, "send alert button")
BUTTON_VARS(TransportButton, "transport button")
BUTTON_VARS(TransportRecenableButton, "transport recenable button")