]> git.sesse.net Git - kdenlive/commitdiff
several transition move fixes
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 12 May 2008 20:28:19 +0000 (20:28 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 12 May 2008 20:28:19 +0000 (20:28 +0000)
svn path=/branches/KDE4/; revision=2187

src/customtrackview.cpp
src/effectstackedit.cpp
src/transition.cpp
src/transition.h
src/transitionsettings.cpp

index 84c72c5767c72fb9292c37d0222c2fe75d986e27..edae29e3cf1482b5d54e0db16033ed101536aa8f 100644 (file)
@@ -814,20 +814,21 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) {
     info.endPos = m_dragItem->endPos();
     info.track = m_dragItem->track();
 
-    if (m_operationMode == MOVE && m_dragItemInfo.startPos != info.startPos) {
+    if (m_operationMode == MOVE) {
         setCursor(Qt::OpenHandCursor);
         // move clip
-        if (m_dragItem->type() == AVWIDGET) {
+        if (m_dragItem->type() == AVWIDGET && m_dragItemInfo.startPos != info.startPos) {
             MoveClipCommand *command = new MoveClipCommand(this, m_dragItemInfo, info, false);
             m_commandStack->push(command);
             m_document->renderer()->mltMoveClip((int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), (int) m_dragItemInfo.startPos.frames(m_document->fps()), (int)(m_dragItem->startPos().frames(m_document->fps())));
         }
-        if (m_dragItem->type() == TRANSITIONWIDGET) {
+        if (m_dragItem->type() == TRANSITIONWIDGET && ( m_dragItemInfo.startPos != info.startPos || m_dragItemInfo.track != info.track )) {
             MoveTransitionCommand *command = new MoveTransitionCommand(this, m_dragItemInfo, info, false);
             m_commandStack->push(command);
             //kDebug()<<"/// MOVING TRS FROM: "<<(int)(m_tracksList.count() - m_startPos.y())<<", OFFSET: "<<(int) (m_dragItem->track() - m_startPos.y());
             Transition *transition = (Transition *) m_dragItem;
-            m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), getPreviousVideoTrack(m_dragItem->track()), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos);
+           transition->updateTransitionEndTrack(getPreviousVideoTrack(m_dragItem->track()));
+            m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItem->track()), transition->transitionEndTrack(), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos);
         }
 
     } else if (m_operationMode == RESIZESTART) {
@@ -1000,7 +1001,8 @@ void CustomTrackView::moveTransition(const ItemInfo start, const ItemInfo end) {
         item->resizeEnd((int) end.endPos.frames(m_document->fps()), m_scale);
     }
     //item->moveTransition(GenTime((int) (endPos.x() - startPos.x()), m_document->fps()));
-    m_document->renderer()->mltMoveTransition(item->transitionTag(), m_tracksList.count() - start.track, m_tracksList.count() - end.track, getPreviousVideoTrack(end.track), start.startPos, start.endPos, end.startPos, end.endPos);
+    item->updateTransitionEndTrack(getPreviousVideoTrack(end.track));
+    m_document->renderer()->mltMoveTransition(item->transitionTag(), m_tracksList.count() - start.track, m_tracksList.count() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos);
 }
 
 void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end) {
index 361e5f2e64d1a89693872165308e84a9bfcf5589..429dc2a6b4bf155d94087f3123af21bf1c5e7924 100644 (file)
@@ -91,10 +91,12 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int , int) {
             pa.setAttribute("min", "-200;-20;0;0;0");
             pa.setAttribute("max", "200;200;100;100;100");
         }
-        if (type == "complex") {
+        else if (type == "complex") {
             //pa.setAttribute("namedesc",pa.attribute("name"));
 
         }
+
+
         //TODO constant, list, bool, complex , color, geometry, position
         if (type == "double" || type == "constant") {
             createSliderItem(paramName, value.toInt(), pa.attribute("min").toInt(), pa.attribute("max").toInt());
index d776e721a76fac360b815cb3b018ab4d789065b6..f38cb52e1e53c7cd14700ed38116f5abe224dd4a 100644 (file)
@@ -98,6 +98,10 @@ int Transition::transitionEndTrack() const {
     return m_transitionTrack;
 }
 
+void Transition::updateTransitionEndTrack(int newtrack) {
+    m_transitionTrack = newtrack;
+}
+
 void Transition::paint(QPainter *painter,
                        const QStyleOptionGraphicsItem *option,
                        QWidget *widget) {
index b82ae75583e811ad2cfd327d2899b84be083323d..65b91cd9763e3336a8e88af2bd7ba6f4dc359b9d 100644 (file)
@@ -63,6 +63,8 @@ public:
     QPixmap transitionPixmap() const;
     //Transition *reparent(ClipItem * clip);
     bool isValid() const;
+    /** Transition should be linked to another track */
+    void updateTransitionEndTrack(int newtrack);
 
     const ClipItem *referencedClip() const;
 
index f1ed28c2f174791df3ec9afc698140c3821a09bb..d93c430e4d64b2539217fa7a57027df23d2a8838 100644 (file)
@@ -48,23 +48,29 @@ void TransitionSettings::slotTransitionChanged() {
          m_usedTransition->update();
      }
      emit transitionUpdated(e, m_usedTransition->toXML());*/
+    /*QDomDocument doc;    
+    doc.appendChild(doc.importNode(e, true));
+    kDebug()<<"///////////  TRANSITION CHANGED: "<<doc.toString();
+    kDebug()<<"///////////  TRANSITION CHANGED END...";*/
+
     if (m_usedTransition && m_usedTransition->transitionName() == ui.listWidget->currentItem()->text() && !e.attribute("tag").isNull()) {
         slotUpdateEffectParams(e, e);
     } else
         slotUpdateEffectParams(e, MainWindow::transitions.getEffectByName(ui.listWidget->currentItem()->text()));
-    emit transferParamDesc(m_usedTransition->toXML(), 0, 0);
+    emit transferParamDesc(e, 0, 0);
 }
 
 void TransitionSettings::slotTransitionItemSelected(Transition* t) {
     setEnabled(t != NULL);
+    if (t == m_usedTransition) return;
     m_usedTransition = t;
     if (m_usedTransition) {
         QList<QListWidgetItem*> list = ui.listWidget->findItems(m_usedTransition->transitionName(), Qt::MatchExactly);
         if (list.size() > 0) {
-            disconnect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged()));
+            ui.listWidget->blockSignals(true);
             ui.listWidget->setCurrentItem(list[0]);
             slotTransitionChanged();
-            connect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged()));
+            ui.listWidget->blockSignals(false);
         }
     }
 
@@ -79,7 +85,7 @@ void TransitionSettings::slotUpdateEffectParams(const QDomElement& oldparam, con
     QTextStream str(&test);
     oldparam.save(str, 2);
     m_usedTransition->toXML().save(str, 2);
-    kDebug() << test;
+    //kDebug() << test;
     //oldparam must be also first given to Transition and then return the toXML()
     emit transitionUpdated(m_usedTransition, oldparam);
 }