Move action and condition macro segement list to Ui_AdvSceneSwitcher

This commit is contained in:
WarmUpTill 2023-08-30 14:32:51 +02:00 committed by WarmUpTill
parent 81da32f7a2
commit b955e8a0ea
4 changed files with 64 additions and 72 deletions

View File

@ -170,9 +170,6 @@ private:
bool ResolveMacroImportNameConflict(std::shared_ptr<Macro> &);
bool MacroTabIsInFocus();
MacroSegmentList *conditionsList = nullptr;
MacroSegmentList *actionsList = nullptr;
enum class MacroSection {
CONDITIONS,
ACTIONS,

View File

@ -239,7 +239,7 @@ void AdvSceneSwitcher::AddMacroAction(int idx)
obs_data_release(data);
}
macro->UpdateActionIndices();
actionsList->Insert(
ui->actionsList->Insert(
idx,
new MacroActionEdit(this, &macro->Actions()[idx], id));
SetActionData(*macro);
@ -263,7 +263,7 @@ void AdvSceneSwitcher::on_actionAdd_clicked()
if (currentActionIdx != -1) {
MacroActionSelectionChanged(currentActionIdx + 1);
}
actionsList->SetHelpMsgVisible(false);
ui->actionsList->SetHelpMsgVisible(false);
}
void AdvSceneSwitcher::RemoveMacroAction(int idx)
@ -279,7 +279,7 @@ void AdvSceneSwitcher::RemoveMacroAction(int idx)
{
std::lock_guard<std::mutex> lock(switcher->m);
actionsList->Remove(idx);
ui->actionsList->Remove(idx);
macro->Actions().erase(macro->Actions().begin() + idx);
switcher->abortMacroWait = true;
switcher->macroWaitCv.notify_all();
@ -325,7 +325,7 @@ void AdvSceneSwitcher::on_actionUp_clicked()
void AdvSceneSwitcher::on_actionDown_clicked()
{
if (currentActionIdx == -1 ||
currentActionIdx == actionsList->ContentLayout()->count() - 1) {
currentActionIdx == ui->actionsList->ContentLayout()->count() - 1) {
return;
}
MoveMacroActionDown(currentActionIdx);
@ -337,7 +337,7 @@ void AdvSceneSwitcher::on_actionBottom_clicked()
if (currentActionIdx == -1) {
return;
}
const int newIdx = actionsList->ContentLayout()->count() - 1;
const int newIdx = ui->actionsList->ContentLayout()->count() - 1;
MacroActionReorder(newIdx, currentActionIdx);
MacroActionSelectionChanged(newIdx);
}
@ -355,11 +355,11 @@ void AdvSceneSwitcher::SwapActions(Macro *m, int pos1, int pos2)
iter_swap(m->Actions().begin() + pos1, m->Actions().begin() + pos2);
m->UpdateActionIndices();
auto widget1 = static_cast<MacroActionEdit *>(
actionsList->ContentLayout()->takeAt(pos1)->widget());
ui->actionsList->ContentLayout()->takeAt(pos1)->widget());
auto widget2 = static_cast<MacroActionEdit *>(
actionsList->ContentLayout()->takeAt(pos2 - 1)->widget());
actionsList->Insert(pos1, widget2);
actionsList->Insert(pos2, widget1);
ui->actionsList->ContentLayout()->takeAt(pos2 - 1)->widget());
ui->actionsList->Insert(pos1, widget2);
ui->actionsList->Insert(pos2, widget1);
SetActionData(*m);
emit(MacroSegmentOrderChanged());
}
@ -401,8 +401,8 @@ void AdvSceneSwitcher::MacroActionSelectionChanged(int idx)
return;
}
actionsList->SetSelection(idx);
conditionsList->SetSelection(-1);
ui->actionsList->SetSelection(idx);
ui->conditionsList->SetSelection(-1);
if (idx < 0 || (unsigned)idx >= macro->Actions().size()) {
currentActionIdx = -1;
@ -431,8 +431,8 @@ void AdvSceneSwitcher::MacroActionReorder(int to, int from)
macro->Actions().erase(macro->Actions().begin() + from);
macro->Actions().insert(macro->Actions().begin() + to, action);
macro->UpdateActionIndices();
actionsList->ContentLayout()->insertItem(
to, actionsList->ContentLayout()->takeAt(from));
ui->actionsList->ContentLayout()->insertItem(
to, ui->actionsList->ContentLayout()->takeAt(from));
SetActionData(*macro);
}
HighlightAction(to);

View File

@ -385,7 +385,7 @@ void AdvSceneSwitcher::AddMacroCondition(int idx)
}
(*cond)->SetLogicType(logic);
macro->UpdateConditionIndices();
conditionsList->Insert(
ui->conditionsList->Insert(
idx,
new MacroConditionEdit(this, &macro->Conditions()[idx],
id, idx == 0));
@ -410,7 +410,7 @@ void AdvSceneSwitcher::on_conditionAdd_clicked()
if (currentConditionIdx != -1) {
MacroConditionSelectionChanged(currentConditionIdx + 1);
}
conditionsList->SetHelpMsgVisible(false);
ui->conditionsList->SetHelpMsgVisible(false);
}
void AdvSceneSwitcher::RemoveMacroCondition(int idx)
@ -426,14 +426,14 @@ void AdvSceneSwitcher::RemoveMacroCondition(int idx)
{
auto lock = LockContext();
conditionsList->Remove(idx);
ui->conditionsList->Remove(idx);
macro->Conditions().erase(macro->Conditions().begin() + idx);
macro->UpdateConditionIndices();
if (idx == 0 && macro->Conditions().size() > 0) {
auto newRoot = macro->Conditions().at(0);
newRoot->SetLogicType(LogicType::ROOT_NONE);
static_cast<MacroConditionEdit *>(
conditionsList->WidgetAt(0))
ui->conditionsList->WidgetAt(0))
->SetRootNode(true);
}
SetConditionData(*macro);
@ -479,7 +479,7 @@ void AdvSceneSwitcher::on_conditionDown_clicked()
{
if (currentConditionIdx == -1 ||
currentConditionIdx ==
conditionsList->ContentLayout()->count() - 1) {
ui->conditionsList->ContentLayout()->count() - 1) {
return;
}
MoveMacroConditionDown(currentConditionIdx);
@ -491,7 +491,7 @@ void AdvSceneSwitcher::on_conditionBottom_clicked()
if (currentConditionIdx == -1) {
return;
}
const int newIdx = conditionsList->ContentLayout()->count() - 1;
const int newIdx = ui->conditionsList->ContentLayout()->count() - 1;
MacroConditionReorder(newIdx, currentConditionIdx);
MacroConditionSelectionChanged(newIdx);
}
@ -521,11 +521,11 @@ void AdvSceneSwitcher::SwapConditions(Macro *m, int pos1, int pos2)
}
auto widget1 = static_cast<MacroConditionEdit *>(
conditionsList->ContentLayout()->takeAt(pos1)->widget());
ui->conditionsList->ContentLayout()->takeAt(pos1)->widget());
auto widget2 = static_cast<MacroConditionEdit *>(
conditionsList->ContentLayout()->takeAt(pos2 - 1)->widget());
conditionsList->Insert(pos1, widget2);
conditionsList->Insert(pos2, widget1);
ui->conditionsList->ContentLayout()->takeAt(pos2 - 1)->widget());
ui->conditionsList->Insert(pos1, widget2);
ui->conditionsList->Insert(pos2, widget1);
SetConditionData(*m);
widget2->SetRootNode(root);
widget1->SetRootNode(false);
@ -569,8 +569,8 @@ void AdvSceneSwitcher::MacroConditionSelectionChanged(int idx)
return;
}
conditionsList->SetSelection(idx);
actionsList->SetSelection(-1);
ui->conditionsList->SetSelection(idx);
ui->actionsList->SetSelection(-1);
if (idx < 0 || (unsigned)idx >= macro->Conditions().size()) {
currentConditionIdx = -1;
@ -599,30 +599,30 @@ void AdvSceneSwitcher::MacroConditionReorder(int to, int from)
if (to == 0) {
condition->SetLogicType(LogicType::ROOT_NONE);
static_cast<MacroConditionEdit *>(
conditionsList->WidgetAt(from))
ui->conditionsList->WidgetAt(from))
->SetRootNode(true);
macro->Conditions().at(0)->SetLogicType(LogicType::AND);
static_cast<MacroConditionEdit *>(
conditionsList->WidgetAt(0))
ui->conditionsList->WidgetAt(0))
->SetRootNode(false);
}
if (from == 0) {
condition->SetLogicType(LogicType::AND);
static_cast<MacroConditionEdit *>(
conditionsList->WidgetAt(from))
ui->conditionsList->WidgetAt(from))
->SetRootNode(false);
macro->Conditions().at(1)->SetLogicType(
LogicType::ROOT_NONE);
static_cast<MacroConditionEdit *>(
conditionsList->WidgetAt(1))
ui->conditionsList->WidgetAt(1))
->SetRootNode(true);
}
macro->Conditions().erase(macro->Conditions().begin() + from);
macro->Conditions().insert(macro->Conditions().begin() + to,
condition);
macro->UpdateConditionIndices();
conditionsList->ContentLayout()->insertItem(
to, conditionsList->ContentLayout()->takeAt(from));
ui->conditionsList->ContentLayout()->insertItem(
to, ui->conditionsList->ContentLayout()->takeAt(from));
SetConditionData(*macro);
}
HighlightCondition(to);

