13
0

GUI for partial mixer scene restore

This commit is contained in:
Robin Gareus 2022-10-17 23:13:40 +02:00
parent b52ef52ddf
commit 64dc16a460
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 11 additions and 6 deletions

View File

@ -3687,7 +3687,7 @@ Mixer_UI::register_actions ()
a = string_compose (X_("recall-mixer-scene-%1"), i + 1); a = string_compose (X_("recall-mixer-scene-%1"), i + 1);
n = string_compose (_("Recall Mixer Scene #%1"), i + 1); n = string_compose (_("Recall Mixer Scene #%1"), i + 1);
ActionManager::register_action (group, a.c_str (), n.c_str (), ActionManager::register_action (group, a.c_str (), n.c_str (),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::recall_mixer_scene), i, true)); sigc::bind (sigc::mem_fun (*this, &Mixer_UI::recall_mixer_scene), i, true, false));
a = string_compose (X_("clear-mixer-scene-%1"), i + 1); a = string_compose (X_("clear-mixer-scene-%1"), i + 1);
n = string_compose (_("Clear Mixer Scene #%1"), i + 1); n = string_compose (_("Clear Mixer Scene #%1"), i + 1);
@ -3959,7 +3959,7 @@ Mixer_UI::store_mixer_scene (size_t n)
} }
void void
Mixer_UI::recall_mixer_scene (size_t n, bool interactive) Mixer_UI::recall_mixer_scene (size_t n, bool interactive, bool for_selection)
{ {
if (!_session) { if (!_session) {
return; return;
@ -3997,8 +3997,11 @@ Mixer_UI::recall_mixer_scene (size_t n, bool interactive)
Config->add_instant_xml (node); Config->add_instant_xml (node);
} }
} }
if (for_selection) {
_session->apply_nth_mixer_scene (n); _session->apply_nth_mixer_scene (n, PublicEditor::instance().get_selection().tracks.routelist ());
} else {
_session->apply_nth_mixer_scene (n);
}
} }
void void
@ -4098,6 +4101,8 @@ Mixer_UI::popup_scene_menu (GdkEventButton* ev, int scn_idx)
if(ms && !ms->empty()) { if(ms && !ms->empty()) {
items.push_back(Gtk::Menu_Helpers::MenuElem(_("Clear"), sigc::bind(sigc::mem_fun(*this, &Mixer_UI::clear_mixer_scene), scn_idx, true))); items.push_back(Gtk::Menu_Helpers::MenuElem(_("Clear"), sigc::bind(sigc::mem_fun(*this, &Mixer_UI::clear_mixer_scene), scn_idx, true)));
items.push_back(Gtk::Menu_Helpers::MenuElem(_("Rename"), sigc::bind(sigc::mem_fun(*this, &Mixer_UI::rename_mixer_scene), scn_idx))); items.push_back(Gtk::Menu_Helpers::MenuElem(_("Rename"), sigc::bind(sigc::mem_fun(*this, &Mixer_UI::rename_mixer_scene), scn_idx)));
items.push_back(Gtk::Menu_Helpers::MenuElem(_("Restore for selected tracks"), sigc::bind(sigc::mem_fun(*this, &Mixer_UI::recall_mixer_scene), scn_idx, false, true)));
items.back().set_sensitive (!PublicEditor::instance().get_selection().tracks.routelist ().empty ());
} }
menu->popup(1, ev->time); menu->popup(1, ev->time);
@ -4136,7 +4141,7 @@ Mixer_UI::scene_button_release (GdkEventButton* ev, int idx)
delete _mixer_scene_release; delete _mixer_scene_release;
_mixer_scene_release = 0; _mixer_scene_release = 0;
} else if (ev->button == 1) { } else if (ev->button == 1) {
recall_mixer_scene (idx, true); recall_mixer_scene (idx);
} }
return false; return false;
} }

View File

@ -124,7 +124,7 @@ public:
void select_prev_strip (); void select_prev_strip ();
void store_mixer_scene (size_t); void store_mixer_scene (size_t);
void recall_mixer_scene (size_t, bool interactive = true); void recall_mixer_scene (size_t, bool interactive = true, bool for_selection = false);
void clear_mixer_scene (size_t, bool interactive = true); void clear_mixer_scene (size_t, bool interactive = true);
void rename_mixer_scene (size_t n); void rename_mixer_scene (size_t n);