]> git.sesse.net Git - kdenlive/blobdiff - src/effectstackedit.cpp
Use "None" string when no luma file is selected in a transition instead of empty...
[kdenlive] / src / effectstackedit.cpp
index c9c91dfdec037f52975e2be9ac9b3fcdfaab9771..7196cd1d12f135cf35674f4dd0c199666ff10e20 100644 (file)
  *                                                                         *
  ***************************************************************************/
 
-#include <QVBoxLayout>
-#include <QSlider>
-#include <QLabel>
-#include <QPushButton>
-#include <QCheckBox>
-#include <QScrollArea>
-
-#include <KDebug>
-#include <KLocale>
-
+#include "effectstackedit.h"
 #include "ui_constval_ui.h"
 #include "ui_listval_ui.h"
 #include "ui_boolval_ui.h"
 #include "ui_positionval_ui.h"
 #include "ui_wipeval_ui.h"
 #include "complexparameter.h"
-#include "effectstackedit.h"
 #include "geometryval.h"
-
 #include "kdenlivesettings.h"
 
+#include <KDebug>
+#include <KLocale>
+
+#include <QVBoxLayout>
+#include <QSlider>
+#include <QLabel>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QScrollArea>
+
 QMap<QString, QImage> EffectStackEdit::iconCache;
 
 EffectStackEdit::EffectStackEdit(QWidget *parent): QWidget(parent), m_in(0), m_out(0) {
@@ -120,25 +119,24 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
         } else if (type == "list") {
             Ui::Listval_UI *lsval = new Ui::Listval_UI;
             lsval->setupUi(toFillin);
-            QStringList listitems = pa.attribute("paramlist").split(",");
-            QStringList listitemsdisplay = pa.attribute("paramlistdisplay").split(",");
+            QStringList listitems = pa.attribute("paramlist").split(',');
+            QStringList listitemsdisplay = pa.attribute("paramlistdisplay").split(',');
             if (listitemsdisplay.count() != listitems.count()) listitemsdisplay = listitems;
             //lsval->list->addItems(listitems);
+            lsval->list->setIconSize(QSize(30, 30));
             for (int i = 0;i < listitems.count();i++) {
                 lsval->list->addItem(listitemsdisplay.at(i), listitems.at(i));
-            }
-            lsval->list->setCurrentIndex(listitems.indexOf(value));
-            for (int i = 0;i < lsval->list->count();i++) {
-                QString entry = lsval->list->itemData(i).toString();
+                QString entry = listitems.at(i);
                 if (!entry.isEmpty() && (entry.endsWith(".png") || entry.endsWith(".pgm"))) {
                     if (!EffectStackEdit::iconCache.contains(entry)) {
                         QImage pix(entry);
                         EffectStackEdit::iconCache[entry] = pix.scaled(30, 30);
                     }
-                    lsval->list->setIconSize(QSize(30, 30));
                     lsval->list->setItemIcon(i, QPixmap::fromImage(iconCache[entry]));
                 }
             }
+            if (!value.isEmpty()) lsval->list->setCurrentIndex(listitems.indexOf(value));
+
             connect(lsval->list, SIGNAL(currentIndexChanged(int)) , this, SLOT(collectAllParameters()));
             lsval->title->setTitle(paramName);
             valueItems[paramName] = lsval;
@@ -153,10 +151,10 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
             valueItems[paramName] = bval;
             uiItems.append(bval);
         } else if (type == "complex") {
-            /*QStringList names=nodeAtts.namedItem("name").nodeValue().split(";");
-            QStringList max=nodeAtts.namedItem("max").nodeValue().split(";");
-            QStringList min=nodeAtts.namedItem("min").nodeValue().split(";");
-            QStringList val=value.split(";");
+            /*QStringList names=nodeAtts.namedItem("name").nodeValue().split(';');
+            QStringList max=nodeAtts.namedItem("max").nodeValue().split(';');
+            QStringList min=nodeAtts.namedItem("min").nodeValue().split(';');
+            QStringList val=value.split(';');
             kDebug() << "in complex"<<names.size() << " " << max.size() << " " << min.size() << " " << val.size()  ;
             if ( (names.size() == max.size() ) &&
                  (names.size()== min.size()) &&
@@ -195,9 +193,9 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
             Ui::Positionval_UI *pval = new Ui::Positionval_UI;
             pval->setupUi(toFillin);
             int pos = value.toInt();
-            if (d.attribute("id") == "fadein") {
+            if (d.attribute("id") == "fadein" || d.attribute("id") == "fade_from_black") {
                 pos = pos - m_in;
-            } else if (d.attribute("id") == "fadeout") {
+            } else if (d.attribute("id") == "fadeout" || d.attribute("id") == "fade_to_black") {
                 // fadeout position starts from clip end
                 pos = m_out - (pos - m_in);
             }
@@ -281,13 +279,13 @@ void EffectStackEdit::slotSeekToPos(int pos) {
 
 wipeInfo EffectStackEdit::getWipeInfo(QString value) {
     wipeInfo info;
-    QString start = value.section(";", 0, 0);
-    QString end = value.section(";", 1, 1).section("=", 1, 1);
+    QString start = value.section(';', 0, 0);
+    QString end = value.section(';', 1, 1).section('=', 1, 1);
     if (start.startsWith("-100%,0")) info.start = LEFT;
     else if (start.startsWith("100%,0")) info.start = RIGHT;
     else if (start.startsWith("0%,100%")) info.start = DOWN;
     else if (start.startsWith("0%,-100%")) info.start = UP;
-    else if (start.startsWith("0%,0%")) info.start = CENTER;
+    else info.start = CENTER;
     if (start.count(':') == 2) info.startTransparency = start.section(':', -1).toInt();
     else info.startTransparency = 100;
 
@@ -295,7 +293,7 @@ wipeInfo EffectStackEdit::getWipeInfo(QString value) {
     else if (end.startsWith("100%,0")) info.end = RIGHT;
     else if (end.startsWith("0%,100%")) info.end = DOWN;
     else if (end.startsWith("0%,-100%")) info.end = UP;
-    else if (end.startsWith("0%,0%")) info.end = CENTER;
+    else info.end = CENTER;
     if (end.count(':') == 2) info.endTransparency = end.section(':', -1).toInt();
     else info.endTransparency = 100;
     return info;
@@ -322,7 +320,7 @@ QString EffectStackEdit::getWipeString(wipeInfo info) {
         start = "0%,0%:100%x100%";
         break;
     }
-    start.append(":" + QString::number(info.startTransparency));
+    start.append(':' + QString::number(info.startTransparency));
 
     switch (info.end) {
     case LEFT:
@@ -341,7 +339,7 @@ QString EffectStackEdit::getWipeString(wipeInfo info) {
         end = "0%,0%:100%x100%";
         break;
     }
-    end.append(":" + QString::number(info.endTransparency));
+    end.append(':' + QString::number(info.endTransparency));
     return QString(start + ";-1=" + end);
 }
 
@@ -368,7 +366,6 @@ void EffectStackEdit::collectAllParameters() {
         } else if (type == "color") {
             KColorButton *color = ((Ui::Colorval_UI*)valueItems[paramName])->kcolorbutton;
             setValue = color->color().name();
-            setValue.replace('#', "0x");
         } else if (type == "complex") {
             ComplexParameter *complex = ((ComplexParameter*)valueItems[paramName+"complex"]);
             namenode.item(i) = complex->getParamDesc();
@@ -378,13 +375,13 @@ void EffectStackEdit::collectAllParameters() {
         } else if (type == "position") {
             KRestrictedLine *line = ((Ui::Positionval_UI*)valueItems[paramName+"position"])->krestrictedline;
             int pos = m_timecode.getFrameCount(line->text(), KdenliveSettings::project_fps());
-            if (params.attribute("id") == "fadein") {
+            if (params.attribute("id") == "fadein" || params.attribute("id") == "fade_from_black") {
                 pos += m_in;
                 if (pos > m_out) {
                     pos = m_out;
                     line->setText(m_timecode.getTimecodeFromFrames(pos));
                 }
-            } else if (params.attribute("id") == "fadeout") {
+            } else if (params.attribute("id") == "fadeout" || params.attribute("id") == "fade_to_black") {
                 pos = m_out - (pos - m_in);
                 if (pos > m_out - m_in) {
                     pos = m_out - m_in;
@@ -400,12 +397,14 @@ void EffectStackEdit::collectAllParameters() {
             else if (wp->start_up->isChecked()) info.start = UP;
             else if (wp->start_down->isChecked()) info.start = DOWN;
             else if (wp->start_center->isChecked()) info.start = CENTER;
+            else info.start = LEFT;
             info.startTransparency = wp->start_transp->value();
             if (wp->end_left->isChecked()) info.end = LEFT;
             else if (wp->end_right->isChecked()) info.end = RIGHT;
             else if (wp->end_up->isChecked()) info.end = UP;
             else if (wp->end_down->isChecked()) info.end = DOWN;
             else if (wp->end_center->isChecked()) info.end = CENTER;
+            else info.end = RIGHT;
             info.endTransparency = wp->end_transp->value();
             setValue = getWipeString(info);
         }