]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizard.cpp
re-enable "create iso image" in dvd wizard if rendering fails
[kdenlive] / src / dvdwizard.cpp
index 9b795f789f5fb04b5ce61e29ac14adc2548c546c..3e513df8a7b935566c0624829b7aa7623bd225f1 100644 (file)
@@ -46,7 +46,6 @@ DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent
 {
     setWindowTitle(i18n("DVD Wizard"));
     //setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
-    setAttribute(Qt::WA_DeleteOnClose);
     m_pageVob = new DvdWizardVob(profile, this);
     m_pageVob->setTitle(i18n("Select Files For Your DVD"));
     addPage(m_pageVob);
@@ -67,17 +66,15 @@ DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent
     page4->setTitle(i18n("Creating DVD Image"));
     m_status.setupUi(page4);
     m_status.error_box->setHidden(true);
-    m_status.tmp_folder->setPath(KdenliveSettings::currenttmpfolder());
+    m_status.tmp_folder->setUrl(KUrl(KdenliveSettings::currenttmpfolder()));
     m_status.tmp_folder->setMode(KFile::Directory | KFile::ExistingOnly);
-    m_status.iso_image->setPath(QDir::homePath() + "/untitled.iso");
+    m_status.iso_image->setUrl(KUrl(QDir::homePath() + "/untitled.iso"));
     m_status.iso_image->setFilter("*.iso");
     m_status.iso_image->setMode(KFile::File);
     m_status.iso_image->fileDialog()->setOperationMode(KFileDialog::Saving);
 
     addPage(page4);
 
-
-
     connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotPageChanged(int)));
     connect(m_status.button_start, SIGNAL(clicked()), this, SLOT(slotGenerate()));
     connect(m_status.button_abort, SIGNAL(clicked()), this, SLOT(slotAbort()));
@@ -119,6 +116,7 @@ DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent
 DvdWizard::~DvdWizard()
 {
     // m_menuFile.remove();
+    blockSignals(true);
     delete m_burnMenu;
     if (m_dvdauthor) {
         m_dvdauthor->blockSignals(true);
@@ -138,10 +136,12 @@ void DvdWizard::slotPageChanged(int page)
     //kDebug() << "// PAGE CHGD: " << page << ", ID: " << visitedPages();
     if (page == 0) {
         // Update chapters that were modified in page 1
+        m_pageChapters->stopMonitor();
         m_pageVob->updateChapters(m_pageChapters->chaptersData());
     } else if (page == 1) {
-        m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+        m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->isWide(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
     } else if (page == 2) {
+        m_pageChapters->stopMonitor();
         m_pageMenu->setTargets(m_pageChapters->selectedTitles(), m_pageChapters->selectedTargets());
         m_pageMenu->changeProfile(m_pageVob->isPal());
     }
@@ -237,6 +237,8 @@ void DvdWizard::generateDvd()
                     vobitem->setIcon(KIcon("dialog-close"));
                     m_status.error_log->append(result);
                     m_status.error_box->setHidden(false);
+                   m_status.button_start->setEnabled(true);
+                   m_status.button_abort->setEnabled(false);
                     return;
                 }
             } else {
@@ -245,6 +247,8 @@ void DvdWizard::generateDvd()
                 m_status.error_log->append("<a name=\"result\" /><br><strong>" + i18n("Rendering job timed out"));
                 m_status.error_log->scrollToAnchor("result");
                 m_status.error_box->setHidden(false);
+               m_status.button_start->setEnabled(true);
+               m_status.button_abort->setEnabled(false);
                 return;
             }
             vobitem->setIcon(KIcon("dialog-ok"));
@@ -525,7 +529,8 @@ void DvdWizard::slotRenderFinished(int exitCode, QProcess::ExitStatus status)
     m_mkiso->setProcessChannelMode(QProcess::MergedChannels);
     QListWidgetItem *isoitem =  m_status.job_progress->item(4);
     isoitem->setIcon(KIcon("system-run"));
-    m_mkiso->start("mkisofs", args);
+    if (!KStandardDirs::findExe("genisoimage").isEmpty()) m_mkiso->start("genisoimage", args);
+    else m_mkiso->start("mkisofs", args);
 
 }
 
@@ -654,7 +659,7 @@ void DvdWizard::slotSave()
     KUrl url = KFileDialog::getSaveUrl(KUrl("kfiledialog:///projectfolder"), "*.kdvd", this, i18n("Save DVD Project"));
     if (url.isEmpty()) return;
 
-    if (currentId() == 0) m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
+    if (currentId() == 0) m_pageChapters->setVobFiles(m_pageVob->isPal(), m_pageVob->isWide(), m_pageVob->selectedUrls(), m_pageVob->durations(), m_pageVob->chapters());
 
     QDomDocument doc;
     QDomElement dvdproject = doc.createElement("dvdproject");
@@ -707,8 +712,8 @@ void DvdWizard::slotLoad()
     QString profile = dvdproject.attribute("profile");
     m_pageVob->setProfile(profile);
 
-    m_status.tmp_folder->setPath(dvdproject.attribute("tmp_folder"));
-    m_status.iso_image->setPath(dvdproject.attribute("iso_image"));
+    m_status.tmp_folder->setUrl(KUrl(dvdproject.attribute("tmp_folder")));
+    m_status.iso_image->setUrl(KUrl(dvdproject.attribute("iso_image")));
     m_pageVob->setIntroMovie(dvdproject.attribute("intro_movie"));
 
     QDomNodeList vobs = doc.elementsByTagName("vob");