return list;
}
-QString EffectsList::getInfo(const QString & tag, const QString & id) {
+QString EffectsList::getInfo(const QString & tag, const QString & id) const {
QString info;
QDomElement effect = getEffectByTag(tag, id);
QDomNode namenode = effect.elementsByTagName("description").item(0);
return info;
}
+QString EffectsList::getInfoFromIndex(const int ix) const {
+ QString info;
+ QDomElement effect = this->at(ix);
+ QDomNode namenode = effect.elementsByTagName("description").item(0);
+ if (!namenode.isNull()) info = i18n(namenode.toElement().text().toUtf8().data());
+ namenode = effect.elementsByTagName("author").item(0);
+ if (!namenode.isNull()) info.append(i18n("<br><b>Author:</b> ") + i18n(namenode.toElement().text().toUtf8().data()));
+ return info;
+}
+
bool EffectsList::hasKeyFrames(QDomElement effect) {
QDomNodeList params = effect.elementsByTagName("parameter");
for (int i = 0; i < params.count(); i++) {
int hasEffect(const QString & tag, const QString & id) const;
QStringList effectIdInfo(const int ix) const;
QStringList effectNames();
- QString getInfo(const QString & tag, const QString & id);
+ QString getInfo(const QString & tag, const QString & id) const;
+ QString getInfoFromIndex(const int ix) const;
QMap <QString, QString> effect(const QString & name);
EffectsList clone() const;
static bool hasKeyFrames(QDomElement effect);
QDomDocument ret;
QDomElement ktrans = ret.createElement("ktransition");
ret.appendChild(ktrans);
+
ktrans.setAttribute("tag", name);
QDomElement tname = ret.createElement("name");
+
+ QDomElement desc = ret.createElement("description");
+
QList<QDomElement> paramList;
Mlt::Properties *metadata = repository->metadata(transition_type, name.toAscii().data());
//kDebug() << filtername;
if (metadata && metadata->is_valid()) {
+
+ desc.appendChild(ret.createTextNode(metadata->get("description")));
+
Mlt::Properties param_props((mlt_properties) metadata->get_data("parameters"));
for (int j = 0; param_props.is_valid() && j < param_props.count();j++) {
QDomElement params = ret.createElement("parameter");
if (name == "luma") {
tname.appendChild(ret.createTextNode("Luma"));
+ desc.appendChild(ret.createTextNode("Applies a luma transition between the current and next frames"));
QString path(mlt_environment("MLT_DATA"));
path.append("/lumas/").append(mlt_environment("MLT_NORMALISATION"));
//thumbnailer.prepareThumbnailsCall(imagelist);
} else if (name == "composite") {
+ desc.appendChild(ret.createTextNode("A key-framable alpha-channel compositor for two frames."));
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"));
}
ktrans.appendChild(tname);
+ ktrans.appendChild(desc);
foreach(const QDomElement &e, paramList) {
ktrans.appendChild(e);
*/
}
- QString wipetrans = "<ktransition tag=\"composite\" ><name>Wipe</name><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></ktransition>";
+ QString wipetrans = "<ktransition tag=\"composite\" ><name>Wipe</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></ktransition>";
QDomDocument ret;
ret.setContent(wipetrans);
transitions->append(ret.documentElement());
connect(effectEdit, SIGNAL(seekTimeline(int)), this, SIGNAL(seekTimeline(int)));
setEnabled(false);
ui.transitionList->addItems(MainWindow::transitions.effectNames());
+ for (int i = 0; i < ui.transitionList->count(); i++) {
+ ui.transitionList->setItemData(i, MainWindow::transitions.getInfoFromIndex(i), Qt::ToolTipRole);
+ }
//kDebug() << MainWindow::transitions.effectNames().size();
//ui.listWidget->setCurrentRow(0);
connect(ui.transitionList, SIGNAL(activated(int)), this, SLOT(slotTransitionChanged()));