QDomDocument doc;
doc.setContent(effects, true);
QDomElement e = doc.documentElement();
- if (e.tagName() == "list") {
+ if (e.tagName() == "effectgroup") {
// dropped an effect group
QDomNodeList effectlist = e.elementsByTagName("effect");
for (int i = 0; i < effectlist.count(); i++) {
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET) {
ClipItem *item = static_cast <ClipItem *>(itemList.at(i));
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
QDomNodeList effectlist = effect.elementsByTagName("effect");
for (int j = 0; j < effectlist.count(); j++) {
processEffect(item, effectlist.at(j).toElement(), effectCommand);
QList<QGraphicsItem *> itemList;
QUndoCommand *effectCommand = new QUndoCommand();
QString effectName;
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
effectName = effect.attribute("name");
} else {
QDomElement namenode = effect.firstChildElement("name");
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET) {
ClipItem *item = static_cast <ClipItem *>(itemList.at(i));
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
QDomNodeList effectlist = effect.elementsByTagName("effect");
for (int j = 0; j < effectlist.count(); j++) {
processEffect(item, effectlist.at(j).toElement(), effectCommand);
QUndoCommand *effectCommand = new QUndoCommand();
QString effectName;
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
effectName = effect.attribute("name");
} else {
QDomElement namenode = effect.firstChildElement("name");
else effectName = i18n("effect");
}
effectCommand->setText(i18n("Add %1", effectName));
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
QDomNodeList effectlist = effect.elementsByTagName("effect");
for (int j = 0; j < effectlist.count(); j++) {
QDomElement trackeffect = effectlist.at(j).toElement();
{
QStringList info;
QDomElement effect = m_baseElement.childNodes().at(ix).toElement();
- QDomElement namenode = effect.firstChildElement("name");
- info << i18n(namenode.text().toUtf8().data()) << effect.attribute("tag") << effect.attribute("id");
+ if (effect.tagName() == "effectgroup") {
+ QString groupName = effect.attribute("name");
+ info << groupName << groupName << groupName << QString::number(Kdenlive::groupEffect);
+ }
+ else {
+ QDomElement namenode = effect.firstChildElement("name");
+ info << i18n(namenode.text().toUtf8().data()) << effect.attribute("tag") << effect.attribute("id");
+ }
return info;
}
#include <QDomDocument>
+namespace Kdenlive {
+ enum EFFECTTYPE { simpleEffect, groupEffect };
+}
+
class EffectsList: public QDomDocument
{
public:
if (!effectInfo.isEmpty()) {
item = new QTreeWidgetItem(parentItem, QStringList(effectInfo.takeFirst()));
- item->setIcon(0, icon);
+ if (effectInfo.count() == 4) item->setIcon(0, KIcon("folder"));
+ else item->setIcon(0, icon);
item->setData(0, TypeRole, type);
item->setData(0, IdRole, effectInfo);
item->setToolTip(0, effectlist->getInfo(effectInfo.at(0), effectInfo.at(1)));
QColor selected_bg = scheme.decoration(KColorScheme::FocusColor).color();
QColor hover_bg = scheme.decoration(KColorScheme::HoverColor).color();
QColor light_bg = scheme.shade(KColorScheme::LightShade);
- QColor midlight_bg = scheme.shade(KColorScheme::MidlightShade);
+ //QColor midlight_bg = scheme.shade(KColorScheme::MidlightShade);
QColor normal_bg = scheme.background(KColorScheme::AlternateBackground).color();
QColor alt_bg = scheme.background(KColorScheme::NormalBackground).color();
QDomDocument doc = effectsData();
QDomElement base = doc.documentElement();
QDomNodeList effects = base.elementsByTagName("effect");
- for (int i = 0; i < effects.count(); i++)
- effects.at(i).toElement().removeAttribute("kdenlive_ix");
+ for (int i = 0; i < effects.count(); i++) {
+ QDomElement eff = effects.at(i).toElement();
+ eff.removeAttribute("kdenlive_ix");
+ QString kdenliveInfo = eff.attribute("kdenlive_info");
+ // Make sure all effects have the correct new group name
+ if (kdenliveInfo.count('/') >= 2) {
+ eff.setAttribute("kdenlive_info", kdenliveInfo.section('/', 0, 1) + "/" + name);
+ }
+ }
+ base.setAttribute("name", name);
base.setAttribute("id", name);
base.setAttribute("type", "custom");
{
QMutexLocker lock(&m_mutex);
QDomDocument doc;
- QDomElement list = doc.createElement("list");
+ QDomElement list = doc.createElement("effectgroup");
list.setAttribute("name", m_title->text());
doc.appendChild(list);
for (int j = 0; j < m_subWidgets.count(); j++) {
QDomDocument doc;
doc.setContent(effects, true);
QDomElement e = doc.documentElement();
- if (e.tagName() == "list") {
+ if (e.tagName() == "effectgroup") {
// dropped an effect group
QDomNodeList effectlist = e.elementsByTagName("effect");
for (int i = 0; i < effectlist.count(); i++) {
QDomDocument doc;
QDomNodeList effects;
QDomElement e;
+ int unknownGroupCount = 0;
foreach(const QString & filename, fileList) {
QString itemName = KUrl(path + filename).path();
QFile file(itemName);
doc.setContent(&file, false);
file.close();
- effects = doc.elementsByTagName("effect");
- if (effects.count() != 1) {
- kDebug() << "More than one effect in file " << itemName << ", not supported yet";
- } else {
- e = effects.item(0).toElement();
- effectsMap.insert(e.firstChildElement("name").text().toLower().toUtf8().data(), e);
+ QDomElement base = doc.documentElement();
+ if (base.tagName() == "effectgroup") {
+ QString groupName = base.attribute("name");
+ if (groupName.isEmpty()) {
+ groupName = i18n("Group %1", unknownGroupCount);
+ base.setAttribute("name", groupName);
+ unknownGroupCount++;
+ }
+ effectsMap.insert(groupName.toLower().toUtf8().data(), base);
+ } else if (base.tagName() == "effect") {
+ effectsMap.insert(e.firstChildElement("name").text().toLower().toUtf8().data(), base);
}
+ else kDebug() << "Unsupported effect file: " << itemName;
}
foreach(const QDomElement & effect, effectsMap)
MainWindow::customEffects.append(effect);
doc.setContent(&file, false);
file.close();
QDomElement documentElement;
- QDomNodeList effects = doc.elementsByTagName("effect");
+ QDomNodeList effects;
+ QDomElement base = doc.documentElement();
+ effects = doc.elementsByTagName("effect");
if (effects.count() == 0) {
kDebug() << "Effect broken: " << name;
}
// Parse effect information.
- if ((filtersList.contains(tag) || producersList.contains(tag))) {
+ if (base.tagName() != "effectgroup" && (filtersList.contains(tag) || producersList.contains(tag))) {
QString type = documentElement.attribute("type", QString());
if (type == "audio")
audioEffectList->append(documentElement);
videoEffectList->append(documentElement);
}
}
+ if (base.tagName() == "effectgroup") {
+ QString type = base.attribute("type", QString());
+ if (type == "audio")
+ audioEffectList->append(base);
+ else if (type == "custom")
+ customEffectList->append(base);
+ else
+ videoEffectList->append(base);
+ }
}
QDomDocument initEffects::createDescriptionFromMlt(Mlt::Repository* repository, const QString& /*type*/, const QString& filtername)