Add UI actions to save/recall mixer-scenes

This commit is contained in:
Robin Gareus 2022-05-23 16:08:30 +02:00
parent d8ba73f542
commit 14cf7e4c23
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
2 changed files with 49 additions and 0 deletions

View file

@ -49,6 +49,7 @@
#include "ardour/audio_port.h"
#include "ardour/audio_track.h"
#include "ardour/midi_track.h"
#include "ardour/mixer_scene.h"
#include "ardour/monitor_control.h"
#include "ardour/panner_shell.h"
#include "ardour/plugin_manager.h"
@ -3608,6 +3609,23 @@ Mixer_UI::register_actions ()
ActionManager::register_toggle_action (group, X_("toggle-disk-monitor"), _("Toggle Disk Monitoring"), sigc::bind (sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_action), MonitorDisk, false, false));
ActionManager::register_toggle_action (group, X_("toggle-input-monitor"), _("Toggle Input Monitoring"), sigc::bind (sigc::mem_fun (*this, &Mixer_UI::toggle_monitor_action), MonitorInput, false, false));
for (size_t i = 0; i < 12; ++i) {
std::string a = string_compose (X_("store-mixer-scene-%1"), i);
std::string n = string_compose (_("Store Mixer Scene Slot #%1"), i + 1);
ActionManager::register_action (group, a.c_str (), n.c_str (),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::store_mixer_scene), i));
a = string_compose (X_("recall-mixer-scene-%1"), i);
n = string_compose (_("Recall Mixer Scene Slot #%1"), i + 1);
ActionManager::register_action (group, a.c_str (), n.c_str (),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::recall_mixer_scene), i));
a = string_compose (X_("clear-mixer-scene-%1"), i);
n = string_compose (_("Clear Mixer Scene Slot #%1"), i + 1);
ActionManager::register_action (group, a.c_str (), n.c_str (),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::clear_mixer_scene), i));
}
}
void
@ -3816,6 +3834,33 @@ Mixer_UI::vca_unassign (boost::shared_ptr<VCA> vca)
}
}
void
Mixer_UI::store_mixer_scene (size_t n)
{
if (_session) {
_session->store_nth_mixer_scene (n);
}
}
void
Mixer_UI::recall_mixer_scene (size_t n)
{
if (_session) {
_session->apply_nth_mixer_scene (n);
}
}
void
Mixer_UI::clear_mixer_scene (size_t n)
{
if (_session) {
boost::shared_ptr<MixerScene> ms = _session->nth_mixer_scene (n, false);
if (ms) {
ms->clear ();
}
}
}
bool
Mixer_UI::screenshot (std::string const& filename)
{

View file

@ -123,6 +123,10 @@ public:
void select_next_strip ();
void select_prev_strip ();
void store_mixer_scene (size_t);
void recall_mixer_scene (size_t);
void clear_mixer_scene (size_t);
void do_vca_assign (boost::shared_ptr<ARDOUR::VCA>);
void do_vca_unassign (boost::shared_ptr<ARDOUR::VCA>);
void show_spill (boost::shared_ptr<ARDOUR::Stripable>);