Add option to export macro as plain json

This commit is contained in:
WarmUpTill 2024-04-19 21:13:35 +02:00 committed by WarmUpTill
parent 9c5051cbf8
commit cbc95e2095
3 changed files with 32 additions and 1 deletions

View File

@ -124,6 +124,7 @@ AdvSceneSwitcher.macroTab.rename="Rename"
AdvSceneSwitcher.macroTab.remove="Remove"
AdvSceneSwitcher.macroTab.export="Export"
AdvSceneSwitcher.macroTab.export.info="Paste the string below into the import dialog to import the selected macros:"
AdvSceneSwitcher.macroTab.export.usePlainText="Use plain text"
AdvSceneSwitcher.macroTab.import="Import"
AdvSceneSwitcher.macroTab.import.info="Paste the export string into the below text box to import macros:"
AdvSceneSwitcher.macroTab.import.invalid="Invalid import data provided!"

View File

@ -8,9 +8,13 @@
namespace advss {
static bool usePlainText = false;
MacroExportImportDialog::MacroExportImportDialog(Type type)
: QDialog(nullptr),
_importExportString(new QPlainTextEdit(this))
_importExportString(new QPlainTextEdit(this)),
_usePlainText(new QCheckBox(obs_module_text(
"AdvSceneSwitcher.macroTab.export.usePlainText")))
{
_importExportString->setReadOnly(type == Type::EXPORT_MACRO);
auto label = new QLabel(obs_module_text(
@ -30,9 +34,15 @@ MacroExportImportDialog::MacroExportImportDialog(Type type)
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
buttons->setCenterButtons(true);
_usePlainText->setChecked(usePlainText);
_usePlainText->setVisible(type == Type::EXPORT_MACRO);
connect(_usePlainText, &QCheckBox::stateChanged, this,
&MacroExportImportDialog::UsePlainTextChanged);
auto layout = new QVBoxLayout;
layout->addWidget(label);
layout->addWidget(_importExportString);
layout->addWidget(_usePlainText);
layout->addWidget(buttons);
setLayout(layout);
@ -65,6 +75,21 @@ void MacroExportImportDialog::ExportMacros(const QString &json)
dialog.exec();
}
void MacroExportImportDialog::UsePlainTextChanged(int value)
{
if (usePlainText == (!!value)) {
return;
}
const auto current = _importExportString->toPlainText();
if (usePlainText) {
_importExportString->setPlainText(compressMacroString(current));
} else {
_importExportString->setPlainText(
decompressMacroString(current));
}
usePlainText = value;
}
static bool isValidData(const QString &json)
{
OBSDataAutoRelease data =

View File

@ -1,4 +1,5 @@
#pragma once
#include <QCheckBox>
#include <QDialog>
#include <QPlainTextEdit>
@ -13,8 +14,12 @@ public:
static void ExportMacros(const QString &json);
static bool ImportMacros(QString &json);
private slots:
void UsePlainTextChanged(int);
private:
QPlainTextEdit *_importExportString;
QCheckBox *_usePlainText;
};
} // namespace advss