]> git.sesse.net Git - kdenlive/commitdiff
Show transition description as tooltip when moving through the transition combobox
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 29 Oct 2008 18:56:30 +0000 (18:56 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 29 Oct 2008 18:56:30 +0000 (18:56 +0000)
svn path=/branches/KDE4/; revision=2593

src/effectslist.cpp
src/effectslist.h
src/initeffects.cpp
src/transitionsettings.cpp

index ffb5c41bdc5b79b80927c368eae54a6d241aad15..c4dfe621019505551f82241bdb0634508a6940ef 100644 (file)
@@ -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("<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++) {
index cfee7ea7884bf12d8877ef16f2e84de6d13ee9c3..fe36a0c37a196cb6ac6013a0d450726487cfa4fa 100644 (file)
@@ -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 <QString, QString> effect(const QString & name);
     EffectsList clone() const;
     static bool hasKeyFrames(QDomElement effect);
index 8ec8551a87bf468f9e5ad22ce50d8dd2bc0e8cd5..b4805ee68f75c0a63fb0d2ec2dee477888fb45f0 100644 (file)
@@ -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<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");
@@ -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 = "<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());
index db4f5f6ad5843569c010847c80893bb9e9e80d62..fc44e35c650fdea99c163894374395ffbfd9db68 100644 (file)
@@ -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()));