summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Mardelle <jb@kdenlive.org>2016-10-14 08:52:13 (GMT)
committerJean-Baptiste Mardelle <jb@kdenlive.org>2016-10-14 08:52:31 (GMT)
commit55f3848ceba2d80a43694bb2ca7522e315d2fb01 (patch)
treead6b307e773ab44acf816e8cf6d7bfa575495397
parentc71731d4919def0ebbffe31cf79d965eaa8cf320 (diff)
Add proper UI for lut3d effect (avfilter), patch by alcinos
REVIEW: 129145
-rw-r--r--data/blacklisted_effects.txt1
-rw-r--r--data/effects/README2
-rw-r--r--data/effects/avfilter/CMakeLists.txt1
-rw-r--r--data/effects/avfilter/avfilter_lut3d.xml15
-rw-r--r--data/kdenliveeffectscategory.rc2
-rw-r--r--src/effectstack/parametercontainer.cpp31
-rw-r--r--src/ui/urlval_ui.ui91
7 files changed, 108 insertions, 35 deletions
diff --git a/data/blacklisted_effects.txt b/data/blacklisted_effects.txt
index eaa8303..3121daa 100644
--- a/data/blacklisted_effects.txt
+++ b/data/blacklisted_effects.txt
@@ -178,5 +178,6 @@ avfilter.volumedetect
avfilter.acompressor
avfilter.aecho
avfilter.agate
+avfilter.lut3d
avfilter.selectivecolor
diff --git a/data/effects/README b/data/effects/README
index 5fff9ef..1dfe365 100644
--- a/data/effects/README
+++ b/data/effects/README
@@ -109,6 +109,8 @@ The rest:
- "url":
- url/path
- represented by button to open "file open" dialog
+ - additional attributes:
+ - "filter": Filter for file extensions. Example : "*.cpp *.cc *.C|C++ Source Files\n*.h *.H|Header files" or as using mimetype: "image/png text/html"
- "wipe":
- special GUI for the wipe transition makes it possible to select a direction of a slide
- "addedgeometry":
diff --git a/data/effects/avfilter/CMakeLists.txt b/data/effects/avfilter/CMakeLists.txt
index 2260572..e10405b 100644
--- a/data/effects/avfilter/CMakeLists.txt
+++ b/data/effects/avfilter/CMakeLists.txt
@@ -4,4 +4,5 @@ acompressor.xml
aecho.xml
agate.xml
selectivecolor.xml
+avfilter_lut3d.xml
DESTINATION ${DATA_INSTALL_DIR}/kdenlive/effects)
diff --git a/data/effects/avfilter/avfilter_lut3d.xml b/data/effects/avfilter/avfilter_lut3d.xml
new file mode 100644
index 0000000..191315c
--- /dev/null
+++ b/data/effects/avfilter/avfilter_lut3d.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE kpartgui>
+<effect tag="avfilter.lut3d" id="avfilter.lut3d">
+ <name>Apply LUT</name>
+ <description>Apply a Look Up Table (LUT) to the video.
+ <full><![CDATA[A LUT is an easy way to correct the color of a video. Supported formats: .3dl (AfterEffects), .cube (Iridas), .dat(DaVinci), .m3d (Pandora)]]></full></description>
+ <author>libavfilter</author>
+ <parameter type="url" name="av.file" filter="*.cube *.3dl *.dat *.m3d|LUT files">
+ <name>LUT file to apply</name>
+ </parameter>
+ <parameter type="list" name="av.interp" default="0" paramlist="nearest;trilinear;tetrahedral ">
+ <name>Interpolation Mode</name>
+ <paramlistdisplay>Nearest, Trilinear, Tetrahedral</paramlistdisplay>
+ </parameter>
+</effect>
+
diff --git a/data/kdenliveeffectscategory.rc b/data/kdenliveeffectscategory.rc
index c645229..f9a6b2c 100644
--- a/data/kdenliveeffectscategory.rc
+++ b/data/kdenliveeffectscategory.rc
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
<data name="effects" version="0">
- <group list="lift_gamma_gain,brightness,gamma,frei0r.colgate,frei0r.balanc0r,frei0r.brightness,frei0r.levels,frei0r.three_point_balance,frei0r.curves,frei0r.coloradj_RGB,frei0r.sopsat,frei0r.bezier_curves,avfilter.selectivecolor">
+ <group list="lift_gamma_gain,brightness,gamma,frei0r.colgate,frei0r.balanc0r,frei0r.brightness,frei0r.levels,frei0r.three_point_balance,frei0r.curves,frei0r.coloradj_RGB,frei0r.sopsat,frei0r.bezier_curves,avfilter.selectivecolor,avfilter.lut3d">
<text>Colour correction</text>
</group>
<group list="invert,sepia,tcolor,greyscale,frei0r.B,frei0r.G,frei0r.R,frei0r.contrast0r,frei0r.saturat0r,frei0r.tint0r,frei0r.primaries,chroma_hold,frei0r.colorize,frei0r.equaliz0r,frei0r.hueshift0r,frei0r.luminance,lumaliftgaingamma">
diff --git a/src/effectstack/parametercontainer.cpp b/src/effectstack/parametercontainer.cpp
index 9136892..ccec798 100644
--- a/src/effectstack/parametercontainer.cpp
+++ b/src/effectstack/parametercontainer.cpp
@@ -256,7 +256,7 @@ ParameterContainer::ParameterContainer(const QDomElement &effect, const ItemInfo
} else if (type == QLatin1String("list")) {
Listval *lsval = new Listval;
lsval->setupUi(toFillin);
- lsval->list->setFocusPolicy(Qt::StrongFocus);
+ lsval->list->setFocusPolicy(Qt::StrongFocus);
QString items = pa.attribute(QStringLiteral("paramlist"));
QStringList listitems;
if (items == QLatin1String("%lumaPaths")) {
@@ -304,7 +304,7 @@ ParameterContainer::ParameterContainer(const QDomElement &effect, const ItemInfo
if (!value.isEmpty() && listitems.contains(value)) lsval->list->setCurrentIndex(listitems.indexOf(value));
}
lsval->name->setText(paramName);
- lsval->setToolTip(comment);
+ lsval->setToolTip(comment);
lsval->labelComment->setText(comment);
lsval->widgetComment->setHidden(true);
if (m_conditionParameter && pa.hasAttribute(QStringLiteral("conditional"))) {
@@ -612,8 +612,11 @@ ParameterContainer::ParameterContainer(const QDomElement &effect, const ItemInfo
Urlval *cval = new Urlval;
cval->setupUi(toFillin);
cval->label->setText(paramName);
- cval->setToolTip(comment);
- cval->urlwidget->setFilter(ClipCreationDialog::getExtensions().join(' '));
+ cval->setToolTip(comment);
+ cval->widgetComment->setHidden(true);
+ QString filter = pa.attribute(QStringLiteral("filter"));
+ if(filter.size()>0)
+ cval->urlwidget->setFilter(filter);
m_valueItems[paramName] = cval;
cval->urlwidget->setUrl(QUrl(value));
connect(cval->urlwidget, SIGNAL(returnPressed()) , this, SLOT(slotCollectAllParameters()));
@@ -986,21 +989,21 @@ void ParameterContainer::slotCollectAllParameters()
setValue = locale.toString(doubleparam->getValue());
}
} else if (type == QLatin1String("list")) {
- Listval* val = static_cast<Listval*>(m_valueItems.value(paramName));
+ Listval* val = static_cast<Listval*>(m_valueItems.value(paramName));
if (val) {
- KComboBox *box = val->list;
- setValue = box->itemData(box->currentIndex()).toString();
+ KComboBox *box = val->list;
+ setValue = box->itemData(box->currentIndex()).toString();
// special case, list value is allowed to be empty
pa.setAttribute(QStringLiteral("value"), setValue);
setValue.clear();
- }
+ }
} else if (type == QLatin1String("bool")) {
- Boolval* val = static_cast<Boolval*>(m_valueItems.value(paramName));
+ Boolval* val = static_cast<Boolval*>(m_valueItems.value(paramName));
if (val) {
- QCheckBox *box = val->checkBox;
- setValue = box->checkState() == Qt::Checked ? "1" : "0" ;
- }
- } else if (type == QLatin1String("switch")) {
+ QCheckBox *box = val->checkBox;
+ setValue = box->checkState() == Qt::Checked ? "1" : "0" ;
+ }
+ } else if (type == QLatin1String("switch")) {
Boolval* val = static_cast<Boolval*>(m_valueItems.value(paramName));
if (val) {
QCheckBox *box = val->checkBox;
@@ -1009,7 +1012,7 @@ void ParameterContainer::slotCollectAllParameters()
} else if (type == QLatin1String("color")) {
ChooseColorWidget *choosecolor = static_cast<ChooseColorWidget*>(m_valueItems.value(paramName));
if (choosecolor) setValue = choosecolor->getColor();
- if (pa.hasAttribute(QStringLiteral("paramprefix"))) setValue.prepend(pa.attribute(QStringLiteral("paramprefix")));
+ if (pa.hasAttribute(QStringLiteral("paramprefix"))) setValue.prepend(pa.attribute(QStringLiteral("paramprefix")));
} else if (type == QLatin1String("geometry")) {
if (m_geometryWidget) namenode.item(i).toElement().setAttribute(QStringLiteral("value"), m_geometryWidget->getValue());
} else if (type == QLatin1String("addedgeometry")) {
diff --git a/src/ui/urlval_ui.ui b/src/ui/urlval_ui.ui
index 68901f4..625f4bc 100644
--- a/src/ui/urlval_ui.ui
+++ b/src/ui/urlval_ui.ui
@@ -11,26 +11,77 @@
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
- <property name="verticalSpacing">
- <number>0</number>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <item row="1" column="1">
- <widget class="KUrlRequester" name="urlwidget"/>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Param</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item row="0" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>TextLabel</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="KUrlRequester" name="urlwidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>1</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QWidget" name="widgetComment" native="true">
+ <layout class="QGridLayout" name="_2">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>15</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelComment">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
</widget>
<customwidgets>
<customwidget>