]> 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 3167a97a2b68b11001723d85909420d92084d7d3..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,21 +109,36 @@ 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, 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();
     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 setDocumentPath(const QString &path);
     void reloadProfiles();
-    void setRenderProfile(const QString &dest, const QString &group, const QString &name, const QString &url);
+    void setRenderProfile(QMap <QString, QString> props);
     int waitingJobsCount() const;
     QString getFreeScriptName(const QString &prefix = QString());
     bool startWaitingRenderJobs();
@@ -127,6 +147,13 @@ public:
     bool automaticAudioExport() const;
     /** @brief Returns true if user wants audio export. */
     bool selectedAudioExport() const;
+    /** @brief Show / hide proxy settings. */
+    void updateProxyConfig(bool enable);
+    /** @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);
@@ -160,36 +187,46 @@ private slots:
     void slotPlayRendering(QTreeWidgetItem *item, int);
     void slotStartCurrentJob();
     void slotCopyToFavorites();
+    void slotUpdateEncodeThreads(int);
     void slotUpdateRescaleHeight(int);
     void slotUpdateRescaleWidth(int);
     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;
+    void errorMessage(const QString &message);
 
 signals:
     void abortProcess(const QString &url);
     void openDvdWizard(const QString &url, const QString &profile);
     /** Send the infos about rendering that will be saved in the document:
     (profile destination, profile name and url of rendered file */
-    void selectedRenderProfile(const QString &, const QString &, const QString &, const QString &);
+    void selectedRenderProfile(QMap <QString, QString> renderProps);
     void prepareRenderingData(bool scriptExport, bool zoneOnly, const QString &chapterFile);
     void shutdown();
 };