mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-27 19:56:07 -05:00
Add option to rename buttons of macro dock
This commit is contained in:
@@ -107,6 +107,9 @@ AdvSceneSwitcher.macroTab.currentDisableHotkeys="Register hotkeys to control the
|
||||
AdvSceneSwitcher.macroTab.currentRegisterDock="Register dock widget to control the pause state of selected macro or run it manually"
|
||||
AdvSceneSwitcher.macroTab.currentDockAddRunButton="Add button to run the macro"
|
||||
AdvSceneSwitcher.macroTab.currentDockAddPauseButton="Add button to pause or unpause the macro"
|
||||
AdvSceneSwitcher.macroTab.currentDockButtonText.run="Run button text:"
|
||||
AdvSceneSwitcher.macroTab.currentDockButtonText.pause="Pause button text:"
|
||||
AdvSceneSwitcher.macroTab.currentDockButtonText.unpause="Unpause button text:"
|
||||
|
||||
AdvSceneSwitcher.macroDock.pause="Pause"
|
||||
AdvSceneSwitcher.macroDock.unpause="Unpause"
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
#include "utility.hpp"
|
||||
|
||||
#include <QLayout>
|
||||
#include <obs-module.h>
|
||||
|
||||
namespace advss {
|
||||
|
||||
MacroDock::MacroDock(Macro *m, QWidget *parent)
|
||||
MacroDock::MacroDock(Macro *m, QWidget *parent, const QString &runButtonText,
|
||||
const QString &pauseButtonText,
|
||||
const QString &unpauseButtonText)
|
||||
: OBSDock(parent),
|
||||
_run(new QPushButton(
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.run"))),
|
||||
_pauseButtonText(pauseButtonText),
|
||||
_unpauseButtonText(unpauseButtonText),
|
||||
_run(new QPushButton(runButtonText)),
|
||||
_pauseToggle(new QPushButton()),
|
||||
_macro(m)
|
||||
{
|
||||
@@ -61,11 +63,28 @@ void MacroDock::ShowRunButton(bool value)
|
||||
_run->setVisible(value);
|
||||
}
|
||||
|
||||
void MacroDock::SetRunButtonText(const QString &text)
|
||||
{
|
||||
_run->setText(text);
|
||||
}
|
||||
|
||||
void MacroDock::ShowPauseButton(bool value)
|
||||
{
|
||||
_pauseToggle->setVisible(value);
|
||||
}
|
||||
|
||||
void MacroDock::SetPauseButtonText(const QString &text)
|
||||
{
|
||||
_pauseButtonText = text;
|
||||
UpdatePauseText();
|
||||
}
|
||||
|
||||
void MacroDock::SetUnpauseButtonText(const QString &text)
|
||||
{
|
||||
_unpauseButtonText = text;
|
||||
UpdatePauseText();
|
||||
}
|
||||
|
||||
void MacroDock::RunClicked()
|
||||
{
|
||||
if (!_macro) {
|
||||
@@ -96,10 +115,8 @@ void MacroDock::UpdatePauseText()
|
||||
return;
|
||||
}
|
||||
|
||||
_pauseToggle->setText(
|
||||
_macro->Paused()
|
||||
? obs_module_text("AdvSceneSwitcher.macroDock.unpause")
|
||||
: obs_module_text("AdvSceneSwitcher.macroDock.pause"));
|
||||
_pauseToggle->setText(_macro->Paused() ? _unpauseButtonText
|
||||
: _pauseButtonText);
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
||||
@@ -13,10 +13,15 @@ class MacroDock : public OBSDock {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MacroDock(Macro *, QWidget *parent);
|
||||
MacroDock(Macro *, QWidget *parent, const QString &runButtonText,
|
||||
const QString &pauseButtonText,
|
||||
const QString &unpauseButtonText);
|
||||
void SetName(const QString &);
|
||||
void ShowRunButton(bool);
|
||||
void SetRunButtonText(const QString &);
|
||||
void ShowPauseButton(bool);
|
||||
void SetPauseButtonText(const QString &);
|
||||
void SetUnpauseButtonText(const QString &);
|
||||
|
||||
private slots:
|
||||
void RunClicked();
|
||||
@@ -24,8 +29,11 @@ private slots:
|
||||
void UpdatePauseText();
|
||||
|
||||
private:
|
||||
QString _pauseButtonText;
|
||||
QString _unpauseButtonText;
|
||||
QPushButton *_run;
|
||||
QPushButton *_pauseToggle;
|
||||
|
||||
QTimer _timer;
|
||||
|
||||
Macro *_macro;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#include "macro-properties.hpp"
|
||||
#include "obs-module-helper.hpp"
|
||||
#include "utility.hpp"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QDialogButtonBox>
|
||||
#include <obs-module.h>
|
||||
|
||||
namespace advss {
|
||||
|
||||
@@ -29,6 +30,30 @@ void MacroProperties::Load(obs_data_t *obj)
|
||||
obs_data_release(data);
|
||||
}
|
||||
|
||||
static void setGridLayoutRowVisible(QGridLayout *layout, int row, bool visible)
|
||||
{
|
||||
for (int col = 0; col < layout->columnCount(); col++) {
|
||||
auto item = layout->itemAtPosition(row, col);
|
||||
if (!item) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto rowLayout = item->layout();
|
||||
if (rowLayout) {
|
||||
SetLayoutVisible(rowLayout, visible);
|
||||
}
|
||||
|
||||
auto widget = item->widget();
|
||||
if (widget) {
|
||||
widget->setVisible(visible);
|
||||
}
|
||||
}
|
||||
|
||||
if (!visible) {
|
||||
layout->setRowMinimumHeight(row, 0);
|
||||
}
|
||||
}
|
||||
|
||||
MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
const MacroProperties &prop,
|
||||
Macro *macro)
|
||||
@@ -48,7 +73,13 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
_currentMacroDockAddRunButton(new QCheckBox(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockAddRunButton"))),
|
||||
_currentMacroDockAddPauseButton(new QCheckBox(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockAddPauseButton")))
|
||||
"AdvSceneSwitcher.macroTab.currentDockAddPauseButton"))),
|
||||
_runButtonText(new QLineEdit()),
|
||||
_pauseButtonText(new QLineEdit()),
|
||||
_unpauseButtonText(new QLineEdit()),
|
||||
_dockOptions(new QGroupBox(
|
||||
obs_module_text("AdvSceneSwitcher.macroTab.dockSettings"))),
|
||||
_dockLayout(new QGridLayout())
|
||||
{
|
||||
setModal(true);
|
||||
setWindowModality(Qt::WindowModality::WindowModal);
|
||||
@@ -56,7 +87,7 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
|
||||
auto highlightOptions = new QGroupBox(
|
||||
obs_module_text("AdvSceneSwitcher.macroTab.highlightSettings"));
|
||||
QVBoxLayout *highlightLayout = new QVBoxLayout;
|
||||
auto highlightLayout = new QVBoxLayout;
|
||||
highlightLayout->addWidget(_executed);
|
||||
highlightLayout->addWidget(_conditions);
|
||||
highlightLayout->addWidget(_actions);
|
||||
@@ -64,18 +95,39 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
|
||||
auto hotkeyOptions = new QGroupBox(
|
||||
obs_module_text("AdvSceneSwitcher.macroTab.hotkeySettings"));
|
||||
QVBoxLayout *hotkeyLayout = new QVBoxLayout;
|
||||
auto hotkeyLayout = new QVBoxLayout;
|
||||
hotkeyLayout->addWidget(_newMacroRegisterHotkeys);
|
||||
hotkeyLayout->addWidget(_currentMacroRegisterHotkeys);
|
||||
hotkeyOptions->setLayout(hotkeyLayout);
|
||||
|
||||
_dockOptions = new QGroupBox(
|
||||
obs_module_text("AdvSceneSwitcher.macroTab.dockSettings"));
|
||||
QVBoxLayout *dockLayout = new QVBoxLayout;
|
||||
dockLayout->addWidget(_currentMacroRegisterDock);
|
||||
dockLayout->addWidget(_currentMacroDockAddRunButton);
|
||||
dockLayout->addWidget(_currentMacroDockAddPauseButton);
|
||||
_dockOptions->setLayout(dockLayout);
|
||||
int row = 0;
|
||||
_dockLayout->addWidget(_currentMacroRegisterDock, row, 1, 1, 2);
|
||||
row++;
|
||||
_dockLayout->addWidget(_currentMacroDockAddRunButton, row, 1, 1, 2);
|
||||
row++;
|
||||
_dockLayout->addWidget(
|
||||
new QLabel(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockButtonText.run")),
|
||||
row, 1);
|
||||
_dockLayout->addWidget(_runButtonText, row, 2);
|
||||
_runButtonTextRow = row;
|
||||
row++;
|
||||
_dockLayout->addWidget(_currentMacroDockAddPauseButton, row, 1, 1, 2);
|
||||
row++;
|
||||
_dockLayout->addWidget(
|
||||
new QLabel(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockButtonText.pause")),
|
||||
row, 1);
|
||||
_dockLayout->addWidget(_pauseButtonText, row, 2);
|
||||
_pauseButtonTextRow = row;
|
||||
row++;
|
||||
_dockLayout->addWidget(
|
||||
new QLabel(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockButtonText.unpause")),
|
||||
row, 1);
|
||||
_dockLayout->addWidget(_unpauseButtonText, row, 2);
|
||||
_unpauseButtonTextRow = row;
|
||||
_dockOptions->setLayout(_dockLayout);
|
||||
|
||||
QDialogButtonBox *buttonbox = new QDialogButtonBox(
|
||||
QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
@@ -85,8 +137,12 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
|
||||
connect(_currentMacroRegisterDock, &QCheckBox::stateChanged, this,
|
||||
&MacroPropertiesDialog::DockEnableChanged);
|
||||
connect(_currentMacroDockAddRunButton, &QCheckBox::stateChanged, this,
|
||||
&MacroPropertiesDialog::RunButtonEnableChanged);
|
||||
connect(_currentMacroDockAddPauseButton, &QCheckBox::stateChanged, this,
|
||||
&MacroPropertiesDialog::PauseButtonEnableChanged);
|
||||
|
||||
QVBoxLayout *layout = new QVBoxLayout;
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->addWidget(highlightOptions);
|
||||
layout->addWidget(hotkeyOptions);
|
||||
layout->addWidget(_dockOptions);
|
||||
@@ -108,14 +164,49 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
||||
_currentMacroDockAddRunButton->setChecked(macro->DockHasRunButton());
|
||||
_currentMacroDockAddPauseButton->setChecked(
|
||||
macro->DockHasPauseButton());
|
||||
_runButtonText->setText(QString::fromStdString(macro->RunButtonText()));
|
||||
_pauseButtonText->setText(
|
||||
QString::fromStdString(macro->PauseButtonText()));
|
||||
_unpauseButtonText->setText(
|
||||
QString::fromStdString(macro->UnpauseButtonText()));
|
||||
|
||||
_currentMacroDockAddRunButton->setVisible(dockEnabled);
|
||||
_currentMacroDockAddPauseButton->setVisible(dockEnabled);
|
||||
setGridLayoutRowVisible(_dockLayout, _runButtonTextRow,
|
||||
dockEnabled && macro->DockHasRunButton());
|
||||
setGridLayoutRowVisible(_dockLayout, _pauseButtonTextRow,
|
||||
dockEnabled && macro->DockHasPauseButton());
|
||||
setGridLayoutRowVisible(_dockLayout, _unpauseButtonTextRow,
|
||||
dockEnabled && macro->DockHasPauseButton());
|
||||
MinimizeSizeOfColumn(_dockLayout, 0);
|
||||
Resize();
|
||||
}
|
||||
|
||||
void MacroPropertiesDialog::DockEnableChanged(int enabled)
|
||||
{
|
||||
_currentMacroDockAddRunButton->setVisible(enabled);
|
||||
_currentMacroDockAddPauseButton->setVisible(enabled);
|
||||
setGridLayoutRowVisible(_dockLayout, _runButtonTextRow, enabled);
|
||||
setGridLayoutRowVisible(_dockLayout, _pauseButtonTextRow, enabled);
|
||||
setGridLayoutRowVisible(_dockLayout, _unpauseButtonTextRow, enabled);
|
||||
Resize();
|
||||
}
|
||||
|
||||
void MacroPropertiesDialog::RunButtonEnableChanged(int enabled)
|
||||
{
|
||||
setGridLayoutRowVisible(_dockLayout, _runButtonTextRow, enabled);
|
||||
Resize();
|
||||
}
|
||||
|
||||
void MacroPropertiesDialog::PauseButtonEnableChanged(int enabled)
|
||||
{
|
||||
setGridLayoutRowVisible(_dockLayout, _pauseButtonTextRow, enabled);
|
||||
setGridLayoutRowVisible(_dockLayout, _unpauseButtonTextRow, enabled);
|
||||
Resize();
|
||||
}
|
||||
|
||||
void MacroPropertiesDialog::Resize()
|
||||
{
|
||||
_dockOptions->adjustSize();
|
||||
_dockOptions->updateGeometry();
|
||||
adjustSize();
|
||||
@@ -147,6 +238,11 @@ bool MacroPropertiesDialog::AskForSettings(QWidget *parent,
|
||||
dialog._currentMacroDockAddRunButton->isChecked());
|
||||
macro->SetDockHasPauseButton(
|
||||
dialog._currentMacroDockAddPauseButton->isChecked());
|
||||
macro->SetRunButtonText(dialog._runButtonText->text().toStdString());
|
||||
macro->SetPauseButtonText(
|
||||
dialog._pauseButtonText->text().toStdString());
|
||||
macro->SetUnpauseButtonText(
|
||||
dialog._unpauseButtonText->text().toStdString());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <QDialog>
|
||||
#include <QCheckBox>
|
||||
#include <QGroupBox>
|
||||
#include <QLineEdit>
|
||||
#include <QGridLayout>
|
||||
#include <obs-data.h>
|
||||
|
||||
namespace advss {
|
||||
@@ -31,8 +33,12 @@ public:
|
||||
Macro *macro);
|
||||
private slots:
|
||||
void DockEnableChanged(int);
|
||||
void RunButtonEnableChanged(int);
|
||||
void PauseButtonEnableChanged(int);
|
||||
|
||||
private:
|
||||
void Resize();
|
||||
|
||||
QCheckBox *_executed;
|
||||
QCheckBox *_conditions;
|
||||
QCheckBox *_actions;
|
||||
@@ -42,7 +48,15 @@ private:
|
||||
QCheckBox *_currentMacroRegisterDock;
|
||||
QCheckBox *_currentMacroDockAddRunButton;
|
||||
QCheckBox *_currentMacroDockAddPauseButton;
|
||||
QLineEdit *_runButtonText;
|
||||
QLineEdit *_pauseButtonText;
|
||||
QLineEdit *_unpauseButtonText;
|
||||
QGroupBox *_dockOptions;
|
||||
QGridLayout *_dockLayout;
|
||||
|
||||
int _runButtonTextRow = -1;
|
||||
int _pauseButtonTextRow = -1;
|
||||
int _unpauseButtonTextRow = -1;
|
||||
};
|
||||
|
||||
} // namespace advss
|
||||
|
||||
@@ -601,6 +601,12 @@ void Macro::SaveDockSettings(obs_data_t *obj) const
|
||||
}
|
||||
obs_data_set_bool(dockSettings, "hasRunButton", _dockHasRunButton);
|
||||
obs_data_set_bool(dockSettings, "hasPauseButton", _dockHasPauseButton);
|
||||
obs_data_set_string(dockSettings, "runButtonText",
|
||||
_runButtonText.c_str());
|
||||
obs_data_set_string(dockSettings, "pauseButtonText",
|
||||
_pauseButtonText.c_str());
|
||||
obs_data_set_string(dockSettings, "unpauseButtonText",
|
||||
_unpauseButtonText.c_str());
|
||||
if (_dock) {
|
||||
auto window = static_cast<QMainWindow *>(
|
||||
obs_frontend_get_main_window());
|
||||
@@ -631,6 +637,22 @@ void Macro::LoadDockSettings(obs_data_t *obj)
|
||||
|
||||
const bool dockEnabled = obs_data_get_bool(dockSettings, "register");
|
||||
_dockIsVisible = obs_data_get_bool(dockSettings, "isVisible");
|
||||
|
||||
// TODO: remove these default settings in a future version
|
||||
obs_data_set_default_string(
|
||||
dockSettings, "runButtonText",
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.run"));
|
||||
obs_data_set_default_string(
|
||||
dockSettings, "pauseButtonText",
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.pause"));
|
||||
obs_data_set_default_string(
|
||||
dockSettings, "unpauseButtonText",
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.unpause"));
|
||||
|
||||
_runButtonText = obs_data_get_string(dockSettings, "runButtonText");
|
||||
_pauseButtonText = obs_data_get_string(dockSettings, "pauseButtonText");
|
||||
_unpauseButtonText =
|
||||
obs_data_get_string(dockSettings, "unpauseButtonText");
|
||||
if (dockEnabled) {
|
||||
_dockHasRunButton =
|
||||
obs_data_get_bool(dockSettings, "hasRunButton");
|
||||
@@ -670,7 +692,10 @@ void Macro::EnableDock(bool value)
|
||||
// Create new dock widget
|
||||
auto window =
|
||||
static_cast<QMainWindow *>(obs_frontend_get_main_window());
|
||||
_dock = new MacroDock(this, window);
|
||||
_dock = new MacroDock(this, window,
|
||||
QString::fromStdString(_runButtonText),
|
||||
QString::fromStdString(_pauseButtonText),
|
||||
QString::fromStdString(_unpauseButtonText));
|
||||
SetDockWidgetName(); // Used by OBS to restore position
|
||||
|
||||
// Register new dock
|
||||
@@ -709,6 +734,33 @@ void Macro::SetDockHasPauseButton(bool value)
|
||||
_dock->ShowPauseButton(value);
|
||||
}
|
||||
|
||||
void Macro::SetRunButtonText(const std::string &text)
|
||||
{
|
||||
_runButtonText = text;
|
||||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetRunButtonText(QString::fromStdString(text));
|
||||
}
|
||||
|
||||
void Macro::SetPauseButtonText(const std::string &text)
|
||||
{
|
||||
_pauseButtonText = text;
|
||||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetPauseButtonText(QString::fromStdString(text));
|
||||
}
|
||||
|
||||
void Macro::SetUnpauseButtonText(const std::string &text)
|
||||
{
|
||||
_unpauseButtonText = text;
|
||||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetUnpauseButtonText(QString::fromStdString(text));
|
||||
}
|
||||
|
||||
void Macro::RemoveDock()
|
||||
{
|
||||
if (_dock) {
|
||||
|
||||
@@ -89,6 +89,12 @@ public:
|
||||
bool DockHasRunButton() const { return _dockHasRunButton; }
|
||||
void SetDockHasPauseButton(bool value);
|
||||
bool DockHasPauseButton() const { return _dockHasPauseButton; }
|
||||
std::string RunButtonText() const { return _runButtonText; }
|
||||
void SetRunButtonText(const std::string &text);
|
||||
std::string PauseButtonText() const { return _pauseButtonText; }
|
||||
void SetPauseButtonText(const std::string &text);
|
||||
std::string UnpauseButtonText() const { return _unpauseButtonText; }
|
||||
void SetUnpauseButtonText(const std::string &text);
|
||||
|
||||
private:
|
||||
void SetupHotkeys();
|
||||
@@ -137,6 +143,12 @@ private:
|
||||
bool _registerDock = false;
|
||||
bool _dockHasRunButton = true;
|
||||
bool _dockHasPauseButton = true;
|
||||
std::string _runButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.run");
|
||||
std::string _pauseButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.pause");
|
||||
std::string _unpauseButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.unpause");
|
||||
bool _dockIsFloating = true;
|
||||
bool _dockIsVisible = false;
|
||||
Qt::DockWidgetArea _dockArea;
|
||||
|
||||
Reference in New Issue
Block a user