UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
Option Class Reference

#include <settings.hpp>

Collaboration diagram for Option:
Collaboration graph

Classes

class  Callback
 

Public Types

enum  OptType { StringOpt , BoolOpt , SilentOpt }
 

Public Member Functions

 Option (Settings *settings, const std::string &name="", OptType type=OptType::StringOpt, const std::string &param="", const std::string &defaultValue="", bool enabled=true)
 
virtual ~Option ()
 
void addOnChangeCallback (Callback callback)
 
void addSuboption (Option *sub, const std::string &limit="")
 
void changed ()
 
virtual std::string getLaunchOption () const
 
std::string getName () const
 
std::string getParam () const
 
Settings * getSettings ()
 
std::string getSubVals () const
 
OptType getType () const
 
std::string getValue () const
 
bool isEnabled () const
 
void removeOnChangeCallback (const Callback &callback)
 
virtual void setDefaultValue (const std::string &val)
 
void setEnabled (bool enable, bool suppressCallback=false)
 
void setParam (const std::string &p)
 
void setType (OptType type)
 
virtual void setValue (const std::string &val, bool suppressCallback=false)
 

Static Protected Member Functions

static void suboptionChanged (Option &opt, bool suboption, void *opaque)
 

Protected Attributes

std::string defaultValue
 
bool enabled
 
std::string name
 
std::vector< Callback > onChangeCallbacks
 
std::string param
 
Settings * settings
 
std::vector< std::pair< std::string, Option * > > suboptions
 
OptType type
 
std::string value
 

Detailed Description

Definition at line 12 of file settings.hpp.

Member Enumeration Documentation

◆ OptType

Enumerator
StringOpt 
BoolOpt 
SilentOpt 

Definition at line 28 of file settings.hpp.

28 {
30 BoolOpt,
32 };
@ StringOpt
Definition settings.hpp:29
@ BoolOpt
Definition settings.hpp:30
@ SilentOpt
Definition settings.hpp:31

Constructor & Destructor Documentation

◆ Option()

Option::Option ( Settings * settings,
const std::string & name = "",
OptType type = OptType::StringOpt,
const std::string & param = "",
const std::string & defaultValue = "",
bool enabled = true )
inline

Definition at line 34 of file settings.hpp.

39 :
40 name(name),
41 param(param),
45 type(type),
std::string value
Definition settings.hpp:76
Settings * settings
Definition settings.hpp:88
bool enabled
Definition settings.hpp:79
std::string name
Definition settings.hpp:74
OptType type
Definition settings.hpp:81
std::string defaultValue
Definition settings.hpp:77
std::string param
Definition settings.hpp:75

◆ ~Option()

virtual Option::~Option ( )
inlinevirtual

Definition at line 48 of file settings.hpp.

48{ }

Member Function Documentation

◆ addOnChangeCallback()

void Option::addOnChangeCallback ( Callback callback)

Definition at line 107 of file settings.cpp.

107 {
108 onChangeCallbacks.push_back(callback);
109}
std::vector< Callback > onChangeCallbacks
Definition settings.hpp:85
Option::Callback::fcn_type callback
Definition settings.cpp:251

References callback, and onChangeCallbacks.

Referenced by Settings::Settings(), SettingsUi::addCallbacks(), addSuboption(), WidgetUi::registerCustomCallback(), and UltragridWindow::setupPreviewCallbacks().

◆ addSuboption()

void Option::addSuboption ( Option * sub,
const std::string & limit = "" )

Definition at line 96 of file settings.cpp.

96 {
97 auto pair = std::make_pair(limit, sub);
98 auto it = std::find(suboptions.begin(), suboptions.end(), pair);
99
100 if(it != suboptions.end())
101 return;
102
103 sub->addOnChangeCallback(Callback(&Option::suboptionChanged, this));
104 suboptions.push_back(pair);
105}
void addOnChangeCallback(Callback callback)
Definition settings.cpp:107
static void suboptionChanged(Option &opt, bool suboption, void *opaque)
Definition settings.cpp:66
std::vector< std::pair< std::string, Option * > > suboptions
Definition settings.hpp:86
const char * limit
Definition settings.cpp:199

References addOnChangeCallback(), limit, suboptionChanged(), and suboptions.

Referenced by Settings::addOption().

Here is the call graph for this function:

◆ changed()

void Option::changed ( )

Definition at line 60 of file settings.cpp.

60 {
61 for(const auto &callback : onChangeCallbacks){
62 callback(*this, false);
63 }
64}

References callback, and onChangeCallbacks.

Referenced by setEnabled(), and setValue().

◆ getLaunchOption()

std::string Option::getLaunchOption ( ) const
virtual

Definition at line 46 of file settings.cpp.

46 {
48 return enabled ? param : "";
49 }
50
51 std::string out = "";
52 if(enabled && !value.empty() && type != OptType::SilentOpt)
53 out = param + value;
54
55 out += getSubVals();
56
57 return out;
58}
std::string getSubVals() const
Definition settings.cpp:34

References BoolOpt, enabled, getSubVals(), param, SilentOpt, type, and value.

Referenced by Settings::getLaunchParams(), and Settings::getPreviewParams().

Here is the call graph for this function:

◆ getName()

std::string Option::getName ( ) const

Definition at line 22 of file settings.cpp.

22 {
23 return name;
24}

References name.

Referenced by CheckableUi::optChangeCallback(), RadioButtonUi::optChangeCallback(), and TextOptUi::optChangeCallback().

◆ getParam()

