]> git.sesse.net Git - kdenlive/blob - src/renderwidget.h
File extension is now added automatically when the user selects a file in the file...
[kdenlive] / src / renderwidget.h
1 /***************************************************************************
2  *   Copyright (C) 2008 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
3  *                                                                         *
4  *   This program is free software; you can redistribute it and/or modify  *
5  *   it under the terms of the GNU General Public License as published by  *
6  *   the Free Software Foundation; either version 2 of the License, or     *
7  *   (at your option) any later version.                                   *
8  *                                                                         *
9  *   This program is distributed in the hope that it will be useful,       *
10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12  *   GNU General Public License for more details.                          *
13  *                                                                         *
14  *   You should have received a copy of the GNU General Public License     *
15  *   along with this program; if not, write to the                         *
16  *   Free Software Foundation, Inc.,                                       *
17  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
18  ***************************************************************************/
19
20
21 #ifndef RENDERWIDGET_H
22 #define RENDERWIDGET_H
23
24 #include <QDialog>
25 #include <QPushButton>
26
27 #include "definitions.h"
28 #include "ui_renderwidget_ui.h"
29
30
31 // RenderViewDelegate is used to draw the progress bars.
32 class RenderViewDelegate : public QItemDelegate {
33     Q_OBJECT
34 public:
35     RenderViewDelegate(QWidget *parent) : QItemDelegate(parent) {}
36
37     void paint(QPainter *painter, const QStyleOptionViewItem &option,
38                const QModelIndex &index) const {
39         if (index.column() != 1) {
40             QItemDelegate::paint(painter, option, index);
41             return;
42         }
43
44         // Set up a QStyleOptionProgressBar to precisely mimic the
45         // environment of a progress bar.
46         QStyleOptionProgressBar progressBarOption;
47         progressBarOption.state = QStyle::State_Enabled;
48         progressBarOption.direction = QApplication::layoutDirection();
49         progressBarOption.rect = option.rect;
50         progressBarOption.fontMetrics = QApplication::fontMetrics();
51         progressBarOption.minimum = 0;
52         progressBarOption.maximum = 100;
53         progressBarOption.textAlignment = Qt::AlignCenter;
54         progressBarOption.textVisible = true;
55
56         // Set the progress and text values of the style option.
57         int progress = index.data(Qt::UserRole).toInt();
58         progressBarOption.progress = progress < 0 ? 0 : progress;
59         progressBarOption.text = QString().sprintf("%d%%", progressBarOption.progress);
60
61         // Draw the progress bar onto the view.
62         QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter);
63     }
64 };
65
66
67 class RenderWidget : public QDialog {
68     Q_OBJECT
69
70 public:
71     RenderWidget(QWidget * parent = 0);
72     void setGuides(QDomElement guidesxml, double duration);
73     void focusFirstVisibleItem();
74     void setProfile(MltVideoProfile profile);
75     void setRenderJob(const QString &dest, int progress = 0);
76     void setRenderStatus(const QString &dest, int status, const QString &error);
77
78 private slots:
79     void slotUpdateButtons(KUrl url);
80     void slotUpdateButtons();
81     void slotExport();
82     void refreshView();
83     void refreshParams();
84     void slotSaveProfile();
85     void slotEditProfile();
86     void slotDeleteProfile();
87     void slotUpdateGuideBox();
88     void slotCheckStartGuidePosition();
89     void slotCheckEndGuidePosition();
90     void showInfoPanel();
91     void slotAbortCurrentJob();
92
93 private:
94     Ui::RenderWidget_UI m_view;
95     MltVideoProfile m_profile;
96     void parseProfiles(QString group = QString(), QString profile = QString());
97     void parseFile(QString exportFile, bool editable);
98     void updateButtons();
99     KUrl filenameWithExtension(KUrl url, QString extension);
100
101 signals:
102     void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool);
103     void abortProcess(const QString &url);
104     void openDvdWizard(const QString &url, const QString &profile);
105 };
106
107
108 #endif
109