Add undo / redo support for macros
Some checks failed
debian-build / build (push) Has been cancelled
Check locale / ubuntu64 (push) Has been cancelled
Push to master / Check Formatting 🔍 (push) Has been cancelled
Push to master / Build Project 🧱 (push) Has been cancelled
Push to master / Create Release 🛫 (push) Has been cancelled

This commit is contained in:
WarmUpTill
2026-08-12 11:48:53 +02:00
committed by WarmUpTill
parent afd9154c84
commit 7ea944e1a3
17 changed files with 1768 additions and 20 deletions

View File

@@ -7,6 +7,7 @@
#include "macro-settings.hpp"
#include "macro-signals.hpp"
#include "macro-tree.hpp"
#include "macro-undo-redo.hpp"
#include "macro.hpp"
#include "math-helpers.hpp"
#include "name-dialog.hpp"
@@ -122,6 +123,7 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
ui->macros->Add(newMacro);
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
RegisterMacroAddUndoRedo(name);
return;
}
@@ -131,6 +133,7 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
ui->macros->AddToGroup(newMacro, selectedMacro);
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
RegisterMacroAddUndoRedo(name);
return;
}
@@ -139,12 +142,14 @@ void AdvSceneSwitcher::on_macroAdd_clicked()
ui->macros->Add(newMacro, selectedMacro);
MacroSignalManager::Instance()->Add(
QString::fromStdString(name));
RegisterMacroAddUndoRedo(name);
return;
}
Macro::PrepareMoveToGroup(selectedMacroGroup, newMacro);
ui->macros->Add(newMacro, selectedMacro);
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
RegisterMacroAddUndoRedo(name);
}
static void addGroupSubitems(std::vector<std::shared_ptr<Macro>> &macros,
@@ -185,6 +190,12 @@ void AdvSceneSwitcher::RemoveMacro(std::shared_ptr<Macro> &macro)
}
}
if (macro->IsGroup()) {
RegisterGroupDeleteUndoRedo(macro.get());
} else {
RegisterMacroRemoveUndoRedo(macro.get());
}
if (macro->IsGroup()) {
std::vector<std::shared_ptr<Macro>> macros = {macro};
addGroupSubitems(macros, macro);
@@ -241,13 +252,16 @@ void AdvSceneSwitcher::RemoveSelectedMacros()
void AdvSceneSwitcher::RenameMacro(std::shared_ptr<Macro> &macro,
const QString &name)
{
auto oldName = QString::fromStdString(macro->Name());
const std::string oldName = macro->Name();
const std::string newName = name.toStdString();
{
auto lock = LockContext();
macro->SetName(name.toStdString());
macro->SetName(newName);
}
MacroSignalManager::Instance()->Rename(oldName, name);
RegisterMacroRenameUndoRedo(oldName, newName);
MacroSignalManager::Instance()->Rename(QString::fromStdString(oldName),
name);
}
void AdvSceneSwitcher::on_macroRemove_clicked()
@@ -443,6 +457,7 @@ void AdvSceneSwitcher::ImportMacros()
ui->macros->Reset(GetTopLevelMacros(),
GetGlobalMacroSettings()._highlightExecuted);
disableAddButtonHighlight();
RegisterMacrosImportUndoRedo(importedMacros);
}
void AdvSceneSwitcher::on_macroName_editingFinished()
@@ -814,6 +829,7 @@ void AdvSceneSwitcher::CopyMacro()
ui->macros->Add(newMacro, macro);
disableAddButtonHighlight();
MacroSignalManager::Instance()->Add(QString::fromStdString(name));
RegisterMacroAddUndoRedo(name);
}
void AdvSceneSwitcher::PauseSelectedMacros()