Add option to toggle between vertical and horizontal macro controls

This commit is contained in:
WarmUpTill 2022-01-29 14:37:16 +01:00 committed by WarmUpTill
parent 487c735e13
commit 61d9031933
9 changed files with 86 additions and 6 deletions

View File

@ -30,6 +30,7 @@ AdvSceneSwitcher.generalTab.generalBehavior.verboseLogging="Enable verbose loggi
AdvSceneSwitcher.generalTab.generalBehavior.saveWindowGeo="Save window position and size"
AdvSceneSwitcher.generalTab.generalBehavior.showTrayNotifications="Show system tray notifications"
AdvSceneSwitcher.generalTab.generalBehavior.disableUIHints="Disable UI hints"
AdvSceneSwitcher.generalTab.generalBehavior.verticalMacroControls="Use permanent vertical controls on Macro tab"
AdvSceneSwitcher.generalTab.priority="Priority"
AdvSceneSwitcher.generalTab.priority.description="Switching methods priority (Highest priority is at the top)"
AdvSceneSwitcher.generalTab.priority.threadPriority="Use thread priority"

View File

@ -325,6 +325,30 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_23">
<item>
<widget class="QCheckBox" name="useVerticalMacroControls">
<property name="text">
<string>AdvSceneSwitcher.generalTab.generalBehavior.verticalMacroControls</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>

View File

@ -192,6 +192,16 @@ void AdvSceneSwitcher::on_uiHintsDisable_stateChanged(int state)
switcher->disableHints = state;
}
void AdvSceneSwitcher::on_useVerticalMacroControls_stateChanged(int state)
{
if (loading) {
return;
}
switcher->useVerticalMacroControls = state;
setupMacroTab();
}
QString getDefaultSaveLocation()
{
QString desktopPath = QStandardPaths::writableLocation(
@ -511,6 +521,8 @@ void SwitcherData::saveGeneralSettings(obs_data_t *obj)
obs_data_set_bool(obj, "showSystemTrayNotifications",
showSystemTrayNotifications);
obs_data_set_bool(obj, "disableHints", disableHints);
obs_data_set_bool(obj, "useVerticalMacroControls",
useVerticalMacroControls);
obs_data_set_int(obj, "priority0", functionNamesByPriority[0]);
obs_data_set_int(obj, "priority1", functionNamesByPriority[1]);
@ -584,6 +596,8 @@ void SwitcherData::loadGeneralSettings(obs_data_t *obj)
showSystemTrayNotifications =
obs_data_get_bool(obj, "showSystemTrayNotifications");
disableHints = obs_data_get_bool(obj, "disableHints");
useVerticalMacroControls =
obs_data_get_bool(obj, "useVerticalMacroControls");
obs_data_set_default_int(obj, "priority0", default_priority_0);
obs_data_set_default_int(obj, "priority1", default_priority_1);
@ -797,6 +811,8 @@ void AdvSceneSwitcher::setupGeneralTab()
ui->showTrayNotifications->setChecked(
switcher->showSystemTrayNotifications);
ui->uiHintsDisable->setChecked(switcher->disableHints);
ui->useVerticalMacroControls->setChecked(
switcher->useVerticalMacroControls);
for (int p : switcher->functionNamesByPriority) {
std::string s = "";

View File

@ -170,6 +170,7 @@ public slots:
void on_saveWindowGeo_stateChanged(int state);
void on_showTrayNotifications_stateChanged(int state);
void on_uiHintsDisable_stateChanged(int state);
void on_useVerticalMacroControls_stateChanged(int state);
void on_exportSettings_clicked();
void on_importSettings_clicked();

View File

@ -16,6 +16,11 @@ public:
void Show(bool visible = true);
QPushButton *GetUp() { return _up; }
QPushButton *GetDown() { return _down; }
QPushButton *GetAdd() { return _add; }
QPushButton *GetRemove() { return _remove; }
signals:
void Add();
void Remove();

View File

@ -86,6 +86,7 @@ struct SwitcherData {
bool stop = false;
bool verbose = false;
bool disableHints = false;
bool useVerticalMacroControls = false;
bool showSystemTrayNotifications = false;
bool showFrame = false;
bool transitionOverrideOverride = false;

View File

@ -77,9 +77,24 @@ MacroActionEdit::MacroActionEdit(QWidget *parent,
_section->AddHeaderWidget(_actionSelection);
_section->AddHeaderWidget(_headerInfo);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(_section);
mainLayout->addWidget(_controls);
QVBoxLayout *verticalControlsLayout = new QVBoxLayout;
if (switcher->useVerticalMacroControls) {
verticalControlsLayout->addWidget(_controls->GetUp());
verticalControlsLayout->addWidget(_controls->GetAdd());
verticalControlsLayout->addWidget(_controls->GetRemove());
verticalControlsLayout->addWidget(_controls->GetDown());
verticalControlsLayout->setContentsMargins(0, 0, 0, 0);
verticalControlsLayout->setSpacing(0);
_controls->hide(); // Only useful in horizontal case
}
QVBoxLayout *actionLayout = new QVBoxLayout;
actionLayout->addWidget(_section);
actionLayout->addWidget(_controls);
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addLayout(verticalControlsLayout);
mainLayout->addLayout(actionLayout);
setLayout(mainLayout);
_entryData = entryData;

View File

@ -120,9 +120,24 @@ MacroConditionEdit::MacroConditionEdit(
_section->AddHeaderWidget(_headerInfo);
_section->AddHeaderWidget(_dur);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(_section);
mainLayout->addWidget(_controls);
QVBoxLayout *verticalControlsLayout = new QVBoxLayout;
if (switcher->useVerticalMacroControls) {
verticalControlsLayout->addWidget(_controls->GetUp());
verticalControlsLayout->addWidget(_controls->GetAdd());
verticalControlsLayout->addWidget(_controls->GetRemove());
verticalControlsLayout->addWidget(_controls->GetDown());
verticalControlsLayout->setContentsMargins(0, 0, 0, 0);
verticalControlsLayout->setSpacing(0);
_controls->hide(); // Only useful in horizontal case
}
QVBoxLayout *conditionLayout = new QVBoxLayout;
conditionLayout->addWidget(_section);
conditionLayout->addWidget(_controls);
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addLayout(verticalControlsLayout);
mainLayout->addLayout(conditionLayout);
setLayout(mainLayout);
UpdateEntryData(id);

View File

@ -356,6 +356,8 @@ void AdvSceneSwitcher::on_macros_itemChanged(QListWidgetItem *item)
void AdvSceneSwitcher::setupMacroTab()
{
const QSignalBlocker signalBlocker(ui->macros);
ui->macros->clear();
for (auto &m : switcher->macros) {
QString text = QString::fromStdString(m->Name());