]> git.sesse.net Git - kdenlive/commitdiff
Implement effect group save
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 30 Mar 2012 18:43:11 +0000 (20:43 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 30 Mar 2012 18:43:11 +0000 (20:43 +0200)
src/customtrackview.cpp
src/effectstack/collapsibleeffect.cpp
src/effectstack/collapsibleeffect.h
src/effectstack/collapsiblegroup.cpp
src/effectstack/collapsiblegroup.h
src/effectstack/effectstackview2.cpp

index b292a1ff0c4bfa2daf1c06098352e70fcfc118e8..b2b8792670effbd1d5fd4d36c90c13280b2bd39a 100644 (file)
@@ -2039,9 +2039,9 @@ void CustomTrackView::slotChangeEffectState(ClipItem *clip, int track, int effec
 
     if (clip == NULL) {
         // editing track effect
-        command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, true, true);
+        command = new EditEffectCommand(this, m_document->tracksCount() - track, GenTime(-1), oldEffect, effect, effectPos, false, true);
     } else {
-        command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, true, true);
+        command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, false, true);
     }
     m_commandStack->push(command);
     setDocumentModified();;
index d731715a27e4f6a8d4de4da83bff07a089980fc5..82c99ab98b59934b2360428849925646a4514a38 100644 (file)
@@ -149,8 +149,8 @@ CollapsibleEffect::CollapsibleEffect(QDomElement effect, QDomElement original_ef
     //buttonShowComments->setIcon(KIcon("help-about"));
     //buttonShowComments->setToolTip(i18n("Show additional information for the parameters"));
     m_menu = new QMenu;
-    m_menu->addAction(KIcon("view-refresh"), i18n("Reset effect"), this, SLOT(slotResetEffect()));
-    m_menu->addAction(KIcon("document-save"), i18n("Save effect"), this, SLOT(slotSaveEffect()));
+    m_menu->addAction(KIcon("view-refresh"), i18n("Reset Effect"), this, SLOT(slotResetEffect()));
+    m_menu->addAction(KIcon("document-save"), i18n("Save Effect"), this, SLOT(slotSaveEffect()));
     
     QDomElement namenode = m_effect.firstChildElement("name");
     if (namenode.isNull()) return;
index 536adc9308426eef17e731671dce15c97093c0ef..8d391f52ec0c6d24d8857ea3bf23a1bde8c22e44 100644 (file)
@@ -149,6 +149,7 @@ public:
 public slots:
     void slotSyncEffectsPos(int pos);
     void slotEnable(bool enable);
+    void slotResetEffect();
 
 private slots:
     void slotSwitch();
@@ -157,7 +158,6 @@ private slots:
     void slotEffectUp();
     void slotEffectDown();
     void slotSaveEffect();
-    void slotResetEffect();
     void slotCreateGroup();
     void slotUnGroup();
 
index 7e0773bebe8436f43de8dfe748b6014f077f2c7c..4e7afd847b63680592549e85e87ccb66f8f73176 100644 (file)
@@ -75,8 +75,8 @@ CollapsibleGroup::CollapsibleGroup(int ix, bool firstGroup, bool lastGroup, QStr
     if (firstGroup) buttonUp->setVisible(false);
     if (lastGroup) buttonDown->setVisible(false);
     m_menu = new QMenu;
-    m_menu->addAction(KIcon("view-refresh"), i18n("Reset effect"), this, SLOT(slotResetEffect()));
-    m_menu->addAction(KIcon("document-save"), i18n("Save effect"), this, SLOT(slotSaveEffect()));
+    m_menu->addAction(KIcon("view-refresh"), i18n("Reset Group"), this, SLOT(slotResetGroup()));
+    m_menu->addAction(KIcon("document-save"), i18n("Save Group"), this, SLOT(slotSaveGroup()));
     
     effecticon->setPixmap(KIcon("folder").pixmap(16,16));
     m_menu->addAction(KIcon("list-remove"), i18n("Ungroup"), this, SLOT(slotUnGroup()));
@@ -151,31 +151,22 @@ void CollapsibleGroup::slotEffectDown()
     emit changeGroupPosition(groupIndex(), false);
 }
 
-void CollapsibleGroup::slotSaveEffect()
+void CollapsibleGroup::slotSaveGroup()
 {
-    QString name = QInputDialog::getText(this, i18n("Save Effect"), i18n("Name for saved effect: "));
+    QString name = QInputDialog::getText(this, i18n("Save Group"), i18n("Name for saved group: "), QLineEdit::Normal, m_title->text());
     if (name.isEmpty()) return;
     QString path = KStandardDirs::locateLocal("appdata", "effects/", true);
     path = path + name + ".xml";
     if (QFile::exists(path)) if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", path)) == KMessageBox::No) return;
 
-    /*TODO
-    QDomDocument doc;
-    QDomElement effect = m_effect.cloneNode().toElement();
-    doc.appendChild(doc.importNode(effect, true));
-    effect = doc.firstChild().toElement();
-    effect.removeAttribute("kdenlive_ix");
-    effect.setAttribute("id", name);
-    effect.setAttribute("type", "custom");
-    QDomElement effectname = effect.firstChildElement("name");
-    effect.removeChild(effectname);
-    effectname = doc.createElement("name");
-    QDomText nametext = doc.createTextNode(name);
-    effectname.appendChild(nametext);
-    effect.insertBefore(effectname, QDomNode());
-    QDomElement effectprops = effect.firstChildElement("properties");
-    effectprops.setAttribute("id", name);
-    effectprops.setAttribute("type", "custom");
+    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");
+    
+    base.setAttribute("id", name);
+    base.setAttribute("type", "custom");  
 
     QFile file(path);
     if (file.open(QFile::WriteOnly | QFile::Truncate)) {
@@ -183,12 +174,14 @@ void CollapsibleGroup::slotSaveEffect()
         out << doc.toString();
     }
     file.close();
-    emit reloadEffects();*/
+    emit reloadEffects();
 }
 
-void CollapsibleGroup::slotResetEffect()
+void CollapsibleGroup::slotResetGroup()
 {
-    //TODO: emit resetEffect(effectIndex());
+    QMutexLocker lock(&m_mutex);
+    for (int i = 0; i < m_subWidgets.count(); i++)
+        m_subWidgets.at(i)->slotResetEffect();
 }
 
 void CollapsibleGroup::slotSwitch()
@@ -246,7 +239,6 @@ void CollapsibleGroup::removeGroup(int ix, QVBoxLayout *layout)
        vbox->removeWidget(m_subWidgets.at(i));
        layout->insertWidget(ix, m_subWidgets.at(i));
         m_subWidgets.at(i)->removeFromGroup();
-       kDebug()<<"// Removing effect at: "<<i;
     }
     m_subWidgets.clear();
 }
