]> git.sesse.net Git - kdenlive/commitdiff
New Dvd wizard (in menu File).
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 18 Jan 2009 02:22:30 +0000 (02:22 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 18 Jan 2009 02:22:30 +0000 (02:22 +0000)
Fix some mem leaks

svn path=/branches/KDE4/; revision=2928

15 files changed:
src/CMakeLists.txt
src/dvdwizard.cpp [new file with mode: 0644]
src/dvdwizard.h [new file with mode: 0644]
src/headertrack.cpp
src/headertrack.h
src/kdenliveui.rc
src/mainwindow.cpp
src/mainwindow.h
src/projectlist.cpp
src/titlewidget.cpp
src/titlewidget.h
src/widgets/dvdwizardiso_ui.ui [new file with mode: 0644]
src/widgets/dvdwizardmenu_ui.ui [new file with mode: 0644]
src/widgets/dvdwizardstatus_ui.ui [new file with mode: 0644]
src/widgets/dvdwizardvob_ui.ui [new file with mode: 0644]

index 92d1f516a50e48aaf1752f754302314f8e3ec711..d85e13384d3095f90369a5d1b027602ded69bbd2 100644 (file)
@@ -64,6 +64,10 @@ kde4_add_ui_files(kdenlive_UI
   widgets/wizardmltcheck_ui.ui
   widgets/spacerdialog_ui.ui
   widgets/addtrack_ui.ui
+  widgets/dvdwizardvob_ui.ui
+  widgets/dvdwizardmenu_ui.ui
+  widgets/dvdwizardiso_ui.ui
+  widgets/dvdwizardstatus_ui.ui
 )
  
 set(kdenlive_SRCS 
@@ -142,6 +146,7 @@ set(kdenlive_SRCS
   addtrackcommand.cpp
   changetrackcommand.cpp
   movegroupcommand.cpp
+  dvdwizard.cpp
 )
 
 add_definitions( ${KDE4_DEFINITIONS} )
diff --git a/src/dvdwizard.cpp b/src/dvdwizard.cpp
new file mode 100644 (file)
index 0000000..ec3dddc
--- /dev/null
@@ -0,0 +1,504 @@
+/***************************************************************************
+ *   Copyright (C) 2007 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
+ ***************************************************************************/
+
+#include <QLabel>
+#include <QFile>
+#include <QXmlStreamWriter>
+#include <QApplication>
+#include <QTimer>
+#include <QGraphicsView>
+#include <QDomDocument>
+
+#include <KStandardDirs>
+#include <KLocale>
+#include <KFileDialog>
+#include <kmimetype.h>
+#include <KIO/NetAccess>
+#include <KMessageBox>
+
+#include "kdenlivesettings.h"
+#include "profilesdialog.h"
+#include "dvdwizard.h"
+
+DvdWizard::DvdWizard(const QString &url, bool isPal, QWidget *parent): QWizard(parent), m_isPal(isPal) {
+    //setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png")));
+    setAttribute(Qt::WA_DeleteOnClose);
+    QWizardPage *page1 = new QWizardPage;
+    page1->setTitle(i18n("Select Files For Your Dvd"));
+    m_vob.setupUi(page1);
+    addPage(page1);
+    m_vob.intro_vob->setEnabled(false);
+    m_vob.vob_1->setFilter("video/mpeg");
+    m_vob.intro_vob->setFilter("video/mpeg");
+    connect(m_vob.use_intro, SIGNAL(toggled(bool)), m_vob.intro_vob, SLOT(setEnabled(bool)));
+    connect(m_vob.vob_1, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &)));
+    if (!url.isEmpty()) m_vob.vob_1->setPath(url);
+
+    m_width = 720;
+    if (m_isPal) m_height = 576;
+    else m_height = 480;
+
+    QWizardPage *page2 = new QWizardPage;
+    page2->setTitle(i18n("Create Dvd Menu"));
+    m_menu.setupUi(page2);
+    m_menu.play_text->setText(i18n("Play"));
+    m_scene = new QGraphicsScene(0, 0, m_width, m_height, this);
+    m_menu.menu_preview->setScene(m_scene);
+
+    // Create color background
+    m_color = new QGraphicsRectItem(0, 0, m_width, m_height);
+    m_color->setBrush(m_menu.background_color->color());
+    m_scene->addItem(m_color);
+
+    // create background image
+    m_background = new QGraphicsPixmapItem();
+    //m_scene->addItem(m_background);
+
+    // create menu button
+    m_button = new QGraphicsTextItem(m_menu.play_text->text());
+    QFont font = m_menu.font_family->currentFont();
+    font.setPixelSize(m_menu.font_size->value());
+    font.setStyleStrategy(QFont::NoAntialias);
+    m_button->setFont(font);
+    m_button->setDefaultTextColor(m_menu.text_color->color());
+    m_button->setZValue(2);
+    m_button->setFlags(QGraphicsItem::ItemIsMovable);
+    QRectF r = m_button->sceneBoundingRect();
+    m_button->setPos((m_width - r.width()) / 2, (m_height - r.height()) / 2);
+    m_scene->addItem(m_button);
+
+    // create safe zone rect
+    int safeW = m_width / 20;
+    int safeH = m_height / 20;
+    m_safeRect = new QGraphicsRectItem(safeW, safeH, m_width - 2 * safeW, m_height - 2 * safeH);
+    QPen pen(Qt::red);
+    pen.setStyle(Qt::DashLine);
+    pen.setWidth(3);
+    m_safeRect->setPen(pen);
+    m_safeRect->setZValue(3);
+    m_scene->addItem(m_safeRect);
+
+    addPage(page2);
+    //m_menu.menu_preview->resize(m_width / 2, m_height / 2);
+    m_menu.menu_preview->setSceneRect(0, 0, m_width, m_height);
+    QMatrix matrix;
+    matrix.scale(0.5, 0.5);
+    m_menu.menu_preview->setMatrix(matrix);
+    m_menu.menu_preview->setMinimumSize(m_width / 2 + 4, m_height / 2 + 8);
+    //m_menu.menu_preview->resizefitInView(0, 0, m_width, m_height);
+
+    connect(m_menu.is_color, SIGNAL(toggled(bool)), this, SLOT(checkBackground()));
+    connect(m_menu.play_text, SIGNAL(textChanged(const QString &)), this, SLOT(buildButton()));
+    connect(m_menu.text_color, SIGNAL(changed(const QColor &)), this, SLOT(buildButton()));
+    connect(m_menu.font_size, SIGNAL(valueChanged(int)), this, SLOT(buildButton()));
+    connect(m_menu.font_family, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(buildButton()));
+    connect(m_menu.background_image, SIGNAL(textChanged(const QString &)), this, SLOT(buildImage()));
+    connect(m_menu.background_color, SIGNAL(changed(const QColor &)), this, SLOT(buildColor()));
+    connect(m_menu.create_menu, SIGNAL(toggled(bool)), m_menu.menu_box, SLOT(setEnabled(bool)));
+    m_menu.menu_box->setEnabled(false);
+
+
+    QWizardPage *page3 = new QWizardPage;
+    page3->setTitle(i18n("Dvd Image"));
+    m_iso.setupUi(page3);
+    m_iso.tmp_folder->setPath(KdenliveSettings::currenttmpfolder());
+    m_iso.iso_image->setPath(QDir::homePath() + "/untitled.iso");
+    m_iso.iso_image->setFilter("*.iso");
+    m_iso.iso_image->fileDialog()->setOperationMode(KFileDialog::Saving);
+    addPage(page3);
+
+    QWizardPage *page4 = new QWizardPage;
+    page4->setTitle(i18n("Creating Dvd Image"));
+    m_status.setupUi(page4);
+    addPage(page4);
+
+    connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotPageChanged(int)));
+
+//    connect(m_standard.button_all, SIGNAL(toggled(bool)), this, SLOT(slotCheckStandard()));
+}
+
+DvdWizard::~DvdWizard() {
+    delete m_button;
+    delete m_color;
+    delete m_safeRect;
+    delete m_background;
+    delete m_scene;
+    m_menuFile.remove();
+}
+
+
+void DvdWizard::slotPageChanged(int page) {
+    kDebug() << "// PAGE CHGD: " << page;
+    if (page == 1) {
+        //if (m_vob.vob_1->text().isEmpty()) back();
+    }
+    if (page == 3) {
+        KIO::NetAccess::del(KUrl(m_iso.tmp_folder->text() + "/DVD"), this);
+        QTimer::singleShot(300, this, SLOT(generateDvd()));
+    }
+}
+
+void DvdWizard::slotCheckVobList(const QString &text) {
+    QList<KUrlRequester *> allUrls = m_vob.vob_list->findChildren<KUrlRequester *>();
+    int count = allUrls.count();
+    kDebug() << "// FOUND " << count << " URLS";
+    if (count == 1) {
+        if (text.isEmpty()) return;
+        // insert second urlrequester
+        KUrlRequester *vob = new KUrlRequester(this);
+        vob->setFilter("video/mpeg");
+        m_vob.vob_list->layout()->addWidget(vob);
+        connect(vob, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &)));
+    } else if (text.isEmpty()) {
+        if (allUrls.at(count - 1)->text().isEmpty() && allUrls.at(count - 2)->text().isEmpty()) {
+            // The last 2 urlrequesters are empty, remove last one
+            KUrlRequester *vob = allUrls.takeLast();
+            delete vob;
+        }
+    } else {
+        if (allUrls.at(count - 1)->text().isEmpty()) return;
+        KUrlRequester *vob = new KUrlRequester(this);
+        vob->setFilter("video/mpeg");
+        m_vob.vob_list->layout()->addWidget(vob);
+        connect(vob, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &)));
+    }
+}
+
+void DvdWizard::buildColor() {
+    m_color->setBrush(m_menu.background_color->color());
+}
+
+void DvdWizard::buildImage() {
+    if (m_menu.background_image->url().isEmpty()) {
+        m_scene->removeItem(m_background);
+        return;
+    }
+    QPixmap pix;
+    if (!pix.load(m_menu.background_image->url().path())) {
+        m_scene->removeItem(m_background);
+        return;
+    }
+    pix = pix.scaled(m_width, m_height);
+    m_background->setPixmap(pix);
+    if (!m_menu.is_color->isChecked()) m_scene->addItem(m_background);
+}
+
+void DvdWizard::checkBackground() {
+    if (m_menu.is_color->isChecked()) {
+        m_scene->addItem(m_color);
+        m_scene->removeItem(m_background);
+    } else {
+        m_scene->addItem(m_background);
+        m_scene->removeItem(m_color);
+    }
+}
+
+void DvdWizard::buildButton() {
+    m_button->setPlainText(m_menu.play_text->text());
+    QFont font = m_menu.font_family->currentFont();
+    font.setPixelSize(m_menu.font_size->value());
+    font.setStyleStrategy(QFont::NoAntialias);
+    m_button->setFont(font);
+    m_button->setDefaultTextColor(m_menu.text_color->color());
+}
+
+
+void DvdWizard::generateDvd() {
+    KTemporaryFile temp1;
+    temp1.setSuffix(".png");
+    //temp1.setAutoRemove(false);
+    temp1.open();
+
+    KTemporaryFile temp2;
+    temp2.setSuffix(".png");
+    //temp2.setAutoRemove(false);
+    temp2.open();
+
+    KTemporaryFile temp3;
+    temp3.setSuffix(".png");
+    //temp3.setAutoRemove(false);
+    temp3.open();
+
+    KTemporaryFile temp4;
+    temp4.setSuffix(".png");
+    //temp4.setAutoRemove(false);
+    temp4.open();
+
+    KTemporaryFile temp5;
+    temp5.setSuffix(".vob");
+    //temp5.setAutoRemove(false);
+    temp5.open();
+
+    KTemporaryFile temp6;
+    temp6.setSuffix(".xml");
+    //temp6.setAutoRemove(false);
+    temp6.open();
+
+    m_menuFile.setSuffix(".mpg");
+    m_menuFile.setAutoRemove(false);
+    m_menuFile.open();
+
+    m_authorFile.setSuffix(".xml");
+    m_authorFile.setAutoRemove(false);
+    m_authorFile.open();
+
+    QListWidgetItem *images =  m_status.job_progress->item(0);
+    images->setIcon(KIcon("system-run"));
+    qApp->processEvents();
+
+    if (m_menu.create_menu->isChecked()) {
+
+        QImage img(m_width, m_height, QImage::Format_ARGB32);
+        QPainter p(&img);
+        m_scene->removeItem(m_safeRect);
+        m_scene->removeItem(m_color);
+        m_scene->removeItem(m_background);
+        m_scene->render(&p, QRectF(0, 0, m_width, m_height));
+        p.end();
+        img.setNumColors(4);
+        img.save(temp1.fileName());
+
+        m_button->setDefaultTextColor(m_menu.selected_color->color());
+        p.begin(&img);
+        m_scene->render(&p, QRectF(0, 0, m_width, m_height));
+        p.end();
+        img.setNumColors(4);
+        img.save(temp2.fileName());
+
+        m_button->setDefaultTextColor(m_menu.highlighted_color->color());
+        p.begin(&img);
+        m_scene->render(&p, QRectF(0, 0, m_width, m_height));
+        p.end();
+        img.setNumColors(4);
+        img.save(temp3.fileName());
+
+        m_scene->removeItem(m_button);
+        if (m_menu.is_color->isChecked()) m_scene->addItem(m_color);
+        else m_scene->addItem(m_background);
+
+
+        p.begin(&img);
+        m_scene->render(&p, QRectF(0, 0, m_width, m_height));
+        p.end();
+        img.save(temp4.fileName());
+
+
+        images->setIcon(KIcon("dialog-ok"));
+
+        kDebug() << "/// STARTING MLT VOB CREATION";
+
+        // create menu vob file
+        QListWidgetItem *vobitem =  m_status.job_progress->item(1);
+        vobitem->setIcon(KIcon("system-run"));
+        qApp->processEvents();
+
+        QStringList args;
+        args.append("-profile");
+        if (m_isPal) args.append("dv_pal");
+        else args.append("dv_ntsc");
+        args.append(temp4.fileName());
+        args.append("in=0");
+        args.append("out=100");
+        args << "-consumer" << "avformat:" + temp5.fileName();
+        if (m_isPal) {
+            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 {
+            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";
+        }
+
+
+        kDebug() << "MLT ARGS: " << args;
+        QProcess renderbg;
+        renderbg.start("inigo", args);
+        if (renderbg.waitForFinished()) {
+            if (renderbg.exitStatus() == QProcess::CrashExit) {
+                kDebug() << "/// RENDERING MENU vob crashed";
+                vobitem->setIcon(KIcon("dialog-close"));
+                return;
+            }
+        } else {
+            kDebug() << "/// RENDERING MENU vob timed out";
+            vobitem->setIcon(KIcon("dialog-close"));
+            return;
+        }
+
+        vobitem->setIcon(KIcon("dialog-ok"));
+        kDebug() << "/// STARTING SPUMUX";
+
+        // create xml spumux file
+        QListWidgetItem *spuitem =  m_status.job_progress->item(2);
+        spuitem->setIcon(KIcon("system-run"));
+        qApp->processEvents();
+        QDomDocument doc;
+        QDomElement sub = doc.createElement("subpictures");
+        doc.appendChild(sub);
+        QDomElement stream = doc.createElement("stream");
+        sub.appendChild(stream);
+        QDomElement spu = doc.createElement("spu");
+        stream.appendChild(spu);
+        spu.setAttribute("force", "yes");
+        spu.setAttribute("start", "00:00:00.00");
+        spu.setAttribute("image", temp1.fileName());
+        spu.setAttribute("select", temp2.fileName());
+        spu.setAttribute("highlight", temp3.fileName());
+        spu.setAttribute("autooutline", "infer");
+        spu.setAttribute("outlinewidth", "12");
+        spu.setAttribute("autoorder", "rows");
+
+        QFile data(temp6.fileName());
+        if (data.open(QFile::WriteOnly)) {
+            QTextStream out(&data);
+            out << doc.toString();
+        }
+        data.close();
+
+        kDebug() << " SPUMUX DATA: " << doc.toString();
+
+        args.clear();
+        args.append(temp6.fileName());
+        kDebug() << "SPM ARGS: " << args;
+
+        QProcess spumux;
+        spumux.setStandardInputFile(temp5.fileName());
+        spumux.setStandardOutputFile(m_menuFile.fileName());
+        spumux.start("spumux", args);
+        spumux.setProcessChannelMode(QProcess::MergedChannels);
+        if (spumux.waitForFinished()) {
+            kDebug() << QString(spumux.readAll()).simplified();
+            if (spumux.exitStatus() == QProcess::CrashExit) {
+                kDebug() << "/// RENDERING SPUMUX MENU crashed";
+                spuitem->setIcon(KIcon("dialog-close"));
+                return;
+            }
+        } else {
+            kDebug() << "/// RENDERING SPUMUX MENU timed out";
+            spuitem->setIcon(KIcon("dialog-close"));
+            return;
+        }
+
+        spuitem->setIcon(KIcon("dialog-ok"));
+        kDebug() << "/// DONE: " << m_menuFile.fileName();
+    }
+
+    // create dvdauthor xml
+    QListWidgetItem *authitem =  m_status.job_progress->item(3);
+    authitem->setIcon(KIcon("system-run"));
+    qApp->processEvents();
+    KIO::NetAccess::mkdir(KUrl(m_iso.tmp_folder->text() + "/DVD"), this);
+
+    QDomDocument dvddoc;
+    QDomElement auth = dvddoc.createElement("dvdauthor");
+    auth.setAttribute("dest", m_iso.tmp_folder->text() + "/DVD");
+    dvddoc.appendChild(auth);
+    QDomElement vmgm = dvddoc.createElement("vmgm");
+    auth.appendChild(vmgm);
+    if (m_menu.create_menu->isChecked()) {
+        QDomElement menus = dvddoc.createElement("menus");
+        vmgm.appendChild(menus);
+        QDomElement pgc = dvddoc.createElement("pgc");
+        menus.appendChild(pgc);
+        QDomElement button = dvddoc.createElement("button");
+        QDomText nametext = dvddoc.createTextNode("jump title 1;");
+        button.appendChild(nametext);
+        pgc.appendChild(button);
+        QDomElement menuvob = dvddoc.createElement("vob");
+        menuvob.setAttribute("file", m_menuFile.fileName());
+        menuvob.setAttribute("pause", "inf");
+        pgc.appendChild(menuvob);
+    }
+    QDomElement titleset = dvddoc.createElement("titleset");
+    auth.appendChild(titleset);
+    QDomElement titles = dvddoc.createElement("titles");
+    titleset.appendChild(titles);
+    QDomElement pgc2 = dvddoc.createElement("pgc");
+    titles.appendChild(pgc2);
+    if (m_menu.create_menu->isChecked()) {
+        QDomElement post = dvddoc.createElement("post");
+        QDomText call = dvddoc.createTextNode("call vmgm menu 1;");
+        post.appendChild(call);
+        pgc2.appendChild(post);
+    }
+    QList<KUrlRequester *> allUrls = m_vob.vob_list->findChildren<KUrlRequester *>();
+    for (int i = 0; i < allUrls.count(); i++) {
+        if (!allUrls.at(i)->text().isEmpty()) {
+            // Add vob entry
+            QDomElement vob = dvddoc.createElement("vob");
+            vob.setAttribute("file", allUrls.at(i)->text());
+            pgc2.appendChild(vob);
+        }
+    }
+
+    QFile data2(m_authorFile.fileName());
+    if (data2.open(QFile::WriteOnly)) {
+        QTextStream out(&data2);
+        out << dvddoc.toString();
+    }
+    data2.close();
+
+
+    QStringList args;
+    args << "-x" << m_authorFile.fileName();
+    kDebug() << "// DVDAUTH ARGS: " << args;
+    QProcess *dvdauth = new QProcess(this);
+    connect(dvdauth, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotRenderFinished(int, QProcess::ExitStatus)));
+    dvdauth->setProcessChannelMode(QProcess::MergedChannels);
+    dvdauth->start("dvdauthor", args);
+
+}
+
+void DvdWizard::slotRenderFinished(int exitCode, QProcess::ExitStatus status) {
+    QListWidgetItem *authitem =  m_status.job_progress->item(3);
+    if (status == QProcess::CrashExit) {
+        kDebug() << "DVDAuthor process crashed";
+        authitem->setIcon(KIcon("dialog-close"));
+        return;
+    }
+    authitem->setIcon(KIcon("dialog-ok"));
+    qApp->processEvents();
+    QStringList args;
+    args << "-dvd-video" << "-v" << "-o" << m_iso.iso_image->text() << m_iso.tmp_folder->text() + "/DVD";
+    QProcess *mkiso = new QProcess(this);
+    connect(mkiso, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotIsoFinished(int, QProcess::ExitStatus)));
+    mkiso->setProcessChannelMode(QProcess::MergedChannels);
+    QListWidgetItem *isoitem =  m_status.job_progress->item(4);
+    isoitem->setIcon(KIcon("system-run"));
+    mkiso->start("mkisofs", args);
+
+}
+
+void DvdWizard::slotIsoFinished(int exitCode, QProcess::ExitStatus status) {
+    QListWidgetItem *isoitem =  m_status.job_progress->item(4);
+    if (status == QProcess::CrashExit) {
+        m_authorFile.remove();
+        m_menuFile.remove();
+        KIO::NetAccess::del(KUrl(m_iso.tmp_folder->text() + "/DVD"), this);
+        kDebug() << "Iso process crashed";
+        isoitem->setIcon(KIcon("dialog-close"));
+        return;
+    }
+    isoitem->setIcon(KIcon("dialog-ok"));
+    kDebug() << "ISO IMAGE " << m_iso.iso_image->text() << " Successfully created";
+    m_authorFile.remove();
+    m_menuFile.remove();
+    KIO::NetAccess::del(KUrl(m_iso.tmp_folder->text() + "/DVD"), this);
+    KMessageBox::information(this, i18n("Dvd iso image %1 successfully created.", m_iso.iso_image->text()));
+
+}
+
+
diff --git a/src/dvdwizard.h b/src/dvdwizard.h
new file mode 100644 (file)
index 0000000..915632a
--- /dev/null
@@ -0,0 +1,79 @@
+/***************************************************************************
+ *   Copyright (C) 2008 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
+ ***************************************************************************/
+
+
+#ifndef DVDWIZARD_H
+#define DVDWIZARD_H
+
+#include <QWizard>
+#include <QVBoxLayout>
+#include <QItemDelegate>
+#include <QPainter>
+#include <QGraphicsScene>
+#include <QGraphicsTextItem>
+#include <QGraphicsPixmapItem>
+#include <QGraphicsRectItem>
+#include <QProcess>
+
+
+#include <KDebug>
+#include <KTemporaryFile>
+
+#include "ui_dvdwizardvob_ui.h"
+#include "ui_dvdwizardmenu_ui.h"
+#include "ui_dvdwizardiso_ui.h"
+#include "ui_dvdwizardstatus_ui.h"
+
+class DvdWizard : public QWizard {
+    Q_OBJECT
+public:
+    DvdWizard(const QString &url = QString(), bool isPal = true, QWidget * parent = 0);
+    virtual ~DvdWizard();
+
+private:
+    Ui::DvdWizardVob_UI m_vob;
+    Ui::DvdWizardMenu_UI m_menu;
+    Ui::DvdWizardIso_UI m_iso;
+    Ui::DvdWizardStatus_UI m_status;
+
+    bool m_isPal;
+    QGraphicsScene *m_scene;
+    QGraphicsTextItem *m_button;
+    QGraphicsPixmapItem *m_background;
+    QGraphicsRectItem *m_color;
+    QGraphicsRectItem *m_safeRect;
+    int m_width;
+    int m_height;
+    KTemporaryFile m_menuFile;
+    KTemporaryFile m_authorFile;
+
+private slots:
+    void slotCheckVobList(const QString &text);
+    void buildButton();
+    void buildColor();
+    void buildImage();
+    void checkBackground();
+    void slotPageChanged(int page);
+    void slotRenderFinished(int exitCode, QProcess::ExitStatus status);
+    void slotIsoFinished(int exitCode, QProcess::ExitStatus status);
+    void generateDvd();
+};
+
+#endif
+
index e901fdb724147a7b0332eb792670dacbd3e1ce13..5af3874d009aa1cc6e455a34ba6b3725386a1fdb 100644 (file)
@@ -66,6 +66,10 @@ HeaderTrack::HeaderTrack(int index, TrackInfo info, QWidget *parent)
     connect(changeAction, SIGNAL(triggered()), this, SLOT(slotChangeTrack()));
 }
 
+HeaderTrack::~HeaderTrack() {
+    if (m_contextMenu) delete m_contextMenu;
+}
+
 void HeaderTrack::switchVideo() {
     if (view.buttonVideo->isChecked()) {
         view.buttonVideo->setIcon(KIcon("kdenlive-show-video"));
index 4264b0737ec083a662d6e427b334e95929025bbb..4c476c523cbc400fee103f3e2f0009a276c3a73e 100644 (file)
@@ -31,6 +31,7 @@ class HeaderTrack : public QWidget {
 
 public:
     HeaderTrack(int index, TrackInfo info, QWidget *parent = 0);
+    ~HeaderTrack();
 
 protected:
     //virtual void paintEvent(QPaintEvent * /*e*/);
index 605ace0946b834e789208e238d6321354b5e967e..220b028d6590369bd5087337a5464a5dd30b5715 100644 (file)
@@ -1,12 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<gui name="kdenlive" version="30">
+<gui name="kdenlive" version="32">
   <ToolBar name="extraToolBar" >
     <text>Extra Toolbar</text>
        <Action name="project_render" />
   </ToolBar>
 
   <MenuBar>
+    <Menu name="file" >
+      <Action name="dvd_wizard" />
+    </Menu>
+  
     <Menu name="edit" >
       <Action name="paste_effects" />
       <Action name="project_find" />
index 2985814e3237ea8a7a01df42647f393250dc154c..6292528db39fecb0dcf81beab4623837f0a8af94 100644 (file)
@@ -809,6 +809,10 @@ void MainWindow::setupActions() {
     collection->addAction("monitor_loop_zone", m_loopZone);
     connect(m_loopZone, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotLoopZone()));
 
+    KAction *dvdWizard = collection->addAction("dvd_wizard");
+    dvdWizard->setText(i18n("Dvd Wizard"));
+    connect(dvdWizard, SIGNAL(triggered(bool)), this, SLOT(slotDvdWizard()));
+
     KAction *markIn = collection->addAction("mark_in");
     markIn->setText(i18n("Set In Point"));
     markIn->setShortcut(Qt::Key_I);
@@ -2233,4 +2237,10 @@ void MainWindow::slotAutoTransition() {
     m_activeTimeline->projectView()->autoTransition();
 }
 
+void MainWindow::slotDvdWizard(const QString &url) {
+    DvdWizard *w = new DvdWizard(QString(), this);
+    w->exec();
+}
+
+
 #include "mainwindow.moc"
index de974fd8aa197db27a8aa7b6d26d791453f0191c..36e943288461da8412a2586b52bea9950ddcdb11 100644 (file)
@@ -41,6 +41,7 @@
 #include "gentime.h"
 #include "definitions.h"
 #include "statusbarmessagelabel.h"
+#include "dvdwizard.h"
 
 class KdenliveDoc;
 class TrackView;
@@ -288,6 +289,7 @@ private slots:
     void generateClip();
     void slotZoneMoved(int start, int end);
     void slotUpdatePreviewSettings();
+    void slotDvdWizard(const QString &url = QString());
 
 signals:
     Q_SCRIPTABLE void abortRenderJob(const QString &url);
index bb3ce9e39b92a5a65ceb5f410e22f2d956e1dc1a..f9be438be27cbd484335239887a3a8ecce7fe7a7 100644 (file)
@@ -108,7 +108,7 @@ void ProjectList::setupMenu(QMenu *addMenu, QAction *defaultAction) {
 }
 
 void ProjectList::setupGeneratorMenu(QMenu *addMenu) {
-
+    if (!addMenu) return;
     QMenu *menu = m_addButton->menu();
     menu->addMenu(addMenu);
     m_addButton->setMenu(menu);
index b31a891a63eec529da43100d3d6db52669a14a4a..3f92cb11a57fdf28b5ba2d1e6b85ce81df32ce11 100644 (file)
@@ -36,7 +36,7 @@
 
 int settingUp = false;
 
-TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent): QDialog(parent), m_render(render), m_count(0), m_projectPath(projectPath) {
+TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent): QDialog(parent), m_render(render), m_count(0), m_projectPath(projectPath), startViewport(NULL), endViewport(NULL) {
     setupUi(this);
     setFont(KGlobalSettings::toolBarFont());
     //toolBox->setFont(KGlobalSettings::toolBarFont());
@@ -195,6 +195,21 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget
     }
 }
 
+TitleWidget::~TitleWidget() {
+    delete m_buttonRect;
+    delete m_buttonText;
+    delete m_buttonImage;
+    delete m_buttonCursor;
+    delete m_buttonSave;
+    delete m_buttonLoad;
+
+    delete m_frameBorder;
+    delete m_frameImage;
+    if (startViewport) delete startViewport;
+    if (endViewport) delete endViewport;
+    delete m_scene;
+}
+
 //static
 QStringList TitleWidget::getFreeTitleInfo(const KUrl &projectUrl) {
     QStringList result;
@@ -690,6 +705,7 @@ QImage TitleWidget::renderedPixmap() {
     m_frameImage->setVisible(false);
 
     m_scene->render(&painter, QRectF(), QRectF(0, 0, m_frameWidth, m_frameHeight));
+    painter.end();
     m_frameBorder->setPen(framepen);
     startViewport->setVisible(true);
     endViewport->setVisible(true);
@@ -752,4 +768,4 @@ void TitleWidget::readChoices() {
     kcolorbutton->setColor(titleConfig.readEntry("background_color", kcolorbutton->color()));
     horizontalSlider->setValue(titleConfig.readEntry("background_alpha", horizontalSlider->value()));
 }
-#include "moc_titlewidget.cpp"
+
index 30dbda3f8e20bec0d573b5b787bdad161f25fff8..a67112b7d0541ead6cc0d959d6952403e0172b93 100644 (file)
@@ -48,6 +48,7 @@ public:
     /** \brief Constructor
      * \param projectPath Path to use when user requests loading or saving of titles as .kdenlivetitle documents */
     TitleWidget(KUrl url, QString projectPath, Render *render, QWidget *parent = 0);
+    virtual ~TitleWidget();
     QDomDocument xml();
     void setXml(QDomDocument doc);
 
diff --git a/src/widgets/dvdwizardiso_ui.ui b/src/widgets/dvdwizardiso_ui.ui
new file mode 100644 (file)
index 0000000..2827c67
--- /dev/null
@@ -0,0 +1,60 @@
+<ui version="4.0" >
+ <class>DvdWizardIso_UI</class>
+ <widget class="QWidget" name="DvdWizardIso_UI" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>263</width>
+    <height>81</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <widget class="QLabel" name="label" >
+     <property name="text" >
+      <string>Temporary data folder</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="KUrlRequester" name="tmp_folder" />
+   </item>
+   <item row="1" column="0" >
+    <widget class="QLabel" name="label_2" >
+     <property name="text" >
+      <string>Dvd iso image</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1" >
+    <widget class="KUrlRequester" name="iso_image" />
+   </item>
+   <item row="2" column="0" >
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>20</width>
+       <height>8</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>KUrlRequester</class>
+   <extends>QFrame</extends>
+   <header>kurlrequester.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/widgets/dvdwizardmenu_ui.ui b/src/widgets/dvdwizardmenu_ui.ui
new file mode 100644 (file)
index 0000000..1559fed
--- /dev/null
@@ -0,0 +1,1106 @@
+<ui version="4.0" >
+ <class>DvdWizardMenu_UI</class>
+ <widget class="QWidget" name="DvdWizardMenu_UI" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>377</width>
+    <height>365</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_2" >
+   <item row="0" column="0" >
+    <widget class="QCheckBox" name="create_menu" >
+     <property name="text" >
+      <string>Create basic menu</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" >
+    <widget class="QGroupBox" name="menu_box" >
+     <property name="title" >
+      <string/>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" colspan="3" >
+       <widget class="QLabel" name="label_2" >
+        <property name="text" >
+         <string>Play button</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0" >
+       <widget class="QLabel" name="label_3" >
+        <property name="text" >
+         <string>Text</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" colspan="2" >
+       <widget class="KLineEdit" name="play_text" />
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="label_4" >
+        <property name="text" >
+         <string>Font</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="KIntSpinBox" name="font_size" >
+        <property name="minimum" >
+         <number>10</number>
+        </property>
+        <property name="maximum" >
+         <number>900</number>
+        </property>
+        <property name="value" >
+         <number>35</number>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2" >
+       <widget class="KFontComboBox" name="font_family" >
+        <item>
+         <property name="text" >
+          <string>Sans Serif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Serif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Monospace</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>aakar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Aksharyogini</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlArabiya</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlBattar</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlHor</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlManzomah</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlMateen</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlMohanad</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlMothnna</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AlYarmook</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Andale Mono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Ani</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AnjaliOldLipi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Arab</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Arev Sans</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Arial</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Arial Black</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UKai CN</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UKai HK</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UKai TW</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UKai TW MBE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UMing CN</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UMing HK</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UMing TW</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>AR PL UMing TW MBE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Baekmuk Batang</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Baekmuk Dotum</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Baekmuk Gulim</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Baekmuk Headline</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Balker</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Bitstream Charter</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Bitstream Vera Sans</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Bitstream Vera Sans Mono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Bitstream Vera Serif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Century Schoolbook L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Chandas</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>cmex10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>cmmi10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>cmr10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>cmsy10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Comic Sans MS</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Cortoba</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Courier 10 Pitch</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Courier New</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>DejaVu Sans</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>DejaVu Sans Mono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>DejaVu Serif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Dimnah</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Dingbats</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Domestic Manners</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Dustismo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Dustismo Roman</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Dyuthi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>El Abogado Loco</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Electron</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>flatline</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>FreeMono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>FreeSans</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>FreeSerif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Furat</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>gargi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Garuda</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Gentium</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>GentiumAlt</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Georgia</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Granada</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Graph</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Hani</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Haramain</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Hor</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Impact</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>It wasn't me</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Jamrul</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Japan</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Jet</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Junkyard</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kalimati</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kalyani</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kayrawan</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kedage</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Khalid</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kinnari</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kochi Gothic</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Kochi Mincho</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Liberation Mono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Liberation Sans</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Liberation Serif</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Likhan</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Bengali</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Gujarati</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Hindi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Kannada</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Oriya</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Punjabi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Tamil</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Lohit Telugu</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Loma</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Mallige</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Marked Fool</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Mashq</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Meera</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Metal</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>MgOpen Canonica</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>MgOpen Cosmetica</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>MgOpen Modata</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>MgOpen Moderna</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Mitra Mono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>msam10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>msbm10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Mukti Narrow</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nada</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nagham</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nakula</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nice</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nimbus Mono L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nimbus Roman No9 L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Nimbus Sans L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Norasi</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>OpenSymbol</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>ori1Uni</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Ostorah</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Ouhod</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>padmaa</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>padmaa-Bold.1.1</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Penguin Attack</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Petra</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Phetsarath OT</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Pothana2000</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>progenisis</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Purisa</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Rachana</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>RaghuMalayalam</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Rasheeq</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Rehan</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Rekha</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Saab</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Sahadeva</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Salem</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Samanata</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Samyak Devanagari</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Samyak Gujarati</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Samyak Oriya</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Sarai</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Sawasdee</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Shado</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Sharjah</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Sindbad</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Standard Symbols L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>suruma</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Swift</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TAMu_Kadambri</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TAMu_Kalyani</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TAMu_Maduram</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Tarablus</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Tholoth</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Times New Roman</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TlwgMono</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TlwgTypewriter</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Tlwg Typist</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Tlwg Typo</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Trebuchet MS</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TSCu_Comic</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TSCu_Paranar [macromedia]</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TSCu_Paranar [unknown]</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>TSCu_Times</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Umpush</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>UnBatang</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>UnDotum</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>URW Bookman L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>URW Chancery L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>URW Gothic L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>URW Palladio L</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Vemana2000</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Verdana</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Waree</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Wargames</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>wasy10</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Webdings</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>WenQuanYi Zen Hei</string>
+         </property>
+        </item>
+        <item>
+         <property name="text" >
+          <string>Winks</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="label_5" >
+        <property name="text" >
+         <string>Colors</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" colspan="2" >
+       <layout class="QHBoxLayout" name="horizontalLayout" >
+        <item>
+         <widget class="KColorButton" name="text_color" >
+          <property name="text" >
+           <string/>
+          </property>
+          <property name="color" >
+           <color>
+            <red>255</red>
+            <green>255</green>
+            <blue>255</blue>
+           </color>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="KColorButton" name="selected_color" >
+          <property name="color" >
+           <color>
+            <red>170</red>
+            <green>170</green>
+            <blue>255</blue>
+           </color>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="KColorButton" name="highlighted_color" >
+          <property name="color" >
+           <color>
+            <red>255</red>
+            <green>85</green>
+            <blue>0</blue>
+           </color>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="5" column="0" colspan="2" >
+       <widget class="QLabel" name="label" >
+        <property name="text" >
+         <string>Background</string>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="0" colspan="2" >
+       <widget class="QRadioButton" name="is_color" >
+        <property name="text" >
+         <string>Color</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="2" >
+       <widget class="KColorButton" name="background_color" />
+      </item>
+      <item row="7" column="0" colspan="2" >
+       <widget class="QRadioButton" name="radioButton_2" >
+        <property name="text" >
+         <string>Image</string>
+        </property>
+       </widget>
+      </item>
+      <item row="7" column="2" >
+       <widget class="KUrlRequester" name="background_image" />
+      </item>
+      <item row="4" column="0" colspan="3" >
+       <widget class="Line" name="line" >
+        <property name="orientation" >
+         <enum>Qt::Horizontal</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="8" column="0" colspan="3" >
+       <widget class="QGraphicsView" name="menu_preview" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>KColorButton</class>
+   <extends>QPushButton</extends>
+   <header>kcolorbutton.h</header>
+  </customwidget>
+  <customwidget>
+   <class>KFontComboBox</class>
+   <extends>KComboBox</extends>
+   <header>kfontcombobox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>KIntSpinBox</class>
+   <extends>QSpinBox</extends>
+   <header>knuminput.h</header>
+  </customwidget>
+  <customwidget>
+   <class>KLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>klineedit.h</header>
+  </customwidget>
+  <customwidget>
+   <class>KUrlRequester</class>
+   <extends>QFrame</extends>
+   <header>kurlrequester.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/widgets/dvdwizardstatus_ui.ui b/src/widgets/dvdwizardstatus_ui.ui
new file mode 100644 (file)
index 0000000..0b88c16
--- /dev/null
@@ -0,0 +1,52 @@
+<ui version="4.0" >
+ <class>DvdWizardStatus_UI</class>
+ <widget class="QWidget" name="DvdWizardStatus_UI" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>295</width>
+    <height>191</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout" >
+   <item row="0" column="0" >
+    <widget class="QListWidget" name="job_progress" >
+     <property name="alternatingRowColors" >
+      <bool>true</bool>
+     </property>
+     <item>
+      <property name="text" >
+       <string>Creating menu images</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Creating menu background</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Creating menu movie</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Creating dvd structure</string>
+      </property>
+     </item>
+     <item>
+      <property name="text" >
+       <string>Creating iso file</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/widgets/dvdwizardvob_ui.ui b/src/widgets/dvdwizardvob_ui.ui
new file mode 100644 (file)
index 0000000..e982a76
--- /dev/null
@@ -0,0 +1,62 @@
+<ui version="4.0" >
+ <class>DvdWizardVob_UI</class>
+ <widget class="QWidget" name="DvdWizardVob_UI" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>348</width>
+    <height>153</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_2" >
+   <item row="0" column="0" >
+    <widget class="QCheckBox" name="use_intro" >
+     <property name="text" >
+      <string>Intro movie</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1" >
+    <widget class="KUrlRequester" name="intro_vob" />
+   </item>
+   <item row="1" column="0" colspan="2" >
+    <widget class="QGroupBox" name="vob_list" >
+     <property name="title" >
+      <string>DVD Files</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout" >
+      <item row="0" column="0" >
+       <widget class="KUrlRequester" name="vob_1" />
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2" >
+    <spacer name="verticalSpacer" >
+     <property name="orientation" >
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0" >
+      <size>
+       <width>182</width>
+       <height>37</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>KUrlRequester</class>
+   <extends>QFrame</extends>
+   <header>kurlrequester.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>