std::string Option::getParam ( ) const

Definition at line 30 of file settings.cpp.

30 {
31 return param;
32}

References param.

Referenced by fec_builder_callback(), Settings::getLaunchParams(), and Settings::getPreviewParams().

◆ getSettings()

Settings * Option::getSettings ( )

Definition at line 129 of file settings.cpp.

129 {
130 return settings;
131}

References settings.

Referenced by audioCompressionCallback(), fec_auto_callback(), fec_builder_callback(), and videoCompressBitrateCallback().

◆ getSubVals()

std::string Option::getSubVals ( ) const

Definition at line 34 of file settings.cpp.

34 {
35 std::string out;
36
37 for(const auto &sub : suboptions){
38 if(sub.first.empty() || sub.first == value){
39 out += sub.second->getLaunchOption();
40 }
41 }
42
43 return out;
44}

References suboptions, and value.

Referenced by getLaunchOption().

◆ getType()

OptType Option::getType ( ) const
inline

Definition at line 54 of file settings.hpp.

54{ return type; };

References type.

◆ getValue()

◆ isEnabled()

bool Option::isEnabled ( ) const
inline

◆ removeOnChangeCallback()

void Option::removeOnChangeCallback ( const Callback & callback)

Definition at line 111 of file settings.cpp.

111 {
112 auto it = std::find(onChangeCallbacks.begin(), onChangeCallbacks.end(), callback);
113
114 if(it == onChangeCallbacks.end()){
115 std::cout << "Attempted to remove non-existent callback "
116 << name
117 << std::endl;
118 return;
119 }
120
121#ifdef DEBUG
122 std::cout << "Removing callback "
123 << name
124 << std::endl;
125#endif
126 onChangeCallbacks.erase(it);
127}

References callback, name, and onChangeCallbacks.

Referenced by WidgetUi::~WidgetUi().

◆ setDefaultValue()

void Option::setDefaultValue ( const std::string & val)
virtual

Definition at line 86 of file settings.cpp.

86 {
88}
int void * val

References defaultValue, and val.

Referenced by Settings::addOption().

◆ setEnabled()

void Option::setEnabled ( bool enable,
bool suppressCallback = false )

Definition at line 90 of file settings.cpp.

90 {
91 enabled = enable;
92 if(!suppressCallback)
93 changed();
94}
void changed()
Definition settings.cpp:60

References changed(), and enabled.

Referenced by Settings::addOption(), and audioCompressionCallback().

Here is the call graph for this function:

◆ setParam()

void Option::setParam ( const std::string & p)
inline

Definition at line 59 of file settings.hpp.

59{ param = p; }

References param.

Referenced by Settings::addOption().

◆ setType()

void Option::setType ( OptType type)
inline

Definition at line 64 of file settings.hpp.

64{ this->type = type; };

References type.

Referenced by Settings::addOption().

◆ setValue()

void Option::setValue ( const std::string & val,
bool suppressCallback = false )
virtual

Definition at line 73 of file settings.cpp.

73 {
74 value = val;
75
77 enabled = val == "t";
78 } else {
79 enabled = !val.empty();
80 }
81
82 if(!suppressCallback)
83 changed();
84}

References BoolOpt, changed(), enabled, type, val, and value.

Referenced by Settings::addOption(), CheckableUi::boxClicked(), RadioButtonUi::btnClicked(), UltragridWindow::checkPreview(), fec_auto_callback(), fec_builder_callback(), ComboBoxUi::itemSelected(), UltragridWindow::loadSettingsFile(), and TextOptUi::textEdited().

Here is the call graph for this function:

◆ suboptionChanged()

void Option::suboptionChanged ( Option & opt,
bool suboption,
void * opaque )
staticprotected

Definition at line 66 of file settings.cpp.

66 {
67 Option *obj = static_cast<Option *>(opaque);
68 for(const auto &callback : obj->onChangeCallbacks){
69 callback(opt, true);
70 }
71}

References callback, and onChangeCallbacks.

Referenced by addSuboption().

Member Data Documentation

◆ defaultValue

std::string Option::defaultValue
protected

Definition at line 77 of file settings.hpp.

Referenced by setDefaultValue().

◆ enabled

bool Option::enabled
protected

Definition at line 79 of file settings.hpp.

Referenced by fec_builder_callback(), getLaunchOption(), isEnabled(), setEnabled(), and setValue().

◆ name

std::string Option::name
protected

Definition at line 74 of file settings.hpp.

Referenced by getName(), and removeOnChangeCallback().

◆ onChangeCallbacks

std::vector<Callback> Option::onChangeCallbacks
protected

◆ param

std::string Option::param
protected

Definition at line 75 of file settings.hpp.

Referenced by getLaunchOption(), getParam(), and setParam().

◆ settings

Settings* Option::settings
protected

Definition at line 88 of file settings.hpp.

Referenced by fec_auto_callback(), fec_builder_callback(), and getSettings().

◆ suboptions

std::vector<std::pair<std::string, Option *> > Option::suboptions
protected

Definition at line 86 of file settings.hpp.

Referenced by addSuboption(), and getSubVals().

◆ type

OptType Option::type
protected

Definition at line 81 of file settings.hpp.

Referenced by fec_builder_callback(), getLaunchOption(), getType(), setType(), and setValue().

◆ value

std::string Option::value
protected

Definition at line 76 of file settings.hpp.

Referenced by getLaunchOption(), getSubVals(), getValue(), and setValue().


The documentation for this class was generated from the following files: