Add scene groups and rework save and load (#103)

This commit is contained in:
WarmUpTill
2021-01-23 17:39:35 +01:00
committed by GitHub
parent 1f4679433e
commit d989c2b570
38 changed files with 2182 additions and 636 deletions

View File

@@ -12,7 +12,8 @@ void AdvSceneSwitcher::on_randomAdd_clicked()
switcher->randomSwitches.emplace_back();
listAddClicked(ui->randomSwitches,
new RandomSwitchWidget(&switcher->randomSwitches.back()),
new RandomSwitchWidget(this,
&switcher->randomSwitches.back()),
ui->randomAdd, &addPulse);
}
@@ -48,7 +49,7 @@ void SwitcherData::checkRandom(bool &match, OBSWeakSource &scene,
if (r.scene == lastRandomScene && randomSwitches.size() != 1)
continue;
scene = r.scene;
scene = r.getScene();
transition = r.transition;
delay = (int)r.delay * 1000;
match = true;
@@ -66,22 +67,9 @@ void SwitcherData::saveRandomSwitches(obs_data_t *obj)
for (RandomSwitch &s : switcher->randomSwitches) {
obs_data_t *array_obj = obs_data_create();
obs_source_t *source = obs_weak_source_get_source(s.scene);
obs_source_t *transition =
obs_weak_source_get_source(s.transition);
s.save(array_obj);
obs_data_array_push_back(randomArray, array_obj);
if (source && transition) {
const char *sceneName = obs_source_get_name(source);
const char *transitionName =
obs_source_get_name(transition);
obs_data_set_string(array_obj, "scene", sceneName);
obs_data_set_string(array_obj, "transition",
transitionName);
obs_data_set_double(array_obj, "delay", s.delay);
obs_data_array_push_back(randomArray, array_obj);
}
obs_source_release(source);
obs_source_release(transition);
obs_data_release(array_obj);
}
obs_data_set_array(obj, "randomSwitches", randomArray);
@@ -99,14 +87,8 @@ void SwitcherData::loadRandomSwitches(obs_data_t *obj)
for (size_t i = 0; i < count; i++) {
obs_data_t *array_obj = obs_data_array_item(randomArray, i);
const char *scene = obs_data_get_string(array_obj, "scene");
const char *transition =
obs_data_get_string(array_obj, "transition");
double delay = obs_data_get_double(array_obj, "delay");
switcher->randomSwitches.emplace_back(
GetWeakSourceByName(scene),
GetWeakTransitionByName(transition), delay);
switcher->randomSwitches.emplace_back();
randomSwitches.back().load(array_obj);
obs_data_release(array_obj);
}
@@ -119,7 +101,7 @@ void AdvSceneSwitcher::setupRandomTab()
QListWidgetItem *item;
item = new QListWidgetItem(ui->randomSwitches);
ui->randomSwitches->addItem(item);
RandomSwitchWidget *sw = new RandomSwitchWidget(&s);
RandomSwitchWidget *sw = new RandomSwitchWidget(this, &s);
item->setSizeHint(sw->minimumSizeHint());
ui->randomSwitches->setItemWidget(item, sw);
}
@@ -134,7 +116,20 @@ void AdvSceneSwitcher::setupRandomTab()
ui->randomDisabledWarning->setVisible(false);
}
RandomSwitchWidget::RandomSwitchWidget(RandomSwitch *s) : SwitchWidget(s, false)
void RandomSwitch::save(obs_data_t *obj)
{
SceneSwitcherEntry::save(obj, "targetType", "scene");
obs_data_set_double(obj, "delay", delay);
}
void RandomSwitch::load(obs_data_t *obj)
{
SceneSwitcherEntry::load(obj, "targetType", "scene");
delay = obs_data_get_double(obj, "delay");
}
RandomSwitchWidget::RandomSwitchWidget(QWidget *parent, RandomSwitch *s)
: SwitchWidget(parent, s, false, false)
{
delay = new QDoubleSpinBox();