]> git.sesse.net Git - kdenlive/commitdiff
Fix importing clip analysis to effect
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 7 Nov 2012 22:53:03 +0000 (23:53 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 7 Nov 2012 22:53:03 +0000 (23:53 +0100)
src/customtrackview.cpp
src/effectstack/collapsibleeffect.cpp
src/effectstack/collapsibleeffect.h
src/effectstack/effectstackview2.cpp
src/effectstack/effectstackview2.h
src/mainwindow.cpp

index 57869bb2107b16c334d38c1df8963c2abb9d95a2..435c2a169a09799f926a60c1af15342210ba6ea4 100644 (file)
@@ -7591,19 +7591,27 @@ void CustomTrackView::slotGotFilterJobResults(const QString &/*id*/, int startPo
 
 void CustomTrackView::slotImportClipKeyframes(GRAPHICSRECTITEM type)
 {
-    if (!m_selectionGroup) {
-       emit displayMessage(i18n("You need to select one clip and one transition"), ErrorMessage);
-       return;
-    }
-    // Make sure there is no collision
-    QList<QGraphicsItem *> children = m_selectionGroup->childItems();
     ClipItem *item = NULL;
-    for (int i = 0; i < children.count(); i++) {
-       if (children.at(i)->type() == AVWIDGET) {
-            item = (ClipItem*) children.at(i);
-            break;
-        }
+    if (type == TRANSITIONWIDGET) {
+       // We want to import keyframes to a transition
+       if (!m_selectionGroup) {
+           emit displayMessage(i18n("You need to select one clip and one transition"), ErrorMessage);
+           return;
+       }
+       // Make sure there is no collision
+       QList<QGraphicsItem *> children = m_selectionGroup->childItems();
+       for (int i = 0; i < children.count(); i++) {
+           if (children.at(i)->type() == AVWIDGET) {
+               item = (ClipItem*) children.at(i);
+               break;
+           }
+       }
     }
+    else {
+       // Import keyframes from current clip to its effect
+       if (m_dragItem) item = static_cast<ClipItem*> (m_dragItem);
+    }
+    
     if (!item) {
        emit displayMessage(i18n("No clip found"), ErrorMessage);
        return;
index 8b5ca2601832fed6f5c38a87d2619a1730496424..509392bae3ba84b9e91591a8724289b97e88e2dd 100644 (file)
@@ -597,3 +597,9 @@ void CollapsibleEffect::setRange(int inPoint , int outPoint)
 {
     m_paramWidget->setRange(inPoint, outPoint);
 }
+
+void CollapsibleEffect::setKeyframes(const QString data, int maximum)
+{
+    m_paramWidget->setKeyframes(data, maximum);
+}
+
index 42d4aab43a64e4c58a204bb44bac2925243d3c6d..53e0ec0bbeca983916c9960ebd8dd9eac895dc2e 100644 (file)
@@ -75,6 +75,8 @@ public:
     bool needsMonitorEffectScene() const;
     /** @brief Set clip in / out points. */
     void setRange(int inPoint , int outPoint);
+    /** @brief Import keyframes from a clip's data. */
+    void setKeyframes(const QString data, int maximum);
 
 public slots:
     void slotSyncEffectsPos(int pos);
index 2c9ceb7a14ef9cbb2f7f0ffd1dc0abfce0391c03..d67f2bbc337e987eb8e1031c384577ff639d9186 100644 (file)
@@ -954,6 +954,16 @@ void EffectStackView2::dropEvent(QDropEvent *event)
     processDroppedEffect(doc.documentElement(), event);
 }
 
+void EffectStackView2::setKeyframes(const QString data, int maximum)
+{
+    for (int i = 0; i < m_effects.count(); i++) {
+        if (m_effects.at(i)->isActive()) {
+           m_effects.at(i)->setKeyframes(data, maximum);
+            break;
+        }
+    }
+}
+
 //static
 const QString EffectStackView2::getStyleSheet()
 {
index 90b4e9cc03f3dfdc31e1b39a2d40f95b798dd9c3..85a2163d18763e6407d87c9b9189b7678baaee01 100644 (file)
@@ -75,6 +75,9 @@ public:
     /** @brief Return the stylesheet required for effect parameters. */
     static const QString getStyleSheet();
 
+    /** @brief Import keyframes from the clip metadata */
+    void setKeyframes(const QString data, int maximum);
+
 protected:
     virtual void mouseMoveEvent(QMouseEvent * event);
     virtual void mouseReleaseEvent(QMouseEvent * event);
index 7f8917a3692ec8dd2ab85df9de36d835eeda6fa4..9e817b2a5c19724eca4fca6fd6b32354e4f73189 100644 (file)
@@ -4571,6 +4571,7 @@ void MainWindow::slotProcessImportKeyframes(GRAPHICSRECTITEM type, const QString
 {
     if (type == AVWIDGET) {
        // This data should be sent to the effect stack
+       m_effectStack->setKeyframes(data, maximum);
     }
     else if (type == TRANSITIONWIDGET) {
        // This data should be sent to the transition stack