]> git.sesse.net Git - kdenlive/commitdiff
Update transitions lumas when user installs a new one:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 10 Jun 2009 22:19:04 +0000 (22:19 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 10 Jun 2009 22:19:04 +0000 (22:19 +0000)
http://www.kdenlive.org:80/mantis/view.php?id=891

svn path=/trunk/kdenlive/; revision=3515

src/customtrackview.cpp
src/customtrackview.h
src/initeffects.cpp
src/mainwindow.cpp
src/transition.cpp
src/transitionsettings.cpp

index 20177397f9011e385024a88576b445a51417c289..796ffa15910bec58dae61764f6e89e03cb9b3db7 100644 (file)
@@ -4552,5 +4552,53 @@ void CustomTrackView::updateClipTypeActions(ClipItem *clip)
     }
 }
 
+void CustomTrackView::reloadTransitionLumas()
+{
+    QString lumaNames;
+    QString lumaFiles;
+    QDomElement lumaTransition = MainWindow::transitions.getEffectByTag("luma", "luma");
+    QDomNodeList params = lumaTransition.elementsByTagName("parameter");
+    for (int i = 0; i < params.count(); i++) {
+        QDomElement e = params.item(i).toElement();
+        if (e.attribute("tag") == "resource") {
+            lumaNames = e.attribute("paramlistdisplay");
+            lumaFiles = e.attribute("paramlist");
+            break;
+        }
+    }
+  
+    QList<QGraphicsItem *> itemList = items();
+    Transition *transitionitem;
+    QDomElement transitionXml;
+    for (int i = 0; i < itemList.count(); i++) {
+        if (itemList.at(i)->type() == TRANSITIONWIDGET) {
+            transitionitem = static_cast <Transition*> (itemList.at(i));
+           transitionXml = transitionitem->toXML();
+           if (transitionXml.attribute("id") == "luma" && transitionXml.attribute("tag") == "luma") {
+               QDomNodeList params = transitionXml.elementsByTagName("parameter");
+               for (int i = 0; i < params.count(); i++) {
+                   QDomElement e = params.item(i).toElement();
+                   if (e.attribute("tag") == "resource") {
+                       e.setAttribute("paramlistdisplay", lumaNames);
+                       e.setAttribute("paramlist", lumaFiles);
+                       break;
+                   }
+               }
+           }
+           if (transitionXml.attribute("id") == "composite" && transitionXml.attribute("tag") == "composite") {
+               QDomNodeList params = transitionXml.elementsByTagName("parameter");
+               for (int i = 0; i < params.count(); i++) {
+                   QDomElement e = params.item(i).toElement();
+                   if (e.attribute("tag") == "luma") {
+                       e.setAttribute("paramlistdisplay", lumaNames);
+                       e.setAttribute("paramlist", lumaFiles);
+                       break;
+                   }
+               }
+           }
+        }
+    }
+    emit transitionItemSelected(NULL);
+}
 
 #include "customtrackview.moc"
index 843a65b2bf1bde3c862e029d568b10ea6e0d27a7..7e8a67e00ff1684152bc34010b569ab6057b9b22 100644 (file)
@@ -121,6 +121,7 @@ public:
     void setAudioAndVideo();
     void doChangeClipType(const GenTime &pos, int track, bool videoOnly, bool audioOnly);
     int hasGuide(int pos, int offset);
+    void reloadTransitionLumas();
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
index c8ee2118e2399736600de8eb32a530fd293521b5..d276f987a31f9b80952f41785d39d19c19a9ae16 100644 (file)
@@ -65,7 +65,6 @@ initEffectsThumbnailer initEffects::thumbnailer;
 // static
 void initEffects::refreshLumas()
 {
-
     // Check for Kdenlive installed luma files, add empty string at start for no luma
     QStringList imagenamelist = QStringList() << i18n("None");
     QStringList imagefiles = QStringList() << QString();
@@ -90,7 +89,7 @@ void initEffects::refreshLumas()
         imagenamelist.append(fname);
         imagefiles.append(folder + '/' + fname);
     }
-    QDomElement lumaTransition = MainWindow::transitions.getEffectByName("Wipe");
+    QDomElement lumaTransition = MainWindow::transitions.getEffectByTag("luma", "luma");
     QDomNodeList params = lumaTransition.elementsByTagName("parameter");
     for (int i = 0; i < params.count(); i++) {
         QDomElement e = params.item(i).toElement();
@@ -101,6 +100,17 @@ void initEffects::refreshLumas()
         }
     }
 
