Handle macro control signals

This commit is contained in:
WarmUpTill
2021-07-17 17:28:10 +02:00
committed by WarmUpTill
parent d541356fd3
commit 3fc82df278
10 changed files with 450 additions and 53 deletions

View File

@@ -14,6 +14,8 @@
}
class QCloseEvent;
class MacroActionEdit;
class MacroConditionEdit;
/*******************************************************************************
* Advanced Scene Switcher window
@@ -47,6 +49,10 @@ public:
bool addNewMacro(std::string &name);
Macro *getSelectedMacro();
void SetEditMacro(Macro &m);
void ConnectControlSignals(MacroActionEdit *);
void ConnectControlSignals(MacroConditionEdit *);
void SwapActions(Macro *m, int pos1, int pos2);
void SwapConditions(Macro *m, int pos1, int pos2);
void loadUI();
void setupGeneralTab();
@@ -111,6 +117,14 @@ public slots:
void on_actionRemove_clicked();
void showMacroContextMenu(const QPoint &);
void copyMacro();
void AddMacroAction(int idx);
void RemoveMacroAction(int idx);
void MoveMacroActionUp(int idx);
void MoveMacroActionDown(int idx);
void AddMacroCondition(int idx);
void RemoveMacroCondition(int idx);
void MoveMacroConditionUp(int idx);
void MoveMacroConditionDown(int idx);
void on_screenRegionSwitches_currentRowChanged(int idx);
void on_showFrame_clicked();

View File

@@ -1,4 +1,7 @@
#pragma once
#include "macro.hpp"
#include "section.hpp"
#include "macro-entry-controls.hpp"
#include <QWidget>
#include <QComboBox>
@@ -6,8 +9,6 @@
#include <QGroupBox>
#include <QLabel>
#include <deque>
#include "macro.hpp"
#include "section.hpp"
struct MacroActionInfo {
using TCreateMethod = std::shared_ptr<MacroAction> (*)();
@@ -46,6 +47,10 @@ public:
private slots:
void ActionSelectionChanged(const QString &text);
void HeaderInfoChanged(const QString &);
void Add();
void Remove();
void Up();
void Down();
signals:
void MacroAdded(const QString &name);
void MacroRemoved(const QString &name);
@@ -53,11 +58,19 @@ signals:
void SceneGroupAdded(const QString &name);
void SceneGroupRemoved(const QString &name);
void SceneGroupRenamed(const QString &oldName, const QString newName);
void AddAt(int idx);
void RemoveAt(int idx);
void UpAt(int idx);
void DownAt(int idx);
protected:
void enterEvent(QEvent *e);
void leaveEvent(QEvent *e);
QComboBox *_actionSelection;
Section *_section;
QLabel *_headerInfo;
MacroEntryControls *_controls;
std::shared_ptr<MacroAction> *_entryData;

View File

@@ -4,6 +4,7 @@
#include "macro.hpp"
#include "macro-condition-scene.hpp"
#include "section.hpp"
#include "macro-entry-controls.hpp"
#include "utility.hpp"
#include <QGroupBox>
@@ -43,6 +44,7 @@ public:
const std::string &id = "scene", bool root = true,
bool startCollapsed = false);
bool IsRootNode();
void SetRootNode(bool);
void UpdateEntryData(const std::string &id, bool collapse);
private slots:
@@ -52,6 +54,10 @@ private slots:
void DurationConditionChanged(DurationCondition cond);
void DurationUnitChanged(DurationUnit unit);
void HeaderInfoChanged(const QString &);
void Add();
void Remove();
void Up();
void Down();
signals:
void MacroAdded(const QString &name);
void MacroRemoved(const QString &name);
@@ -59,13 +65,21 @@ signals:
void SceneGroupAdded(const QString &name);
void SceneGroupRemoved(const QString &name);
void SceneGroupRenamed(const QString &oldName, const QString newName);
void AddAt(int idx);
void RemoveAt(int idx);
void UpAt(int idx);
void DownAt(int idx);
protected:
void enterEvent(QEvent *e);
void leaveEvent(QEvent *e);
QComboBox *_logicSelection;
QComboBox *_conditionSelection;
Section *_section;
QLabel *_headerInfo;
DurationConstraintEdit *_dur;
MacroEntryControls *_controls;
std::shared_ptr<MacroCondition> *_entryData;

View File

@@ -36,7 +36,16 @@ struct LogicTypeInfo {
std::string _name;
};
class MacroCondition {
class MacroSegment {
public:
void SetIndex(int idx) { _idx = idx; }
int GetIndex() { return _idx; }
protected:
int _idx;
};
class MacroCondition : public MacroSegment {
public:
virtual bool CheckCondition() = 0;
virtual bool Save(obs_data_t *obj) = 0;
@@ -61,7 +70,7 @@ private:
DurationConstraint _duration;
};
class MacroAction {
class MacroAction : public MacroSegment {
public:
virtual bool PerformAction() = 0;
virtual bool Save(obs_data_t *obj) = 0;
@@ -89,6 +98,8 @@ public:
{
return _conditions;
}
void UpdateActionIndices();
void UpdateConditionIndices();
std::deque<std::shared_ptr<MacroAction>> &Actions() { return _actions; }
bool Save(obs_data_t *obj);

View File

@@ -44,6 +44,7 @@ QString fromatJsonString(const char *);
void placeWidgets(std::string text, QBoxLayout *layout,
std::unordered_map<std::string, QWidget *> placeholders,
bool addStretch = true);
void deleteLayoutItem(QLayoutItem *item);
void clearLayout(QLayout *layout);
QMetaObject::Connection PulseWidget(QWidget *widget, QColor endColor,
QColor = QColor(0, 0, 0, 0),