@@ -314,7 +306,6 @@ void CollapsibleGroup::dropEvent(QDropEvent *event)
 
 void CollapsibleGroup::slotRenameGroup()
 {
-    QMutexLocker lock(&m_mutex);
     m_title->setReadOnly(true);
     if (m_title->text().isEmpty()) m_title->setText(i18n("Effect Group"));
     for (int j = 0; j < m_subWidgets.count(); j++) {
index bf33330afd6659a5af5a4f7bdb7eab4a0a152c44..c85a145b1ed24023d8dc59bc848ec4d3677130c7 100644 (file)
@@ -85,8 +85,8 @@ private slots:
     void slotDeleteEffect();
     void slotEffectUp();
     void slotEffectDown();
-    void slotSaveEffect();
-    void slotResetEffect();
+    void slotSaveGroup();
+    void slotResetGroup();
     void slotUnGroup();
     void slotRenameGroup();
 
@@ -114,6 +114,7 @@ signals:
     void addEffect(QDomElement e);
     void unGroup(CollapsibleGroup *);
     void groupRenamed(CollapsibleGroup *);
+    void reloadEffects();
 };
 
 
index 18cd73fe04f223ac3996ba276a14273267caa299..687bac49cc7c82ec91afd5908e63977806fd971f 100644 (file)
@@ -186,6 +186,7 @@ void EffectStackView2::setupListView(int ix)
                connect(group, SIGNAL(moveEffect(int,int,int,QString)), this, SLOT(slotMoveEffect(int,int,int,QString)));
                connect(group, SIGNAL(unGroup(CollapsibleGroup*)), this , SLOT(slotUnGroup(CollapsibleGroup*)));
                connect(group, SIGNAL(groupRenamed(CollapsibleGroup *)), this, SLOT(slotRenameGroup(CollapsibleGroup*)));
+                connect(group, SIGNAL(reloadEffects()), this , SIGNAL(reloadEffects()));
                vbox1->addWidget(group);
                group->installEventFilter( this );
            }
@@ -633,6 +634,7 @@ void EffectStackView2::slotCreateGroup(int ix)
     connect(group, SIGNAL(moveEffect(int,int,int,QString)), this , SLOT(slotMoveEffect(int,int,int,QString)));
     connect(group, SIGNAL(unGroup(CollapsibleGroup*)), this , SLOT(slotUnGroup(CollapsibleGroup*)));
     connect(group, SIGNAL(groupRenamed(CollapsibleGroup *)), this , SLOT(slotRenameGroup(CollapsibleGroup*)));
+    connect(group, SIGNAL(reloadEffects()), this , SIGNAL(reloadEffects()));
     l->insertWidget(groupPos, group);
     group->installEventFilter( this );
     group->addGroupEffect(effectToMove);