Compare commits

..

1 Commits

Author SHA1 Message Date
WarmUpTill
3836a03a02 Convert dock window name field into a combo box
Should make it easier to combine docks into a single dock window without
having to know the exact dock window titles beforehand
2026-09-07 20:12:41 +02:00
3 changed files with 55 additions and 4 deletions

View File

@@ -267,6 +267,7 @@ AdvSceneSwitcher.macroTab.pauseStateSaveBehavior.unpause="Unpaused"
AdvSceneSwitcher.macroTab.currentRegisterDock="Register dock widget to control the pause state of selected macro or run it manually" AdvSceneSwitcher.macroTab.currentRegisterDock="Register dock widget to control the pause state of selected macro or run it manually"
AdvSceneSwitcher.macroTab.currentIsStandaloneDock="Is standalone dock" AdvSceneSwitcher.macroTab.currentIsStandaloneDock="Is standalone dock"
AdvSceneSwitcher.macroTab.currentDockWindowName="Add to macro dock with name:" AdvSceneSwitcher.macroTab.currentDockWindowName="Add to macro dock with name:"
AdvSceneSwitcher.macroTab.currentDockWindowName.addNew="Add new dock..."
AdvSceneSwitcher.macroTab.currentDockAddRunButton="Add button to run the macro" AdvSceneSwitcher.macroTab.currentDockAddRunButton="Add button to run the macro"
AdvSceneSwitcher.macroTab.currentDockAddPauseButton="Add button to pause or unpause the macro" AdvSceneSwitcher.macroTab.currentDockAddPauseButton="Add button to pause or unpause the macro"
AdvSceneSwitcher.macroTab.currentDockAddStatusLabel="Add status label" AdvSceneSwitcher.macroTab.currentDockAddStatusLabel="Add status label"

View File

@@ -1,5 +1,6 @@
#include "macro-settings.hpp" #include "macro-settings.hpp"
#include "layout-helpers.hpp" #include "layout-helpers.hpp"
#include "macro-helpers.hpp"
#include "macro.hpp" #include "macro.hpp"
#include "obs-module-helper.hpp" #include "obs-module-helper.hpp"
#include "plugin-state-helpers.hpp" #include "plugin-state-helpers.hpp"
@@ -8,11 +9,48 @@
#include <QScrollArea> #include <QScrollArea>
#include <QScrollBar> #include <QScrollBar>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <set>
namespace advss { namespace advss {
static GlobalMacroSettings macroSettings; static GlobalMacroSettings macroSettings;
static constexpr int addNewDockWindowRole = Qt::UserRole + 1;
static QStringList GetExistingDockWindowNames()
{
std::set<std::string> names;
for (const auto &macro : GetAllMacros()) {
if (!macro) {
continue;
}
const auto &dockSettings = macro->GetDockSettings();
if (dockSettings.IsStandaloneDock()) {
continue;
}
names.insert(dockSettings.DockWindowName());
}
QStringList result;
for (const auto &name : names) {
result << QString::fromStdString(name);
}
return result;
}
static void PopulateDockWindowNameCombo(QComboBox *combo)
{
combo->clear();
auto names = GetExistingDockWindowNames();
combo->addItems(names);
if (!names.isEmpty()) {
combo->insertSeparator(combo->count());
}
combo->addItem(obs_module_text(
"AdvSceneSwitcher.macroTab.currentDockWindowName.addNew"));
combo->setItemData(combo->count() - 1, true, addNewDockWindowRole);
}
void GlobalMacroSettings::Save(obs_data_t *obj) const void GlobalMacroSettings::Save(obs_data_t *obj) const
{ {
auto data = obs_data_create(); auto data = obs_data_create();
@@ -96,7 +134,7 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
"AdvSceneSwitcher.macroTab.currentRegisterDock"))), "AdvSceneSwitcher.macroTab.currentRegisterDock"))),
_currentMacroIsStandaloneDock(new QCheckBox(obs_module_text( _currentMacroIsStandaloneDock(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentIsStandaloneDock"))), "AdvSceneSwitcher.macroTab.currentIsStandaloneDock"))),
_currentMacroDockWindowName(new QLineEdit(this)), _currentMacroDockWindowName(new QComboBox(this)),
_currentMacroDockAddRunButton(new QCheckBox(obs_module_text( _currentMacroDockAddRunButton(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.currentDockAddRunButton"))), "AdvSceneSwitcher.macroTab.currentDockAddRunButton"))),
_currentMacroDockAddPauseButton(new QCheckBox(obs_module_text( _currentMacroDockAddPauseButton(new QCheckBox(obs_module_text(
@@ -143,6 +181,17 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
"AdvSceneSwitcher.macroTab.pauseStateSaveBehavior.unpause"), "AdvSceneSwitcher.macroTab.pauseStateSaveBehavior.unpause"),
static_cast<int>(Macro::PauseStateSaveBehavior::UNPAUSE)); static_cast<int>(Macro::PauseStateSaveBehavior::UNPAUSE));
_currentMacroDockWindowName->setEditable(true);
PopulateDockWindowNameCombo(_currentMacroDockWindowName);
connect(_currentMacroDockWindowName,
qOverload<int>(&QComboBox::activated), this, [this](int index) {
if (_currentMacroDockWindowName
->itemData(index, addNewDockWindowRole)
.toBool()) {
_currentMacroDockWindowName->setCurrentText("");
}
});
auto highlightOptions = new QGroupBox( auto highlightOptions = new QGroupBox(
obs_module_text("AdvSceneSwitcher.macroTab.highlightSettings")); obs_module_text("AdvSceneSwitcher.macroTab.highlightSettings"));
auto highlightLayout = new QVBoxLayout; auto highlightLayout = new QVBoxLayout;
@@ -348,7 +397,7 @@ MacroSettingsDialog::MacroSettingsDialog(QWidget *parent,
_currentMacroRegisterDock->setChecked(dockEnabled); _currentMacroRegisterDock->setChecked(dockEnabled);
_currentMacroIsStandaloneDock->setChecked( _currentMacroIsStandaloneDock->setChecked(
dockSettings.IsStandaloneDock()); dockSettings.IsStandaloneDock());
_currentMacroDockWindowName->setText( _currentMacroDockWindowName->setCurrentText(
QString::fromStdString(dockSettings.DockWindowName())); QString::fromStdString(dockSettings.DockWindowName()));
_currentMacroDockAddRunButton->setChecked(dockSettings.HasRunButton()); _currentMacroDockAddRunButton->setChecked(dockSettings.HasRunButton());
_currentMacroDockAddPauseButton->setChecked( _currentMacroDockAddPauseButton->setChecked(
@@ -486,7 +535,7 @@ bool MacroSettingsDialog::AskForSettings(QWidget *parent,
dockSettings.SetIsStandaloneDock( dockSettings.SetIsStandaloneDock(
dialog._currentMacroIsStandaloneDock->isChecked()); dialog._currentMacroIsStandaloneDock->isChecked());
dockSettings.SetDockWindowName( dockSettings.SetDockWindowName(
dialog._currentMacroDockWindowName->text().toStdString()); dialog._currentMacroDockWindowName->currentText().toStdString());
dockSettings.SetHasRunButton( dockSettings.SetHasRunButton(
dialog._currentMacroDockAddRunButton->isChecked()); dialog._currentMacroDockAddRunButton->isChecked());
dockSettings.SetHasPauseButton( dockSettings.SetHasPauseButton(

View File

@@ -6,6 +6,7 @@
#include <QWidget> #include <QWidget>
#include <QDialog> #include <QDialog>
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox>
#include <QGroupBox> #include <QGroupBox>
#include <QLineEdit> #include <QLineEdit>
#include <QGridLayout> #include <QGridLayout>
@@ -71,7 +72,7 @@ private:
MacroInputSelection *_currentInputs; MacroInputSelection *_currentInputs;
QCheckBox *_currentMacroRegisterDock; QCheckBox *_currentMacroRegisterDock;
QCheckBox *_currentMacroIsStandaloneDock; QCheckBox *_currentMacroIsStandaloneDock;
QLineEdit *_currentMacroDockWindowName; QComboBox *_currentMacroDockWindowName;
QCheckBox *_currentMacroDockAddRunButton; QCheckBox *_currentMacroDockAddRunButton;
QCheckBox *_currentMacroDockAddPauseButton; QCheckBox *_currentMacroDockAddPauseButton;
QCheckBox *_currentMacroDockAddStatusLabel; QCheckBox *_currentMacroDockAddStatusLabel;