diff --git a/src/macro-core/macro-action-file.cpp b/src/macro-core/macro-action-file.cpp index 887482c8..f278da91 100644 --- a/src/macro-core/macro-action-file.cpp +++ b/src/macro-core/macro-action-file.cpp @@ -55,7 +55,7 @@ void MacroActionFile::LogAction() const bool MacroActionFile::Save(obs_data_t *obj) const { MacroAction::Save(obj); - obs_data_set_string(obj, "file", _file.c_str()); + _file.Save(obj, "file"); _text.Save(obj, "text"); obs_data_set_int(obj, "action", static_cast(_action)); return true; @@ -64,7 +64,7 @@ bool MacroActionFile::Save(obs_data_t *obj) const bool MacroActionFile::Load(obs_data_t *obj) { MacroAction::Load(obj); - _file = obs_data_get_string(obj, "file"); + _file.Load(obj, "file"); _text.Load(obj, "text"); _action = static_cast(obs_data_get_int(obj, "action")); return true; @@ -72,7 +72,7 @@ bool MacroActionFile::Load(obs_data_t *obj) std::string MacroActionFile::GetShortDesc() const { - return _file; + return _file.UnresolvedValue(); } static inline void populateActionSelection(QComboBox *list) diff --git a/src/macro-core/macro-action-file.hpp b/src/macro-core/macro-action-file.hpp index ca97309b..9d70202e 100644 --- a/src/macro-core/macro-action-file.hpp +++ b/src/macro-core/macro-action-file.hpp @@ -24,7 +24,7 @@ public: return std::make_shared(m); } - std::string _file = obs_module_text("AdvSceneSwitcher.enterPath"); + StringVariable _file = obs_module_text("AdvSceneSwitcher.enterPath"); StringVariable _text = obs_module_text("AdvSceneSwitcher.enterText"); FileAction _action = FileAction::WRITE; diff --git a/src/macro-core/macro-action-plugin-state.cpp b/src/macro-core/macro-action-plugin-state.cpp index 36859d6a..4d573cce 100644 --- a/src/macro-core/macro-action-plugin-state.cpp +++ b/src/macro-core/macro-action-plugin-state.cpp @@ -102,7 +102,7 @@ bool MacroActionPluginState::Save(obs_data_t *obj) const obs_data_set_int(obj, "action", static_cast(_action)); obs_data_set_int(obj, "value", _value); obs_data_set_string(obj, "scene", GetWeakSourceName(_scene).c_str()); - obs_data_set_string(obj, "settingsPath", _settingsPath.c_str()); + _settingsPath.Save(obj, "settingsPath"); return true; } @@ -114,7 +114,7 @@ bool MacroActionPluginState::Load(obs_data_t *obj) _value = obs_data_get_int(obj, "value"); const char *sceneName = obs_data_get_string(obj, "scene"); _scene = GetWeakSourceByName(sceneName); - _settingsPath = obs_data_get_string(obj, "settingsPath"); + _settingsPath.Load(obj, "settingsPath"); return true; } @@ -185,7 +185,7 @@ void MacroActionPluginStateEdit::UpdateEntryData() populateValueSelection(_values, _entryData->_action); _values->setCurrentIndex(_entryData->_value); _scenes->setCurrentText(GetWeakSourceName(_entryData->_scene).c_str()); - _settings->SetPath(QString::fromStdString(_entryData->_settingsPath)); + _settings->SetPath(_entryData->_settingsPath); SetWidgetVisibility(); } diff --git a/src/macro-core/macro-action-plugin-state.hpp b/src/macro-core/macro-action-plugin-state.hpp index 64d5db7b..2b98894d 100644 --- a/src/macro-core/macro-action-plugin-state.hpp +++ b/src/macro-core/macro-action-plugin-state.hpp @@ -26,7 +26,7 @@ public: PluginStateAction _action = PluginStateAction::STOP; int _value = 0; - std::string _settingsPath; + StringVariable _settingsPath; OBSWeakSource _scene; private: diff --git a/src/macro-core/macro-action-run.cpp b/src/macro-core/macro-action-run.cpp index 0988ef09..285f0a88 100644 --- a/src/macro-core/macro-action-run.cpp +++ b/src/macro-core/macro-action-run.cpp @@ -27,7 +27,7 @@ bool MacroActionRun::PerformAction() void MacroActionRun::LogAction() const { - vblog(LOG_INFO, "run \"%s\"", _procConfig.Path().c_str()); + vblog(LOG_INFO, "run \"%s\"", _procConfig.UnresolvedPath().c_str()); } bool MacroActionRun::Save(obs_data_t *obj) const @@ -46,7 +46,7 @@ bool MacroActionRun::Load(obs_data_t *obj) std::string MacroActionRun::GetShortDesc() const { - return _procConfig.Path(); + return _procConfig.UnresolvedPath(); } MacroActionRunEdit::MacroActionRunEdit( diff --git a/src/macro-core/macro-condition-file.cpp b/src/macro-core/macro-condition-file.cpp index 07203213..079f5cb0 100644 --- a/src/macro-core/macro-condition-file.cpp +++ b/src/macro-core/macro-condition-file.cpp @@ -65,7 +65,8 @@ bool MacroConditionFile::MatchFileContent(QString &filedata) bool MacroConditionFile::CheckRemoteFileContent() { - std::string data = getRemoteData(_file); + std::string path = _file; + std::string data = getRemoteData(path); SetVariableValue(data); QString qdata = QString::fromStdString(data); return MatchFileContent(qdata); @@ -99,7 +100,8 @@ bool MacroConditionFile::CheckChangeContent() QString filedata; switch (_fileType) { case FileType::LOCAL: { - QFile file(QString::fromStdString(_file)); + std::string path = _file; + QFile file(QString::fromStdString(path)); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; } @@ -107,7 +109,8 @@ bool MacroConditionFile::CheckChangeContent() file.close(); } break; case FileType::REMOTE: { - std::string data = getRemoteData(_file); + std::string path = _file; + std::string data = getRemoteData(path); QString filedata = QString::fromStdString(data); } break; default: @@ -166,7 +169,7 @@ bool MacroConditionFile::Save(obs_data_t *obj) const { MacroCondition::Save(obj); _regex.Save(obj); - obs_data_set_string(obj, "file", _file.c_str()); + _file.Save(obj, "file"); _text.Save(obj, "text"); obs_data_set_int(obj, "fileType", static_cast(_fileType)); obs_data_set_int(obj, "condition", static_cast(_condition)); @@ -184,7 +187,7 @@ bool MacroConditionFile::Load(obs_data_t *obj) _regex.CreateBackwardsCompatibleRegex( obs_data_get_bool(obj, "useRegex")); } - _file = obs_data_get_string(obj, "file"); + _file.Load(obj, "file"); _text.Load(obj, "text"); _fileType = static_cast(obs_data_get_int(obj, "fileType")); _condition = @@ -196,7 +199,7 @@ bool MacroConditionFile::Load(obs_data_t *obj) std::string MacroConditionFile::GetShortDesc() const { - return _file; + return _file.UnresolvedValue(); } static void populateFileTypes(QComboBox *list) @@ -292,7 +295,7 @@ void MacroConditionFileEdit::UpdateEntryData() _fileTypes->setCurrentIndex(static_cast(_entryData->_fileType)); _conditions->setCurrentIndex(static_cast(_entryData->_condition)); - _filePath->SetPath(QString::fromStdString(_entryData->_file)); + _filePath->SetPath(_entryData->_file); _matchText->setPlainText(_entryData->_text); _regex->SetRegexConfig(_entryData->_regex); _checkModificationDate->setChecked(_entryData->_useTime); diff --git a/src/macro-core/macro-condition-file.hpp b/src/macro-core/macro-condition-file.hpp index 15832545..b693bc77 100644 --- a/src/macro-core/macro-condition-file.hpp +++ b/src/macro-core/macro-condition-file.hpp @@ -35,7 +35,7 @@ public: DATE_CHANGE, }; - std::string _file = obs_module_text("AdvSceneSwitcher.enterPath"); + StringVariable _file = obs_module_text("AdvSceneSwitcher.enterPath"); StringVariable _text = obs_module_text("AdvSceneSwitcher.enterText"); FileType _fileType = FileType::LOCAL; ConditionType _condition = ConditionType::MATCH; diff --git a/src/macro-core/macro-condition-run.cpp b/src/macro-core/macro-condition-run.cpp index 57940f48..846eb0d1 100644 --- a/src/macro-core/macro-condition-run.cpp +++ b/src/macro-core/macro-condition-run.cpp @@ -117,7 +117,7 @@ bool MacroConditionRun::Load(obs_data_t *obj) std::string MacroConditionRun::GetShortDesc() const { - return _procConfig.Path(); + return _procConfig.UnresolvedPath(); } MacroConditionRunEdit::MacroConditionRunEdit( diff --git a/src/utils/process-config.cpp b/src/utils/process-config.cpp index b279a493..a289461c 100644 --- a/src/utils/process-config.cpp +++ b/src/utils/process-config.cpp @@ -8,9 +8,8 @@ bool ProcessConfig::Save(obs_data_t *obj) const { auto data = obs_data_create(); - obs_data_set_string(data, "path", _path.c_str()); - obs_data_set_string(data, "workingDirectory", - _workingDirectory.c_str()); + _path.Save(data, "path"); + _workingDirectory.Save(data, "workingDirectory"); _args.Save(data, "args", "arg"); obs_data_set_obj(obj, "processConfig", data); obs_data_release(data); @@ -29,8 +28,8 @@ bool ProcessConfig::Load(obs_data_t *obj) } auto data = obs_data_get_obj(obj, "processConfig"); - _path = obs_data_get_string(data, "path"); - _workingDirectory = obs_data_get_string(data, "workingDirectory"); + _path.Load(data, "path"); + _workingDirectory.Load(data, "workingDirectory"); _args.Load(data, "args", "arg"); obs_data_release(data); return true; @@ -101,12 +100,12 @@ ProcessConfigEdit::ProcessConfigEdit(QWidget *parent) void ProcessConfigEdit::SetProcessConfig(const ProcessConfig &conf) { _conf = conf; - _filePath->SetPath(QString::fromStdString(conf._path)); + _filePath->SetPath(conf._path); _argList->SetStringList(conf._args); - _workingDirectory->SetPath( - QString::fromStdString(conf._workingDirectory)); - ShowAdvancedSettings(!_conf._args.empty() || - !_conf._workingDirectory.empty()); + _workingDirectory->SetPath(conf._workingDirectory); + ShowAdvancedSettings( + !_conf._args.empty() || + !_conf._workingDirectory.UnresolvedValue().empty()); } void ProcessConfigEdit::PathChanged(const QString &text) diff --git a/src/utils/process-config.hpp b/src/utils/process-config.hpp index 2158c08e..4b86794c 100644 --- a/src/utils/process-config.hpp +++ b/src/utils/process-config.hpp @@ -15,13 +15,14 @@ public: bool Save(obs_data_t *obj) const; bool Load(obs_data_t *obj); - std::string Path() const { return _path; } - std::string WorkingDir() const { return _workingDirectory; } + std::string Path() { return _path; } + std::string UnresolvedPath() const { return _path.UnresolvedValue(); } + std::string WorkingDir() { return _workingDirectory; } QStringList Args(); // Resolves variables private: - std::string _path = obs_module_text("AdvSceneSwitcher.enterPath"); - std::string _workingDirectory = ""; + StringVariable _path = obs_module_text("AdvSceneSwitcher.enterPath"); + StringVariable _workingDirectory = ""; StringList _args; friend class ProcessConfigEdit;