]> git.sesse.net Git - kdenlive/commitdiff
Add messaging system to display MLT errors to the user
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 30 Jun 2009 12:29:12 +0000 (12:29 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 30 Jun 2009 12:29:12 +0000 (12:29 +0000)
svn path=/trunk/kdenlive/; revision=3704

src/definitions.h
src/mainwindow.cpp
src/renderer.cpp

index 660c3ab7538ce452ec80e67c5820b1a07881d47c..a82b894d52ba08d122a4f38b448bbabd6b62f9d5 100644 (file)
 #ifndef DEFINITIONS_H
 #define DEFINITIONS_H
 
+#include "gentime.h"
+
 #include <KLocale>
 
-#include "gentime.h"
+#include <QEvent>
 
 const int FRAME_SIZE = 90;
 const int MAXCLIPDURATION = 15000;
@@ -179,4 +181,19 @@ private:
 
 
 };
+
+class MltErrorEvent : public QEvent
+{
+public:
+    MltErrorEvent(QString message) : QEvent(QEvent::User), m_message(message) {}
+    QString message() const {
+        return m_message;
+    }
+
+private:
+    QString m_message;
+};
+
+
+
 #endif
index b32069c554ca2080566ed8fc976dd64278ccfc72..1e1a66398911c75911125c4ee15b7ef02dac09a3 100644 (file)
@@ -2317,9 +2317,9 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
 
 void MainWindow::customEvent(QEvent* e)
 {
+    kDebug() << "// GOT ERROR";
     if (e->type() == QEvent::User) {
-        // The timeline playing position changed...
-        kDebug() << "RECEIVED JOG EVEMNT!!!";
+        m_messageLabel->setMessage(static_cast <MltErrorEvent *>(e)->message(), ErrorMessage);
     }
 }
 void MainWindow::slotActivateEffectStackView()
@@ -2499,6 +2499,7 @@ bool MainWindow::eventFilter(QObject *obj, QEvent *event)
     }
 }
 
+
 void MainWindow::slotSaveZone(Render *render, QPoint zone)
 {
     KDialog *dialog = new KDialog(this);
index 84913a04a9d174efb3055a27c9430b16594e43c1..5ea80193dc892045616ec4d1858afb1e08cd0e74 100644 (file)
@@ -29,7 +29,6 @@
 #include "definitions.h"
 
 #include <mlt++/Mlt.h>
-//#include <framework/mlt_log.h>
 
 #include <KDebug>
 #include <KStandardDirs>
 #include <stdlib.h>
 
 
-/*
-static void kdenlive_callback(void* ptr, int level, const char* fmt, va_list vl)
+
+static void kdenlive_callback(void* /*ptr*/, int level, const char* fmt, va_list vl)
 {
     if (level > MLT_LOG_ERROR) return;
     QString error;
-    QProcess::startDetached("kdialog", QStringList() << "--error" << error.vsprintf(fmt, vl));
+    QApplication::postEvent(qApp->activeWindow() , new MltErrorEvent(error.vsprintf(fmt, vl).simplified()));
 }
-*/
+
 
 static void consumer_frame_show(mlt_consumer, Render * self, mlt_frame frame_ptr)
 {
@@ -145,7 +144,7 @@ void Render::buildConsumer()
     // FIXME: the event object returned by the listen gets leaked...
     m_mltConsumer->listen("consumer-frame-show", this, (mlt_listener) consumer_frame_show);
     m_mltConsumer->set("rescale", "nearest");
-    //mlt_log_set_callback(kdenlive_callback);
+    mlt_log_set_callback(kdenlive_callback);
 
     QString audioDevice = KdenliveSettings::audiodevicename();
     if (!audioDevice.isEmpty()) {