]> git.sesse.net Git - kdenlive/commitdiff
Effects can be enabled / disabled
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 21:47:52 +0000 (21:47 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 1 Mar 2008 21:47:52 +0000 (21:47 +0000)
svn path=/branches/KDE4/; revision=1968

src/clipitem.cpp
src/customtrackview.cpp
src/customtrackview.h
src/effectstackview.cpp
src/effectstackview.h
src/mainwindow.cpp
src/renderer.cpp

index 8a5f5c35fb30f6df7d10e2057a217b36f98b05d0..3245d37ef96b7543794fe42a717c24ed8983a77e 100644 (file)
@@ -643,6 +643,8 @@ QMap <QString, QString> ClipItem::addEffect(QDomElement effect)
   m_effectList.append(effect);
   effectParams["tag"] = effect.attribute("tag");
   effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+  QString state = effect.attribute("disabled");
+  if (!state.isEmpty()) effectParams["disabled"] = state;
   QDomNodeList params = effect.elementsByTagName("parameter");
   for (int i = 0; i < params.count(); i++) {
     QDomElement e = params.item(i).toElement();
@@ -659,6 +661,8 @@ QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect)
   QMap <QString, QString> effectParams;
   effectParams["tag"] = effect.attribute("tag");
   effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+  QString state = effect.attribute("disabled");
+  if (!state.isEmpty()) effectParams["disabled"] = state;
   QDomNodeList params = effect.elementsByTagName("parameter");
   for (int i = 0; i < params.count(); i++) {
     QDomElement e = params.item(i).toElement();
index bd02ba1d7c7b828d1d485a8ff7cd151e46d207b5..4f665eb672cf12eae24a74c694e682c01c160b50 100644 (file)
@@ -403,10 +403,21 @@ void CustomTrackView::updateEffect(int track, GenTime pos, QDomElement effect)
   ClipItem *clip = getClipItemAt(pos.frames(m_document->fps()) + 1, m_tracksCount - track);
   if (clip){
     QMap <QString, QString> effectParams = clip->getEffectArgs(effect);
-    m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
+    if (effectParams["disabled"] == "1") {
+      QString index = effectParams["kdenlive_ix"];
+      m_document->renderer()->mltRemoveEffect(track, pos, index);  
+    }
+    else m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams);
   }
 }
 
+void CustomTrackView::slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable)
+{
+  QDomElement oldEffect = effect.cloneNode().toElement();
+  effect.setAttribute("disabled", disable);
+  EditEffectCommand *command = new EditEffectCommand(this, m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), oldEffect, effect, true);
+  m_commandStack->push(command);
+}
 
 void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect)
 {
index 5e394d0ec0aa6736eb681c98613b508f8c89cf12..dfb282004a205c50f4eb7e987970fe01c1ce17a2 100644 (file)
@@ -57,6 +57,7 @@ class CustomTrackView : public QGraphicsView
   public slots:
     void setCursorPos(int pos, bool seek = true);
     void slotDeleteEffect(ClipItem *clip, QDomElement effect);
+    void slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable);
     void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
     void slotRefreshEffects(ClipItem *clip);
     void setDuration(int duration);
index f3209961efb5b9a73803f12113ecc13e63668fac..f82169c519d87a90f59a6f0002550c474f8a8ea1 100644 (file)
@@ -48,6 +48,7 @@ EffectStackView::EffectStackView(EffectsList *audioEffectList, EffectsList *vide
        ui.effectlist->setDragDropMode(QAbstractItemView::NoDragDrop);//use internal if drop is recognised right
        
        connect (ui.effectlist, SIGNAL ( itemSelectionChanged()), this , SLOT( slotItemSelectionChanged() ));
+       connect (ui.effectlist, SIGNAL(itemChanged ( QListWidgetItem *)), this , SLOT( slotItemChanged(QListWidgetItem *) ));
        connect (ui.buttonNew, SIGNAL (clicked()), this, SLOT (slotNewEffect()) );
        connect (ui.buttonUp, SIGNAL (clicked()), this, SLOT (slotItemUp()) );
        connect (ui.buttonDown, SIGNAL (clicked()), this, SLOT (slotItemDown()) );
@@ -82,6 +83,18 @@ void EffectStackView::slotClipItemSelected(ClipItem* c)
        
 }
 
+void EffectStackView::slotItemChanged(QListWidgetItem *item)
+{
+    bool disable = true;
+    if (item->checkState() == Qt::Checked) disable = false;
+    int activeRow = ui.effectlist->currentRow();
+    if ( activeRow>=0  ){
+       emit changeEffectState(clipref, clipref->effectAt(activeRow), disable);
+    }
+    kDebug()<<"--- EFFECT CHANGED!!!!!!!!!!!!!!!!!";
+}
+
+
 void EffectStackView::setupListView(){
 
        ui.effectlist->clear();
@@ -91,7 +104,8 @@ void EffectStackView::setupListView(){
                if (!namenode.isNull()) {
                        QListWidgetItem* item = new QListWidgetItem(namenode.toElement().text(), ui.effectlist);
                        item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled);
-                       item->setCheckState(Qt::Checked);
+                       if (d.attribute("disabled") == "1") item->setCheckState(Qt::Unchecked);
+                       else item->setCheckState(Qt::Checked);
                }
        }
        if (clipref->effectsCount() == 0)
index d03b693abf6827e7349c75785c700cc8da0c2c47..fff14d8025d3f6e5040272882a9bf690bd120eaf 100644 (file)
@@ -41,6 +41,9 @@ private:
 
 public slots:
        void slotClipItemSelected(ClipItem*);
+       void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
+
+private slots:
        void slotItemSelectionChanged();
        void slotItemUp();
        void slotItemDown();
@@ -48,7 +51,7 @@ public slots:
        void slotNewEffect();
        void slotResetEffect();
        void itemSelectionChanged();
-       void slotUpdateEffectParams(const QDomElement&, const QDomElement&);
+       void slotItemChanged(QListWidgetItem *item);
 
 signals:
        void transferParamDesc(const QDomElement&,int ,int);
@@ -58,6 +61,8 @@ signals:
        /** An effect in stack was moved, we need to regenerate 
            all effects for this clip in the playlist */
        void refreshEffectStack(ClipItem *);
+       /** Enable or disable an effect */
+       void changeEffectState(ClipItem*, QDomElement, bool);
 
 };
 
index be6ac10b1cd74c7ea2d0a70d1d910174a9374547..a9025b9de08887ac49a7da0f15f00149245d0556 100644 (file)
@@ -470,6 +470,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) //chang
   connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*)));
   connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement)));
   connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement)));
+  connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool)));
   connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*)));
 
   m_projectList->setDocument(doc);
index 10a9d2beb558380c469d1b87379059530a90e887..2586f078f621383ad03b7763989a37caaa485923 100644 (file)
@@ -1144,7 +1144,8 @@ void Render::mltEditEffect(int track, GenTime position, QMap <QString, QString>
 
 
     if (!filter) {
-       kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!";
+       kDebug()<<"WARINIG, FILTER FOR EDITING NOT FOUND, ADDING IT!!!!!";
+       mltAddEffect(track, position, args);
        m_isBlocked = false;
        return;
     }