mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-30 05:06:14 -05:00
Add scene groups and rework save and load (#103)
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user