From cbc95e2095ea266529c56f054232be1f5498392e Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Fri, 19 Apr 2024 21:13:35 +0200 Subject: [PATCH] Add option to export macro as plain json --- data/locale/en-US.ini | 1 + lib/macro/macro-export-import-dialog.cpp | 27 +++++++++++++++++++++++- lib/macro/macro-export-import-dialog.hpp | 5 +++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index 92029e4c..e21df3d5 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -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!" diff --git a/lib/macro/macro-export-import-dialog.cpp b/lib/macro/macro-export-import-dialog.cpp index c6b327f0..35290e94 100644 --- a/lib/macro/macro-export-import-dialog.cpp +++ b/lib/macro/macro-export-import-dialog.cpp @@ -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 = diff --git a/lib/macro/macro-export-import-dialog.hpp b/lib/macro/macro-export-import-dialog.hpp index 087196f1..c180f454 100644 --- a/lib/macro/macro-export-import-dialog.hpp +++ b/lib/macro/macro-export-import-dialog.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include #include @@ -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