]> git.sesse.net Git - kdenlive/blobdiff - src/initeffects.cpp
Another attempt to fix effects order problem, issue:
[kdenlive] / src / initeffects.cpp
index e4eb306904677c390c1d268b57c2dd2e3cd5ee36..8ec8551a87bf468f9e5ad22ce50d8dd2bc0e8cd5 100644 (file)
@@ -83,6 +83,36 @@ Mlt::Repository *initEffects::parseEffectFiles() {
     Mlt::Properties *filters = repository->filters();
     QStringList filtersList;
 
+    // Check for blacklisted effects
+    QString blacklist = KStandardDirs::locate("appdata", "blacklisted_effects.txt");
+
+    QFile file(blacklist);
+    QStringList blackListed;
+
+    if (file.open(QIODevice::ReadOnly)) {
+        QTextStream in(&file);
+        while (!in.atEnd()) {
+            QString black = in.readLine().simplified();
+            if (!black.isEmpty() && !black.startsWith('#')) blackListed.append(black);
+        }
+    }
+    file.close();
+
+    // Check for blacklisted transitions
+    blacklist = KStandardDirs::locate("appdata", "blacklisted_transitions.txt");
+
+    QFile file2(blacklist);
+    QStringList blackListedtransitions;
+
+    if (file2.open(QIODevice::ReadOnly)) {
+        QTextStream in(&file2);
+        while (!in.atEnd()) {
+            QString black = in.readLine().simplified();
+            if (!black.isEmpty() && !black.startsWith('#')) blackListedtransitions.append(black);
+        }
+    }
+    file2.close();
+
     for (int i = 0 ; i < filters->count() ; i++) {
         filtersList << filters->get_name(i);
     }
@@ -103,6 +133,10 @@ Mlt::Repository *initEffects::parseEffectFiles() {
         transitionsItemList << transitions->get_name(i);
     }
     delete transitions;
+
+    foreach(const QString &trans, blackListedtransitions) {
+        if (transitionsItemList.contains(trans)) transitionsItemList.removeAll(trans);
+    }
     fillTransitionsList(repository, &MainWindow::transitions, transitionsItemList);
 
     KGlobal::dirs()->addResourceType("ladspa_plugin", 0, "lib/ladspa");
@@ -127,6 +161,11 @@ Mlt::Repository *initEffects::parseEffectFiles() {
             // kDebug()<<"//  FOUND EFFECT FILE: "<<itemName<<endl;
         }
     }
+
+    foreach(const QString &effect, blackListed) {
+        if (filtersList.contains(effect)) filtersList.removeAll(effect);
+    }
+
     foreach(const QString &filtername, filtersList) {
         QDomDocument doc = createDescriptionFromMlt(repository, "filters", filtername);
         if (!doc.isNull())
@@ -463,6 +502,11 @@ QDomDocument initEffects::createDescriptionFromMlt(Mlt::Repository* repository,
 }
 
 void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* transitions, QStringList names) {
+    // remove transitions that are not implemented
+    int pos = names.indexOf("mix");
+    if (pos != -1) names.takeAt(pos);
+    pos = names.indexOf("region");
+    if (pos != -1) names.takeAt(pos);
     foreach(const QString &name, names) {
         QDomDocument ret;
         QDomElement ktrans = ret.createElement("ktransition");
@@ -542,12 +586,13 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList*
                 paramList.append(quickParameterFill(ret, "Softness", "softness", "double", "0", "0", "100", "", "", "100"));
                 paramList.append(quickParameterFill(ret, "Invert", "invert", "bool", "0", "0", "1"));
                 paramList.append(quickParameterFill(ret, "ImageFile", "resource", "list", "", "", "", imagefiles, imagenamelist));
+                paramList.append(quickParameterFill(ret, "Reverse Transition", "reverse", "bool", "0", "0", "1"));
                 //thumbnailer.prepareThumbnailsCall(imagelist);
 
             } else if (name == "composite") {
-                paramList.append(quickParameterFill(ret, "Geometry", "geometry", "geometry", "0;0;100;100;100", "-500;-500;-500;-500;0", "500;500;500;500;100"));
+                paramList.append(quickParameterFill(ret, "Geometry", "geometry", "geometry", "0%,0%:100%x100%:100", "-500;-500;-500;-500;0", "500;500;500;500;100"));
+                paramList.append(quickParameterFill(ret, "Distort", "distort", "bool", "1", "1", "1"));
                 tname.appendChild(ret.createTextNode("Composite"));
-
                 QDomDocument ret1;
                 QDomElement ktrans1 = ret1.createElement("ktransition");
                 ret1.appendChild(ktrans1);
@@ -581,7 +626,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList*
 
 
         }
-        paramList.append(quickParameterFill(ret, "Reverse Transition", "reverse", "bool", "0", "0", "1"));
+
         ktrans.appendChild(tname);
 
         foreach(const QDomElement &e, paramList) {
@@ -590,8 +635,8 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList*
 
 
         transitions->append(ret.documentElement());
-        kDebug() << "//// ////  TRANSITON XML";
-        kDebug() << ret.toString();
+        //kDebug() << "//// ////  TRANSITON XML";
+        //kDebug() << ret.toString();
         /*
 
          <transition fill="1" in="11" a_track="1" out="73" mlt_service="luma" b_track="2" softness="0" resource="/home/marco/Projekte/kdenlive/install_cmake/share/apps/kdenlive/pgm/PAL/square2.pgm" />