]> git.sesse.net Git - kdenlive/commitdiff
Fix issues with DVD wizard, allow to loop menu movie
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 31 Jan 2010 14:19:09 +0000 (14:19 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 31 Jan 2010 14:19:09 +0000 (14:19 +0000)
svn path=/trunk/kdenlive/; revision=4257

src/dvdwizard.cpp
src/dvdwizardchapters.cpp
src/dvdwizardmenu.cpp
src/dvdwizardmenu.h
src/widgets/dvdwizardchapters_ui.ui
src/widgets/dvdwizardmenu_ui.ui

index cbde5f1089bbeeb03934c51223304cd8dabbf66a..ceba71c1f74ce3d555a0d56b4f46a6c580ce3369 100644 (file)
@@ -221,7 +221,7 @@ void DvdWizard::generateDvd()
             QStringList args;
             args.append("-profile");
             if (m_pageMenu->isPalMenu()) args.append("dv_pal");
-            else  args.append("dv_ntsc");
+            else args.append("dv_ntsc");
             args.append(temp4.fileName());
             args.append("in=0");
             args.append("out=100");
@@ -401,8 +401,15 @@ void DvdWizard::generateDvd()
         }
         QDomElement menuvob = dvddoc.createElement("vob");
         menuvob.setAttribute("file", m_menuFile.fileName());
-        menuvob.setAttribute("pause", "inf");
         pgc.appendChild(menuvob);
+
+        if (m_pageMenu->loopMovie()) {
+            QDomElement menuloop = dvddoc.createElement("post");
+            nametext = dvddoc.createTextNode("jump titleset 1 menu;");
+            menuloop.appendChild(nametext);
+            pgc.appendChild(menuloop);
+        } else menuvob.setAttribute("pause", "inf");
+
     }
 
     QDomElement titles = dvddoc.createElement("titles");
index 2b24852c60b9318bf1cd76554c8bf30d1167a73b..e0749817a1d0474e893c8debc2be6116465bd796 100644 (file)
@@ -154,7 +154,7 @@ void DvdWizardChapters::setVobFiles(bool isPal, bool isWide, const QStringList m
         vbox->addWidget(m_monitor);
         m_view.monitor_frame->setLayout(vbox);
         /*updateGeometry();
-        adjustSize();*/
+        m_view.monitor_frame->adjustSize();*/
     } else m_monitor->resetProfile(profile);
 
     m_view.vob_list->blockSignals(true);
index 4a90c50aa4fa6c9e45bc2fe97721069926712d53..93c0a5eb15433a0cce04749e3f419d42c09cb876 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <KDebug>
 #include <KColorScheme>
+#include "kthumb.h"
 
 DvdWizardMenu::DvdWizardMenu(const QString &profile, QWidget *parent) :
         QWizardPage(parent),
@@ -48,7 +49,6 @@ DvdWizardMenu::DvdWizardMenu(const QString &profile, QWidget *parent) :
     } else changeProfile(true);
 
 
-
     // Create color background
     m_color = new QGraphicsRectItem(0, 0, m_width, m_height);
     m_color->setBrush(m_view.background_color->color());
@@ -322,16 +322,21 @@ void DvdWizardMenu::checkBackgroundType(int ix)
     if (ix == 0) {
         m_view.background_color->setVisible(true);
         m_view.background_image->setVisible(false);
+        m_view.loop_movie->setVisible(false);
         if (m_background->scene() != 0) m_scene->removeItem(m_background);
     } else {
         m_view.background_color->setVisible(false);
         m_view.background_image->setVisible(true);
         if (ix == 1) {
+            m_view.background_image->clear();
             m_view.background_image->setFilter("*");
-            m_scene->addItem(m_background);
+            if (m_background->scene() != 0) m_scene->removeItem(m_background);
+            m_view.loop_movie->setVisible(false);
         } else {
             if (m_background->scene() != 0) m_scene->removeItem(m_background);
+            m_view.background_image->clear();
             m_view.background_image->setFilter("video/mpeg");
+            m_view.loop_movie->setVisible(true);
         }
     }
 }
@@ -349,13 +354,24 @@ void DvdWizardMenu::buildImage()
         return;
     }
     QPixmap pix;
-    if (!pix.load(m_view.background_image->url().path())) {
-        if (m_background->scene() != 0) m_scene->removeItem(m_background);
-        return;
+
+    if (m_view.background_list->currentIndex() == 1) {
+        // image background
+        if (!pix.load(m_view.background_image->url().path())) {
+            if (m_background->scene() != 0) m_scene->removeItem(m_background);
+            return;
+        }
+        pix = pix.scaled(m_width, m_height);
+    } else if (m_view.background_list->currentIndex() == 2) {
+        // video background
+        int w;
+        if (m_isPal) w = 768;
+        else w = 640;
+        pix = KThumb::getImage(m_view.background_image->url(), 0, w, m_height);
+        pix = pix.scaled(m_width, m_height);
     }
-    pix = pix.scaled(m_width, m_height);
     m_background->setPixmap(pix);
-    if (m_view.background_list->currentIndex() == 1) m_scene->addItem(m_background);
+    m_scene->addItem(m_background);
 }
 
 void DvdWizardMenu::checkBackground()
