X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Feffectslist.cpp;h=d6777eb73503e0602e928c7e8aa05569db80dcb6;hb=2347054c6d402d354eabfc3b4c9b12651db7c073;hp=407c51b858f50ba8d1da6d9a7d9c97702758d1a6;hpb=919c2480220949ac3869ec5b50073caf90c1f8cb;p=kdenlive diff --git a/src/effectslist.cpp b/src/effectslist.cpp index 407c51b8..d6777eb7 100644 --- a/src/effectslist.cpp +++ b/src/effectslist.cpp @@ -54,6 +54,17 @@ QDomElement EffectsList::getEffectByName(const QString & name) const return QDomElement(); } + +void EffectsList::initEffect(QDomElement effect) const +{ + QDomNodeList params = effect.elementsByTagName("parameter"); + for (int i = 0; i < params.count(); i++) { + QDomElement e = params.item(i).toElement(); + if (!e.hasAttribute("value")) + e.setAttribute("value", e.attribute("default")); + } +} + QDomElement EffectsList::getEffectByTag(const QString & tag, const QString & id) const { QDomNodeList effects = m_baseElement.childNodes(); @@ -61,22 +72,20 @@ QDomElement EffectsList::getEffectByTag(const QString & tag, const QString & id) QDomElement effect = effects.at(i).toElement(); if (!id.isEmpty()) { if (effect.attribute("id") == id) { - QDomNodeList params = effect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { - QDomElement e = params.item(i).toElement(); - if (!e.hasAttribute("value")) - e.setAttribute("value", e.attribute("default")); - } + if (effect.tagName() == "effectgroup") { + // Effect group + QDomNodeList subeffects = effect.elementsByTagName("effect"); + for (int j = 0; j < subeffects.count(); j++) { + QDomElement sub = subeffects.at(j).toElement(); + initEffect(sub); + } + } + else initEffect(effect); return effect; } } else if (!tag.isEmpty()) { if (effect.attribute("tag") == tag) { - QDomNodeList params = effect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { - QDomElement e = params.item(i).toElement(); - if (!e.hasAttribute("value")) - e.setAttribute("value", e.attribute("default")); - } + initEffect(effect); return effect; } } @@ -102,7 +111,7 @@ QStringList EffectsList::effectIdInfo(const int ix) const QDomElement effect = m_baseElement.childNodes().at(ix).toElement(); if (effect.tagName() == "effectgroup") { QString groupName = effect.attribute("name"); - info << groupName << groupName << groupName << QString::number(Kdenlive::groupEffect); + info << groupName << groupName << effect.attribute("id") << QString::number(Kdenlive::groupEffect); } else { QDomElement namenode = effect.firstChildElement("name"); @@ -203,13 +212,24 @@ void EffectsList::clearList() void EffectsList::setParameter(QDomElement effect, const QString &name, const QString &value) { QDomNodeList params = effect.elementsByTagName("parameter"); + bool found = false; for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); if (e.attribute("name") == name) { e.setAttribute("value", value); + found = true; break; } } + if (!found) { + // create property + QDomDocument doc = effect.ownerDocument(); + QDomElement e = doc.createElement("parameter"); + e.setAttribute("name", name); + QDomText val = doc.createTextNode(value); + e.appendChild(val); + effect.appendChild(e); + } } // static @@ -373,6 +393,16 @@ void EffectsList::updateIndexes(QDomNodeList effects, int startIndex) } } +void EffectsList::enableEffects(QList indexes, bool disable) +{ + QDomNodeList effects = m_baseElement.childNodes(); + QDomElement effect; + for (int i = 0; i < indexes.count(); i++) { + effect = effectFromIndex(effects, indexes.at(i)); + effect.setAttribute("disable", (int) disable); + } +} + QDomElement EffectsList::effectFromIndex(QDomNodeList effects, int ix) { if (ix <= 0 || ix > effects.count()) return QDomElement();