13
0

MCP: more view mode stuff

git-svn-id: svn://localhost/ardour2/branches/3.0@11913 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-04-11 19:27:13 +00:00
parent f40d6b6440
commit 1ce39cfb25
4 changed files with 60 additions and 39 deletions

View File

@ -333,6 +333,9 @@ MackieControlProtocol::switch_banks (uint32_t initial, bool force)
// display the current start bank.
surfaces.front()->display_bank_start (_current_initial_bank);
/* reset this to get the right display of view mode after the switch */
set_view_mode (_view_mode);
}
int
@ -1090,43 +1093,8 @@ MackieControlProtocol::set_view_mode (ViewMode m)
{
_view_mode = m;
if (surfaces.empty()) {
return;
for (Surfaces::iterator s = surfaces.begin(); s != surfaces.end(); ++s) {
(*s)->update_view_mode_display ();
}
boost::shared_ptr<Surface> surface = surfaces.front();
if (surface->type() == mcu) {
switch (_view_mode) {
case Global:
surface->write (surface->two_char_display ("Gl"));
break;
case Dynamics:
surface->write (surface->two_char_display ("Dy"));
break;
case EQ:
surface->write (surface->two_char_display ("EQ"));
break;
case Loop:
surface->write (surface->two_char_display ("LP"));
break;
case AudioTracks:
surface->write (surface->two_char_display ("AT"));
break;
case MidiTracks:
surface->write (surface->two_char_display ("MT"));
break;
case Busses:
surface->write (surface->two_char_display ("Bs"));
break;
case Sends:
surface->write (surface->two_char_display ("Sn"));
break;
case Plugins:
surface->write (surface->two_char_display ("Pl"));
break;
}
}
switch_banks (_current_initial_bank, true);
}

View File

@ -404,7 +404,6 @@ Strip::notify_property_changed (const PropertyChange& what_changed)
}
_surface->write (display (0, line1));
_surface->write (blank_display (1));
}
}

View File

@ -581,6 +581,10 @@ static char translate_seven_segment (char achar)
MidiByteArray
Surface::two_char_display (const std::string & msg, const std::string & dots)
{
if (_stype != mcu) {
return MidiByteArray();
}
if (msg.length() != 2) throw MackieControlException ("MackieMidiBuilder::two_char_display: msg must be exactly 2 characters");
if (dots.length() != 2) throw MackieControlException ("MackieMidiBuilder::two_char_display: dots must be exactly 2 characters");
@ -653,3 +657,51 @@ Surface::timecode_display (const std::string & timecode, const std::string & las
return retval;
}
void
Surface::update_view_mode_display ()
{
string text;
switch (_mcp.view_mode()) {
case MackieControlProtocol::Global:
_port->write (two_char_display ("Gl"));
text = _("Pan");
break;
case MackieControlProtocol::Dynamics:
_port->write (two_char_display ("Dy"));
text = _("");
break;
case MackieControlProtocol::EQ:
_port->write (two_char_display ("EQ"));
text = _("");
break;
case MackieControlProtocol::Loop:
_port->write (two_char_display ("LP"));
text = _("");
break;
case MackieControlProtocol::AudioTracks:
_port->write (two_char_display ("AT"));
text = _("");
break;
case MackieControlProtocol::MidiTracks:
_port->write (two_char_display ("MT"));
text = _("");
break;
case MackieControlProtocol::Busses:
_port->write (two_char_display ("Bs"));
text = _("");
break;
case MackieControlProtocol::Sends:
_port->write (two_char_display ("Sn"));
text = _("");
break;
case MackieControlProtocol::Plugins:
_port->write (two_char_display ("Pl"));
text = _("");
break;
}
for (Strips::iterator s = strips.begin(); s != strips.end(); ++s) {
_port->write ((*s)->display (1, text));
}
}

View File

@ -141,6 +141,8 @@ public:
*/
MidiByteArray timecode_display (const std::string & timecode, const std::string & last_timecode = "");
void update_view_mode_display ();
protected:
void init_controls();
void init_strips ();