#include "ui_boolval_ui.h"
#include "ui_colorval_ui.h"
#include "ui_wipeval_ui.h"
+#include "ui_urlval_ui.h"
#include "complexparameter.h"
#include "geometryval.h"
#include "positionedit.h"
+#include "projectlist.h"
#include "effectslist.h"
#include "kdenlivesettings.h"
#include "profilesdialog.h"
#include <KDebug>
#include <KLocale>
+#include <KFileDialog>
#include <QVBoxLayout>
#include <QSlider>
{
};
+class Urlval: public QWidget, public Ui::Urlval_UI
+{
+};
QMap<QString, QImage> EffectStackEdit::iconCache;
connect(wpval->end_transp, SIGNAL(valueChanged(int)), this, SLOT(collectAllParameters()));
//wpval->title->setTitle(na.toElement().text());
m_uiItems.append(wpval);
+ } else if (type == "url") {
+ Urlval *cval = new Urlval;
+ cval->setupUi(toFillin);
+ cval->label->setText(paramName);
+ cval->urlwidget->fileDialog()->setFilter(ProjectList::getExtensions());
+ m_valueItems[paramName] = cval;
+ cval->urlwidget->setText(value);
+ connect(cval->urlwidget, SIGNAL(returnPressed()) , this, SLOT(collectAllParameters()));
+ connect(cval->urlwidget, SIGNAL(urlSelected(const KUrl&)) , this, SLOT(collectAllParameters()));
+ m_uiItems.append(cval);
} else {
delete toFillin;
toFillin = NULL;
QString val = m_keyframeEditor->getValue(realName);
kDebug() << "SET VALUE: " << val;
namenode.item(i).toElement().setAttribute("keyframes", val);
+ } else if (type == "url") {
+ KUrlRequester *req = ((Urlval*)m_valueItems.value(paramName))->urlwidget;
+ setValue = req->url().path();
}
if (!setValue.isNull()) {
pa.attributes().namedItem("value").setNodeValue(setValue);
m_ui.effectlist->blockSignals(true);
m_ui.effectlist->clear();
m_effectedit->transferParamDesc(QDomElement(), 0, 0, 0);
- m_ui.region_url->clear();
+ m_ui.region_url->clear();
m_ui.effectlist->blockSignals(false);
setEnabled(false);
return;
}
m_ui.effectlist->blockSignals(false);
if (m_ui.effectlist->count() == 0) {
- m_effectedit->transferParamDesc(QDomElement(), 0, 0, 0);
- m_ui.region_url->clear();
- }
- else slotItemSelectionChanged(false);
+ m_effectedit->transferParamDesc(QDomElement(), 0, 0, 0);
+ m_ui.region_url->clear();
+ } else slotItemSelectionChanged(false);
slotUpdateCheckAllButton();
}
bool isChecked = false;
if (hasItem && m_ui.effectlist->currentItem()->checkState() == Qt::Checked) isChecked = true;
if (hasItem && m_ui.effectlist->currentItem()->isSelected()) {
- QDomElement eff = m_clipref->effectAt(activeRow);
+ QDomElement eff = m_clipref->effectAt(activeRow);
m_effectedit->transferParamDesc(eff,
0,
m_clipref->cropStart().frames(KdenliveSettings::project_fps()),
(m_clipref->cropStart() + m_clipref->cropDuration()).frames(KdenliveSettings::project_fps())); //minx max frame
- m_ui.region_url->setText(eff.attribute("region"));
+ m_ui.region_url->setText(eff.attribute("region"));
}
if (m_clipref && update) m_clipref->setSelectedEffect(activeRow);
m_ui.buttonDel->setEnabled(hasItem);
dom.setAttribute("kdenlive_ix", old.attribute("kdenlive_ix"));
m_clipref->initEffect(dom);
m_effectedit->transferParamDesc(dom, 0, m_clipref->cropStart().frames(KdenliveSettings::project_fps()), (m_clipref->cropStart() + m_clipref->cropDuration()).frames(KdenliveSettings::project_fps()));//minx max frame
- m_ui.region_url->setText(dom.attribute("region"));
+ m_ui.region_url->setText(dom.attribute("region"));
emit updateClipEffect(m_clipref, old, dom, activeRow);
}
}
int pos = names.indexOf("mix");
if (pos != -1)
names.takeAt(pos);
- pos = names.indexOf("region");
- if (pos != -1)
- names.takeAt(pos);
+
+ QStringList imagenamelist = QStringList() << i18n("None");
+ QStringList imagefiles = QStringList() << QString();
+ QStringList filters;
+ filters << "*.pgm" << "*.png";
+ QStringList customLumas = KGlobal::dirs()->findDirs("appdata", "lumas");
+ foreach(QString folder, customLumas) {
+ if (!folder.endsWith('/'))
+ folder.append('/');
+ QStringList filesnames = QDir(folder).entryList(filters, QDir::Files);
+ foreach(const QString &fname, filesnames) {
+ imagenamelist.append(fname);
+ imagefiles.append(folder + fname);
+ }
+ }
+
+ // Check for MLT luma files.
+ KUrl folder(mlt_environment("MLT_DATA"));
+ folder.addPath("lumas");
+ folder.addPath(mlt_environment("MLT_NORMALISATION"));
+ QDir lumafolder(folder.path());
+ QStringList filesnames = lumafolder.entryList(filters, QDir::Files);
+ foreach(const QString &fname, filesnames) {
+ imagenamelist.append(fname);
+ KUrl path(folder);
+ path.addPath(fname);
+ imagefiles.append(path.toLocalFile());
+ }
foreach(const QString &name, names) {
QDomDocument ret;
QDomElement desc = ret.createElement("description");
ktrans.appendChild(tname);
ktrans.appendChild(desc);
-
Mlt::Properties *metadata = repository->metadata(transition_type, name.toUtf8().data());
if (metadata && metadata->is_valid()) {
// If possible, set name and description.
* Check for Kdenlive installed luma files, add empty string at
* start for no luma file.
*/
- QStringList imagenamelist = QStringList() << i18n("None");
- QStringList imagefiles = QStringList() << QString();
- QStringList filters;
- filters << "*.pgm" << "*.png";
- QStringList customLumas = KGlobal::dirs()->findDirs("appdata", "lumas");
- foreach(QString folder, customLumas) {
- if (!folder.endsWith('/'))
- folder.append('/');
- QStringList filesnames = QDir(folder).entryList(filters, QDir::Files);
- foreach(const QString &fname, filesnames) {
- imagenamelist.append(fname);
- imagefiles.append(folder + fname);
- }
- }
-
- // Check for MLT luma files.
- KUrl folder(mlt_environment("MLT_DATA"));
- folder.addPath("lumas");
- folder.addPath(mlt_environment("MLT_NORMALISATION"));
- QDir lumafolder(folder.path());
- QStringList filesnames = lumafolder.entryList(filters, QDir::Files);
- foreach(const QString &fname, filesnames) {
- imagenamelist.append(fname);
- KUrl path(folder);
- path.addPath(fname);
- imagefiles.append(path.toLocalFile());
- }
// Implement default transitions.
QList<QDomElement> paramList;
} else if (name == "mix") {
tname.appendChild(ret.createTextNode(i18n("Mix")));
} else if (name == "region") {
+ ktrans.setAttribute("id", name);
tname.appendChild(ret.createTextNode(i18n("Region")));
+ desc.appendChild(ret.createTextNode(i18n("Use alpha channel of another clip to create a transition.")));
+ paramList.append(quickParameterFill(ret, i18n("Transparency clip"), "resource", "url", "", "", "", "", "", ""));
+ paramList.append(quickParameterFill(ret, i18n("Geometry"), "composite.geometry", "geometry", "0%,0%:100%x100%:100", "-500;-500;-500;-500;0", "500;500;500;500;100"));
+ paramList.append(quickParameterFill(ret, i18n("Alpha Channel Operation"), "composite.operator", "list", "over", "", "", "over,and,or,xor", "over,and,or,xor"));
+ paramList.append(quickParameterFill(ret, i18n("Align"), "composite.aligned", "bool", "1", "0", "1"));
+ paramList.append(quickParameterFill(ret, i18n("Fill"), "composite.fill", "bool", "1", "0", "1"));
+ paramList.append(quickParameterFill(ret, i18n("Distort"), "composite.distort", "bool", "0", "0", "1"));
+ paramList.append(quickParameterFill(ret, i18n("Wipe File"), "composite.luma", "list", "", "", "", imagefiles.join(","), imagenamelist.join(",")));
+ paramList.append(quickParameterFill(ret, i18n("Wipe Softness"), "composite.softness", "double", "0", "0", "100", "", "", "100"));
+ paramList.append(quickParameterFill(ret, i18n("Wipe Invert"), "composite.luma_invert", "bool", "0", "0", "1"));
+ paramList.append(quickParameterFill(ret, i18n("Force Progressive Rendering"), "composite.progressive", "bool", "1", "0", "1"));
+ paramList.append(quickParameterFill(ret, i18n("Force Deinterlace Overlay"), "composite.deinterlace", "bool", "0", "0", "1"));
}
foreach(const QDomElement &e, paramList)
ktrans.appendChild(e);