#pragma once #include "item-selection-helpers.hpp" #include #include #include class VariableSelection; class VariableSettingsDialog; class Variable : public Item { public: Variable(); void Load(obs_data_t *obj); void Save(obs_data_t *obj) const; std::string Value() const { return _value; } bool DoubleValue(double &) const; void SetValue(const std::string &val) { _value = val; } void SetValue(double); static std::shared_ptr Create() { return std::make_shared(); } private: bool _persist = false; std::string _value = ""; friend VariableSelection; friend VariableSettingsDialog; }; Variable *GetVariableByName(const std::string &name); Variable *GetVariableByQString(const QString &name); std::weak_ptr GetWeakVariableByName(const std::string &name); std::weak_ptr GetWeakVariableByQString(const QString &name); QStringList GetVariablesNameList(); class VariableSettingsDialog : public ItemSettingsDialog { Q_OBJECT public: VariableSettingsDialog(QWidget *parent, const Variable &); static bool AskForSettings(QWidget *parent, Variable &settings); private: QLineEdit *_value; QCheckBox *_persist; }; class VariableSelection : public ItemSelection { Q_OBJECT public: VariableSelection(QWidget *parent = 0); void SetVariable(const std::string &); };