]> git.sesse.net Git - kdenlive/blobdiff - plugins/sampleplugin/sampleplugin.cpp
Add background property to rotate filter so that
[kdenlive] / plugins / sampleplugin / sampleplugin.cpp
index 177387f9246d1a71673f7db57bc33ff6bc6c2cad..74b22f8619aba0daad000681babf821c373322fc 100644 (file)
 #include <QDomDocument>
 #include <QInputDialog>
 
-QStringList SamplePlugin::generators() const {
-    return QStringList() << i18n("Countdown") << i18n("Noise");
+QStringList SamplePlugin::generators(const QStringList producers) const
+{
+    QStringList result;
+    if (producers.contains("pango")) result << i18n("Countdown");
+    if (producers.contains("noise")) result << i18n("Noise");
+    return result;
 }
 
 
-KUrl SamplePlugin::generatedClip(const QString &generator, const KUrl &projectFolder, const QStringList &lumaNames, const QStringList &lumaFiles, const double fps, const int width, const int height) {
+KUrl SamplePlugin::generatedClip(const QString &generator, const KUrl &projectFolder, const QStringList &/*lumaNames*/, const QStringList &/*lumaFiles*/, const double fps, const int /*width*/, const int height)
+{
     QString prePath;
     if (generator == i18n("Noise")) {
         prePath = projectFolder.path() + "/noise";
     } else prePath = projectFolder.path() + "/counter";
     int ct = 0;
     QString counter = QString::number(ct).rightJustified(5, '0', false);
-    while (QFile::exists(prePath + counter + ".westley")) {
+    while (QFile::exists(prePath + counter + ".mlt")) {
         ct++;
         counter = QString::number(ct).rightJustified(5, '0', false);
     }
     QDialog d;
-    if (generator == i18n("Noise")) d.setWindowTitle(tr("Create Noise Clip"));
-    else d.setWindowTitle(tr("Create Countdown Clip"));
     Ui::CountDown_UI view;
     view.setupUi(&d);
-    QString clipFile = prePath + counter + ".westley";
-    view.path->setPath(clipFile);
+    if (generator == i18n("Noise")) {
+        d.setWindowTitle(tr("Create Noise Clip"));
+        view.font_label->setHidden(true);
+        view.font->setHidden(true);
+    } else {
+        d.setWindowTitle(tr("Create Countdown Clip"));
+        view.font->setValue(height);
+    }
+
+    // Set single file mode. Default seems to be File::ExistingOnly.
+    view.path->setMode(KFile::File);
+
+    QString clipFile = prePath + counter + ".mlt";
+    view.path->setUrl(KUrl(clipFile));
     if (d.exec() == QDialog::Accepted) {
         QDomDocument doc;
-        QDomElement westley = doc.createElement("westley");
+        QDomElement mlt = doc.createElement("mlt");
         QDomElement playlist = doc.createElement("playlist");
         if (generator == i18n("Noise")) {
             QDomElement prod = doc.createElement("producer");
@@ -70,12 +85,16 @@ KUrl SamplePlugin::generatedClip(const QString &generator, const KUrl &projectFo
                 prod.setAttribute("mlt_service", "pango");
                 prod.setAttribute("in", "0");
                 prod.setAttribute("out", QString::number((int) fps));
-                prod.setAttribute("markup", QString::number(view.duration->value() - i));
+                prod.setAttribute("text", QString::number(view.duration->value() - i));
+                //FIXME: the font and pad values are approximate, the pango producer seems unable
+                // to produce a predictable frame size.
+                prod.setAttribute("font", QString::number(view.font->value()) + "px");
+                //prod.setAttribute("pad", 50);
                 playlist.appendChild(prod);
             }
         }
-        westley.appendChild(playlist);
-        doc.appendChild(westley);
+        mlt.appendChild(playlist);
+        doc.appendChild(mlt);
         QFile file(view.path->url().path());
         if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
             kWarning() << "//////  ERROR writing to file: " << view.path->url().path();
@@ -84,6 +103,11 @@ KUrl SamplePlugin::generatedClip(const QString &generator, const KUrl &projectFo
         }
         QTextStream out(&file);
         out << doc.toString();
+        if (file.error() != QFile::NoError) {
+            KMessageBox::error(0, i18n("Cannot write to file %1", view.path->url().path()));
+            file.close();
+            return KUrl();
+        }
         file.close();
         return view.path->url();
     }