mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-04-04 16:25:39 -05:00
Enable use of variables in macro dock widgets
This commit is contained in:
parent
e7c6afbc6a
commit
101a85b063
|
|
@ -6,19 +6,21 @@
|
|||
|
||||
namespace advss {
|
||||
|
||||
MacroDock::MacroDock(Macro *m, QWidget *parent, const QString &runButtonText,
|
||||
const QString &pauseButtonText,
|
||||
const QString &unpauseButtonText,
|
||||
const QString &conditionsTrueText,
|
||||
const QString &conditionsFalseText)
|
||||
MacroDock::MacroDock(Macro *m, QWidget *parent,
|
||||
const StringVariable &runButtonText,
|
||||
const StringVariable &pauseButtonText,
|
||||
const StringVariable &unpauseButtonText,
|
||||
const StringVariable &conditionsTrueText,
|
||||
const StringVariable &conditionsFalseText)
|
||||
: OBSDock(parent),
|
||||
_runButtonText(runButtonText),
|
||||
_pauseButtonText(pauseButtonText),
|
||||
_unpauseButtonText(unpauseButtonText),
|
||||
_conditionsTrueText(conditionsTrueText),
|
||||
_conditionsFalseText(conditionsFalseText),
|
||||
_run(new QPushButton(runButtonText)),
|
||||
_run(new QPushButton(runButtonText.c_str())),
|
||||
_pauseToggle(new QPushButton()),
|
||||
_statusText(new QLabel(conditionsFalseText)),
|
||||
_statusText(new QLabel(conditionsFalseText.c_str())),
|
||||
_macro(m)
|
||||
{
|
||||
if (_macro) {
|
||||
|
|
@ -42,14 +44,9 @@ MacroDock::MacroDock(Macro *m, QWidget *parent, const QString &runButtonText,
|
|||
layout->addWidget(_pauseToggle);
|
||||
layout->addWidget(_statusText);
|
||||
|
||||
QWidget::connect(&_timer, SIGNAL(timeout()), this,
|
||||
SLOT(UpdatePauseText()));
|
||||
QWidget::connect(&_timer, SIGNAL(timeout()), this,
|
||||
SLOT(UpdateStatusText()));
|
||||
_timer.start(1000);
|
||||
|
||||
UpdatePauseText();
|
||||
UpdateStatusText();
|
||||
UpdateText();
|
||||
QWidget::connect(&_timer, SIGNAL(timeout()), this, SLOT(UpdateText()));
|
||||
_timer.start(500);
|
||||
|
||||
// QFrame wrapper is necessary to avoid dock being partially
|
||||
// transparent
|
||||
|
|
@ -73,9 +70,10 @@ void MacroDock::ShowRunButton(bool value)
|
|||
_run->setVisible(value);
|
||||
}
|
||||
|
||||
void MacroDock::SetRunButtonText(const QString &text)
|
||||
void MacroDock::SetRunButtonText(const StringVariable &text)
|
||||
{
|
||||
_run->setText(text);
|
||||
_runButtonText = text;
|
||||
_run->setText(text.c_str());
|
||||
}
|
||||
|
||||
void MacroDock::ShowPauseButton(bool value)
|
||||
|
|
@ -83,16 +81,16 @@ void MacroDock::ShowPauseButton(bool value)
|
|||
_pauseToggle->setVisible(value);
|
||||
}
|
||||
|
||||
void MacroDock::SetPauseButtonText(const QString &text)
|
||||
void MacroDock::SetPauseButtonText(const StringVariable &text)
|
||||
{
|
||||
_pauseButtonText = text;
|
||||
UpdatePauseText();
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
void MacroDock::SetUnpauseButtonText(const QString &text)
|
||||
void MacroDock::SetUnpauseButtonText(const StringVariable &text)
|
||||
{
|
||||
_unpauseButtonText = text;
|
||||
UpdatePauseText();
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
void MacroDock::ShowStatusLabel(bool value)
|
||||
|
|
@ -100,16 +98,16 @@ void MacroDock::ShowStatusLabel(bool value)
|
|||
_statusText->setVisible(value);
|
||||
}
|
||||
|
||||
void MacroDock::SetConditionsTrueText(const QString &text)
|
||||
void MacroDock::SetConditionsTrueText(const StringVariable &text)
|
||||
{
|
||||
_conditionsTrueText = text;
|
||||
UpdateStatusText();
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
void MacroDock::SetConditionsFalseText(const QString &text)
|
||||
void MacroDock::SetConditionsFalseText(const StringVariable &text)
|
||||
{
|
||||
_conditionsFalseText = text;
|
||||
UpdateStatusText();
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
void MacroDock::RunClicked()
|
||||
|
|
@ -133,27 +131,21 @@ void MacroDock::PauseToggleClicked()
|
|||
}
|
||||
|
||||
_macro->SetPaused(!_macro->Paused());
|
||||
UpdatePauseText();
|
||||
UpdateText();
|
||||
}
|
||||
|
||||
void MacroDock::UpdatePauseText()
|
||||
void MacroDock::UpdateText()
|
||||
{
|
||||
_run->setText(_runButtonText.c_str());
|
||||
|
||||
if (!_macro) {
|
||||
return;
|
||||
}
|
||||
|
||||
_pauseToggle->setText(_macro->Paused() ? _unpauseButtonText
|
||||
: _pauseButtonText);
|
||||
}
|
||||
|
||||
void MacroDock::UpdateStatusText()
|
||||
{
|
||||
if (!_macro) {
|
||||
return;
|
||||
}
|
||||
|
||||
_statusText->setText(_macro->Matched() ? _conditionsTrueText
|
||||
: _conditionsFalseText);
|
||||
_pauseToggle->setText(_macro->Paused() ? _unpauseButtonText.c_str()
|
||||
: _pauseButtonText.c_str());
|
||||
_statusText->setText(_macro->Matched() ? _conditionsTrueText.c_str()
|
||||
: _conditionsFalseText.c_str());
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
#include "obs-dock.hpp"
|
||||
#include "variable-string.hpp"
|
||||
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
|
|
@ -14,32 +15,32 @@ class MacroDock : public OBSDock {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MacroDock(Macro *, QWidget *parent, const QString &runButtonText,
|
||||
const QString &pauseButtonText,
|
||||
const QString &unpauseButtonText,
|
||||
const QString &conditionsTrueText,
|
||||
const QString &conditionsFalseText);
|
||||
MacroDock(Macro *, QWidget *parent, const StringVariable &runButtonText,
|
||||
const StringVariable &pauseButtonText,
|
||||
const StringVariable &unpauseButtonText,
|
||||
const StringVariable &conditionsTrueText,
|
||||
const StringVariable &conditionsFalseText);
|
||||
void SetName(const QString &);
|
||||
void ShowRunButton(bool);
|
||||
void SetRunButtonText(const QString &);
|
||||
void SetRunButtonText(const StringVariable &);
|
||||
void ShowPauseButton(bool);
|
||||
void SetPauseButtonText(const QString &);
|
||||
void SetUnpauseButtonText(const QString &);
|
||||
void SetPauseButtonText(const StringVariable &);
|
||||
void SetUnpauseButtonText(const StringVariable &);
|
||||
void ShowStatusLabel(bool);
|
||||
void SetConditionsTrueText(const QString &);
|
||||
void SetConditionsFalseText(const QString &);
|
||||
void SetConditionsTrueText(const StringVariable &);
|
||||
void SetConditionsFalseText(const StringVariable &);
|
||||
|
||||
private slots:
|
||||
void RunClicked();
|
||||
void PauseToggleClicked();
|
||||
void UpdatePauseText();
|
||||
void UpdateStatusText();
|
||||
void UpdateText();
|
||||
|
||||
private:
|
||||
QString _pauseButtonText;
|
||||
QString _unpauseButtonText;
|
||||
QString _conditionsTrueText;
|
||||
QString _conditionsFalseText;
|
||||
StringVariable _runButtonText;
|
||||
StringVariable _pauseButtonText;
|
||||
StringVariable _unpauseButtonText;
|
||||
StringVariable _conditionsTrueText;
|
||||
StringVariable _conditionsFalseText;
|
||||
QPushButton *_run;
|
||||
QPushButton *_pauseToggle;
|
||||
QLabel *_statusText;
|
||||
|
|
|
|||
|
|
@ -76,11 +76,11 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
|||
"AdvSceneSwitcher.macroTab.currentDockAddPauseButton"))),
|
||||
_currentMacroDockAddStatusLabel(new QCheckBox(obs_module_text(
|
||||
"AdvSceneSwitcher.macroTab.currentDockAddStatusLabel"))),
|
||||
_runButtonText(new QLineEdit()),
|
||||
_pauseButtonText(new QLineEdit()),
|
||||
_unpauseButtonText(new QLineEdit()),
|
||||
_conditionsTrueStatusText(new QLineEdit()),
|
||||
_conditionsFalseStatusText(new QLineEdit()),
|
||||
_runButtonText(new VariableLineEdit(this)),
|
||||
_pauseButtonText(new VariableLineEdit(this)),
|
||||
_unpauseButtonText(new VariableLineEdit(this)),
|
||||
_conditionsTrueStatusText(new VariableLineEdit(this)),
|
||||
_conditionsFalseStatusText(new VariableLineEdit(this)),
|
||||
_dockOptions(new QGroupBox(
|
||||
obs_module_text("AdvSceneSwitcher.macroTab.dockSettings"))),
|
||||
_dockLayout(new QGridLayout())
|
||||
|
|
@ -189,15 +189,11 @@ MacroPropertiesDialog::MacroPropertiesDialog(QWidget *parent,
|
|||
macro->DockHasPauseButton());
|
||||
_currentMacroDockAddStatusLabel->setChecked(
|
||||
macro->DockHasStatusLabel());
|
||||
_runButtonText->setText(QString::fromStdString(macro->RunButtonText()));
|
||||
_pauseButtonText->setText(
|
||||
QString::fromStdString(macro->PauseButtonText()));
|
||||
_unpauseButtonText->setText(
|
||||
QString::fromStdString(macro->UnpauseButtonText()));
|
||||
_conditionsTrueStatusText->setText(
|
||||
QString::fromStdString(macro->ConditionsTrueStatusText()));
|
||||
_conditionsFalseStatusText->setText(
|
||||
QString::fromStdString(macro->ConditionsFalseStatusText()));
|
||||
_runButtonText->setText(macro->RunButtonText());
|
||||
_pauseButtonText->setText(macro->PauseButtonText());
|
||||
_unpauseButtonText->setText(macro->UnpauseButtonText());
|
||||
_conditionsTrueStatusText->setText(macro->ConditionsTrueStatusText());
|
||||
_conditionsFalseStatusText->setText(macro->ConditionsFalseStatusText());
|
||||
|
||||
_currentMacroDockAddRunButton->setVisible(dockEnabled);
|
||||
_currentMacroDockAddPauseButton->setVisible(dockEnabled);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
#include "macro.hpp"
|
||||
#include "variable-line-edit.hpp"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QDialog>
|
||||
|
|
@ -50,11 +51,11 @@ private:
|
|||
QCheckBox *_currentMacroDockAddRunButton;
|
||||
QCheckBox *_currentMacroDockAddPauseButton;
|
||||
QCheckBox *_currentMacroDockAddStatusLabel;
|
||||
QLineEdit *_runButtonText;
|
||||
QLineEdit *_pauseButtonText;
|
||||
QLineEdit *_unpauseButtonText;
|
||||
QLineEdit *_conditionsTrueStatusText;
|
||||
QLineEdit *_conditionsFalseStatusText;
|
||||
VariableLineEdit *_runButtonText;
|
||||
VariableLineEdit *_pauseButtonText;
|
||||
VariableLineEdit *_unpauseButtonText;
|
||||
VariableLineEdit *_conditionsTrueStatusText;
|
||||
VariableLineEdit *_conditionsFalseStatusText;
|
||||
QGroupBox *_dockOptions;
|
||||
QGridLayout *_dockLayout;
|
||||
|
||||
|
|
|
|||
|
|
@ -607,16 +607,13 @@ 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_bool(dockSettings, "hasStatusLabel", _dockHasStatusLabel);
|
||||
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());
|
||||
obs_data_set_string(dockSettings, "conditionsTrueStatusText",
|
||||
_conditionsTrueStatusText.c_str());
|
||||
obs_data_set_string(dockSettings, "conditionsFalseStatusText",
|
||||
_conditionsFalseStatusText.c_str());
|
||||
_runButtonText.Save(dockSettings, "runButtonText");
|
||||
_pauseButtonText.Save(dockSettings, "pauseButtonText");
|
||||
_unpauseButtonText.Save(dockSettings, "unpauseButtonText");
|
||||
_conditionsTrueStatusText.Save(dockSettings,
|
||||
"conditionsTrueStatusText");
|
||||
_conditionsFalseStatusText.Save(dockSettings,
|
||||
"conditionsFalseStatusText");
|
||||
if (_dock) {
|
||||
auto window = static_cast<QMainWindow *>(
|
||||
obs_frontend_get_main_window());
|
||||
|
|
@ -658,15 +655,13 @@ void Macro::LoadDockSettings(obs_data_t *obj)
|
|||
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");
|
||||
_conditionsTrueStatusText =
|
||||
obs_data_get_string(dockSettings, "conditionsTrueStatusText");
|
||||
_conditionsFalseStatusText =
|
||||
obs_data_get_string(dockSettings, "conditionsFalseStatusText");
|
||||
_runButtonText.Load(dockSettings, "runButtonText");
|
||||
_pauseButtonText.Load(dockSettings, "pauseButtonText");
|
||||
_unpauseButtonText.Load(dockSettings, "unpauseButtonText");
|
||||
_conditionsTrueStatusText.Load(dockSettings,
|
||||
"conditionsTrueStatusText");
|
||||
_conditionsFalseStatusText.Load(dockSettings,
|
||||
"conditionsFalseStatusText");
|
||||
if (dockEnabled) {
|
||||
_dockHasRunButton =
|
||||
obs_data_get_bool(dockSettings, "hasRunButton");
|
||||
|
|
@ -709,12 +704,9 @@ void Macro::EnableDock(bool value)
|
|||
// Create new dock widget
|
||||
auto window =
|
||||
static_cast<QMainWindow *>(obs_frontend_get_main_window());
|
||||
_dock = new MacroDock(
|
||||
this, window, QString::fromStdString(_runButtonText),
|
||||
QString::fromStdString(_pauseButtonText),
|
||||
QString::fromStdString(_unpauseButtonText),
|
||||
QString::fromStdString(_conditionsTrueStatusText),
|
||||
QString::fromStdString(_conditionsFalseStatusText));
|
||||
_dock = new MacroDock(this, window, _runButtonText, _pauseButtonText,
|
||||
_unpauseButtonText, _conditionsTrueStatusText,
|
||||
_conditionsFalseStatusText);
|
||||
SetDockWidgetName(); // Used by OBS to restore position
|
||||
|
||||
// Register new dock
|
||||
|
|
@ -770,7 +762,7 @@ void Macro::SetRunButtonText(const std::string &text)
|
|||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetRunButtonText(QString::fromStdString(text));
|
||||
_dock->SetRunButtonText(text);
|
||||
}
|
||||
|
||||
void Macro::SetPauseButtonText(const std::string &text)
|
||||
|
|
@ -779,7 +771,7 @@ void Macro::SetPauseButtonText(const std::string &text)
|
|||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetPauseButtonText(QString::fromStdString(text));
|
||||
_dock->SetPauseButtonText(text);
|
||||
}
|
||||
|
||||
void Macro::SetUnpauseButtonText(const std::string &text)
|
||||
|
|
@ -788,7 +780,7 @@ void Macro::SetUnpauseButtonText(const std::string &text)
|
|||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetUnpauseButtonText(QString::fromStdString(text));
|
||||
_dock->SetUnpauseButtonText(text);
|
||||
}
|
||||
|
||||
void Macro::SetConditionsTrueStatusText(const std::string &text)
|
||||
|
|
@ -797,10 +789,10 @@ void Macro::SetConditionsTrueStatusText(const std::string &text)
|
|||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetConditionsTrueText(QString::fromStdString(text));
|
||||
_dock->SetConditionsTrueText(text);
|
||||
}
|
||||
|
||||
std::string Macro::ConditionsTrueStatusText() const
|
||||
StringVariable Macro::ConditionsTrueStatusText() const
|
||||
{
|
||||
return _conditionsTrueStatusText;
|
||||
}
|
||||
|
|
@ -811,10 +803,10 @@ void Macro::SetConditionsFalseStatusText(const std::string &text)
|
|||
if (!_dock) {
|
||||
return;
|
||||
}
|
||||
_dock->SetConditionsFalseText(QString::fromStdString(text));
|
||||
_dock->SetConditionsFalseText(text);
|
||||
}
|
||||
|
||||
std::string Macro::ConditionsFalseStatusText() const
|
||||
StringVariable Macro::ConditionsFalseStatusText() const
|
||||
{
|
||||
return _conditionsFalseStatusText;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "macro-action.hpp"
|
||||
#include "macro-condition.hpp"
|
||||
#include "macro-ref.hpp"
|
||||
#include "variable-string.hpp"
|
||||
|
||||
#include <QString>
|
||||
#include <QByteArray>
|
||||
|
|
@ -91,16 +92,16 @@ public:
|
|||
bool DockHasPauseButton() const { return _dockHasPauseButton; }
|
||||
void SetDockHasStatusLabel(bool value);
|
||||
bool DockHasStatusLabel() const { return _dockHasStatusLabel; }
|
||||
std::string RunButtonText() const { return _runButtonText; }
|
||||
StringVariable RunButtonText() const { return _runButtonText; }
|
||||
void SetRunButtonText(const std::string &text);
|
||||
std::string PauseButtonText() const { return _pauseButtonText; }
|
||||
StringVariable PauseButtonText() const { return _pauseButtonText; }
|
||||
void SetPauseButtonText(const std::string &text);
|
||||
std::string UnpauseButtonText() const { return _unpauseButtonText; }
|
||||
StringVariable UnpauseButtonText() const { return _unpauseButtonText; }
|
||||
void SetUnpauseButtonText(const std::string &text);
|
||||
void SetConditionsTrueStatusText(const std::string &text);
|
||||
std::string ConditionsTrueStatusText() const;
|
||||
StringVariable ConditionsTrueStatusText() const;
|
||||
void SetConditionsFalseStatusText(const std::string &text);
|
||||
std::string ConditionsFalseStatusText() const;
|
||||
StringVariable ConditionsFalseStatusText() const;
|
||||
|
||||
private:
|
||||
void SetupHotkeys();
|
||||
|
|
@ -150,15 +151,15 @@ private:
|
|||
bool _dockHasRunButton = true;
|
||||
bool _dockHasPauseButton = true;
|
||||
bool _dockHasStatusLabel = false;
|
||||
std::string _runButtonText =
|
||||
StringVariable _runButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.run");
|
||||
std::string _pauseButtonText =
|
||||
StringVariable _pauseButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.pause");
|
||||
std::string _unpauseButtonText =
|
||||
StringVariable _unpauseButtonText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.unpause");
|
||||
std::string _conditionsTrueStatusText =
|
||||
StringVariable _conditionsTrueStatusText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.statusLabel.true");
|
||||
std::string _conditionsFalseStatusText =
|
||||
StringVariable _conditionsFalseStatusText =
|
||||
obs_module_text("AdvSceneSwitcher.macroDock.statusLabel.false");
|
||||
bool _dockIsFloating = true;
|
||||
bool _dockIsVisible = false;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user