diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-01-08 05:19:38 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-01-08 05:19:38 +0000 |
commit | d20534e846dbbf3b039903e94741f38c9b238a9a (patch) | |
tree | 2985b07a49c91be044af0f26bb77ebd2ecceae85 /gtk2_ardour | |
parent | a20f41ab39cc034740ccd564c1057d8737d763d5 (diff) |
add destructive outlines, more action usage and state fixups in GUI
git-svn-id: svn://localhost/trunk/ardour2@247 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour-menus.xml | 10 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 118 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 8 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 14 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 30 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 73 |
7 files changed, 102 insertions, 162 deletions
diff --git a/gtk2_ardour/ardour-menus.xml b/gtk2_ardour/ardour-menus.xml index 6521753bea..57be502461 100644 --- a/gtk2_ardour/ardour-menus.xml +++ b/gtk2_ardour/ardour-menus.xml @@ -59,6 +59,16 @@ <menuitem action='brush-at-mouse'/> <separator/> <menuitem action='ToggleFollowPlayhead'/> + <separator/> + <menu action='TransportOptions'> + <menuitem action='ToggleTimeMaster'/> + <menuitem action='TogglePunchIn'/> + <menuitem action='TogglePunchOut'/> + <menuitem action='ToggleAutoInput'/> + <menuitem action='ToggleAutoPlay'/> + <menuitem action='ToggleAutoReturn'/> + <menuitem action='ToggleClick'/> + </menu> </menu> <menu name='Edit' action='Edit'> <menuitem action='undo'/> diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 30f57a9d13..7b2dfcdf44 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -652,92 +652,6 @@ ARDOUR_UI::update_wall_clock () return TRUE; } - -void -ARDOUR_UI::toggle_auto_play () - -{ - toggle_some_session_state (auto_play_button, - &Session::get_auto_play, - &Session::set_auto_play); -} - -void -ARDOUR_UI::toggle_auto_return () - -{ - toggle_some_session_state (auto_return_button, - &Session::get_auto_return, - &Session::set_auto_return); -} - -void -ARDOUR_UI::toggle_click () -{ - toggle_some_session_state (click_button, - &Session::get_clicking, - &Session::set_clicking); -} - -void -ARDOUR_UI::toggle_session_auto_loop () -{ - if (session) { - if (session->get_auto_loop()) { - if (session->transport_rolling()) { - transport_roll(); - } - else { - session->request_auto_loop (false); - } - } - else { - session->request_auto_loop (true); - } - } -} - -void -ARDOUR_UI::toggle_session_punch_in () -{ - if (session) { - session->set_punch_in (!session->get_punch_in()); - } -} - -void -ARDOUR_UI::toggle_punch_out () -{ - toggle_some_session_state (punch_out_button, - &Session::get_punch_out, - &Session::set_punch_out); -} - -void -ARDOUR_UI::toggle_punch_in () -{ - toggle_some_session_state (punch_in_button, - &Session::get_punch_in, - &Session::set_punch_in); -} - -void -ARDOUR_UI::map_button_state () -{ - map_some_session_state (auto_return_button, - &Session::get_auto_return); - map_some_session_state (auto_play_button, - &Session::get_auto_play); - map_some_session_state (auto_input_button, - &Session::get_auto_input); - map_some_session_state (punch_in_button, - &Session::get_punch_in); - map_some_session_state (punch_out_button, - &Session::get_punch_out); - map_some_session_state (click_button, - &Session::get_clicking); -} - void ARDOUR_UI::control_methods_adjusted () @@ -789,38 +703,6 @@ ARDOUR_UI::map_some_session_state (ToggleButton& button, } } -void -ARDOUR_UI::toggle_some_session_state (ToggleButton& button, - bool (Session::*get)() const, - void (Session::*set)(bool)) - -{ - bool button_state; - bool session_state; - - if (session == 0) { - return; - } - - button_state = button.get_active (); - session_state = (session->*get)(); - - if (button_state != session_state) { - (session->*set) (button_state); -#if 0 - - /* check that it worked, and reverse - the button state if it didn't - */ - - if ((session->*get)() != button_state) { - button->set_active (!button_state); - } -#endif - - } -} - gint ARDOUR_UI::session_menu (GdkEventButton *ev) { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 284a89ab21..2b6cf1f565 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -299,14 +299,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI void engine_stopped (); void engine_running (); - void map_some_session_state (Gtk::ToggleButton& button, - bool (ARDOUR::Session::*get)() const); - - void toggle_some_session_state (Gtk::ToggleButton& button, - bool (ARDOUR::Session::*get)() const, - void (ARDOUR::Session::*set)(bool)); - void map_button_state (); - void clear_meters (); static gint _blink (void *); diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index ab4a0e9b53..3ce826ca82 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -381,14 +381,12 @@ ARDOUR_UI::setup_transport () ARDOUR_UI::instance()->tooltips().set_tip (primary_clock, _("Primary clock")); ARDOUR_UI::instance()->tooltips().set_tip (secondary_clock, _("secondary clock")); - /* options: XXX these should all be actions with the buttons as proxies */ - - auto_return_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_auto_return)); - auto_play_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_auto_play)); - auto_input_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_auto_input)); - click_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_click)); - punch_in_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_punch_in)); - punch_out_button.signal_toggled().connect (mem_fun(*this,&ARDOUR_UI::toggle_punch_out)); + ActionManager::get_action ("Transport", "ToggleAutoReturn")->connect_proxy (auto_return_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", "ToggleClick")->connect_proxy (click_button); + ActionManager::get_action ("Transport", "TogglePunchIn")->connect_proxy (punch_in_button); + ActionManager::get_action ("Transport", "TogglePunchOut")->connect_proxy (punch_out_button); preroll_button.unset_flags (CAN_FOCUS); preroll_button.set_events (preroll_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 6c8b5b540e..84900e702a 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -110,8 +110,6 @@ ARDOUR_UI::connect_to_session (Session *s) /* Clocks are on by default after we are connected to a session, so show that here. */ - map_button_state (); - connect_dependents_to_session (s); start_clocking (); @@ -258,15 +256,6 @@ ARDOUR_UI::toggle_options_window () } } -void -ARDOUR_UI::toggle_auto_input () - -{ - toggle_some_session_state (auto_input_button, - &Session::get_auto_input, - &Session::set_auto_input); -} - int ARDOUR_UI::create_location_ui () { diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 753aa6a667..e2e24f5bd8 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -70,6 +70,7 @@ ARDOUR_UI::install_actions () ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup")); ActionManager::register_action (main_actions, X_("Sync"), _("Sync")); ActionManager::register_action (main_actions, X_("Options"), _("Options")); + ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options")); /* the real actions */ @@ -242,19 +243,31 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch in"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in)); + /* XXX the newline in the displayed names of these action is really wrong, but its because we want the button + that proxies for these action to be more compact. It would be nice to find a way to override the action + name appearance on the buttons. + */ + + act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch\nin"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchOut"), _("punch out"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out)); + act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchOut"), _("punch\nout"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleClick"), _("click"), mem_fun(*this, &ARDOUR_UI::toggle_click)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoInput"), _("auto\ninput"), mem_fun(*this, &ARDOUR_UI::toggle_auto_input)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoPlay"), _("auto\nplay"), mem_fun(*this, &ARDOUR_UI::toggle_auto_play)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("auto\nreturn"), mem_fun(*this, &ARDOUR_UI::toggle_auto_return)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - /* XXX the newline in the displayed name of this action is really wrong, but its because we want the button - that proxies for this action to be more compact. It would be nice to find a way to override the action - name appearance on the button. - */ - - act = ActionManager::register_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master)); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback)); @@ -391,6 +404,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades)); ActionManager::session_sensitive_actions.push_back (act); + #ifdef NEW_ACTIONS act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode))); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 2fbec5d9a1..a45a820c8e 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -135,6 +135,58 @@ ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs() } void +ARDOUR_UI::toggle_auto_input () +{ + toggle_session_state ("Transport", "ToggleAutoInput", &Session::set_auto_input, &Session::get_auto_input); +} + +void +ARDOUR_UI::toggle_auto_play () +{ + toggle_session_state ("Transport", "ToggleAutoPlay", &Session::set_auto_play, &Session::get_auto_play); +} + +void +ARDOUR_UI::toggle_auto_return () +{ + toggle_session_state ("Transport", "ToggleAutoReturn", &Session::set_auto_return, &Session::get_auto_return); +} + +void +ARDOUR_UI::toggle_click () +{ + toggle_session_state ("Transport", "ToggleClick", &Session::set_clicking, &Session::get_clicking); +} + +void +ARDOUR_UI::toggle_session_auto_loop () +{ + if (session) { + if (session->get_auto_loop()) { + if (session->transport_rolling()) { + transport_roll(); + } else { + session->request_auto_loop (false); + } + } else { + session->request_auto_loop (true); + } + } +} + +void +ARDOUR_UI::toggle_punch_in () +{ + toggle_session_state ("Transport", "TogglePunchIn", &Session::set_punch_in, &Session::get_punch_in); +} + +void +ARDOUR_UI::toggle_punch_out () +{ + toggle_session_state ("Transport", "TogglePunchOut", &Session::set_punch_out, &Session::get_punch_out); +} + +void ARDOUR_UI::toggle_UseHardwareMonitoring() { Glib::RefPtr<Action> act = ActionManager::get_action ("options", "UseSoftwareMonitoring"); @@ -313,6 +365,12 @@ ARDOUR_UI::setup_options () session_control_changed (Session::SoloingModel); session_control_changed (Session::LayeringModel); session_control_changed (Session::CrossfadingModel); + session_control_changed (Session::PunchOut); + session_control_changed (Session::PunchIn); + session_control_changed (Session::AutoPlay); + session_control_changed (Session::AutoReturn); + session_control_changed (Session::AutoInput); + session_control_changed (Session::Clicking); session->ControlChanged.connect (mem_fun (*this, &ARDOUR_UI::queue_session_control_changed)); } @@ -406,34 +464,31 @@ ARDOUR_UI::session_control_changed (Session::ControlType t) break; - // BUTTON STATE: fix me in the future to use actions - - case Session::AutoPlay: - map_some_session_state (auto_play_button, &Session::get_auto_play); + map_some_session_state ("Transport", "ToggleAutoPlay", &Session::get_auto_play); break; case Session::AutoLoop: break; case Session::AutoReturn: - map_some_session_state (auto_return_button, &Session::get_auto_return); + map_some_session_state ("Transport", "ToggleAutoReturn", &Session::get_auto_return); break; case Session::AutoInput: - map_some_session_state (auto_input_button, &Session::get_auto_input); + map_some_session_state ("Transport", "ToggleAutoInput", &Session::get_auto_input); break; case Session::PunchOut: - map_some_session_state (punch_in_button, &Session::get_punch_out); + map_some_session_state ("Transport", "TogglePunchOut", &Session::get_punch_out); break; case Session::PunchIn: - map_some_session_state (punch_in_button, &Session::get_punch_in); + map_some_session_state ("Transport", "TogglePunchIn", &Session::get_punch_in); break; case Session::Clicking: - map_some_session_state (click_button, &Session::get_clicking); + map_some_session_state ("Transport", "ToggleClick", &Session::get_clicking); break; default: |