]> git.sesse.net Git - kdenlive/blobdiff - src/renderwidget.cpp
Fix script rendering not working in some cases (resizing)
[kdenlive] / src / renderwidget.cpp
index 2b0199c4830c382319cb98dd1ccc8820307e53a3..f7df0ab45d2a4d7b986aae7c5fd28018acc66683 100644 (file)
@@ -47,6 +47,8 @@
 #include <QThread>
 #include <QScriptEngine>
 
+#include "locale.h"
+
 
 // Render profiles roles
 const int GroupRole = Qt::UserRole;
@@ -869,7 +871,8 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const
 
     // Set locale for render process if required
     if (QLocale().decimalPoint() != QLocale::system().decimalPoint()) {
-        render_process_args << QString("-locale:%1").arg(QLocale().name());
+       const QString currentLocale = setlocale(LC_NUMERIC, NULL);
+        render_process_args << QString("-locale:%1").arg(currentLocale);
     }
 
     double guideStart = 0;
@@ -991,8 +994,8 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const
         }
         QTextStream outStream(&file);
         outStream << "#! /bin/sh" << "\n" << "\n";
-        outStream << "SOURCE=" << "\"" + playlistPath + "\"" << "\n";
-        outStream << "TARGET=" << "\"" + KUrl(dest).url() + "\"" << "\n";
+        outStream << "SOURCE=" << "\"" + QUrl(playlistPath).toEncoded() + "\"" << "\n";
+        outStream << "TARGET=" << "\"" + QUrl(dest).toEncoded() + "\"" << "\n";
         outStream << "RENDERER=" << "\"" + m_renderer + "\"" << "\n";
         outStream << "MELT=" << "\"" + KdenliveSettings::rendererpath() + "\"" << "\n";
         outStream << "PARAMETERS=" << "\"" + render_process_args.join(" ") + "\"" << "\n";
@@ -1082,6 +1085,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const
             renderItem->setMetadata(url);
         }
     }
+
     renderItem->setData(1, ParametersRole, render_process_args);
     if (exportAudio == false) renderItem->setData(1, ExtraInfoRole, i18n("Video without audio track"));
     else  renderItem->setData(1, ExtraInfoRole, QString());
@@ -1130,7 +1134,7 @@ void RenderWidget::startRendering(RenderJobItem *item)
     } else if (item->type() == ScriptRenderType){
         // Script item
         kDebug()<<"// SCRIPT process: "<<item->data(1, ParametersRole).toString();
-        if (QProcess::startDetached(item->data(1, ParametersRole).toString()) == false) {
+        if (QProcess::startDetached('"' + item->data(1, ParametersRole).toString() + '"') == false) {
             item->setStatus(FAILEDJOB);
         }
     }
@@ -1916,18 +1920,14 @@ void RenderWidget::parseScriptFiles()
             item->setData(0, Qt::UserRole, '1');
         } else item->setIcon(0, KIcon("application-x-executable-script"));
         item->setSizeHint(0, QSize(m_view.scripts_list->columnWidth(0), fontMetrics().height() * 2));
-        item->setData(1, Qt::UserRole, KUrl(target).path());
+        item->setData(1, Qt::UserRole, KUrl(QUrl::fromEncoded(target.toUtf8())).pathOrUrl());
         item->setData(1, Qt::UserRole + 1, scriptpath.path());
     }
-//     bool activate = false;
     QTreeWidgetItem *script = m_view.scripts_list->topLevelItem(0);
     if (script) {
         m_view.scripts_list->setCurrentItem(script);
         script->setSelected(true);
-//         activate = true;
     }
-//    m_view.start_script->setEnabled(activate);
-//    m_view.delete_script->setEnabled(activate);
 }
 
 void RenderWidget::slotCheckScript()