]> git.sesse.net Git - kdenlive/blobdiff - src/renderwidget.h
Make renderjobs code a bit easier to read, fix detection of broken render scripts
[kdenlive] / src / renderwidget.h
index 6dd8ac4cad11b263945d1bf1eb73ba6f21ae25ce..5cadb060996427e23f54cc9513b75211c17c5494 100644 (file)
 #ifndef RENDERWIDGET_H
 #define RENDERWIDGET_H
 
+#include <kdeversion.h>
+#if KDE_IS_VERSION(4,7,0)
+#include <KMessageWidget>
+#endif
+
 #include <QPushButton>
 #include <QPainter>
 #include <QStyledItemDelegate>
@@ -104,12 +109,27 @@ public:
 };
 
 
+class RenderJobItem: public QTreeWidgetItem
+{
+public:
+    explicit RenderJobItem(QTreeWidget * parent, const QStringList & strings, int type = QTreeWidgetItem::Type);
+    void setStatus(int status);
+    int status() const;
+    void setMetadata(const QString &data);
+    const QString metadata() const;
+    void render();
+
+private:
+    int m_status;
+    QString m_data;    
+};
+
 class RenderWidget : public QDialog
 {
     Q_OBJECT
 
 public:
-    explicit RenderWidget(const QString &projectfolder, bool enableProxy, QWidget * parent = 0);
+    explicit RenderWidget(const QString &projectfolder, bool enableProxy, MltVideoProfile profile, QWidget * parent = 0);
     virtual ~RenderWidget();
     void setGuides(QDomElement guidesxml, double duration);
     void focusFirstVisibleItem();
@@ -132,6 +152,9 @@ public:
     /** @brief Should we render using proxy clips. */
     bool proxyRendering();
 
+protected:
+    virtual QSize sizeHint() const;
+
 public slots:
     void slotExport(bool scriptExport, int zoneIn, int zoneOut, const QString &playlistPath, const QString &scriptPath, bool exportAudio);
 
@@ -170,21 +193,29 @@ private slots:
     void slotSwitchAspectRatio();
     /** @brief Update export audio label depending on current settings. */
     void slotUpdateAudioLabel(int ix);
+    /** @brief Enable / disable the rescale options. */
+    void setRescaleEnabled(bool enable);
 
 private:
     Ui::RenderWidget_UI m_view;
-    MltVideoProfile m_profile;
     QString m_projectFolder;
+    MltVideoProfile m_profile;
     RenderViewDelegate *m_scriptsDelegate;
     RenderViewDelegate *m_jobsDelegate;
     bool m_blockProcessing;
     QString m_renderer;
+
+#if KDE_IS_VERSION(4,7,0)
+    KMessageWidget *m_infoMessage;
+#endif
+
     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);
+    /** @brief Check if a job needs to be started. */
     void checkRenderStatus();
-    void startRendering(QTreeWidgetItem *item);
+    void startRendering(RenderJobItem *item);
     void saveProfile(QDomElement newprofile);
     QList <QListWidgetItem *> m_renderItems;
     QList <QListWidgetItem *> m_renderCategory;