From d528ca2899eeefa3abc20d87d874d12b1b7815eb Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 29 Oct 2008 18:56:30 +0000 Subject: [PATCH] Show transition description as tooltip when moving through the transition combobox svn path=/branches/KDE4/; revision=2593 --- src/effectslist.cpp | 12 +++++++++++- src/effectslist.h | 3 ++- src/initeffects.cpp | 12 +++++++++++- src/transitionsettings.cpp | 3 +++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/effectslist.cpp b/src/effectslist.cpp index ffb5c41b..c4dfe621 100644 --- a/src/effectslist.cpp +++ b/src/effectslist.cpp @@ -126,7 +126,7 @@ QStringList EffectsList::effectNames() { 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); @@ -136,6 +136,16 @@ QString EffectsList::getInfo(const QString & tag, const QString & id) { 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("
Author: ") + 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++) { diff --git a/src/effectslist.h b/src/effectslist.h index cfee7ea7..fe36a0c3 100644 --- a/src/effectslist.h +++ b/src/effectslist.h @@ -39,7 +39,8 @@ public: 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 effect(const QString & name); EffectsList clone() const; static bool hasKeyFrames(QDomElement effect); diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 8ec8551a..b4805ee6 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -511,12 +511,19 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* 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 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"); @@ -566,6 +573,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* 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")); @@ -590,6 +598,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* //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")); @@ -628,6 +637,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* } ktrans.appendChild(tname); + ktrans.appendChild(desc); foreach(const QDomElement &e, paramList) { ktrans.appendChild(e); @@ -643,7 +653,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* */ } - QString wipetrans = "WipeDirection Align"; + QString wipetrans = "WipeSlide image from one side to anotherDirection Align"; QDomDocument ret; ret.setContent(wipetrans); transitions->append(ret.documentElement()); diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index db4f5f6a..fc44e35c 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -31,6 +31,9 @@ TransitionSettings::TransitionSettings(QWidget* parent): QWidget(parent) { 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())); -- 2.39.2