From: Jean-Baptiste Mardelle Date: Tue, 11 Nov 2008 20:09:48 +0000 (+0000) Subject: Hide export profiles that resize video ( size is different than project profile)... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a85e0bfe4faf7f9a7aa2f4ed91c1e2484164f042;p=kdenlive Hide export profiles that resize video ( size is different than project profile). They can be re-enabled by clicking on the "experimental render formats" checkbox. In response of following issue: http://www.kdenlive.org/mantis/view.php?id=323 svn path=/branches/KDE4/; revision=2677 --- diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index aae31a86..1e42c176 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -344,5 +344,9 @@ false + + + false + \ No newline at end of file diff --git a/src/monitor.cpp b/src/monitor.cpp index 95d5ec22..20f488ad 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -236,7 +236,7 @@ void Monitor::mouseReleaseEvent(QMouseEvent * event) { // virtual void Monitor::mouseMoveEvent(QMouseEvent *event) { - kDebug() << "// DRAG STARTED, MOUSE MOVED: "; + // kDebug() << "// DRAG STARTED, MOUSE MOVED: "; if (!m_dragStarted || m_currentClip == NULL) return; if ((event->pos() - m_DragStartPosition).manhattanLength() diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index abc03066..71abf914 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -55,6 +55,8 @@ RenderWidget::RenderWidget(QWidget * parent): QDialog(parent) { m_view.buttonInfo->setDown(true); } else m_view.advanced_params->hide(); + m_view.experimentalrender->setChecked(KdenliveSettings::experimentalrender()); + connect(m_view.buttonInfo, SIGNAL(clicked()), this, SLOT(showInfoPanel())); connect(m_view.buttonSave, SIGNAL(clicked()), this, SLOT(slotSaveProfile())); @@ -73,6 +75,7 @@ RenderWidget::RenderWidget(QWidget * parent): QDialog(parent) { connect(m_view.guide_start, SIGNAL(activated(int)), this, SLOT(slotCheckEndGuidePosition())); connect(m_view.format_selection, SIGNAL(activated(int)), this, SLOT(refreshView())); + connect(m_view.experimentalrender, SIGNAL(stateChanged(int)), this, SLOT(slotUpdateExperimentalRendering())); m_view.buttonStart->setEnabled(false); m_view.guides_box->setVisible(false); @@ -83,6 +86,12 @@ RenderWidget::RenderWidget(QWidget * parent): QDialog(parent) { focusFirstVisibleItem(); } +void RenderWidget::slotUpdateExperimentalRendering() { + KdenliveSettings::setExperimentalrender(m_view.experimentalrender->isChecked()); + refreshView(); +} + + void RenderWidget::showInfoPanel() { if (m_view.advanced_params->isVisible()) { m_view.advanced_params->setVisible(false); @@ -328,8 +337,29 @@ void RenderWidget::slotDeleteProfile() { focusFirstVisibleItem(); } +void RenderWidget::updateButtons() { + if (!m_view.size_list->currentItem() || m_view.size_list->currentItem()->isHidden()) { + m_view.buttonSave->setEnabled(false); + m_view.buttonDelete->setEnabled(false); + m_view.buttonEdit->setEnabled(false); + } else { + m_view.buttonSave->setEnabled(true); + if (m_view.size_list->currentItem()->data(EditableRole).toString().isEmpty()) { + m_view.buttonDelete->setEnabled(false); + m_view.buttonEdit->setEnabled(false); + } else { + m_view.buttonDelete->setEnabled(true); + m_view.buttonEdit->setEnabled(true); + } + } +} + + void RenderWidget::focusFirstVisibleItem() { - if (m_view.size_list->currentItem() && !m_view.size_list->currentItem()->isHidden()) return; + if (m_view.size_list->currentItem() && !m_view.size_list->currentItem()->isHidden()) { + updateButtons(); + return; + } for (uint ix = 0; ix < m_view.size_list->count(); ix++) { QListWidgetItem *item = m_view.size_list->item(ix); if (item && !item->isHidden()) { @@ -338,6 +368,7 @@ void RenderWidget::focusFirstVisibleItem() { } } if (!m_view.size_list->currentItem()) m_view.size_list->setCurrentRow(0); + updateButtons(); } void RenderWidget::slotExport() { @@ -380,6 +411,7 @@ void RenderWidget::setProfile(MltVideoProfile profile) { } void RenderWidget::refreshView() { + m_view.size_list->blockSignals(true); QListWidgetItem *item = m_view.format_list->currentItem(); if (!item) { m_view.format_list->setCurrentRow(0); @@ -392,8 +424,8 @@ void RenderWidget::refreshView() { bool firstSelected = false; for (int i = 0; i < m_view.size_list->count(); i++) { sizeItem = m_view.size_list->item(i); - std = sizeItem->data(StandardRole).toString(); if (sizeItem->data(GroupRole) == group) { + std = sizeItem->data(StandardRole).toString(); if (!std.isEmpty()) { if (std.contains("PAL", Qt::CaseInsensitive)) sizeItem->setHidden(m_view.format_selection->currentIndex() != 0); else if (std.contains("NTSC", Qt::CaseInsensitive)) sizeItem->setHidden(m_view.format_selection->currentIndex() != 1); @@ -402,15 +434,32 @@ void RenderWidget::refreshView() { if (!firstSelected) m_view.size_list->setCurrentItem(sizeItem); firstSelected = true; } + if (!KdenliveSettings::experimentalrender() && !sizeItem->isHidden()) { + // hide experimental codecs (which do resize the video) + std = sizeItem->data(ParamsRole).toString(); + if (std.contains(" s=")) { + QString subsize = std.section(" s=", 1, 1); + subsize = subsize.section(' ', 0, 0).toLower(); + if (subsize != "%widthx%height") { + const QString currentSize = QString::number(m_profile.width) + 'x' + QString::number(m_profile.height); + if (subsize != currentSize) sizeItem->setHidden(true); + } + } + } } else sizeItem->setHidden(true); } focusFirstVisibleItem(); - + m_view.size_list->blockSignals(false); + refreshParams(); } void RenderWidget::refreshParams() { QListWidgetItem *item = m_view.size_list->currentItem(); - if (!item) return; + if (!item || item->isHidden()) { + m_view.advanced_params->clear(); + m_view.buttonStart->setEnabled(false); + return; + } QString params = item->data(ParamsRole).toString(); QString extension = item->data(ExtensionRole).toString(); m_view.advanced_params->setPlainText(params); @@ -433,6 +482,7 @@ void RenderWidget::refreshParams() { m_view.buttonDelete->setEnabled(true); m_view.buttonEdit->setEnabled(true); } + m_view.buttonStart->setEnabled(true); } void RenderWidget::parseProfiles(QString group, QString profile) { diff --git a/src/renderwidget.h b/src/renderwidget.h index a3925927..ec2b6b38 100644 --- a/src/renderwidget.h +++ b/src/renderwidget.h @@ -48,13 +48,14 @@ private slots: void slotCheckStartGuidePosition(); void slotCheckEndGuidePosition(); void showInfoPanel(); + void slotUpdateExperimentalRendering(); private: Ui::RenderWidget_UI m_view; MltVideoProfile m_profile; void parseProfiles(QString group = QString(), QString profile = QString()); void parseFile(QString exportFile, bool editable); - + void updateButtons(); signals: void doRender(const QString&, const QString&, const QStringList &, const QStringList &, bool, bool, double, double); }; diff --git a/src/widgets/renderwidget_ui.ui b/src/widgets/renderwidget_ui.ui index 1f06e1c8..682375e0 100644 --- a/src/widgets/renderwidget_ui.ui +++ b/src/widgets/renderwidget_ui.ui @@ -5,17 +5,14 @@ 0 0 - 362 - 457 + 374 + 379 Rendering - - - @@ -23,126 +20,138 @@ + + + - - - 0 + + + - - - Templates - - - - - - Format - - - - - - - Qt::Horizontal - - - - 165 - 24 - - - - - - - - - PAL - - - - - NTSC - - - - - - - - E - - - - - - - I - - - - - + + + + + Format + + + + + + + Qt::Horizontal + + + + 165 + 24 + + + + + + + - S + PAL - - - - + + - D + NTSC - - - - + + + + + + + E + + + + + + + I + + + + + + + S + + + + + + + D + + + + + + + Qt::Vertical + + - Qt::Vertical + Qt::Horizontal - - - Qt::Horizontal + + + + 0 + 0 + - - - - 0 - 0 - - - - - - - 0 - 0 - - - - - - true - - - false + + + + 0 + 0 + - - - - - Progressive - - + + true + + false + - - - + + + + + + Changing the size of video when rendering +is not fully supported, you may have problems +with some effects or title clips, so the export +profiles that resize your video are marked as +experimental + + + Show experimental formats + + + + + + + Progressive + + + true + + + + @@ -295,12 +304,6 @@ QPushButton
kpushbutton.h
- - KTabWidget - QTabWidget -
ktabwidget.h
- 1 -
KTextEdit QTextEdit