summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-04-20 02:48:20 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-04-20 02:48:20 +0000
commit718b2eab6706f304e398f036e3d817567cd746e8 (patch)
tree686fc9f7e530bd57f7acb0d4d578db75460e182a /gtk2_ardour/ardour_ui.cc
parentc3f458816fd8e8476b226c9aa0c2cd4765fe06ec (diff)
factor out shuttle controller to its own class, new design
git-svn-id: svn://localhost/ardour2/branches/3.0@9391 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r--gtk2_ardour/ardour_ui.cc61
1 files changed, 11 insertions, 50 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 340dbe5030..ce323d8397 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -103,6 +103,7 @@ typedef uint64_t microseconds_t;
#include "public_editor.h"
#include "route_time_axis.h"
#include "session_metadata_dialog.h"
+#include "shuttle_control.h"
#include "speaker_dialog.h"
#include "splash.h"
#include "startup.h"
@@ -155,7 +156,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
auto_loop_controllable (new TransportControllable ("transport auto loop", *this, TransportControllable::AutoLoop)),
play_selection_controllable (new TransportControllable ("transport play selection", *this, TransportControllable::PlaySelection)),
rec_controllable (new TransportControllable ("transport rec-enable", *this, TransportControllable::RecordEnable)),
- shuttle_controllable (new TransportControllable ("shuttle", *this, TransportControllable::ShuttleControl)),
shuttle_controller_binding_proxy (shuttle_controllable),
roll_button (roll_controllable),
@@ -166,8 +166,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
play_selection_button (play_selection_controllable),
rec_button (rec_controllable),
- shuttle_units_button (_("% ")),
-
punch_in_button (_("Punch In")),
punch_out_button (_("Punch Out")),
auto_return_button (_("Auto Return")),
@@ -227,7 +225,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
have_configure_timeout = false;
have_disk_speed_dialog_displayed = false;
session_loaded = false;
- last_speed_displayed = -1.0f;
ignore_dual_punch = false;
original_big_clock_width = -1;
original_big_clock_height = -1;
@@ -240,19 +237,9 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[])
auto_loop_button.unset_flags (Gtk::CAN_FOCUS);
play_selection_button.unset_flags (Gtk::CAN_FOCUS);
rec_button.unset_flags (Gtk::CAN_FOCUS);
-
+ join_play_range_button.unset_flags (Gtk::CAN_FOCUS);
last_configure_time= 0;
-
- shuttle_grabbed = false;
- shuttle_fract = 0.0;
- shuttle_max_speed = 8.0f;
-
- shuttle_style_menu = 0;
- shuttle_unit_menu = 0;
-
- // We do not have jack linked in yet so;
-
- last_shuttle_request = last_peak_grab = 0; // get_microseconds();
+ last_peak_grab = 0;
ARDOUR::Diskstream::DiskOverrun.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::disk_overrun_handler, this), gui_context());
ARDOUR::Diskstream::DiskUnderrun.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::disk_underrun_handler, this), gui_context());
@@ -568,8 +555,9 @@ ARDOUR_UI::set_transport_controllable_state (const XMLNode& node)
rec_controllable->set_id (prop->value());
}
if ((prop = node.property ("shuttle")) != 0) {
- shuttle_controllable->set_id (prop->value());
+ shuttle_box->controllable().set_id (prop->value());
}
+
}
XMLNode&
@@ -592,7 +580,7 @@ ARDOUR_UI::get_transport_controllable_state ()
node->add_property (X_("play_selection"), buf);
rec_controllable->id().print (buf, sizeof (buf));
node->add_property (X_("rec"), buf);
- shuttle_controllable->id().print (buf, sizeof (buf));
+ shuttle_box->controllable().id().print (buf, sizeof (buf));
node->add_property (X_("shuttle"), buf);
return *node;
@@ -953,7 +941,7 @@ ARDOUR_UI::every_second ()
gint
ARDOUR_UI::every_point_one_seconds ()
{
- update_speed_display ();
+ shuttle_box->update_speed_display ();
RapidScreenUpdate(); /* EMIT_SIGNAL */
return TRUE;
}
@@ -1824,8 +1812,6 @@ ARDOUR_UI::toggle_record_enable (uint32_t rid)
void
ARDOUR_UI::map_transport_state ()
{
- ENSURE_GUI_THREAD (*this, &ARDOUR_UI::map_transport_state)
-
if (!_session) {
auto_loop_button.set_visual_state (0);
play_selection_button.set_visual_state (0);
@@ -1834,18 +1820,11 @@ ARDOUR_UI::map_transport_state ()
return;
}
- float sp = _session->transport_speed();
+ shuttle_box->map_transport_state ();
- if (sp == 1.0f) {
- shuttle_fract = SHUTTLE_FRACT_SPEED1; /* speed = 1.0, believe it or not */
- shuttle_box.queue_draw ();
- } else if (sp == 0.0f) {
- shuttle_fract = 0;
- shuttle_box.queue_draw ();
- update_disk_space ();
- }
+ float sp = _session->transport_speed();
- if (sp != 0.0) {
+ if (sp != 0.0f) {
/* we're rolling */
@@ -1882,6 +1861,7 @@ ARDOUR_UI::map_transport_state ()
roll_button.set_visual_state (0);
play_selection_button.set_visual_state (0);
auto_loop_button.set_visual_state (0);
+ update_disk_space ();
}
}
@@ -3606,23 +3586,6 @@ ARDOUR_UI::TransportControllable::TransportControllable (std::string name, ARDOU
void
ARDOUR_UI::TransportControllable::set_value (double val)
{
- if (type == ShuttleControl) {
- double fract;
-
- if (val == 0.5) {
- fract = 0.0;
- } else {
- if (val < 0.5) {
- fract = -((0.5 - val)/0.5);
- } else {
- fract = ((val - 0.5)/0.5);
- }
- }
-
- ui.set_shuttle_fract (fract);
- return;
- }
-
if (val < 0.5) {
/* do nothing: these are radio-style actions */
return;
@@ -3687,8 +3650,6 @@ ARDOUR_UI::TransportControllable::get_value (void) const
break;
case RecordEnable:
break;
- case ShuttleControl:
- break;
default:
break;
}