View File

@ -422,9 +422,9 @@ void AdvSceneSwitcher::PopulateMacroActions(Macro &m, uint32_t afterIdx)
for (; afterIdx < actions.size(); afterIdx++) {
auto newEntry = new MacroActionEdit(this, &actions[afterIdx],
actions[afterIdx]->GetId());
actionsList->Add(newEntry);
ui->actionsList->Add(newEntry);
}
actionsList->SetHelpMsgVisible(actions.size() == 0);
ui->actionsList->SetHelpMsgVisible(actions.size() == 0);
}
void AdvSceneSwitcher::PopulateMacroConditions(Macro &m, uint32_t afterIdx)
@ -435,17 +435,18 @@ void AdvSceneSwitcher::PopulateMacroConditions(Macro &m, uint32_t afterIdx)
auto newEntry = new MacroConditionEdit(
this, &conditions[afterIdx],
conditions[afterIdx]->GetId(), root);
conditionsList->Add(newEntry);
ui->conditionsList->Add(newEntry);
root = false;
}
conditionsList->SetHelpMsgVisible(conditions.size() == 0);
ui->conditionsList->SetHelpMsgVisible(conditions.size() == 0);
}
void AdvSceneSwitcher::SetActionData(Macro &m)
{
auto &actions = m.Actions();
for (int idx = 0; idx < actionsList->ContentLayout()->count(); idx++) {
auto item = actionsList->ContentLayout()->itemAt(idx);
for (int idx = 0; idx < ui->actionsList->ContentLayout()->count();
idx++) {
auto item = ui->actionsList->ContentLayout()->itemAt(idx);
if (!item) {
continue;
}
@ -460,9 +461,9 @@ void AdvSceneSwitcher::SetActionData(Macro &m)
void AdvSceneSwitcher::SetConditionData(Macro &m)
{
auto &conditions = m.Conditions();
for (int idx = 0; idx < conditionsList->ContentLayout()->count();
for (int idx = 0; idx < ui->conditionsList->ContentLayout()->count();
idx++) {
auto item = conditionsList->ContentLayout()->itemAt(idx);
auto item = ui->conditionsList->ContentLayout()->itemAt(idx);
if (!item) {
continue;
}
@ -484,8 +485,8 @@ void AdvSceneSwitcher::SetEditMacro(Macro &m)
ui->runMacroInParallel->setChecked(m.RunInParallel());
ui->runMacroOnChange->setChecked(m.MatchOnChange());
}
conditionsList->Clear();
actionsList->Clear();
ui->conditionsList->Clear();
ui->actionsList->Clear();
m.ResetUIHelpers();
@ -515,12 +516,12 @@ void AdvSceneSwitcher::SetMacroEditAreaDisabled(bool disable)
void AdvSceneSwitcher::HighlightAction(int idx, QColor color)
{
actionsList->Highlight(idx, color);
ui->actionsList->Highlight(idx, color);
}
void AdvSceneSwitcher::HighlightCondition(int idx, QColor color)
{
conditionsList->Highlight(idx, color);
ui->conditionsList->Highlight(idx, color);
}
std::shared_ptr<Macro> AdvSceneSwitcher::GetSelectedMacro()
@ -542,10 +543,10 @@ void AdvSceneSwitcher::MacroSelectionChanged()
auto macro = GetSelectedMacro();
if (!macro) {
SetMacroEditAreaDisabled(true);
conditionsList->Clear();
actionsList->Clear();
conditionsList->SetHelpMsgVisible(true);
actionsList->SetHelpMsgVisible(true);
ui->conditionsList->Clear();
ui->actionsList->Clear();
ui->conditionsList->SetHelpMsgVisible(true);
ui->actionsList->SetHelpMsgVisible(true);
return;
}
SetEditMacro(*macro);
@ -608,34 +609,28 @@ void AdvSceneSwitcher::SetupMacroTab()
connect(ui->macros, SIGNAL(MacroSelectionChanged()), this,
SLOT(MacroSelectionChanged()));
delete conditionsList;
conditionsList = new MacroSegmentList(this);
conditionsList->SetHelpMsg(
ui->conditionsList->SetHelpMsg(
obs_module_text("AdvSceneSwitcher.macroTab.editConditionHelp"));
connect(conditionsList, &MacroSegmentList::SelectionChagned, this,
connect(ui->conditionsList, &MacroSegmentList::SelectionChagned, this,
&AdvSceneSwitcher::MacroConditionSelectionChanged);
connect(conditionsList, &MacroSegmentList::Reorder, this,
connect(ui->conditionsList, &MacroSegmentList::Reorder, this,
&AdvSceneSwitcher::MacroConditionReorder);
ui->macroConditionsLayout->insertWidget(0, conditionsList);
delete actionsList;
actionsList = new MacroSegmentList(this);
actionsList->SetHelpMsg(
ui->actionsList->SetHelpMsg(
obs_module_text("AdvSceneSwitcher.macroTab.editActionHelp"));
connect(actionsList, &MacroSegmentList::SelectionChagned, this,
connect(ui->actionsList, &MacroSegmentList::SelectionChagned, this,
&AdvSceneSwitcher::MacroActionSelectionChanged);
connect(actionsList, &MacroSegmentList::Reorder, this,
connect(ui->actionsList, &MacroSegmentList::Reorder, this,
&AdvSceneSwitcher::MacroActionReorder);
ui->macroActionsLayout->insertWidget(0, actionsList);
ui->macros->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->macros, &QWidget::customContextMenuRequested, this,
&AdvSceneSwitcher::ShowMacroContextMenu);
actionsList->setContextMenuPolicy(Qt::CustomContextMenu);
connect(actionsList, &QWidget::customContextMenuRequested, this,
ui->actionsList->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->actionsList, &QWidget::customContextMenuRequested, this,
&AdvSceneSwitcher::ShowMacroActionsContextMenu);
conditionsList->setContextMenuPolicy(Qt::CustomContextMenu);
connect(conditionsList, &QWidget::customContextMenuRequested, this,
ui->conditionsList->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->conditionsList, &QWidget::customContextMenuRequested, this,
&AdvSceneSwitcher::ShowMacroConditionsContextMenu);
SetMacroEditAreaDisabled(true);
@ -739,7 +734,7 @@ void AdvSceneSwitcher::ShowMacroContextMenu(const QPoint &pos)
void AdvSceneSwitcher::ShowMacroActionsContextMenu(const QPoint &pos)
{
QPoint globalPos = actionsList->mapToGlobal(pos);
QPoint globalPos = ui->actionsList->mapToGlobal(pos);
QMenu menu;
menu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.expandAll"),
this, &AdvSceneSwitcher::ExpandAllActions);
@ -754,7 +749,7 @@ void AdvSceneSwitcher::ShowMacroActionsContextMenu(const QPoint &pos)
void AdvSceneSwitcher::ShowMacroConditionsContextMenu(const QPoint &pos)
{
QPoint globalPos = conditionsList->mapToGlobal(pos);
QPoint globalPos = ui->conditionsList->mapToGlobal(pos);
QMenu menu;
menu.addAction(obs_module_text("AdvSceneSwitcher.macroTab.expandAll"),
this, &AdvSceneSwitcher::ExpandAllConditions);
@ -800,7 +795,7 @@ void AdvSceneSwitcher::ExpandAllActions()
if (!m) {
return;
}
actionsList->SetCollapsed(false);
ui->actionsList->SetCollapsed(false);
}
void AdvSceneSwitcher::ExpandAllConditions()
@ -809,7 +804,7 @@ void AdvSceneSwitcher::ExpandAllConditions()
if (!m) {
return;
}
conditionsList->SetCollapsed(false);
ui->conditionsList->SetCollapsed(false);
}
void AdvSceneSwitcher::CollapseAllActions()
@ -818,7 +813,7 @@ void AdvSceneSwitcher::CollapseAllActions()
if (!m) {
return;
}
actionsList->SetCollapsed(true);
ui->actionsList->SetCollapsed(true);
}
void AdvSceneSwitcher::CollapseAllConditions()
@ -827,7 +822,7 @@ void AdvSceneSwitcher::CollapseAllConditions()
if (!m) {
return;
}
conditionsList->SetCollapsed(true);
ui->conditionsList->SetCollapsed(true);
}
void AdvSceneSwitcher::MinimizeActions()