control protocols: add trigger unbang method

This commit is contained in:
Paul Davis 2022-08-27 08:26:08 -06:00
parent 8ed8895439
commit 3cffca9178
2 changed files with 28 additions and 6 deletions

View File

@ -801,26 +801,44 @@ BasicUI::goto_nth_marker (int n)
}
}
void
BasicUI::bang (int x, int y)
ARDOUR::TriggerPtr
BasicUI::find_trigger (int x, int y)
{
boost::shared_ptr<Route> r = session->get_remote_nth_route (x);
if (!r) {
return;
return TriggerPtr();
}
boost::shared_ptr<TriggerBox> tb = r->triggerbox();
if (!tb || !tb->active()) {
return;
return TriggerPtr();
}
TriggerPtr tp (tb->trigger (y));
if (!tp) {
return;
return TriggerPtr();
}
tp->bang ();
return tp;
}
void
BasicUI::bang (int x, int y)
{
TriggerPtr tp = find_trigger (x, y);
if (tp) {
tp->bang ();
}
}
void
BasicUI::unbang (int x, int y)
{
TriggerPtr tp = find_trigger (x, y);
if (tp) {
tp->unbang ();
}
}

View File

@ -41,6 +41,7 @@ namespace ARDOUR {
class Session;
class SessionEvent;
class Stripable;
class Trigger;
}
class LIBCONTROLCP_API BasicUI {
@ -164,6 +165,9 @@ class LIBCONTROLCP_API BasicUI {
bool loop_button_onoff() const;
void bang (int x, int y);
void unbang (int x, int y);
/* it would be nice to use TriggerPtr here but that implies including ardour/triggerbox.h */
boost::shared_ptr<ARDOUR::Trigger> find_trigger (int x, int y);
protected:
BasicUI ();