diff --git a/forms/advanced-scene-switcher.ui b/forms/advanced-scene-switcher.ui
index 251c958a..be5ccc02 100644
--- a/forms/advanced-scene-switcher.ui
+++ b/forms/advanced-scene-switcher.ui
@@ -452,7 +452,7 @@
-
- Export settings from file
+ Export settings to file
diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp
index fda1cae0..c9bae305 100644
--- a/src/advanced-scene-switcher.cpp
+++ b/src/advanced-scene-switcher.cpp
@@ -37,6 +37,11 @@ SceneSwitcher::SceneSwitcher(QWidget *parent)
std::lock_guard lock(switcher->m);
switcher->Prune();
+ loadUI();
+}
+
+void SceneSwitcher::loadUI()
+{
BPtr scenes = obs_frontend_get_scene_names();
char **temp = scenes;
@@ -626,7 +631,7 @@ void switchScene(OBSWeakSource &scene, OBSWeakSource &transition,
if (switcher->verbose)
blog(LOG_INFO,
- "Advanced Scene Switcher switched scene");
+ "Advanced Scene Switcher switched scene");
obs_weak_source_release(nextTransitionWs);
}
diff --git a/src/general.cpp b/src/general.cpp
index 5e30648a..73f66668 100644
--- a/src/general.cpp
+++ b/src/general.cpp
@@ -1,5 +1,9 @@
-#include "headers/advanced-scene-switcher.hpp"
#include
+#include
+#include
+#include
+
+#include "headers/advanced-scene-switcher.hpp"
void SceneSwitcher::on_close_clicked()
{
@@ -162,6 +166,86 @@ void SceneSwitcher::on_verboseLogging_stateChanged(int state)
switcher->verbose = state;
}
+void SceneSwitcher::on_exportSettings_clicked()
+{
+ QString directory = QFileDialog::getSaveFileName(
+ this, tr("Export Advanced Scene Switcher settings to file ..."),
+ QDir::currentPath(), tr("Text files (*.txt)"));
+ if (!directory.isEmpty()) {
+ QFile file(directory);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+
+ obs_data_t *obj = obs_data_create();
+
+ switcher->saveWindowTitleSwitches(obj);
+ switcher->saveScreenRegionSwitches(obj);
+ switcher->savePauseSwitches(obj);
+ switcher->saveSceneRoundTripSwitches(obj);
+ switcher->saveSceneTransitions(obj);
+ switcher->saveIdleSwitches(obj);
+ switcher->saveExecutableSwitches(obj);
+ switcher->saveRandomSwitches(obj);
+ switcher->saveFileSwitches(obj);
+ switcher->saveMediaSwitches(obj);
+ switcher->saveTimeSwitches(obj);
+ switcher->saveGeneralSettings(obj);
+
+ obs_data_save_json(obj, file.fileName().toUtf8().constData());
+
+ obs_data_release(obj);
+ }
+}
+
+void SceneSwitcher::on_importSettings_clicked()
+{
+ std::lock_guard lock(switcher->m);
+
+ QString directory = QFileDialog::getOpenFileName(
+ this,
+ tr("Import Advanced Scene Switcher settings from file ..."),
+ QDir::currentPath(), tr("Text files (*.txt)"));
+ if (!directory.isEmpty()) {
+ QFile file(directory);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ return;
+
+ QTextStream in(&file);
+
+ obs_data_t *obj = obs_data_create_from_json_file(
+ file.fileName().toUtf8().constData());
+
+ if (!obj) {
+ QMessageBox Msgbox;
+ Msgbox.setText(
+ "Advanced Scene Switcher failed to import settings");
+ Msgbox.exec();
+ return;
+ }
+
+ switcher->loadWindowTitleSwitches(obj);
+ switcher->loadScreenRegionSwitches(obj);
+ switcher->loadPauseSwitches(obj);
+ switcher->loadSceneRoundTripSwitches(obj);
+ switcher->loadSceneTransitions(obj);
+ switcher->loadIdleSwitches(obj);
+ switcher->loadExecutableSwitches(obj);
+ switcher->loadRandomSwitches(obj);
+ switcher->loadFileSwitches(obj);
+ switcher->loadMediaSwitches(obj);
+ switcher->loadTimeSwitches(obj);
+ switcher->loadGeneralSettings(obj);
+
+ obs_data_release(obj);
+
+ QMessageBox Msgbox;
+ Msgbox.setText(
+ "Advanced Scene Switcher settings imported successfully");
+ Msgbox.exec();
+ close();
+ }
+}
+
void SwitcherData::saveGeneralSettings(obs_data_t *obj)
{
obs_data_set_int(obj, "interval", switcher->interval);
diff --git a/src/headers/advanced-scene-switcher.hpp b/src/headers/advanced-scene-switcher.hpp
index d75ac46c..37c031f4 100644
--- a/src/headers/advanced-scene-switcher.hpp
+++ b/src/headers/advanced-scene-switcher.hpp
@@ -49,6 +49,8 @@ public:
void UpdateIdleDataTransition(const QString &name);
void UpdateIdleDataScene(const QString &name);
+ void loadUI();
+
public slots:
void on_switches_currentRowChanged(int idx);
void on_up_clicked();
@@ -90,6 +92,9 @@ public slots:
void on_verboseLogging_stateChanged(int state);
+ void on_exportSettings_clicked();
+ void on_importSettings_clicked();
+
void on_sceneTransitions_currentRowChanged(int idx);
void on_transitionsAdd_clicked();
void on_transitionsRemove_clicked();