]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizardmenu.cpp
Fix rendering sometimes not starting (conflict between script and normal rendering)
[kdenlive] / src / dvdwizardmenu.cpp
index 2a204dc7459f192d186d57a8ebcf1a8b739017db..e1318540cd889cc46a5c116472080ea351353f90 100644 (file)
@@ -36,6 +36,14 @@ DvdWizardMenu::DvdWizardMenu(const QString &profile, QWidget *parent) :
     m_view.menu_preview->setMouseTracking(true);
     connect(m_view.create_menu, SIGNAL(toggled(bool)), m_view.menu_box, SLOT(setEnabled(bool)));
     connect(m_view.create_menu, SIGNAL(toggled(bool)), this, SIGNAL(completeChanged()));
+    
+#if KDE_IS_VERSION(4,7,0)
+    m_menuMessage = new KMessageWidget;
+    QGridLayout *s =  static_cast <QGridLayout*> (layout());
+    s->addWidget(m_menuMessage, 7, 0, 1, -1);
+    m_menuMessage->hide();
+    m_view.error_message->hide();
+#endif
 
     m_view.add_button->setIcon(KIcon("document-new"));
     m_view.delete_button->setIcon(KIcon("trash-empty"));
@@ -148,8 +156,14 @@ bool DvdWizardMenu::isComplete() const
             if (!collisions.isEmpty()) {
                 for (int j = 0; j < collisions.count(); j++) {
                     if (collisions.at(j)->type() == button->type()) {
+#if KDE_IS_VERSION(4,7,0)
+                        m_menuMessage->setText(i18n("Buttons overlapping"));
+                        m_menuMessage->setMessageType(KMessageWidget::Warning);
+                        m_menuMessage->animatedShow();
+#else
                         m_view.error_message->setText(i18n("Buttons overlapping"));
                         m_view.error_message->setHidden(false);
+#endif
                         return false;
                     }
                 }
@@ -159,19 +173,35 @@ bool DvdWizardMenu::isComplete() const
     }
     if (buttonCount == 0) {
         //We need at least one button
+#if KDE_IS_VERSION(4,7,0)
+        m_menuMessage->setText(i18n("No button in menu"));
+        m_menuMessage->setMessageType(KMessageWidget::Warning);
+        m_menuMessage->animatedShow();
+#else
         m_view.error_message->setText(i18n("No button in menu"));
         m_view.error_message->setHidden(false);
+#endif
         return false;
     }
 
     if (!m_view.background_image->isHidden()) {
         // Make sure user selected a valid image / video file
         if (!QFile::exists(m_view.background_image->url().path())) {
+#if KDE_IS_VERSION(4,7,0)
+            m_menuMessage->setText(i18n("Missing background image"));
+            m_menuMessage->setMessageType(KMessageWidget::Warning);
+            m_menuMessage->animatedShow();
+#else
             m_view.error_message->setText(i18n("Missing background image"));
             m_view.error_message->setHidden(false);
+#endif
             return false;
         }
     }
+    
+#if KDE_IS_VERSION(4,7,0)
+    m_menuMessage->animatedHide();
+#endif
 
     // check that we have a "Play all" entry
     if (targets.contains(0)) return true;
@@ -179,8 +209,14 @@ bool DvdWizardMenu::isComplete() const
     for (int i = m_view.target_list->count() - 1; i > 0; i--) {
         // If there is a vob file entry and it has no button assigned, don't allow to go further
         if (m_view.target_list->itemIcon(i).isNull() == false && !targets.contains(i)) {
+#if KDE_IS_VERSION(4,7,0)
+            m_menuMessage->setText(i18n("No menu entry for %1", m_view.target_list->itemText(i)));
+            m_menuMessage->setMessageType(KMessageWidget::Warning);
+            m_menuMessage->animatedShow();
+#else
             m_view.error_message->setText(i18n("No menu entry for %1", m_view.target_list->itemText(i)));
             m_view.error_message->setHidden(false);
+#endif
             return false;
         }
     }
@@ -423,69 +459,54 @@ 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_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);
+        
+        QImage img(m_width, m_height, QImage::Format_Mono);
+        img.fill(Qt::white);
+        updateColor(Qt::black);
         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
-        img.setColorCount(4);
+        img.setColor(0, m_view.text_color->color().rgb());
+        img.setColor(1, qRgba(0,0,0,0));
 #else
         img.setNumColors(4);
 #endif
         img.save(img1);
 
-        /*QImage saved;
-        if (m_view.menu_profile->currentIndex() < 2)
-            saved = img.scaled(720, 576);
-        else saved = img.scaled(720, 480);
-        saved.setNumColors(4);
-        saved.save(img1);*/
-
-        updateColor(m_view.selected_color->color());
-        img.fill(Qt::transparent);
+        img.fill(Qt::white);
         p.begin(&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 (m_view.menu_profile->currentIndex() < 2)
-                    saved = img.scaled(720, 576);
-                else saved = img.scaled(720, 480);
-                saved.setNumColors(4);
-                saved.save(img2);*/
 #if QT_VERSION >= 0x040600
-        img.setColorCount(4);
+        img.setColor(0, m_view.highlighted_color->color().rgb());
+        img.setColor(1, qRgba(0,0,0,0));
 #else
         img.setNumColors(4);
 #endif
-        img.save(img2);
+        img.save(img3);        
 
-
-        updateColor(m_view.highlighted_color->color());
-        img.fill(Qt::transparent);
+        img.fill(Qt::white);
         p.begin(&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 (m_view.menu_profile->currentIndex() < 2)
-            saved = img.scaled(720, 576);
-        else saved = img.scaled(720, 480);
-        saved.setNumColors(4);
-        saved.save(img3);*/
+
 #if QT_VERSION >= 0x040600
-        img.setColorCount(4);
+        img.setColor(0, m_view.selected_color->color().rgb());
+        img.setColor(1, qRgba(0,0,0,0));
 #else
         img.setNumColors(4);
 #endif
-        img.save(img3);
-
+        img.save(img2);
         updateColor();
 
         m_scene->addItem(m_safeRect);
@@ -655,7 +676,6 @@ void DvdWizardMenu::loadXml(QDomElement xml)
         button->setBackMenu(e.attribute("backtomenu").toInt());
         button->setDefaultTextColor(m_view.text_color->color());
         button->setZValue(4);
-        QRectF r = button->sceneBoundingRect();
         m_scene->addItem(button);
         button->setPos(e.attribute("posx").toDouble(), e.attribute("posy").toDouble());