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);
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)));
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);
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);
adjustSize();
}
+QSize RenderWidget::sizeHint() const
+{
+ // Make sure the widget has minimum size on opening
+ return QSize(200, 200);
+}
+
RenderWidget::~RenderWidget()
{
m_view.running_jobs->blockSignals(true);
if (!scriptExport) render_process_args << "-erase";
if (KdenliveSettings::usekuiserver()) render_process_args << "-kuiserver";
+ // get process id
+ render_process_args << QString("-pid:%1").arg(QCoreApplication::applicationPid());
+
// Set locale for render process if required
if (QLocale().decimalPoint() != QLocale::system().decimalPoint()) {
render_process_args << QString("-locale:%1").arg(QLocale().name());
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()) {
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()
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)
// 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);
void RenderWidget::errorMessage(const QString &message)
{
if (!message.isEmpty()) {
+#if KDE_IS_VERSION(4,7,0)
+ m_infoMessage->setMessageType(KMessageWidget::Warning);
+ m_infoMessage->setText(message);
+ m_infoMessage->animatedShow();
+#else
m_view.errorLabel->setText(message);
m_view.errorBox->setHidden(false);
+#endif
}
else {
+#if KDE_IS_VERSION(4,7,0)
+ m_infoMessage->animatedHide();
+#else
m_view.errorBox->setHidden(true);
m_view.errorLabel->setText(QString());
+#endif
+
}
}