mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-16 14:19:02 -05:00
Extract argument list to generic string list class and widget
* To be used for http header support * Add variable support
This commit is contained in:
@@ -36,6 +36,15 @@ bool ProcessConfig::Load(obs_data_t *obj)
|
||||
return true;
|
||||
}
|
||||
|
||||
QStringList ProcessConfig::Args()
|
||||
{
|
||||
QStringList result;
|
||||
for (auto &arg : _args) {
|
||||
result << QString::fromStdString(arg);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ProcessConfigEdit::ProcessConfigEdit(QWidget *parent)
|
||||
: QWidget(parent),
|
||||
_filePath(new FileSelection()),
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
|
||||
std::string Path() const { return _path; }
|
||||
std::string WorkingDir() const { return _workingDirectory; }
|
||||
StringList Args() const { return _args; }
|
||||
QStringList Args(); // Resolves variables
|
||||
|
||||
private:
|
||||
std::string _path = obs_module_text("AdvSceneSwitcher.enterPath");
|
||||
|
||||
@@ -10,8 +10,7 @@ bool StringList::Save(obs_data_t *obj, const char *name,
|
||||
obs_data_array_t *strings = obs_data_array_create();
|
||||
for (auto &string : *this) {
|
||||
obs_data_t *array_obj = obs_data_create();
|
||||
obs_data_set_string(array_obj, elementName,
|
||||
string.toStdString().c_str());
|
||||
string.Save(array_obj, elementName);
|
||||
obs_data_array_push_back(strings, array_obj);
|
||||
obs_data_release(array_obj);
|
||||
}
|
||||
@@ -28,8 +27,9 @@ bool StringList::Load(obs_data_t *obj, const char *name,
|
||||
size_t count = obs_data_array_count(strings);
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
obs_data_t *array_obj = obs_data_array_item(strings, i);
|
||||
*this << QString::fromStdString(
|
||||
obs_data_get_string(array_obj, elementName));
|
||||
VariableResolvingString string;
|
||||
string.Load(array_obj, elementName);
|
||||
*this << string;
|
||||
obs_data_release(array_obj);
|
||||
}
|
||||
obs_data_array_release(strings);
|
||||
@@ -97,7 +97,9 @@ void StringListEdit::SetStringList(const StringList &list)
|
||||
_stringList = list;
|
||||
_list->clear();
|
||||
for (const auto &string : list) {
|
||||
QListWidgetItem *item = new QListWidgetItem(string, _list);
|
||||
QListWidgetItem *item = new QListWidgetItem(
|
||||
QString::fromStdString(string.UnresolvedValue()),
|
||||
_list);
|
||||
item->setData(Qt::UserRole, string);
|
||||
}
|
||||
SetListSize();
|
||||
@@ -112,9 +114,10 @@ void StringListEdit::Add()
|
||||
if (!accepted || name.empty()) {
|
||||
return;
|
||||
}
|
||||
auto string = QString::fromStdString(name);
|
||||
VariableResolvingString string = name;
|
||||
QVariant v = QVariant::fromValue(string);
|
||||
QListWidgetItem *item = new QListWidgetItem(string, _list);
|
||||
QListWidgetItem *item = new QListWidgetItem(
|
||||
QString::fromStdString(string.UnresolvedValue()), _list);
|
||||
item->setData(Qt::UserRole, string);
|
||||
|
||||
_stringList << string;
|
||||
@@ -176,9 +179,9 @@ void StringListEdit::Clicked(QListWidgetItem *item)
|
||||
return;
|
||||
}
|
||||
|
||||
auto string = QString::fromStdString(name);
|
||||
VariableResolvingString string = name;
|
||||
QVariant v = QVariant::fromValue(string);
|
||||
item->setText(string);
|
||||
item->setText(QString::fromStdString(string.UnresolvedValue()));
|
||||
item->setData(Qt::UserRole, string);
|
||||
int idx = _list->currentRow();
|
||||
_stringList[idx] = string;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#pragma once
|
||||
#include "variable.hpp"
|
||||
|
||||
#include <obs-data.h>
|
||||
#include <obs-module.h>
|
||||
|
||||
@@ -6,7 +8,7 @@
|
||||
#include <QListWidget>
|
||||
#include <QStringList>
|
||||
|
||||
class StringList : public QStringList {
|
||||
class StringList : public QList<VariableResolvingString> {
|
||||
public:
|
||||
bool Save(obs_data_t *obj, const char *name,
|
||||
const char *elementName = "string") const;
|
||||
|
||||
@@ -120,6 +120,11 @@ VariableResolvingString::operator std::string()
|
||||
return _resolvedValue;
|
||||
}
|
||||
|
||||
VariableResolvingString::operator QVariant() const
|
||||
{
|
||||
return QVariant::fromValue<VariableResolvingString>(*this);
|
||||
}
|
||||
|
||||
void VariableResolvingString::operator=(std::string value)
|
||||
{
|
||||
_value = value;
|
||||
|
||||
@@ -47,6 +47,7 @@ public:
|
||||
VariableResolvingString(std::string str) : _value(std::move(str)){};
|
||||
VariableResolvingString(const char *str) : _value(str){};
|
||||
operator std::string();
|
||||
operator QVariant() const;
|
||||
void operator=(std::string);
|
||||
void operator=(const char *value);
|
||||
const char *c_str();
|
||||
@@ -65,6 +66,8 @@ private:
|
||||
std::chrono::high_resolution_clock::time_point _lastResolve{};
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(VariableResolvingString);
|
||||
|
||||
Variable *GetVariableByName(const std::string &name);
|
||||
Variable *GetVariableByQString(const QString &name);
|
||||
std::weak_ptr<Variable> GetWeakVariableByName(const std::string &name);
|
||||
|
||||
Reference in New Issue
Block a user