From: <j-...@us...> - 2010-01-06 19:05:34
|
Revision: 4209 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4209&view=rev Author: j-b-m Date: 2010-01-06 19:05:28 +0000 (Wed, 06 Jan 2010) Log Message: ----------- Allow to change duration of several clips (image, color or text) in one step Modified Paths: -------------- trunk/kdenlive/src/clipproperties.cpp trunk/kdenlive/src/clipproperties.h trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/projectlist.cpp Modified: trunk/kdenlive/src/clipproperties.cpp =================================================================== --- trunk/kdenlive/src/clipproperties.cpp 2010-01-06 18:25:10 UTC (rev 4208) +++ trunk/kdenlive/src/clipproperties.cpp 2010-01-06 19:05:28 UTC (rev 4209) @@ -54,6 +54,9 @@ m_view.clip_description->setText(m_clip->description()); QMap <QString, QString> props = m_clip->properties(); + m_view.clip_force_out->setHidden(true); + m_view.clip_out->setHidden(true); + if (props.contains("force_aspect_ratio") && props.value("force_aspect_ratio").toDouble() > 0) { m_view.clip_force_ar->setChecked(true); m_view.clip_ar->setEnabled(true); @@ -285,9 +288,10 @@ // Used for multiple clips editing -ClipProperties::ClipProperties(QList <DocClipBase *>cliplist, QMap <QString, QString> commonproperties, QWidget * parent) : +ClipProperties::ClipProperties(QList <DocClipBase *>cliplist, Timecode tc, QMap <QString, QString> commonproperties, QWidget * parent) : QDialog(parent), m_clip(NULL), + m_tc(tc), m_fps(0), m_count(0), m_clipNeedsRefresh(false), @@ -347,6 +351,7 @@ connect(m_view.clip_force_threads, SIGNAL(toggled(bool)), m_view.clip_threads, SLOT(setEnabled(bool))); connect(m_view.clip_force_vindex, SIGNAL(toggled(bool)), m_view.clip_vindex, SLOT(setEnabled(bool))); connect(m_view.clip_force_aindex, SIGNAL(toggled(bool)), m_view.clip_aindex, SLOT(setEnabled(bool))); + connect(m_view.clip_force_out, SIGNAL(toggled(bool)), m_view.clip_out, SLOT(setEnabled(bool))); m_view.tabWidget->removeTab(METATAB); m_view.tabWidget->removeTab(MARKERTAB); @@ -359,13 +364,24 @@ m_view.clip_path->setHidden(true); m_view.label_path->setHidden(true); m_view.label_description->setHidden(true); - m_view.label_duration->setHidden(true); m_view.label_size->setHidden(true); m_view.clip_filesize->setHidden(true); m_view.clip_filesize->setHidden(true); - m_view.clip_duration->setHidden(true); m_view.clip_path->setHidden(true); m_view.clip_description->setHidden(true); + m_view.clip_thumb->setHidden(true); + m_view.label_duration->setHidden(true); + m_view.clip_duration->setHidden(true); + + if (commonproperties.contains("out")) { + if (commonproperties.value("out").toInt() > 0) { + m_view.clip_force_out->setChecked(true); + m_view.clip_out->setText(m_tc.getTimecodeFromFrames(commonproperties.value("out").toInt())); + } else m_view.clip_out->setText(KdenliveSettings::image_duration()); + } else { + m_view.clip_force_out->setHidden(true); + m_view.clip_out->setHidden(true); + } } @@ -511,7 +527,16 @@ } // If we adjust several clips, return now - if (m_clip == NULL) return props; + if (m_clip == NULL) { + if (m_view.clip_out->isEnabled()) { + int duration = m_tc.getFrameCount(m_view.clip_out->text()); + kDebug() << "// DURAT: " << duration << ", OLD: " << m_old_props.value("out").toInt(); + if (duration != m_old_props.value("out").toInt()) { + props["out"] = QString::number(duration - 1); + } + } + return props; + } if (m_old_props.value("description") != m_view.clip_description->text()) props["description"] = m_view.clip_description->text(); Modified: trunk/kdenlive/src/clipproperties.h =================================================================== --- trunk/kdenlive/src/clipproperties.h 2010-01-06 18:25:10 UTC (rev 4208) +++ trunk/kdenlive/src/clipproperties.h 2010-01-06 19:05:28 UTC (rev 4209) @@ -33,7 +33,7 @@ public: ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent = 0); - ClipProperties(QList <DocClipBase *>cliplist, QMap <QString, QString> commonproperties, QWidget * parent); + ClipProperties(QList <DocClipBase *>cliplist, Timecode tc, QMap <QString, QString> commonproperties, QWidget * parent); QMap <QString, QString> properties(); const QString &clipId() const; bool needsTimelineRefresh() const; Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2010-01-06 18:25:10 UTC (rev 4208) +++ trunk/kdenlive/src/mainwindow.cpp 2010-01-06 19:05:28 UTC (rev 4209) @@ -2601,13 +2601,13 @@ void MainWindow::slotShowClipProperties(QList <DocClipBase *> cliplist, QMap<QString, QString> commonproperties) { - ClipProperties dia(cliplist, commonproperties, this); + ClipProperties dia(cliplist, m_activeDocument->timecode(), commonproperties, this); if (dia.exec() == QDialog::Accepted) { QUndoCommand *command = new QUndoCommand(); command->setText(i18n("Edit clips")); for (int i = 0; i < cliplist.count(); i++) { DocClipBase *clip = cliplist.at(i); - new EditClipCommand(m_projectList, clip->getId(), clip->properties(), dia.properties(), true, command); + new EditClipCommand(m_projectList, clip->getId(), commonproperties, dia.properties(), true, command); } m_activeDocument->commandStack()->push(command); for (int i = 0; i < cliplist.count(); i++) { Modified: trunk/kdenlive/src/projectlist.cpp =================================================================== --- trunk/kdenlive/src/projectlist.cpp 2010-01-06 18:25:10 UTC (rev 4208) +++ trunk/kdenlive/src/projectlist.cpp 2010-01-06 19:05:28 UTC (rev 4209) @@ -233,6 +233,8 @@ commonproperties.insert("video_index", "-"); commonproperties.insert("audio_index", "-"); + bool allowDurationChange = true; + int commonDuration = -1; ProjectItem *item; for (int i = 0; i < list.count(); i++) { item = NULL; @@ -245,6 +247,16 @@ // check properties DocClipBase *clip = item->referencedClip(); if (clipList.contains(clip)) continue; + if (clip->clipType() != COLOR && clip->clipType() != IMAGE && clip->clipType() != TEXT) { + allowDurationChange = false; + } + if (allowDurationChange && commonDuration != 0) { + if (commonDuration == -1) { + commonDuration = clip->duration().frames(m_fps); + } else if (commonDuration != clip->duration().frames(m_fps)) { + commonDuration = 0; + } + } clipList.append(clip); QMap <QString, QString> clipprops = clip->properties(); QMapIterator<QString, QString> p(commonproperties); @@ -258,6 +270,7 @@ } } } + if (allowDurationChange) commonproperties.insert("out", QString::number(commonDuration)); QMapIterator<QString, QString> p(commonproperties); while (p.hasNext()) { p.next(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |