summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-01-08 05:19:38 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-01-08 05:19:38 +0000
commitd20534e846dbbf3b039903e94741f38c9b238a9a (patch)
tree2985b07a49c91be044af0f26bb77ebd2ecceae85 /gtk2_ardour
parenta20f41ab39cc034740ccd564c1057d8737d763d5 (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.xml10
-rw-r--r--gtk2_ardour/ardour_ui.cc118
-rw-r--r--gtk2_ardour/ardour_ui.h8
-rw-r--r--gtk2_ardour/ardour_ui2.cc14
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc11
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc30
-rw-r--r--gtk2_ardour/ardour_ui_options.cc73
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: