MCP: make rightward bank shift work, and add a flag for scrub mode; more code rearrangement

git-svn-id: svn://localhost/ardour2/branches/3.0@11860 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis
2012-04-09 19:47:06 +00:00
parent 562016339d
commit ac7ade93bd
3 changed files with 126 additions and 113 deletions

View File

@@ -106,6 +106,7 @@ MackieControlProtocol::MackieControlProtocol (Session& session)
, _output_bundle (new ARDOUR::Bundle (_("Mackie Control Out"), false))
, _gui (0)
, _zoom_mode (false)
, _scrub_mode (false)
, _current_selected_track (-1)
{
DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n");
@@ -1302,119 +1303,6 @@ jog_wheel_state_display (JogWheel::State state, SurfacePort & port)
}
}
Mackie::LedState
MackieControlProtocol::zoom_press (Mackie::Button &)
{
_zoom_mode = !_zoom_mode;
return (_zoom_mode ? on : off);
}
Mackie::LedState
MackieControlProtocol::zoom_release (Mackie::Button &)
{
return off;
}
Mackie::LedState
MackieControlProtocol::scrub_press (Mackie::Button &)
{
_jog_wheel.scrub_state_cycle();
update_global_button ("zoom", _jog_wheel.jog_wheel_state() == JogWheel::zoom);
jog_wheel_state_display (_jog_wheel.jog_wheel_state(), mcu_port());
return (
_jog_wheel.jog_wheel_state() == JogWheel::scrub
||
_jog_wheel.jog_wheel_state() == JogWheel::shuttle
);
}
Mackie::LedState
MackieControlProtocol::scrub_release (Mackie::Button &)
{
return (
_jog_wheel.jog_wheel_state() == JogWheel::scrub
||
_jog_wheel.jog_wheel_state() == JogWheel::shuttle
);
}
LedState
MackieControlProtocol::undo_press (Button&)
{
Undo(); /* EMIT SIGNAL */
return off;
}
LedState
MackieControlProtocol::undo_release (Button&)
{
return off;
}
LedState
MackieControlProtocol::redo_press (Button&)
{
Redo(); /* EMIT SIGNAL */
return off;
}
LedState
MackieControlProtocol::redo_release (Button&)
{
return off;
}
LedState
MackieControlProtocol::drop_press (Button &)
{
session->remove_last_capture();
return on;
}
LedState
MackieControlProtocol::drop_release (Button &)
{
return off;
}
LedState
MackieControlProtocol::save_press (Button &)
{
session->save_state ("");
return on;
}
LedState
MackieControlProtocol::save_release (Button &)
{
return off;
}
LedState
MackieControlProtocol::timecode_beats_press (Button &)
{
switch (_timecode_type) {
case ARDOUR::AnyTime::BBT:
_timecode_type = ARDOUR::AnyTime::Timecode;
break;
case ARDOUR::AnyTime::Timecode:
_timecode_type = ARDOUR::AnyTime::BBT;
break;
default:
ostringstream os;
os << "Unknown Anytime::Type " << _timecode_type;
throw runtime_error (os.str());
}
update_timecode_beats_led();
return on;
}
LedState
MackieControlProtocol::timecode_beats_release (Button &)
{
return off;
}
list<boost::shared_ptr<ARDOUR::Bundle> >
MackieControlProtocol::bundles ()

View File

@@ -428,6 +428,7 @@ class MackieControlProtocol
void* _gui;
bool _zoom_mode;
bool _scrub_mode;
int _current_selected_track;
static const int MODIFIER_OPTION;

View File

@@ -115,6 +115,23 @@ MackieControlProtocol::left_release (Button &)
LedState
MackieControlProtocol::right_press (Button &)
{
Sorted sorted = get_sorted_routes();
if (sorted.size() > route_table.size()) {
uint32_t delta = sorted.size() - (route_table.size() + _current_initial_bank);
if (delta > route_table.size()) {
delta = route_table.size();
}
if (delta > 0) {
session->set_dirty();
switch_banks (_current_initial_bank + delta);
}
return on;
} else {
return flashing;
}
return off;
}
@@ -245,6 +262,113 @@ MackieControlProtocol::channel_right_release (Button &)
return off;
}
Mackie::LedState
MackieControlProtocol::zoom_press (Mackie::Button &)
{
_zoom_mode = !_zoom_mode;
return (_zoom_mode ? on : off);
}
Mackie::LedState
MackieControlProtocol::zoom_release (Mackie::Button &)
{
return (_zoom_mode ? on : off);
}
Mackie::LedState
MackieControlProtocol::scrub_press (Mackie::Button &)
{
_scrub_mode = !_scrub_mode;
return (_scrub_mode ? on : off);
}
Mackie::LedState
MackieControlProtocol::scrub_release (Mackie::Button &)
{
return (_scrub_mode ? on : off);
}
LedState
MackieControlProtocol::undo_press (Button&)
{
if (_modifier_state & MODIFIER_SHIFT) {
Redo(); /* EMIT SIGNAL */
} else {
Undo(); /* EMIT SIGNAL */
}
return off;
}
LedState
MackieControlProtocol::undo_release (Button&)
{
return off;
}
LedState
MackieControlProtocol::redo_press (Button&)
{
Redo(); /* EMIT SIGNAL */
return off;
}
LedState
MackieControlProtocol::redo_release (Button&)
{
return off;
}
LedState
MackieControlProtocol::drop_press (Button &)
{
session->remove_last_capture();
return on;
}
LedState
MackieControlProtocol::drop_release (Button &)
{
return off;
}
LedState
MackieControlProtocol::save_press (Button &)
{
session->save_state ("");
return on;
}
LedState
MackieControlProtocol::save_release (Button &)
{
return off;
}
LedState
MackieControlProtocol::timecode_beats_press (Button &)
{
switch (_timecode_type) {
case ARDOUR::AnyTime::BBT:
_timecode_type = ARDOUR::AnyTime::Timecode;
break;
case ARDOUR::AnyTime::Timecode:
_timecode_type = ARDOUR::AnyTime::BBT;
break;
default:
return off;
}
update_timecode_beats_led();
return on;
}
LedState
MackieControlProtocol::timecode_beats_release (Button &)
{
return off;
}
/////////////////////////////////////
// Functions
/////////////////////////////////////