]> git.sesse.net Git - kdenlive/blobdiff - src/renderwidget.h
Fix regression introduced by document validation changes (document profile was not...
[kdenlive] / src / renderwidget.h
index 6f731baa48caac8084f76c1f41ef78a867153c1a..7e4e8fe978022e69f1ee04f39491a0569e76a531 100644 (file)
 #ifndef RENDERWIDGET_H
 #define RENDERWIDGET_H
 
-#include <QDialog>
 #include <QPushButton>
 #include <QPainter>
+#include <QItemDelegate>
 
 #include "definitions.h"
 #include "ui_renderwidget_ui.h"
 
+class QDomElement;
+
 
 // RenderViewDelegate is used to draw the progress bars.
-class RenderViewDelegate : public QItemDelegate {
+class RenderViewDelegate : public QItemDelegate
+{
     Q_OBJECT
 public:
     RenderViewDelegate(QWidget *parent) : QItemDelegate(parent) {}
@@ -41,14 +44,11 @@ public:
             QItemDelegate::paint(painter, option, index);
             return;
         } else if (index.column() == 1) {
-            const bool hover = option.state & (QStyle::State_Selected);
             QRect r1 = option.rect;
             painter->save();
-            if (hover) {
+            if (option.state & (QStyle::State_Selected)) {
                 painter->setPen(option.palette.color(QPalette::HighlightedText));
-                QColor backgroundColor = option.palette.color(QPalette::Highlight);
-                painter->setBrush(QBrush(backgroundColor));
-                painter->fillRect(r1, QBrush(backgroundColor));
+                painter->fillRect(r1, option.palette.highlight());
             } else painter->setPen(option.palette.color(QPalette::Text));
             QFont font = painter->font();
             font.setBold(true);
@@ -61,7 +61,7 @@ public:
             font.setBold(false);
             painter->setFont(font);
             painter->setPen(option.palette.color(QPalette::Mid));
-            painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , index.data(Qt::UserRole + 3).toString());
+            painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , index.data(Qt::UserRole).toString());
             painter->restore();
             return;
         }
@@ -71,12 +71,9 @@ public:
         progressBarOption.state = option.state;
         progressBarOption.direction = QApplication::layoutDirection();
         QRect rect = option.rect;
-        const bool hover = option.state & (QStyle::State_Selected);
-        if (hover) {
+        if (option.state & (QStyle::State_Selected)) {
             painter->setPen(option.palette.color(QPalette::HighlightedText));
-            QColor backgroundColor = option.palette.color(QPalette::Highlight);
-            painter->setBrush(QBrush(backgroundColor));
-            painter->fillRect(rect, QBrush(backgroundColor));
+            painter->fillRect(rect, option.palette.highlight());
         }
 
         int mid = rect.height() / 2;
@@ -100,42 +97,92 @@ public:
 };
 
 
-class RenderWidget : public QDialog {
+// RenderScriptDelegate is used to draw the script items.
+class RenderScriptDelegate : public QItemDelegate
+{
+    Q_OBJECT
+public:
+    RenderScriptDelegate(QWidget *parent) : QItemDelegate(parent) {}
+
+    void paint(QPainter *painter, const QStyleOptionViewItem &option,
+               const QModelIndex &index) const {
+        if (index.column() == 0) {
+            QRect r1 = option.rect;
+            painter->save();
+            if (option.state & (QStyle::State_Selected)) {
+                painter->setPen(option.palette.color(QPalette::HighlightedText));
+                painter->fillRect(r1, option.palette.highlight());
+            } else painter->setPen(option.palette.color(QPalette::Text));
+            QFont font = painter->font();
+            font.setBold(true);
+            painter->setFont(font);
+            int mid = (int)((r1.height() / 2));
+            r1.setBottom(r1.y() + mid);
+            r1.setLeft(r1.left() + 3);
+            QRect r2 = option.rect;
+            r2.setTop(r2.y() + mid);
+            r2.setLeft(r2.left() + 3);
+            painter->drawText(r1, Qt::AlignLeft | Qt::AlignBottom , index.data().toString());
+            font.setBold(false);
+            painter->setFont(font);
+            painter->setPen(option.palette.color(QPalette::Mid));
+            painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , index.data(Qt::UserRole).toString());
+            painter->restore();
+            return;
+        } else QItemDelegate::paint(painter, option, index);
+    }
+};
+
+class RenderWidget : public QDialog
+{
     Q_OBJECT
 
 public:
-    RenderWidget(QWidget * parent = 0);
+    explicit RenderWidget(const QString &projectfolder, QWidget * parent = 0);
     void setGuides(QDomElement guidesxml, double duration);
     void focusFirstVisibleItem();
     void setProfile(MltVideoProfile profile);
     void setRenderJob(const QString &dest, int progress = 0);
     void setRenderStatus(const QString &dest, int status, const QString &error);
+    void setDocumentPath(const QString path);
+    void reloadProfiles();
 
 private slots:
     void slotUpdateButtons(KUrl url);
     void slotUpdateButtons();
-    void slotExport();
+    void slotExport(bool scriptExport = false);
     void refreshView();
     void refreshParams();
     void slotSaveProfile();
     void slotEditProfile();
-    void slotDeleteProfile();
+    void slotDeleteProfile(bool refresh = true);
     void slotUpdateGuideBox();
     void slotCheckStartGuidePosition();
     void slotCheckEndGuidePosition();
     void showInfoPanel();
     void slotAbortCurrentJob();
+    void slotStartScript();
+    void slotDeleteScript();
+    void slotGenerateScript();
+    void parseScriptFiles();
+    void slotCheckScript();
+    void slotCheckJob();
+    void slotEditItem(QListWidgetItem *item);
+    void slotCLeanUpJobs();
+    void slotHideLog();
 
 private:
     Ui::RenderWidget_UI m_view;
     MltVideoProfile m_profile;
-    void parseProfiles(QString group = QString(), QString profile = QString());
+    QString m_projectFolder;
+    void parseProfiles(QString meta = QString(), QString group = QString(), QString profile = QString());
     void parseFile(QString exportFile, bool editable);
     void updateButtons();
     KUrl filenameWithExtension(KUrl url, QString extension);
+    void checkRenderStatus();
 
 signals:
-    void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool);
+    void doRender(const QStringList&, const QStringList&);
     void abortProcess(const QString &url);
     void openDvdWizard(const QString &url, const QString &profile);
 };