@@ -409,13 +425,14 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2,
 {
     if (m_view.create_menu->isChecked()) {
         m_scene->clearSelection();
-        QImage img(m_width, m_height, QImage::Format_ARGB8555_Premultiplied);
-        QPainter p(&img);
-        p.setRenderHints(QPainter::Antialiasing, false);
-        p.setRenderHints(QPainter::TextAntialiasing, false);
+        QImage img(m_width, m_height, QImage::Format_ARGB32_Premultiplied);
+        img.fill(Qt::transparent);
         if (m_safeRect->scene() != 0) m_scene->removeItem(m_safeRect);
         if (m_color->scene() != 0) m_scene->removeItem(m_color);
         if (m_background->scene() != 0) m_scene->removeItem(m_background);
+        QPainter p(&img);
+        p.setRenderHints(QPainter::Antialiasing, false);
+        p.setRenderHints(QPainter::TextAntialiasing, false);
         m_scene->render(&p, QRectF(0, 0, m_width, m_height));
         p.end();
 #if QT_VERSION >= 0x040600
@@ -424,6 +441,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2,
         img.setNumColors(4);
 #endif
         img.save(img1);
+
         /*QImage saved;
         if (m_view.menu_profile->currentIndex() < 2)
             saved = img.scaled(720, 576);
@@ -432,6 +450,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2,
         saved.save(img1);*/
 
         updateColor(m_view.selected_color->color());
+        img.fill(Qt::transparent);
         p.begin(&img);
         p.setRenderHints(QPainter::Antialiasing, false);
         p.setRenderHints(QPainter::TextAntialiasing, false);
@@ -451,6 +470,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2,
 
 
         updateColor(m_view.highlighted_color->color());
+        img.fill(Qt::transparent);
         p.begin(&img);
         p.setRenderHints(QPainter::Antialiasing, false);
         p.setRenderHints(QPainter::TextAntialiasing, false);
@@ -472,7 +492,7 @@ void DvdWizardMenu::createButtonImages(const QString &img1, const QString &img2,
 
         m_scene->addItem(m_safeRect);
         m_scene->addItem(m_color);
-        if (m_view.background_list->currentIndex() == 1) m_scene->addItem(m_background);
+        if (m_view.background_list->currentIndex() > 0) m_scene->addItem(m_background);
     }
 }
 
@@ -505,6 +525,11 @@ bool DvdWizardMenu::createMenu() const
     return m_view.create_menu->isChecked();
 }
 
+bool DvdWizardMenu::loopMovie() const
+{
+    return m_view.loop_movie->isChecked();
+}
+
 bool DvdWizardMenu::menuMovie() const
 {
     return m_view.background_list->currentIndex() == 2;
index 4e5100fb1453b8099f1875e9aa1c47fa9aa272b5..6a9d44cacad2e24b50981ade60361a60321befde 100644 (file)
@@ -130,6 +130,7 @@ public:
     void createButtonImages(const QString &img1, const QString &img2, const QString &img3);
     void setTargets(QStringList list, QStringList targetlist);
     QMap <QString, QRect> buttonsInfo();
+    bool loopMovie() const;
     bool menuMovie() const;
     QString menuMoviePath() const;
     bool isPalMenu() const;
index 030b815cc407cf45f636e5b017ff904241c1bdd9..eeeb2d41175df6f7e642a111dcc376d9e6606fea 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>398</width>
-    <height>338</height>
+    <width>344</width>
+    <height>369</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <item row="1" column="1" colspan="4">
     <widget class="KComboBox" name="vob_list"/>
    </item>
-   <item row="2" column="0" colspan="5">
-    <widget class="QListWidget" name="chapters_list">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="alternatingRowColors">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
    <item row="3" column="0" colspan="2">
     <widget class="QPushButton" name="button_add">
      <property name="text">
    </item>
    <item row="0" column="0" colspan="4">
     <widget class="QFrame" name="monitor_frame">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
+     <zorder>chapters_list</zorder>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="5">
+    <widget class="QListWidget" name="chapters_list">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
+     </property>
     </widget>
    </item>
   </layout>
index a98c48a9348bbb67997542770087428609334f9f..56474ebad396b89e49479640f9b66eafe70210ce 100644 (file)
             </property>
            </widget>
           </item>
-          <item row="0" column="1">
+          <item row="0" column="1" colspan="2">
            <widget class="KComboBox" name="background_list">
             <item>
              <property name="text">
             </item>
            </widget>
           </item>
-          <item row="1" column="1">
+          <item row="1" column="1" colspan="2">
            <widget class="KColorButton" name="background_color"/>
           </item>
           <item row="2" column="1">
            <widget class="KUrlRequester" name="background_image"/>
           </item>
+          <item row="2" column="2">
+           <widget class="QCheckBox" name="loop_movie">
+            <property name="text">
+             <string>Loop</string>
+            </property>
+           </widget>
+          </item>
          </layout>
         </widget>
        </widget>