- QDomElement prod = doc.createElement("producer");
- prod.setAttribute("mlt_service", "pango");
- prod.setAttribute("in", "0");
- prod.setAttribute("out", QString::number((int) fps));
- 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);
- }
- }
- 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();
- KMessageBox::error(0, i18n("Cannot write to file %1", view.path->url().path()));
- delete d;
- return KUrl();
- }
- 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();
- delete d;
- return KUrl();
+ args << "pango:" << "in=0" << QString("out=" + QString::number((int) fps * view.duration->value()));
+ args << QString("text=" + QString::number(view.duration->value() - i));
+ args << QString("font=" + QString::number(view.font->value()) + "px");
+ }
+ }
+
+ args << "-consumer"<<QString("xml:%1").arg(view.path->url().path());
+ generatorProcess.start(renderer, args);
+ if (generatorProcess.waitForFinished()) {
+ if (generatorProcess.exitStatus() == QProcess::CrashExit) {
+ kDebug() << "/// Generator failed: ";
+ QString error = generatorProcess.readAllStandardError();
+ KMessageBox::sorry(kapp->activeWindow(), i18n("Failed to generate clip:\n%1", error, i18n("Generator Failed")));
+ }
+ else {
+ result = view.path->url();
+ }
+ } else {
+ kDebug() << "/// Generator failed: ";
+ QString error = generatorProcess.readAllStandardError();
+ KMessageBox::sorry(kapp->activeWindow(), i18n("Failed to generate clip:\n%1", error, i18n("Generator Failed")));