]> git.sesse.net Git - kdenlive/blobdiff - src/transitionsettings.cpp
Inform user when no render profile is available (usually because frame rate not matching)
[kdenlive] / src / transitionsettings.cpp
index 55df15538170bf8ef14f6897f51736bd2fdf9002..6d87559b27700b064b6f36c23e5d9a33aa8a6285 100644 (file)
 
 #include <KDebug>
 
-TransitionSettings::TransitionSettings(QWidget* parent) :
+TransitionSettings::TransitionSettings(Monitor *monitor, QWidget* parent) :
         QWidget(parent),
         m_usedTransition(NULL),
         m_autoTrackTransition(0)
 {
     setupUi(this);
     QVBoxLayout *vbox1 = new QVBoxLayout(frame);
-    m_effectEdit = new EffectStackEdit(frame);
+    m_effectEdit = new EffectStackEdit(monitor, frame);
     vbox1->setContentsMargins(0, 0, 0, 0);
     vbox1->setSpacing(0);
     vbox1->addWidget(m_effectEdit);
@@ -63,6 +63,7 @@ TransitionSettings::TransitionSettings(QWidget* parent) :
     connect(transitionList, SIGNAL(activated(int)), this, SLOT(slotTransitionChanged()));
     connect(transitionTrack, SIGNAL(activated(int)), this, SLOT(slotTransitionTrackChanged()));
     connect(m_effectEdit, SIGNAL(parameterChanged(const QDomElement&, const QDomElement&)), this , SLOT(slotUpdateEffectParams(const QDomElement&, const QDomElement&)));
+    connect(monitor, SIGNAL(renderPosition(int)), this, SLOT(slotRenderPos(int)));
 }
 
 void TransitionSettings::updateProjectFormat(MltVideoProfile profile, Timecode t, const QList <TrackInfo> info)
@@ -104,21 +105,20 @@ void TransitionSettings::updateTrackList()
 void TransitionSettings::slotTransitionChanged(bool reinit, bool updateCurrent)
 {
     QDomElement e = m_usedTransition->toXML().cloneNode().toElement();
-    int start = m_usedTransition->startPos().frames(KdenliveSettings::project_fps());
-    int end = m_usedTransition->endPos().frames(KdenliveSettings::project_fps());
     if (reinit) {
         // Reset the transition parameters to the default one
         QDomElement newTransition = MainWindow::transitions.getEffectByName(transitionList->currentText()).cloneNode().toElement();
         slotUpdateEffectParams(e, newTransition);
-        m_effectEdit->transferParamDesc(newTransition, start, start, end);
+        m_effectEdit->transferParamDesc(newTransition, m_usedTransition->info(), false);
     } else if (!updateCurrent) {
         // Transition changed, update parameters dialog
         //slotUpdateEffectParams(e, e);
-        m_effectEdit->transferParamDesc(e, start, start, end);
+        m_effectEdit->transferParamDesc(e, m_usedTransition->info(), false);
     } else {
         // Same transition, we just want to update the parameters value
         slotUpdateEffectParams(e, e);
-        if (m_usedTransition->hasGeometry()) m_effectEdit->transferParamDesc(m_usedTransition->toXML(), start, start, end);
+        if (m_usedTransition->hasGeometry())
+            m_effectEdit->transferParamDesc(m_usedTransition->toXML(), m_usedTransition->info(), false);
     }
 }
 
@@ -182,7 +182,8 @@ void TransitionSettings::slotTransitionItemSelected(Transition* t, int nextTrack
     } else {
         // null transition selected
         m_usedTransition = NULL;
-        m_effectEdit->transferParamDesc(QDomElement(), 0, 0, 0);
+        ItemInfo info;
+        m_effectEdit->transferParamDesc(QDomElement(), info, false);
     }
 
 }
@@ -205,3 +206,10 @@ void TransitionSettings::raiseWindow(QWidget* dock)
 
 }
 
+void TransitionSettings::slotRenderPos(int pos)
+{
+    if (m_usedTransition)
+        m_effectEdit->slotSyncEffectsPos(pos - m_usedTransition->startPos().frames(KdenliveSettings::project_fps()));
+}
+
+#include "transitionsettings.moc"