]> git.sesse.net Git - kdenlive/blobdiff - src/trackview.cpp
Save zone in/out in kdenlive document:
[kdenlive] / src / trackview.cpp
index a2036add0b865a9f645d629aaae57879d2c8a0e2..bdc09307969a7d657805be1810fe33295bda1452 100644 (file)
@@ -34,7 +34,7 @@
 #include "kdenlivedoc.h"
 #include "mainwindow.h"
 #include "customtrackview.h"
-
+#include "initeffects.h"
 
 TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
         : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0) {
@@ -84,6 +84,7 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent)
     connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
     connect(m_trackview, SIGNAL(transitionItemSelected(Transition*, bool)), this, SLOT(slotTransitionItemSelected(Transition*, bool)));
     slotChangeZoom(m_doc->zoom());
+    slotSetZone(m_doc->zone());
 }
 
 
@@ -345,9 +346,9 @@ void TrackView::slotRebuildTrackHeaders() {
         connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int)));
         connect(header, SIGNAL(switchTrackAudio(int)), m_trackview, SLOT(slotSwitchTrackAudio(int)));
 
-        //TODO: re-enable when add / remove track is implemented
         connect(header, SIGNAL(deleteTrack(int)), this, SIGNAL(deleteTrack(int)));
         connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int)));
+        connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int)));
         m_headersLayout->addWidget(header);
     }
     view->headers_container->adjustSize();
@@ -401,6 +402,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml) {
                         QString effecttag;
                         QString effectid;
                         QString effectindex;
+                        QString ladspaEffectFile;
                         // Get effect tag & index
                         for (QDomNode n3 = effect.firstChild(); !n3.isNull(); n3 = n3.nextSibling()) {
                             // parse effect parameters
@@ -411,6 +413,15 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml) {
                                 effectid = effectparam.text();
                             } else if (effectparam.attribute("name") == "kdenlive_ix") {
                                 effectindex = effectparam.text();
+                            } else if (effectparam.attribute("name") == "src") {
+                                ladspaEffectFile = effectparam.text();
+                                if (!QFile::exists(ladspaEffectFile)) {
+                                    // If the ladspa effect file is missing, recreate it
+                                    kDebug() << "// MISSING LADSPA FILE: " << ladspaEffectFile;
+                                    ladspaEffectFile = m_doc->getLadspaFile();
+                                    effectparam.firstChild().setNodeValue(ladspaEffectFile);
+                                    kDebug() << "// ... REPLACED WITH: " << ladspaEffectFile;
+                                }
                             }
                         }
                         //kDebug() << "+ + CLIP EFF FND: " << effecttag << ", " << effectid << ", " << effectindex;
@@ -513,16 +524,29 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml) {
                                 QString paramname = effectparam.attribute("name");
                                 QString paramvalue = effectparam.text();
 
+
                                 // try to find this parameter in the effect xml
                                 QDomElement e;
                                 for (int k = 0; k < clipeffectparams.count(); k++) {
                                     e = clipeffectparams.item(k).toElement();
                                     if (!e.isNull() && e.tagName() == "parameter" && e.attribute("name") == paramname) {
-                                        e.setAttribute("value", paramvalue);
+                                        double factor = e.attribute("factor", "1").toDouble();
+                                        if (factor != 1) {
+                                            e.setAttribute("value", paramvalue.toDouble() * factor);
+                                        } else e.setAttribute("value", paramvalue);
                                         break;
                                     }
                                 }
                             }
+                            if (effecttag == "ladspa") {
+                                //QString ladspaEffectFile = EffectsList::parameter(effect, "src", "property");
+
+                                if (!QFile::exists(ladspaEffectFile)) {
+                                    // If the ladspa effect file is missing, recreate it
+                                    initEffects::ladspaEffectFile(ladspaEffectFile, currenteffect.attribute("ladspaid").toInt(), m_trackview->getLadspaParams(currenteffect));
+                                }
+                                currenteffect.setAttribute("src", ladspaEffectFile);
+                            }
                             item->addEffect(currenteffect, false);
                             item->effectsCounter();
                         }