]> git.sesse.net Git - kdenlive/blobdiff - src/renderwidget.cpp
* Fix crash when deleting clip and audio thumb was being created
[kdenlive] / src / renderwidget.cpp
index 39cc878a84708d3332bd70c2fe682b130e4a5571..ddab91922176fda90fa68eecfe5c1ace0331051a 100644 (file)
@@ -66,9 +66,10 @@ const int RUNNINGJOB = 1;
 const int FINISHEDJOB = 2;
 
 
-RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidget * parent) :
+RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, MltVideoProfile profile, QWidget * parent) :
         QDialog(parent),
         m_projectFolder(projectfolder),
+        m_profile(profile),
         m_blockProcessing(false)
 {
     m_view.setupUi(this);
@@ -91,13 +92,39 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg
     m_view.buttonFavorite->setToolTip(i18n("Copy profile to favorites"));
     
     m_view.advanced_params->setMaximumHeight(QFontMetrics(font()).lineSpacing() * 5);
-
+    
+    m_view.buttonRender->setEnabled(false);
+    m_view.buttonGenerateScript->setEnabled(false);
+    m_view.rescale_box->setEnabled(false);
+    m_view.guides_box->setVisible(false);
+    m_view.open_dvd->setVisible(false);
+    m_view.create_chapter->setVisible(false);
+    m_view.open_browser->setVisible(false);
+    m_view.error_box->setVisible(false);
+    m_view.tc_type->setEnabled(false);
+    m_view.checkTwoPass->setEnabled(false);
+    
     if (KdenliveSettings::showrenderparams()) {
         m_view.buttonInfo->setDown(true);
     } else m_view.advanced_params->hide();
     
     m_view.proxy_render->setHidden(!enableProxy);
 
+    KColorScheme scheme(palette().currentColorGroup(), KColorScheme::Window, KSharedConfig::openConfig(KdenliveSettings::colortheme()));
+    QColor bg = scheme.background(KColorScheme::NegativeBackground).color();
+    m_view.errorBox->setStyleSheet(QString("QGroupBox { background-color: rgb(%1, %2, %3); border-radius: 5px;}; ").arg(bg.red()).arg(bg.green()).arg(bg.blue()));
+    int height = QFontInfo(font()).pixelSize();
+    m_view.errorIcon->setPixmap(KIcon("dialog-warning").pixmap(height, height));
+    m_view.errorBox->setHidden(true);
+
+#if KDE_IS_VERSION(4,7,0)
+    m_infoMessage = new KMessageWidget;
+    QGridLayout *s =  static_cast <QGridLayout*> (m_view.tab->layout());
+    s->addWidget(m_infoMessage, 16, 0, 1, -1);
+    m_infoMessage->setCloseButtonVisible(false);
+    m_infoMessage->hide();
+#endif
+
     m_view.encoder_threads->setMaximum(QThread::idealThreadCount());
     m_view.encoder_threads->setValue(KdenliveSettings::encodethreads());
     connect(m_view.encoder_threads, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateEncodeThreads(int)));
@@ -119,13 +146,6 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg
     m_view.format_list->setAlternatingRowColors(true);
     m_view.size_list->setAlternatingRowColors(true);
 
-    KColorScheme scheme(palette().currentColorGroup(), KColorScheme::Window, KSharedConfig::openConfig(KdenliveSettings::colortheme()));
-    QColor bg = scheme.background(KColorScheme::NegativeBackground).color();
-    m_view.errorBox->setStyleSheet(QString("QGroupBox { background-color: rgb(%1, %2, %3); border-radius: 5px;}; ").arg(bg.red()).arg(bg.green()).arg(bg.blue()));
-    int height = QFontInfo(font()).pixelSize();
-    m_view.errorIcon->setPixmap(KIcon("dialog-warning").pixmap(height, height));
-    m_view.errorBox->setHidden(true);
-
     connect(m_view.export_audio, SIGNAL(stateChanged(int)), this, SLOT(slotUpdateAudioLabel(int)));
     m_view.export_audio->setCheckState(Qt::PartiallyChecked);
 
@@ -172,17 +192,6 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg
 
     connect(m_view.tc_overlay, SIGNAL(toggled(bool)), m_view.tc_type, SLOT(setEnabled(bool)));
 
-    m_view.buttonRender->setEnabled(false);
-    m_view.buttonGenerateScript->setEnabled(false);
-    m_view.rescale_box->setEnabled(false);
-    m_view.guides_box->setVisible(false);
-    m_view.open_dvd->setVisible(false);
-    m_view.create_chapter->setVisible(false);
-    m_view.open_browser->setVisible(false);
-    m_view.error_box->setVisible(false);
-    m_view.tc_type->setEnabled(false);
-    m_view.checkTwoPass->setEnabled(false);
-
     m_view.splitter->setStretchFactor(1, 5);
     m_view.splitter->setStretchFactor(0, 2);
 
@@ -223,13 +232,6 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg
 
     focusFirstVisibleItem();
     adjustSize();
-
-#if KDE_IS_VERSION(4,7,0)
-    m_infoMessage = new KMessageWidget;
-    QGridLayout *s =  static_cast <QGridLayout*> (m_view.tab->layout());
-    s->addWidget(m_infoMessage, 12, 0, 1, -1);
-    m_infoMessage->hide();
-#endif
 }
 
 QSize RenderWidget::sizeHint() const
@@ -246,6 +248,9 @@ RenderWidget::~RenderWidget()
     m_view.scripts_list->clear();
     delete m_jobsDelegate;
     delete m_scriptsDelegate;
+#if KDE_IS_VERSION(4,7,0)
+    delete m_infoMessage;
+#endif
 }
 
 void RenderWidget::slotEditItem(QListWidgetItem *item)
@@ -1056,7 +1061,6 @@ int RenderWidget::waitingJobsCount() const
 
 void RenderWidget::setProfile(MltVideoProfile profile)
 {
-    m_profile = profile;
     m_view.scanning_list->setCurrentIndex(0);
     m_view.rescale_width->setValue(KdenliveSettings::defaultrescalewidth());
     if (!m_view.rescale_keep->isChecked()) {
@@ -1064,7 +1068,10 @@ void RenderWidget::setProfile(MltVideoProfile profile)
         m_view.rescale_height->setValue(KdenliveSettings::defaultrescaleheight());
         m_view.rescale_height->blockSignals(false);
     }
-    refreshView();
+    if (m_profile != profile) {
+        m_profile = profile;
+        refreshView();
+    }
 }
 
 void RenderWidget::refreshCategory()
@@ -1243,10 +1250,14 @@ void RenderWidget::refreshView()
     m_view.size_list->setVisible(m_view.size_list->count() > 1 || m_view.format_list->count() <= 1);
     m_view.size_list->blockSignals(false);
     m_view.format_list->blockSignals(false);
-    if (m_view.size_list->count() > 0)
+    if (m_view.size_list->count() > 0) {
         refreshParams();
-    else
+    }
+    else {
+        // No matching profile
+        errorMessage(i18n("No matching profile"));
         m_view.advanced_params->clear();
+    }
 }
 
 KUrl RenderWidget::filenameWithExtension(KUrl url, QString extension)
@@ -1277,6 +1288,7 @@ void RenderWidget::refreshParams()
     // Format not available (e.g. codec not installed); Disable start button
     QListWidgetItem *item = m_view.size_list->currentItem();
     if (!item || item->isHidden()) {
+        if (!item) errorMessage(i18n("No matching profile"));
         m_view.advanced_params->clear();
         m_view.buttonRender->setEnabled(false);
         m_view.buttonGenerateScript->setEnabled(false);