]> git.sesse.net Git - kdenlive/commitdiff
Start of Kdenlive's d-bus interface, bringing a new tab in the render dialog showing...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 14 Jan 2009 23:22:22 +0000 (23:22 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 14 Jan 2009 23:22:22 +0000 (23:22 +0000)
svn path=/branches/KDE4/; revision=2920

renderer/renderjob.cpp
renderer/renderjob.h
src/CMakeLists.txt
src/mainwindow.cpp
src/mainwindow.h
src/org.kdenlive.MainWindow.xml [new file with mode: 0644]
src/renderwidget.cpp
src/renderwidget.h
src/widgets/renderwidget_ui.ui

index 34b8bcd588434a3a3f76306279ad05fa049610a0..13be2397132c0742f91928405572dc09e8a77ca6 100644 (file)
@@ -33,7 +33,7 @@ public:
 
 static QDBusConnection connection(QLatin1String(""));
 
-RenderJob::RenderJob(bool erase, const QString &renderer, const QString &profile, const QString &rendermodule, const QString &player, const QString &scenelist, const QString &dest, const QStringList &preargs, const QStringList &args, int in, int out) : QObject(), m_jobUiserver(NULL) {
+RenderJob::RenderJob(bool erase, const QString &renderer, const QString &profile, const QString &rendermodule, const QString &player, const QString &scenelist, const QString &dest, const QStringList &preargs, const QStringList &args, int in, int out) : QObject(), m_jobUiserver(NULL), m_kdenliveinterface(NULL) {
     m_scenelist = scenelist;
     m_dest = dest;
     m_player = player;
@@ -47,10 +47,9 @@ RenderJob::RenderJob(bool erase, const QString &renderer, const QString &profile
     m_args << preargs;
     //qDebug()<<"PRE ARGS: "<<preargs;
     if (scenelist.startsWith("consumer:")) {
-       // Use MLT's producer_consumer, needs a different syntax for profile:
-       m_args << "profile=" + profile;
-    }
-    else m_args << "-profile" << profile;
+        // Use MLT's producer_consumer, needs a different syntax for profile:
+        m_args << "profile=" + profile;
+    } else m_args << "-profile" << profile;
     m_args << "-consumer" << rendermodule + ":" + m_dest << "progress=1" << args;
     connect(m_renderProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotIsOver(int, QProcess::ExitStatus)));
     m_renderProcess->setReadChannel(QProcess::StandardError);
@@ -102,13 +101,18 @@ void RenderJob::receivedStderr() {
     m_logstream << "ReceivedStderr from inigo: " << result << endl;
     result = result.section(" ", -1);
     int pro = result.toInt();
-    if ( m_jobUiserver && pro > m_progress) {
+    if (m_kdenliveinterface && pro > m_progress) {
+        m_dbusargs[1] = pro;
+        m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+    }
+    if (m_jobUiserver && pro > m_progress) {
         m_progress = pro;
         m_jobUiserver->call("setPercent", (uint) m_progress);
         int seconds = m_startTime.secsTo(QTime::currentTime());
         seconds = seconds * (100 - m_progress) / m_progress;
         m_jobUiserver->call("setDescriptionField", (uint) 1, tr("Remaining time"), QTime(0, 0, seconds).toString("hh:mm:ss"));
     }
+
 }
 
 void RenderJob::start() {
@@ -146,6 +150,31 @@ void RenderJob::start() {
             }
         }
     }
+
+    QString kdenliveId;
+    QDBusConnection connection = QDBusConnection::sessionBus();
+    QDBusConnectionInterface *ibus = connection.interface();
+    const QStringList services = ibus->registeredServiceNames();
+    foreach(const QString &service, services) {
+        if (!service.startsWith("org.kde.kdenlive"))
+            continue;
+        kdenliveId = service;
+        break;
+    }
+
+    QDBusConnection bus = QDBusConnection::sessionBus();
+    m_kdenliveinterface = new QDBusInterface(kdenliveId,
+            "/MainWindow",
+            "org.kdenlive.MainWindow",
+            bus,
+            this);
+
+    if (m_kdenliveinterface) {
+        m_dbusargs.append(m_dest);
+        m_dbusargs.append((int) 0);
+        m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+    }
+
     // Because of the logging, we connect to stderr in all cases.
     connect(m_renderProcess, SIGNAL(readyReadStandardError()), this, SLOT(receivedStderr()));
     m_renderProcess->start(m_prog, m_args);
@@ -162,12 +191,20 @@ void RenderJob::slotIsOver(int exitcode, QProcess::ExitStatus status) {
     }
     if (status == QProcess::CrashExit) {
         // rendering crashed
+        if (m_kdenliveinterface) {
+            m_dbusargs[1] = -2;
+            m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+        }
         QStringList args;
         args << "--error" << tr("Rendering of %1 aborted, resulting video will probably be corrupted.").arg(m_dest);
         m_logstream << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted." << endl;
         qDebug() << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted.";
         QProcess::startDetached("kdialog", args);
     } else {
+        if (m_kdenliveinterface) {
+            m_dbusargs[1] = -1;
+            m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+        }
         QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface();
         if (interface && interface->isServiceRegistered("org.kde.knotify")) {
             QDBusMessage m = QDBusMessage::createMethodCall("org.kde.knotify",
index 57f397d534264abbefbc8367c9adfbfb06501b0c..021131b1b43407e9ac39e8b2e94b4c245d8b13e8 100644 (file)
@@ -51,6 +51,8 @@ private:
     QStringList m_args;
     bool m_erase;
     QDBusInterface *m_jobUiserver;
+    QDBusInterface *m_kdenliveinterface;
+    QList<QVariant> m_dbusargs;
     QTime m_startTime;
     /** \brief Used to create a temporary file for logging */
     QTemporaryFile m_logfile;
index c6af541039e8b471882dba76c695129b7dfbcd86..92d1f516a50e48aaf1752f754302314f8e3ec711 100644 (file)
@@ -23,7 +23,6 @@ ${NEPOMUK_LIBRARIES}
 )
 
 
-
 kde4_add_ui_files(kdenlive_UI
   widgets/timeline_ui.ui
   widgets/monitor_ui.ui
@@ -154,9 +153,10 @@ else(NO_JOGSHUTTLE)
 endif(NO_JOGSHUTTLE)
 
 kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc )
-
+QT4_ADD_DBUS_ADAPTOR(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow)
 kde4_add_executable(kdenlive ${kdenlive_SRCS} ${kdenlive_UI})
 
+
 target_link_libraries(kdenlive 
   ${KDE4_KDEUI_LIBS}
   ${KDE4_KIO_LIBS}
@@ -166,7 +166,7 @@ target_link_libraries(kdenlive
   ${NEPOMUK_LIBRARIES}
   ${KDE4_KNOTIFYCONFIG_LIBRARY}
 )
+
 install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
 install( FILES kdenliveui.rc kdenlive.notifyrc DESTINATION  ${DATA_INSTALL_DIR}/kdenlive )
 install (FILES kdenlivesettings.kcfg DESTINATION share/config.kcfg)
index 67141209d16209899bf61375588f2e986b1074af..dfb8790fcd4a646039574aa475268897467de041 100644 (file)
@@ -57,6 +57,7 @@
 
 
 #include "mainwindow.h"
+#include "mainwindowadaptor.h"
 #include "kdenlivesettings.h"
 #include "kdenlivesettingsdialog.h"
 #include "initeffects.h"
@@ -113,6 +114,12 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
         m_jogProcess(NULL),
 #endif /* NO_JOGSHUTTLE */
         m_findActivated(false), m_initialized(false) {
+
+    // Create DBus interface
+    new MainWindowAdaptor(this);
+    QDBusConnection dbus = QDBusConnection::sessionBus();
+    dbus.registerObject("/MainWindow", this);
+
     setlocale(LC_NUMERIC, "POSIX");
     setFont(KGlobalSettings::toolBarFont());
     parseProfiles(MltPath);
@@ -1459,6 +1466,10 @@ void MainWindow::slotDoRender(const QString &dest, const QString &render, const
     }
 }
 
+void MainWindow::setRenderingProgress(const QString &url, int progress) {
+    if (m_renderWidget) m_renderWidget->setRenderJob(url, progress);
+}
+
 void MainWindow::slotUpdateMousePosition(int pos) {
     if (m_activeDocument)
         switch (m_timecodeFormat->currentIndex()) {
index 3d49259ba8514898fbb75cebba3b286c371a25ca..ba2ca8f9eb4885180cb3dae9740a0ed591c9528d 100644 (file)
@@ -62,6 +62,7 @@ class Transition;
 
 class MainWindow : public KXmlGuiWindow {
     Q_OBJECT
+    Q_CLASSINFO("D-Bus Interface", "org.kdenlive.MainWindow")
 
 public:
     /** Constructor
@@ -195,6 +196,7 @@ private:
 public slots:
     void openFile(const KUrl &url);
     void slotGotProgressInfo(const QString &message, int progress);
+    Q_SCRIPTABLE void setRenderingProgress(const QString &url, int progress);
 
 private slots:
     void newFile(bool showProjectSettings = true);
diff --git a/src/org.kdenlive.MainWindow.xml b/src/org.kdenlive.MainWindow.xml
new file mode 100644 (file)
index 0000000..ac76ad2
--- /dev/null
@@ -0,0 +1,9 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+  <interface name="org.kdenlive.MainWindow">
+    <method name="setRenderingProgress">
+      <arg name="url" type="s" direction="in"/>
+      <arg name="progress" type="i" direction="in"/>
+    </method>
+  </interface>
+</node>
index e1c058bbc7913b7d2a934c95dd6ed0f8ad555d50..99eacdb13ed9712c57da7816cd7847737365430e 100644 (file)
@@ -19,6 +19,9 @@
 
 
 #include <QDomDocument>
+#include <QItemDelegate>
+#include <QTreeWidgetItem>
+#include <QHeaderView>
 
 #include <KStandardDirs>
 #include <KDebug>
@@ -65,6 +68,8 @@ RenderWidget::RenderWidget(QWidget * parent): QDialog(parent) {
     connect(m_view.buttonEdit, SIGNAL(clicked()), this, SLOT(slotEditProfile()));
     connect(m_view.buttonDelete, SIGNAL(clicked()), this, SLOT(slotDeleteProfile()));
     connect(m_view.buttonStart, SIGNAL(clicked()), this, SLOT(slotExport()));
+    connect(m_view.buttonClose, SIGNAL(clicked()), this, SLOT(hide()));
+    connect(m_view.buttonClose2, SIGNAL(clicked()), this, SLOT(hide()));
     connect(m_view.out_file, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButtons()));
     connect(m_view.format_list, SIGNAL(currentRowChanged(int)), this, SLOT(refreshView()));
     connect(m_view.size_list, SIGNAL(currentRowChanged(int)), this, SLOT(refreshParams()));
@@ -86,6 +91,18 @@ RenderWidget::RenderWidget(QWidget * parent): QDialog(parent) {
     m_view.splitter->setStretchFactor(0, 2);
 
     m_view.out_file->setMode(KFile::File);
+
+    m_view.running_jobs->setItemDelegate(new RenderViewDelegate(this));
+    QHeaderView *header = m_view.running_jobs->header();
+    QFontMetrics fm = fontMetrics();
+    //header->resizeSection(0, fm.width("typical-name-for-a-torrent.torrent"));
+    header->setResizeMode(0, QHeaderView::Interactive);
+    header->resizeSection(0, fm.width("typical-name-for-a-file.torrent"));
+    header->setResizeMode(1, QHeaderView::Fixed);
+    header->resizeSection(0, width() * 2 / 3);
+    header->setResizeMode(1, QHeaderView::Interactive);
+    //header->setResizeMode(1, QHeaderView::Fixed);
+
     focusFirstVisibleItem();
 }
 
@@ -616,8 +633,31 @@ void RenderWidget::parseFile(QString exportFile, bool editable) {
     }
 }
 
+void RenderWidget::setRenderJob(const QString &dest, int progress) {
+    QList<QTreeWidgetItem *> existing = m_view.running_jobs->findItems(dest, Qt::MatchExactly);
+    if (!existing.isEmpty()) {
+        if (progress == -1) {
+            // Job finished successfully
+            existing.at(0)->setIcon(0, KIcon("dialog-ok"));
+            existing.at(0)->setData(1, Qt::UserRole, 100);
+        } else if (progress == -2) {
+            // Rendering crashed
+            existing.at(0)->setIcon(0, KIcon("dialog-close"));
+            existing.at(0)->setData(1, Qt::UserRole, 0);
+        } else existing.at(0)->setData(1, Qt::UserRole, progress);
+        return;
+    }
+    QTreeWidgetItem *item = new QTreeWidgetItem(m_view.running_jobs, QStringList() << dest << QString());
+    if (progress == -1) {
+        // Job finished successfully
+        item->setIcon(0, KIcon("dialog-ok"));
+        item->setData(1, Qt::UserRole, 100);
+    } else if (progress == -2) {
+        // Rendering crashed
+        item->setIcon(0, KIcon("dialog-close"));
+        item->setData(1, Qt::UserRole, 0);
+    } else item->setData(1, Qt::UserRole, progress);
 
+}
 
 #include "renderwidget.moc"
-
-
index 1acf1c57ebc0f41fd3be23b2d6804c665217e6c8..f2d44d7121ba5aeea4779bfbb31b31408e8e96a7 100644 (file)
 #include "definitions.h"
 #include "ui_renderwidget_ui.h"
 
+
+// RenderViewDelegate is used to draw the progress bars.
+class RenderViewDelegate : public QItemDelegate {
+    Q_OBJECT
+public:
+    RenderViewDelegate(QWidget *parent) : QItemDelegate(parent) {}
+
+    void paint(QPainter *painter, const QStyleOptionViewItem &option,
+               const QModelIndex &index) const {
+        if (index.column() != 1) {
+            QItemDelegate::paint(painter, option, index);
+            return;
+        }
+
+        // Set up a QStyleOptionProgressBar to precisely mimic the
+        // environment of a progress bar.
+        QStyleOptionProgressBar progressBarOption;
+        progressBarOption.state = QStyle::State_Enabled;
+        progressBarOption.direction = QApplication::layoutDirection();
+        progressBarOption.rect = option.rect;
+        progressBarOption.fontMetrics = QApplication::fontMetrics();
+        progressBarOption.minimum = 0;
+        progressBarOption.maximum = 100;
+        progressBarOption.textAlignment = Qt::AlignCenter;
+        progressBarOption.textVisible = true;
+
+        // Set the progress and text values of the style option.
+        int progress = index.data(Qt::UserRole).toInt();
+        progressBarOption.progress = progress < 0 ? 0 : progress;
+        progressBarOption.text = QString().sprintf("%d%%", progressBarOption.progress);
+
+        // Draw the progress bar onto the view.
+        QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter);
+    }
+};
+
+
 class RenderWidget : public QDialog {
     Q_OBJECT
 
@@ -35,6 +72,7 @@ public:
     void setGuides(QDomElement guidesxml, double duration);
     void focusFirstVisibleItem();
     void setProfile(MltVideoProfile profile);
+    void setRenderJob(const QString &dest, int progress = 0);
 
 private slots:
     void slotUpdateButtons();
@@ -56,6 +94,7 @@ private:
     void parseProfiles(QString group = QString(), QString profile = QString());
     void parseFile(QString exportFile, bool editable);
     void updateButtons();
+
 signals:
     void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool);
 };
index fa268ce5a9622aa3a5cbc28b134eb0902e755607..e9841e9a2cb4cf3842f8e0b53e5a9029cb95fc4c 100644 (file)
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>374</width>
-    <height>379</height>
+    <width>444</width>
+    <height>407</height>
    </rect>
   </property>
   <property name="windowTitle" >
-   <string>Rendering</string>
+   <string>Dialog</string>
   </property>
-  <layout class="QGridLayout" name="gridLayout_3" >
+  <layout class="QGridLayout" name="gridLayout_5" >
+   <property name="margin" >
+    <number>0</number>
+   </property>
    <item row="0" column="0" >
-    <widget class="QLabel" name="label" >
-     <property name="text" >
-      <string>Output file</string>
+    <widget class="QTabWidget" name="tabWidget" >
+     <property name="currentIndex" >
+      <number>0</number>
      </property>
-    </widget>
-   </item>
-   <item row="0" column="1" colspan="2" >
-    <widget class="KUrlRequester" name="out_file" />
-   </item>
-   <item row="1" column="0" colspan="3" >
-    <widget class="QGroupBox" name="groupBox" >
-     <property name="title" >
-      <string/>
-     </property>
-     <layout class="QGridLayout" name="gridLayout" >
-      <item row="0" column="0" >
-       <widget class="QLabel" name="label_3" >
-        <property name="text" >
-         <string>Format</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1" >
-       <spacer name="horizontalSpacer_2" >
-        <property name="orientation" >
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" stdset="0" >
-         <size>
-          <width>165</width>
-          <height>24</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="2" colspan="2" >
-       <widget class="KComboBox" name="format_selection" >
-        <item>
+     <widget class="QWidget" name="tab" >
+      <attribute name="title" >
+       <string>Render Project</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_3" >
+       <item row="0" column="0" >
+        <widget class="QLabel" name="label" >
          <property name="text" >
-          <string>PAL</string>
+          <string>Output file</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" colspan="3" >
+        <widget class="KUrlRequester" name="out_file" />
+       </item>
+       <item row="1" column="0" colspan="4" >
+        <widget class="QGroupBox" name="groupBox" >
+         <property name="title" >
+          <string/>
          </property>
-        </item>
-        <item>
+         <layout class="QGridLayout" name="gridLayout" >
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label_3" >
+            <property name="text" >
+             <string>Format</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <spacer name="horizontalSpacer_2" >
+            <property name="orientation" >
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0" >
+             <size>
+              <width>165</width>
+              <height>24</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item row="0" column="2" colspan="2" >
+           <widget class="KComboBox" name="format_selection" >
+            <item>
+             <property name="text" >
+              <string>PAL</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
+              <string>NTSC</string>
+             </property>
+            </item>
+           </widget>
+          </item>
+          <item row="0" column="4" >
+           <widget class="QToolButton" name="buttonEdit" >
+            <property name="text" >
+             <string>E</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="5" >
+           <widget class="QToolButton" name="buttonInfo" >
+            <property name="text" >
+             <string>I</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="6" >
+           <widget class="QToolButton" name="buttonSave" >
+            <property name="text" >
+             <string>S</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="7" >
+           <widget class="QToolButton" name="buttonDelete" >
+            <property name="text" >
+             <string>D</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0" colspan="8" >
+           <widget class="QSplitter" name="splitter_3" >
+            <property name="orientation" >
+             <enum>Qt::Vertical</enum>
+            </property>
+            <widget class="QSplitter" name="splitter" >
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <widget class="KListWidget" name="format_list" >
+              <property name="sizePolicy" >
+               <sizepolicy vsizetype="Expanding" hsizetype="Preferred" >
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+             <widget class="KListWidget" name="size_list" >
+              <property name="sizePolicy" >
+               <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </widget>
+            <widget class="KTextEdit" name="advanced_params" >
+             <property name="readOnly" >
+              <bool>true</bool>
+             </property>
+             <property name="acceptRichText" >
+              <bool>false</bool>
+             </property>
+            </widget>
+           </widget>
+          </item>
+          <item row="2" column="0" colspan="3" >
+           <widget class="QCheckBox" name="experimentalrender" >
+            <property name="text" >
+             <string>Show experimental formats</string>
+            </property>
+           </widget>
+          </item>
+          <item row="2" column="3" colspan="5" >
+           <widget class="QCheckBox" name="force_progressive" >
+            <property name="text" >
+             <string>Progressive</string>
+            </property>
+            <property name="tristate" >
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="2" column="0" colspan="4" >
+        <layout class="QHBoxLayout" name="horizontalLayout" >
+         <item>
+          <widget class="QRadioButton" name="render_full" >
+           <property name="text" >
+            <string>Full project</string>
+           </property>
+           <property name="checked" >
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="render_zone" >
+           <property name="text" >
+            <string>Selected zone</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QRadioButton" name="render_guide" >
+           <property name="text" >
+            <string>Guide zone</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="3" column="0" colspan="4" >
+        <widget class="QGroupBox" name="guides_box" >
+         <property name="title" >
+          <string/>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_2" >
+          <item row="0" column="0" >
+           <widget class="QLabel" name="label_4" >
+            <property name="text" >
+             <string>From</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1" >
+           <widget class="KComboBox" name="guide_start" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="2" >
+           <widget class="QLabel" name="label_2" >
+            <property name="text" >
+             <string>to</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="3" >
+           <widget class="KComboBox" name="guide_end" >
+            <property name="sizePolicy" >
+             <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="4" column="0" colspan="4" >
+        <layout class="QHBoxLayout" name="horizontalLayout_3" >
+         <item>
+          <widget class="QCheckBox" name="play_after" >
+           <property name="text" >
+            <string>Play after render</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="tc_overlay" >
+           <property name="text" >
+            <string>Timecode overlay</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="5" column="0" colspan="2" >
+        <widget class="KPushButton" name="buttonStart" >
          <property name="text" >
-          <string>NTSC</string>
+          <string>Start Rendering</string>
          </property>
-        </item>
-       </widget>
-      </item>
-      <item row="0" column="4" >
-       <widget class="QToolButton" name="buttonEdit" >
-        <property name="text" >
-         <string>E</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="5" >
-       <widget class="QToolButton" name="buttonInfo" >
-        <property name="text" >
-         <string>I</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="6" >
-       <widget class="QToolButton" name="buttonSave" >
-        <property name="text" >
-         <string>S</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="7" >
-       <widget class="QToolButton" name="buttonDelete" >
-        <property name="text" >
-         <string>D</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0" colspan="8" >
-       <widget class="QSplitter" name="splitter_3" >
-        <property name="orientation" >
-         <enum>Qt::Vertical</enum>
-        </property>
-        <widget class="QSplitter" name="splitter" >
+        </widget>
+       </item>
+       <item row="5" column="2" >
+        <spacer name="horizontalSpacer" >
          <property name="orientation" >
           <enum>Qt::Horizontal</enum>
          </property>
-         <widget class="KListWidget" name="format_list" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Expanding" hsizetype="Preferred" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-         <widget class="KListWidget" name="size_list" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>221</width>
+           <height>24</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="5" column="3" >
+        <widget class="KPushButton" name="buttonClose" >
+         <property name="text" >
+          <string>Close</string>
+         </property>
         </widget>
-        <widget class="KTextEdit" name="advanced_params" >
-         <property name="readOnly" >
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_2" >
+      <attribute name="title" >
+       <string>Current jobs</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_4" >
+       <item row="0" column="0" colspan="3" >
+        <widget class="QTreeWidget" name="running_jobs" >
+         <property name="rootIsDecorated" >
+          <bool>false</bool>
+         </property>
+         <property name="allColumnsShowFocus" >
           <bool>true</bool>
          </property>
-         <property name="acceptRichText" >
+         <property name="headerHidden" >
           <bool>false</bool>
          </property>
+         <property name="columnCount" >
+          <number>2</number>
+         </property>
+         <column>
+          <property name="text" >
+           <string>File</string>
+          </property>
+         </column>
+         <column>
+          <property name="text" >
+           <string>Progress</string>
+          </property>
+         </column>
         </widget>
-       </widget>
-      </item>
-      <item row="2" column="0" colspan="3" >
-       <widget class="QCheckBox" name="experimentalrender" >
-        <property name="text" >
-         <string>Show experimental formats</string>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="3" colspan="5" >
-       <widget class="QCheckBox" name="force_progressive" >
-        <property name="text" >
-         <string>Progressive</string>
-        </property>
-        <property name="tristate" >
-         <bool>true</bool>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item row="2" column="0" colspan="2" >
-    <layout class="QHBoxLayout" name="horizontalLayout" >
-     <item>
-      <widget class="QRadioButton" name="render_full" >
-       <property name="text" >
-        <string>Full project</string>
-       </property>
-       <property name="checked" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="render_zone" >
-       <property name="text" >
-        <string>Selected zone</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="render_guide" >
-       <property name="text" >
-        <string>Guide zone</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item row="3" column="0" colspan="3" >
-    <widget class="QGroupBox" name="guides_box" >
-     <property name="title" >
-      <string/>
-     </property>
-     <layout class="QGridLayout" name="gridLayout_2" >
-      <item row="0" column="0" >
-       <widget class="QLabel" name="label_4" >
-        <property name="text" >
-         <string>From</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1" >
-       <widget class="KComboBox" name="guide_start" >
-        <property name="sizePolicy" >
-         <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="2" >
-       <widget class="QLabel" name="label_2" >
-        <property name="text" >
-         <string>to</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="3" >
-       <widget class="KComboBox" name="guide_end" >
-        <property name="sizePolicy" >
-         <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item row="4" column="0" colspan="3" >
-    <layout class="QHBoxLayout" name="horizontalLayout_3" >
-     <item>
-      <widget class="QCheckBox" name="play_after" >
-       <property name="text" >
-        <string>Play after render</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="tc_overlay" >
-       <property name="text" >
-        <string>Timecode overlay</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item row="5" column="0" >
-    <spacer name="verticalSpacer" >
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0" >
-      <size>
-       <width>20</width>
-       <height>0</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="6" column="0" >
-    <widget class="KPushButton" name="buttonStart" >
-     <property name="text" >
-      <string>Start Rendering</string>
-     </property>
-    </widget>
-   </item>
-   <item row="6" column="1" >
-    <spacer name="horizontalSpacer" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeHint" stdset="0" >
-      <size>
-       <width>153</width>
-       <height>27</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="6" column="2" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Close</set>
-     </property>
+       </item>
+       <item row="1" column="0" >
+        <widget class="QPushButton" name="abort_job" >
+         <property name="text" >
+          <string>Abort Job</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" >
+        <spacer name="horizontalSpacer_3" >
+         <property name="orientation" >
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item row="1" column="2" >
+        <widget class="KPushButton" name="buttonClose2" >
+         <property name="text" >
+          <string>Close</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
   </layout>
   </customwidget>
  </customwidgets>
  <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>RenderWidget_UI</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>RenderWidget_UI</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
 </ui>