[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdenlive/effectstack] src: new: saving of effect group
From: Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date: 2012-03-31 23:29:26
Message-ID: 20120331232926.4A84EA60A9 () git ! kde ! org
[Download RAW message or body]
Git commit 65291fac2609fe71e4be801a4d5349ddda5b9243 by Jean-Baptiste Mardelle.
Committed on 01/04/2012 at 01:29.
Pushed by mardelle into branch 'effectstack'.
new: saving of effect group
M +1 -1 src/clipitem.cpp
M +5 -5 src/customtrackview.cpp
M +8 -2 src/effectslist.cpp
M +4 -0 src/effectslist.h
M +2 -1 src/effectslistwidget.cpp
M +1 -1 src/effectstack/collapsibleeffect.cpp
M +11 -3 src/effectstack/collapsiblegroup.cpp
M +1 -1 src/headertrack.cpp
M +26 -8 src/initeffects.cpp
http://commits.kde.org/kdenlive/65291fac2609fe71e4be801a4d5349ddda5b9243
diff --git a/src/clipitem.cpp b/src/clipitem.cpp
index fadf7ba..1f35022 100644
--- a/src/clipitem.cpp
+++ b/src/clipitem.cpp
@@ -1638,7 +1638,7 @@ void ClipItem::dropEvent(QGraphicsSceneDragDropEvent * event)
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++) {
diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp
index b2b8792..b3ca6e3 100644
--- a/src/customtrackview.cpp
+++ b/src/customtrackview.cpp
@@ -1730,7 +1730,7 @@ void CustomTrackView::slotAddGroupEffect(QDomElement effect, \
AbstractGroupItem * 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);
@@ -1757,7 +1757,7 @@ void CustomTrackView::slotAddEffect(QDomElement effect, GenTime \
pos, int track) 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");
@@ -1786,7 +1786,7 @@ void CustomTrackView::slotAddEffect(QDomElement effect, GenTime \
pos, int track) 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);
@@ -6629,7 +6629,7 @@ void CustomTrackView::slotAddTrackEffect(const QDomElement \
&effect, int ix)
QUndoCommand *effectCommand = new QUndoCommand();
QString effectName;
- if (effect.tagName() == "list") {
+ if (effect.tagName() == "effectgroup") {
effectName = effect.attribute("name");
} else {
QDomElement namenode = effect.firstChildElement("name");
@@ -6637,7 +6637,7 @@ void CustomTrackView::slotAddTrackEffect(const QDomElement \
&effect, int ix) 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();
diff --git a/src/effectslist.cpp b/src/effectslist.cpp
index f673c0e..2ceb030 100644
--- a/src/effectslist.cpp
+++ b/src/effectslist.cpp
@@ -100,8 +100,14 @@ QStringList EffectsList::effectIdInfo(const int ix) const
{
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;
}
diff --git a/src/effectslist.h b/src/effectslist.h
index e52bb01..8a851a7 100644
--- a/src/effectslist.h
+++ b/src/effectslist.h
@@ -32,6 +32,10 @@
#include <QDomDocument>
+namespace Kdenlive {
+ enum EFFECTTYPE { simpleEffect, groupEffect };
+}
+
class EffectsList: public QDomDocument
{
public:
diff --git a/src/effectslistwidget.cpp b/src/effectslistwidget.cpp
index 2c51069..7d75ac8 100644
--- a/src/effectslistwidget.cpp
+++ b/src/effectslistwidget.cpp
@@ -246,7 +246,8 @@ void EffectsListWidget::loadEffects(const EffectsList \
*effectlist, KIcon icon, Q
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)));
diff --git a/src/effectstack/collapsibleeffect.cpp \
b/src/effectstack/collapsibleeffect.cpp index 82c99ab..71ed8e4 100644
--- a/src/effectstack/collapsibleeffect.cpp
+++ b/src/effectstack/collapsibleeffect.cpp
@@ -211,7 +211,7 @@ const QString CollapsibleEffect::getStyleSheet(QPalette p)
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();
diff --git a/src/effectstack/collapsiblegroup.cpp \
b/src/effectstack/collapsiblegroup.cpp index 4e7afd8..30684c2 100644
--- a/src/effectstack/collapsiblegroup.cpp
+++ b/src/effectstack/collapsiblegroup.cpp
@@ -162,9 +162,17 @@ void CollapsibleGroup::slotSaveGroup()
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");
@@ -324,7 +332,7 @@ QDomDocument CollapsibleGroup::effectsData()
{
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++) {
diff --git a/src/headertrack.cpp b/src/headertrack.cpp
index 86956b7..af95f27 100644
--- a/src/headertrack.cpp
+++ b/src/headertrack.cpp
@@ -136,7 +136,7 @@ void HeaderTrack::dropEvent(QDropEvent * event)
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++) {
diff --git a/src/initeffects.cpp b/src/initeffects.cpp
index 62961b7..6f0608f 100644
--- a/src/initeffects.cpp
+++ b/src/initeffects.cpp
@@ -318,18 +318,25 @@ void initEffects::parseCustomEffectsFile()
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);
@@ -343,7 +350,9 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, \
EffectsList *au 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;
@@ -404,7 +413,7 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, \
EffectsList *au }
// 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);
@@ -414,6 +423,15 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, \
EffectsList *au 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)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic