From ae13a68caee7c1937f823521be7e001938b2d2e6 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 25 Feb 2022 22:17:28 +0100 Subject: [PATCH] Double click on list item in run and sequence action to edit --- src/headers/macro-action-run.hpp | 1 + src/headers/macro-action-sequence.hpp | 1 + src/macro-action-random.cpp | 2 -- src/macro-action-run.cpp | 29 ++++++++++++++++++++++++ src/macro-action-sequence.cpp | 32 +++++++++++++++++++++++++-- 5 files changed, 61 insertions(+), 4 deletions(-) diff --git a/src/headers/macro-action-run.hpp b/src/headers/macro-action-run.hpp index 4c0188be..d88121cb 100644 --- a/src/headers/macro-action-run.hpp +++ b/src/headers/macro-action-run.hpp @@ -50,6 +50,7 @@ private slots: void RemoveArg(); void ArgUp(); void ArgDown(); + void ArgItemClicked(QListWidgetItem *); signals: void HeaderInfoChanged(const QString &); diff --git a/src/headers/macro-action-sequence.hpp b/src/headers/macro-action-sequence.hpp index bccf1491..29a730da 100644 --- a/src/headers/macro-action-sequence.hpp +++ b/src/headers/macro-action-sequence.hpp @@ -53,6 +53,7 @@ private slots: void Remove(); void Up(); void Down(); + void MacroItemClicked(QListWidgetItem *); void ContinueFromClicked(); void RestartChanged(int state); void UpdateStatusLine(); diff --git a/src/macro-action-random.cpp b/src/macro-action-random.cpp index 05c634d6..89c5e175 100644 --- a/src/macro-action-random.cpp +++ b/src/macro-action-random.cpp @@ -107,8 +107,6 @@ MacroActionRandomEdit::MacroActionRandomEdit( QWidget::connect(_add, SIGNAL(clicked()), this, SLOT(AddMacro())); QWidget::connect(_remove, SIGNAL(clicked()), this, SLOT(RemoveMacro())); - QWidget::connect(_macroList, SIGNAL(currentRowChanged(int)), this, - SLOT(MacroSelectionChanged(int))); QWidget::connect(window(), SIGNAL(MacroRenamed(const QString &, const QString &)), this, diff --git a/src/macro-action-run.cpp b/src/macro-action-run.cpp index e23d4c7c..9bb7c625 100644 --- a/src/macro-action-run.cpp +++ b/src/macro-action-run.cpp @@ -102,6 +102,8 @@ MacroActionRunEdit::MacroActionRunEdit( SLOT(RemoveArg())); QWidget::connect(_argUp, SIGNAL(clicked()), this, SLOT(ArgUp())); QWidget::connect(_argDown, SIGNAL(clicked()), this, SLOT(ArgDown())); + connect(_argList, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, + SLOT(ArgItemClicked(QListWidgetItem *))); auto *entryLayout = new QHBoxLayout; std::unordered_map widgetPlaceholders = { @@ -235,6 +237,33 @@ void MacroActionRunEdit::ArgDown() } } +void MacroActionRunEdit::ArgItemClicked(QListWidgetItem *item) +{ + if (_loading || !_entryData) { + return; + } + + std::string name; + bool accepted = AdvSSNameDialog::AskForName( + this, + obs_module_text("AdvSceneSwitcher.action.run.addArgument"), + obs_module_text( + "AdvSceneSwitcher.action.run.addArgumentDescription"), + name, item->text(), 170, false); + + if (!accepted || name.empty()) { + return; + } + + auto arg = QString::fromStdString(name); + QVariant v = QVariant::fromValue(arg); + item->setText(arg); + item->setData(Qt::UserRole, arg); + int idx = _argList->currentRow(); + std::lock_guard lock(switcher->m); + _entryData->_args[idx] = arg; +} + void MacroActionRunEdit::SetArgListSize() { setHeightToContentHeight(_argList); diff --git a/src/macro-action-sequence.cpp b/src/macro-action-sequence.cpp index 5597592c..42122347 100644 --- a/src/macro-action-sequence.cpp +++ b/src/macro-action-sequence.cpp @@ -141,8 +141,10 @@ MacroActionSequenceEdit::MacroActionSequenceEdit( QWidget::connect(_down, SIGNAL(clicked()), this, SLOT(Down())); QWidget::connect(_continueFrom, SIGNAL(clicked()), this, SLOT(ContinueFromClicked())); - QWidget::connect(_macroList, SIGNAL(currentRowChanged(int)), this, - SLOT(MacroSelectionChanged(int))); + QWidget::connect(_macroList, + SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, + SLOT(MacroItemClicked(QListWidgetItem *))); + QWidget::connect(window(), SIGNAL(MacroRenamed(const QString &, const QString &)), this, @@ -312,6 +314,32 @@ void MacroActionSequenceEdit::Down() } } +void MacroActionSequenceEdit::MacroItemClicked(QListWidgetItem *item) +{ + if (_loading || !_entryData) { + return; + } + + std::string macroName; + bool accepted = MacroSelectionDialog::AskForMacro(this, macroName); + + if (!accepted || macroName.empty()) { + return; + } + + MacroRef macro(macroName); + + if (!macro.get()) { + return; + } + + item->setText(QString::fromStdString(macroName)); + int idx = _macroList->currentRow(); + std::lock_guard lock(switcher->m); + _entryData->_macros[idx] = macro; + SetMacroListSize(); +} + void MacroActionSequenceEdit::ContinueFromClicked() { if (_loading || !_entryData) {