+    QDomElement compositeTransition = MainWindow::transitions.getEffectByTag("composite", "composite");
+    params = compositeTransition.elementsByTagName("parameter");
+    for (int i = 0; i < params.count(); i++) {
+        QDomElement e = params.item(i).toElement();
+        if (e.attribute("tag") == "luma") {
+            e.setAttribute("paramlistdisplay", imagenamelist.join(","));
+            e.setAttribute("paramlist", imagefiles.join(","));
+            break;
+        }
+    }
+
 
 }
 
@@ -657,7 +667,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList*
             }
 
             if (name == "luma") {
-
+               ktrans.setAttribute("id", name);
                 tname.appendChild(ret.createTextNode("Wipe"));
                 desc.appendChild(ret.createTextNode("Applies a stationary transition between the current and next frames"));
 
@@ -725,16 +735,16 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList*
 
         transitions->append(ret.documentElement());
         //kDebug() << "//// ////  TRANSITON XML";
-        // kDebug() << ret.toString();
+        //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" />
         */
     }
 
-    QString wipetrans = "<ktransition tag=\"composite\" id=\"slide\"><name>Slide</name><description>Slide image from one side to another</description><parameter tag=\"geometry\" type=\"wipe\" default=\"-100%,0%:100%x100%;-1=0%,0%:100%x100%\" name=\"geometry\"><name>Direction</name>                                               </parameter><parameter tag=\"aligned\" default=\"0\" type=\"bool\" name=\"aligned\" ><name>Align</name></parameter><parameter tag=\"progressive\" default=\"1\" type=\"bool\" name=\"progressive\" ><name>Force Progressive Rendering</name></parameter><parameter tag=\"deinterlace\" default=\"0\" type=\"bool\" name=\"deinterlace\" ><name>Force Deinterlace Overlay</name></parameter><parameter tag=\"invert\" default=\"0\" type=\"bool\" name=\"invert\" ><name>Invert</name></parameter></ktransition>";
+    QString slidetrans = "<ktransition tag=\"composite\" id=\"slide\"><name>Slide</name><description>Slide image from one side to another</description><parameter tag=\"geometry\" type=\"wipe\" default=\"-100%,0%:100%x100%;-1=0%,0%:100%x100%\" name=\"geometry\"><name>Direction</name>                                               </parameter><parameter tag=\"aligned\" default=\"0\" type=\"bool\" name=\"aligned\" ><name>Align</name></parameter><parameter tag=\"progressive\" default=\"1\" type=\"bool\" name=\"progressive\" ><name>Force Progressive Rendering</name></parameter><parameter tag=\"deinterlace\" default=\"0\" type=\"bool\" name=\"deinterlace\" ><name>Force Deinterlace Overlay</name></parameter><parameter tag=\"invert\" default=\"0\" type=\"bool\" name=\"invert\" ><name>Invert</name></parameter></ktransition>";
     QDomDocument ret;
-    ret.setContent(wipetrans);
+    ret.setContent(slidetrans);
     transitions->append(ret.documentElement());
 
     QString dissolve = "<ktransition tag=\"luma\" id=\"dissolve\"><name>Dissolve</name><description>Fade out one video while fading in the other video</description><parameter tag=\"reverse\" default=\"0\" type=\"bool\" name=\"reverse\" ><name>Reverse</name></parameter></ktransition>";
index fd8adfc0b790d215e8f053d3a585d5ed8526f2ad..0d87edfcd11840c312ee55ecc12642884cbe91df 100644 (file)
@@ -2564,6 +2564,7 @@ void MainWindow::slotGetNewLumaStuff()
     }
     qDeleteAll(entries);
     initEffects::refreshLumas();
+    m_activeTimeline->projectView()->reloadTransitionLumas();
 }
 
 void MainWindow::slotGetNewRenderStuff()
index d2f70b894d3abb123af5857a0e772b20a66ee4e1..3fc7ac9cabf5b65b35f4988b7d19bb33117038d4 100644 (file)
@@ -323,7 +323,6 @@ QDomElement Transition::toXML()
         m_parameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
         m_parameters.setAttribute("clipb_track", transitionEndTrack());
     }
-
     return m_parameters;
 }
 
index 08eeecd00d3af8e110a624ef273056b4b8f75374..7b16827dfb5b6de448f4241b00032d491edd5aac 100644 (file)
@@ -149,6 +149,11 @@ void TransitionSettings::slotTransitionItemSelected(Transition* t, QPoint p, boo
             m_ui.transitionList->blockSignals(false);
         }
     }
+    else {
+       // null transition selected
+       m_usedTransition = NULL;
+       m_effectEdit->transferParamDesc(QDomElement(), 0, 0);
+    }
 
 }