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);
+ int size = style()->pixelMetric(QStyle::PM_SmallIconSize);
+ QSize iconSize(size, size);
+
setWindowTitle(i18n("Rendering"));
+ m_view.buttonDelete->setIconSize(iconSize);
+ m_view.buttonEdit->setIconSize(iconSize);
+ m_view.buttonSave->setIconSize(iconSize);
+ m_view.buttonInfo->setIconSize(iconSize);
+ m_view.buttonFavorite->setIconSize(iconSize);
+
m_view.buttonDelete->setIcon(KIcon("trash-empty"));
m_view.buttonDelete->setToolTip(i18n("Delete profile"));
m_view.buttonDelete->setEnabled(false);
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);
+ setRescaleEnabled(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.buttonClose, SIGNAL(clicked()), this, SLOT(hide()));
connect(m_view.buttonClose2, SIGNAL(clicked()), this, SLOT(hide()));
connect(m_view.buttonClose3, SIGNAL(clicked()), this, SLOT(hide()));
- connect(m_view.rescale, SIGNAL(toggled(bool)), m_view.rescale_box, SLOT(setEnabled(bool)));
+ connect(m_view.rescale, SIGNAL(toggled(bool)), this, SLOT(setRescaleEnabled(bool)));
connect(m_view.destination_list, SIGNAL(activated(int)), this, SLOT(refreshCategory()));
connect(m_view.out_file, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButtons()));
connect(m_view.out_file, SIGNAL(urlSelected(const KUrl &)), this, SLOT(slotUpdateButtons(const KUrl &)));
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);
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)
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);
if (params.contains(" s=") || params.startsWith("s=") || destination == "audioonly") {
// profile has a fixed size, do not allow resize
m_view.rescale->setEnabled(false);
- m_view.rescale_box->setEnabled(false);
+ setRescaleEnabled(false);
} else {
m_view.rescale->setEnabled(true);
- m_view.rescale_box->setEnabled(m_view.rescale->isChecked());
+ setRescaleEnabled(m_view.rescale->isChecked());
}
KUrl url = filenameWithExtension(m_view.out_file->url(), extension);
m_view.out_file->setUrl(url);
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
+
}
}
{
return m_view.proxy_render->isChecked();
}
+
+void RenderWidget::setRescaleEnabled(bool enable)
+{
+ for (int i = 0; i < m_view.rescale_box->layout()->count(); i++) {
+ if (m_view.rescale_box->itemAt(i)->widget()) m_view.rescale_box->itemAt(i)->widget()->setEnabled(enable);
+ }
+}