From 5298b14803c23cd5a5bc1019717447a265af937e Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 21 Feb 2022 19:54:54 +0100 Subject: [PATCH] Use name of macro to be copied in addNewMacro() dialog --- src/headers/advanced-scene-switcher.hpp | 2 +- src/macro-tab.cpp | 34 ++++++++++++++++--------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp index c1ca69ff..665d2e8c 100644 --- a/src/headers/advanced-scene-switcher.hpp +++ b/src/headers/advanced-scene-switcher.hpp @@ -49,7 +49,7 @@ public: void OpenSequenceExtendEdit(SequenceWidget *sw); void SetEditSceneGroup(SceneGroup &sg); - bool addNewMacro(std::string &name); + bool addNewMacro(std::string &name, std::string format = ""); Macro *getSelectedMacro(); void SetEditMacro(Macro &m); void HighlightAction(int idx); diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index 2227a184..ff20f6a3 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -17,15 +17,21 @@ bool macroNameExists(std::string name) return !!GetMacroByName(name.c_str()); } -bool AdvSceneSwitcher::addNewMacro(std::string &name) +bool AdvSceneSwitcher::addNewMacro(std::string &name, std::string format) { - QString format{ - obs_module_text("AdvSceneSwitcher.macroTab.defaultname")}; - + QString fmt; int i = 1; - QString placeHolderText = format.arg(i); + if (format.empty()) { + fmt = {obs_module_text( + "AdvSceneSwitcher.macroTab.defaultname")}; + } else { + fmt = QString::fromStdString(format); + i = 2; + } + + QString placeHolderText = fmt.arg(i); while ((macroNameExists(placeHolderText.toUtf8().constData()))) { - placeHolderText = format.arg(++i); + placeHolderText = fmt.arg(++i); } bool accepted = AdvSSNameDialog::AskForName( @@ -475,15 +481,19 @@ void AdvSceneSwitcher::ShowMacroConditionsContextMenu(const QPoint &pos) void AdvSceneSwitcher::CopyMacro() { - obs_data_t *data = obs_data_create(); - getSelectedMacro()->Save(data); - - std::string name; - if (!addNewMacro(name)) { - obs_data_release(data); + const auto macro = getSelectedMacro(); + if (!macro) { return; } + std::string format = macro->Name() + " %1"; + std::string name; + if (!addNewMacro(name, format)) { + return; + } + + obs_data_t *data = obs_data_create(); + macro->Save(data); switcher->macros.back()->Load(data); switcher->macros.back()->SetName(name); obs_data_release(data);