]> git.sesse.net Git - kdenlive/commitdiff
Open dvd wizard after rendering if user asked it
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Jan 2009 17:44:53 +0000 (17:44 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 19 Jan 2009 17:44:53 +0000 (17:44 +0000)
svn path=/branches/KDE4/; revision=2932

src/dvdwizard.cpp
src/dvdwizard.h
src/mainwindow.cpp
src/mainwindow.h
src/renderwidget.cpp
src/renderwidget.h

index 85b248698275c115998c1cdc6f97b51844a0f29d..97fd7ba1ecd25a8c764ae9c551732aab9fc1c243 100644 (file)
@@ -36,7 +36,7 @@
 #include "profilesdialog.h"
 #include "dvdwizard.h"
 
-DvdWizard::DvdWizard(const QString &url, bool isPal, QWidget *parent): QWizard(parent), m_isPal(isPal) {
+DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent): QWizard(parent), m_profile(profile) {
     //setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
     setAttribute(Qt::WA_DeleteOnClose);
     QWizardPage *page1 = new QWizardPage;
@@ -51,7 +51,7 @@ DvdWizard::DvdWizard(const QString &url, bool isPal, QWidget *parent): QWizard(p
     if (!url.isEmpty()) m_vob.vob_1->setPath(url);
 
     m_width = 720;
-    if (m_isPal) m_height = 576;
+    if (m_profile.startsWith("dv_pal")) m_height = 576;
     else m_height = 480;
 
     QWizardPage *page2 = new QWizardPage;
@@ -310,19 +310,21 @@ void DvdWizard::generateDvd() {
 
         QStringList args;
         args.append("-profile");
-        if (m_isPal) args.append("dv_pal");
-        else args.append("dv_ntsc");
+        args.append(m_profile);
         args.append(temp4.fileName());
         args.append("in=0");
         args.append("out=100");
         args << "-consumer" << "avformat:" + temp5.fileName();
-        if (m_isPal) {
+        if (m_profile == "dv_pal") {
             args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=5000k" << "maxrate=8000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x576" << "g=15" << "me_range=63" << "trellis=1" << "profile=dv_pal";
-        } else {
+        } else if (m_profile == "dv_ntsc") {
             args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=6000k" << "maxrate=9000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x480" << "g=18" << "me_range=63" << "trellis=1" << "profile=dv_ntsc";
+        } else if (m_profile == "dv_pal_wide") {
+            args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=5000k" << "maxrate=8000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x576" << "g=15" << "me_range=63" << "trellis=1" << "profile=dv_pal_wide";
+        } else if (m_profile == "dv_ntsc_wide") {
+            args << "f=dvd" << "vcodec=mpeg2video" << "acodec=ac3" << "b=6000k" << "maxrate=9000k" << "minrate=0" << "bufsize=1835008" << "mux_packet_s=2048" << "mux_rate=10080000" << "ab=192k" << "ar=48000" << "s=720x480" << "g=18" << "me_range=63" << "trellis=1" << "profile=dv_ntsc_wide";
         }
 
-
         kDebug() << "MLT ARGS: " << args;
         QProcess renderbg;
         renderbg.start("inigo", args);
index 915632a97e25fbf3cb6cf1567267a840f240219a..e610a70fd18589a3c4109fe73066b625b50036ed 100644 (file)
@@ -43,7 +43,7 @@
 class DvdWizard : public QWizard {
     Q_OBJECT
 public:
-    DvdWizard(const QString &url = QString(), bool isPal = true, QWidget * parent = 0);
+    DvdWizard(const QString &url = QString(), const QString &profile = "dv_pal", QWidget * parent = 0);
     virtual ~DvdWizard();
 
 private:
@@ -52,7 +52,7 @@ private:
     Ui::DvdWizardIso_UI m_iso;
     Ui::DvdWizardStatus_UI m_status;
 
-    bool m_isPal;
+    QString m_profile;
     QGraphicsScene *m_scene;
     QGraphicsTextItem *m_button;
     QGraphicsPixmapItem *m_background;
index 6292528db39fecb0dcf81beab4623837f0a8af94..99000fe580351173217efd4ff7172924eda172d1 100644 (file)
@@ -1400,6 +1400,7 @@ void MainWindow::slotRenderProject() {
         m_renderWidget = new RenderWidget(this);
         connect(m_renderWidget, SIGNAL(doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool)), this, SLOT(slotDoRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool)));
         connect(m_renderWidget, SIGNAL(abortProcess(const QString &)), this, SIGNAL(abortRenderJob(const QString &)));
+        connect(m_renderWidget, SIGNAL(openDvdWizard(const QString &, const QString &)), this, SLOT(slotDvdWizard(const QString &, const QString &)));
         if (m_activeDocument) {
             m_renderWidget->setProfile(m_activeDocument->mltProfile());
             m_renderWidget->setGuides(m_activeDocument->guidesXml(), m_activeDocument->projectDuration());
@@ -2237,8 +2238,8 @@ void MainWindow::slotAutoTransition() {
     m_activeTimeline->projectView()->autoTransition();
 }
 
-void MainWindow::slotDvdWizard(const QString &url) {
-    DvdWizard *w = new DvdWizard(QString(), this);
+void MainWindow::slotDvdWizard(const QString &url, const QString &profile) {
+    DvdWizard *w = new DvdWizard(url, profile, this);
     w->exec();
 }
 
index 36e943288461da8412a2586b52bea9950ddcdb11..f522bb40101bb786623ca1a22a59b8b7c3bc1788 100644 (file)
@@ -289,7 +289,7 @@ private slots:
     void generateClip();
     void slotZoneMoved(int start, int end);
     void slotUpdatePreviewSettings();
-    void slotDvdWizard(const QString &url = QString());
+    void slotDvdWizard(const QString &url = QString(), const QString &profile = "dv_pal");
 
 signals:
     Q_SCRIPTABLE void abortRenderJob(const QString &url);
index 50d21b91d3b71d2552de905526f67152f1d7365b..20a61c70f277777fbdc812068303937e7960576d 100644 (file)
@@ -456,7 +456,17 @@ void RenderWidget::slotExport() {
     if (!existing.isEmpty()) renderItem = existing.at(0);
     else renderItem = new QTreeWidgetItem(m_view.running_jobs, QStringList() << dest << QString());
     // Set rendering type
-    renderItem->setData(0, Qt::UserRole, m_view.size_list->currentItem()->data(MetaGroupRole).toString());
+    QString group = m_view.size_list->currentItem()->data(MetaGroupRole).toString();
+    if (group == "dvd" && m_view.open_dvd->isChecked()) {
+        renderItem->setData(0, Qt::UserRole, group);
+        if (renderArgs.contains("profile=")) {
+            // rendering profile contains an MLT profile, so pass it to the running jog item, usefull for dvd
+            QString prof = renderArgs.section("profile=", 1, 1);
+            prof = prof.section(' ', 0, 0);
+            kDebug() << "// render profile: " << prof;
+            renderItem->setData(0, Qt::UserRole + 1, prof);
+        }
+    }
 
     emit doRender(dest, item->data(RenderRole).toString(), overlayargs, renderArgs.simplified().split(' '), m_view.render_zone->isChecked(), m_view.play_after->isChecked(), startPos, endPos, resizeProfile);
     m_view.tabWidget->setCurrentIndex(1);
@@ -724,6 +734,11 @@ void RenderWidget::setRenderStatus(const QString &dest, int status, const QStrin
         // Job finished successfully
         item->setIcon(0, KIcon("dialog-ok"));
         item->setData(1, Qt::UserRole, 100);
+        QString itemGroup = item->data(0, Qt::UserRole).toString();
+        if (itemGroup == "dvd") {
+            emit openDvdWizard(item->text(0), item->data(0, Qt::UserRole + 1).toString());
+        }
+
     } else if (status == -2) {
         // Rendering crashed
         item->setIcon(0, KIcon("dialog-close"));
index 1a0015a00cb94b9a33415d07ed0657071f26007e..1c4d7a33ac7a854a1d23aa50025bdf60716f1e3f 100644 (file)
@@ -99,6 +99,7 @@ private:
 signals:
     void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double, bool);
     void abortProcess(const QString &url);
+    void openDvdWizard(const QString &url, const QString &profile);
 };