Implement "reloadEffects" function in Hyperion for "write and delete" custom created effect configuration files (#293)

* Update EffectEngine.h

* add reloadEffects function

* add readEffects function

* add reloadEffects function

* Call reloadEffects after handleCreateEffectCommand and handleDeleteEffectCommand
This commit is contained in:
Paulchen Panther
2016-11-20 18:41:10 +01:00
committed by redPanther
parent c05181666c
commit 8f67294de6
5 changed files with 126 additions and 102 deletions

View File

@@ -29,19 +29,26 @@ public:
EffectEngine(Hyperion * hyperion, const QJsonObject & jsonEffectConfig);
virtual ~EffectEngine();
const std::list<EffectDefinition> & getEffects() const;
const std::list<ActiveEffectDefinition> & getActiveEffects();
const std::list<EffectSchema> & getEffectSchemas();
void readEffects();
static bool loadEffectDefinition(const QString & path, const QString & effectConfigFile, EffectDefinition &effectDefinition);
static bool loadEffectSchema(const QString & path, const QString & effectSchemaFile, EffectSchema &effectSchema);
const std::list<EffectDefinition> & getEffects() const
{
return _availableEffects;
};
const std::list<ActiveEffectDefinition> & getActiveEffects();
const std::list<EffectSchema> & getEffectSchemas()
{
return _effectSchemas;
};
public slots:
/// Run the specified effect on the given priority channel and optionally specify a timeout
int runEffect(const QString &effectName, int priority, int timeout = -1);
int runEffect(const QString &effectName, int priority, int timeout = -1)
{
return runEffect(effectName, QJsonObject(), priority, timeout);
};
/// Run the specified effect on the given priority channel and optionally specify a timeout
int runEffect(const QString &effectName, const QJsonObject & args, int priority, int timeout = -1, QString pythonScript = "");
@@ -56,12 +63,18 @@ private slots:
void effectFinished(Effect * effect);
private:
bool loadEffectDefinition(const QString & path, const QString & effectConfigFile, EffectDefinition &effectDefinition);
bool loadEffectSchema(const QString & path, const QString & effectSchemaFile, EffectSchema &effectSchema);
/// Run the specified effect on the given priority channel and optionally specify a timeout
int runEffectScript(const QString &script, const QString &name, const QJsonObject & args, int priority, int timeout = -1);
private:
Hyperion * _hyperion;
QJsonObject _effectConfig;
std::list<EffectDefinition> _availableEffects;
std::list<Effect *> _activeEffects;

View File

@@ -119,6 +119,9 @@ public:
///
const InputInfo& getPriorityInfo(const int priority) const;
/// Reload the list of available effects
void reloadEffects();
/// Get the list of available effects
/// @return The list of available effects
const std::list<EffectDefinition> &getEffects() const;