From: <xz...@us...> - 2009-05-09 14:55:00
|
Revision: 3370 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3370&view=rev Author: xzhayon Date: 2009-05-09 14:54:54 +0000 (Sat, 09 May 2009) Log Message: ----------- fix producers resources when searching missing files: http://www.kdenlive.org/mantis/view.php?id=805 (?) Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2009-05-09 14:52:49 UTC (rev 3369) +++ trunk/kdenlive/src/documentchecker.cpp 2009-05-09 14:54:54 UTC (rev 3370) @@ -49,7 +49,8 @@ const int CLIPPLACEHOLDER = 2; DocumentChecker::DocumentChecker(QDomNodeList producers, QDomNodeList infoproducers, QList <QDomElement> missingClips, QDomDocument doc, QWidget * parent) : - QDialog(parent), m_doc(doc) + QDialog(parent), + m_doc(doc) { setFont(KGlobalSettings::toolBarFont()); m_view.setupUi(this); @@ -170,9 +171,10 @@ // virtual void DocumentChecker::accept() { - QDomElement e; + QDomElement e, property; QDomNodeList producers = m_doc.elementsByTagName("producer"); QDomNodeList infoproducers = m_doc.elementsByTagName("kdenlive_producer"); + QDomNodeList properties; int ix = 0; QTreeWidgetItem *child = m_view.treeWidget->topLevelItem(ix); while (child) { @@ -188,9 +190,16 @@ } for (int i = 0; i < producers.count(); i++) { e = producers.item(i).toElement(); - if (e.attribute("id") == id) { + if (e.attribute("id").section('_', 0, 0) == id) { // Fix clip - e.setAttribute("resource", child->text(1)); + properties = e.childNodes(); + for (int j = 0; j < properties.count(); ++j) { + property = properties.item(j).toElement(); + if (property.attribute("name") == "resource") { + property.firstChild().setNodeValue(child->text(1)); + break; + } + } break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-05-30 17:51:11
|
Revision: 3462 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3462&view=rev Author: j-b-m Date: 2009-05-30 17:51:09 +0000 (Sat, 30 May 2009) Log Message: ----------- Fix recursive search Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2009-05-30 10:58:07 UTC (rev 3461) +++ trunk/kdenlive/src/documentchecker.cpp 2009-05-30 17:51:09 UTC (rev 3462) @@ -105,12 +105,14 @@ int ix = 0; m_view.recursiveSearch->setEnabled(false); QTreeWidgetItem *child = m_view.treeWidget->topLevelItem(ix); - while (child && child->data(0, statusRole).toInt() == CLIPMISSING) { - QString clipPath = searchFileRecursively(QDir(newpath), child->data(0, sizeRole).toString(), child->data(0, hashRole).toString()); - if (!clipPath.isEmpty()) { - child->setText(1, clipPath); - child->setIcon(0, KIcon("dialog-ok")); - child->setData(0, statusRole, CLIPOK); + while (child) { + if (child->data(0, statusRole).toInt() == CLIPMISSING) { + QString clipPath = searchFileRecursively(QDir(newpath), child->data(0, sizeRole).toString(), child->data(0, hashRole).toString()); + if (!clipPath.isEmpty()) { + child->setText(1, clipPath); + child->setIcon(0, KIcon("dialog-ok")); + child->setData(0, statusRole, CLIPOK); + } } ix++; child = m_view.treeWidget->topLevelItem(ix); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-05-30 18:13:13
|
Revision: 3464 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3464&view=rev Author: j-b-m Date: 2009-05-30 18:13:05 +0000 (Sat, 30 May 2009) Log Message: ----------- Improve recursive search speed and make sure we don't leave open files Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2009-05-30 17:55:22 UTC (rev 3463) +++ trunk/kdenlive/src/documentchecker.cpp 2009-05-30 18:13:05 UTC (rev 3464) @@ -129,8 +129,8 @@ QStringList filesAndDirs = dir.entryList(QDir::Files | QDir::Readable); for (int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) { QFile file(dir.absoluteFilePath(filesAndDirs.at(i))); - if (file.open(QIODevice::ReadOnly)) { - if (QString::number(file.size()) == matchSize) { + if (QString::number(file.size()) == matchSize) { + if (file.open(QIODevice::ReadOnly)) { /* * 1 MB = 1 second per 450 files (or faster) * 10 MB = 9 seconds per 450 files (or faster) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-05 12:53:02
|
Revision: 3493 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3493&view=rev Author: j-b-m Date: 2009-06-05 12:52:55 +0000 (Fri, 05 Jun 2009) Log Message: ----------- Fix display name of recovered clips: http://www.kdenlive.org/mantis/view.php?id=894 Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2009-06-05 07:36:11 UTC (rev 3492) +++ trunk/kdenlive/src/documentchecker.cpp 2009-06-05 12:52:55 UTC (rev 3493) @@ -187,6 +187,7 @@ if (e.attribute("id") == id) { // Fix clip e.setAttribute("resource", child->text(1)); + e.setAttribute("name", KUrl(child->text(1)).fileName()); break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-04 00:50:57
|
Revision: 3995 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3995&view=rev Author: j-b-m Date: 2009-10-04 00:14:30 +0000 (Sun, 04 Oct 2009) Log Message: ----------- Fix replacing of old path not working for all tracks Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2009-10-04 00:07:14 UTC (rev 3994) +++ trunk/kdenlive/src/documentchecker.cpp 2009-10-04 00:14:30 UTC (rev 3995) @@ -273,7 +273,6 @@ break; } } - break; } } } else if (child->data(0, statusRole).toInt() == CLIPPLACEHOLDER) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2010-01-19 01:13:37
|
Revision: 4235 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4235&view=rev Author: j-b-m Date: 2010-01-19 01:13:30 +0000 (Tue, 19 Jan 2010) Log Message: ----------- Fix checking for missing lumas Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2010-01-19 00:57:50 UTC (rev 4234) +++ trunk/kdenlive/src/documentchecker.cpp 2010-01-19 01:13:30 UTC (rev 4235) @@ -97,12 +97,6 @@ } } } - if (missingClips.isEmpty()) { - return false; - } - m_dialog = new QDialog(); - m_dialog->setFont(KGlobalSettings::toolBarFont()); - m_ui.setupUi(m_dialog); QStringList missingLumas; QDomNodeList trans = m_doc.elementsByTagName("transition"); @@ -111,14 +105,24 @@ if (!luma.isEmpty() && !QFile::exists(luma)) { if (!missingLumas.contains(luma)) { missingLumas.append(luma); - QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Luma file") << luma); - item->setIcon(0, KIcon("dialog-close")); - item->setData(0, idRole, luma); - item->setData(0, statusRole, LUMAMISSING); - } - } + } + } } + if (missingClips.isEmpty() && missingLumas.isEmpty()) { + return false; + } + m_dialog = new QDialog(); + m_dialog->setFont(KGlobalSettings::toolBarFont()); + m_ui.setupUi(m_dialog); + + foreach (const QString l, missingLumas) { + QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Luma file") << l); + item->setIcon(0, KIcon("dialog-close")); + item->setData(0, idRole, l); + item->setData(0, statusRole, LUMAMISSING); + } + m_ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); for (int i = 0; i < missingClips.count(); i++) { e = missingClips.at(i).toElement(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2010-05-18 12:53:41
|
Revision: 4451 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4451&view=rev Author: j-b-m Date: 2010-05-18 12:53:35 +0000 (Tue, 18 May 2010) Log Message: ----------- Fix empty luma being detected as missing Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2010-05-18 11:27:20 UTC (rev 4450) +++ trunk/kdenlive/src/documentchecker.cpp 2010-05-18 12:53:35 UTC (rev 4451) @@ -104,9 +104,9 @@ QDomNodeList trans = m_doc.elementsByTagName("transition"); for (int i = 0; i < trans.count(); i++) { QString luma = getProperty(trans.at(i).toElement(), "luma"); - if (!luma.startsWith('/')) luma.prepend(root); - if (!luma.isEmpty() && !QFile::exists(luma)) { - if (!missingLumas.contains(luma)) { + if (!luma.isEmpty()) { + if (!luma.startsWith('/')) luma.prepend(root); + if (!QFile::exists(luma) && !missingLumas.contains(luma)) { missingLumas.append(luma); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <xz...@us...> - 2010-09-13 02:33:53
|
Revision: 4878 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4878&view=rev Author: xzhayon Date: 2010-09-13 02:33:47 +0000 (Mon, 13 Sep 2010) Log Message: ----------- - Fix several issues in the document checker: * when relocating a clip, update its resource in slowmotion clips too; * avoid deleting consecutive non-found clips if the user didn't select them; * when deleting clips references, do not delete only one of them; * avoid skipping one reference for any deletion; * when removing a clip, take care of its slowmotion and audio/video only producers too; * don't leave orphaned filters when removing playlists entries; * fix a possible crash. Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2010-09-12 21:50:43 UTC (rev 4877) +++ trunk/kdenlive/src/documentchecker.cpp 2010-09-13 02:33:47 UTC (rev 4878) @@ -389,13 +389,17 @@ } for (int i = 0; i < producers.count(); i++) { e = producers.item(i).toElement(); - if (e.attribute("id").section('_', 0, 0) == id) { + if (e.attribute("id").section('_', 0, 0) == id || e.attribute("id").section(':', 1, 1) == id) { // Fix clip properties = e.childNodes(); for (int j = 0; j < properties.count(); ++j) { property = properties.item(j).toElement(); if (property.attribute("name") == "resource") { - property.firstChild().setNodeValue(child->text(1)); + QString resource = property.firstChild().nodeValue(); + if (resource.contains(QRegExp("\\?[0-9]+\\.[0-9]+(&strobe=[0-9]+)?$"))) + property.firstChild().setNodeValue(child->text(1) + '?' + resource.section('?', -1)); + else + property.firstChild().setNodeValue(child->text(1)); break; } } @@ -473,22 +477,16 @@ void DocumentChecker::slotDeleteSelected() { - if (KMessageBox::warningContinueCancel(m_dialog, i18np("This will remove the selected clip from this project", "This will remove the selected clips from this project", m_ui.treeWidget->selectedItems().count()), i18n("Remove clips")) == KMessageBox::Cancel) return; - int ix = 0; + if (KMessageBox::warningContinueCancel(m_dialog, i18np("This will remove the selected clip from this project", "This will remove the selected clips from this project", m_ui.treeWidget->selectedItems().count()), i18n("Remove clips")) == KMessageBox::Cancel) + return; QStringList deletedIds; - QTreeWidgetItem *child = m_ui.treeWidget->topLevelItem(ix); QDomNodeList playlists = m_doc.elementsByTagName("playlist"); - while (child) { - int id = child->data(0, statusRole).toInt(); - if (child->isSelected() && id < 10) { - QString id = child->data(0, idRole).toString(); - deletedIds.append(id); - for (int j = 0; j < playlists.count(); j++) - deletedIds.append(id + '_' + QString::number(j)); + foreach(QTreeWidgetItem *child, m_ui.treeWidget->selectedItems()) { + if (child->data(0, statusRole).toInt() < 10) { + deletedIds.append(child->data(0, idRole).toString()); delete child; - } else ix++; - child = m_ui.treeWidget->topLevelItem(ix); + } } kDebug() << "// Clips to delete: " << deletedIds; @@ -500,34 +498,38 @@ QDomElement mlt = m_doc.firstChildElement("mlt"); QDomElement kdenlivedoc = mlt.firstChildElement("kdenlivedoc"); - for (int i = 0; i < infoproducers.count(); i++) { + for (int i = 0, j = 0; i < infoproducers.count() && j < deletedIds.count(); i++) { e = infoproducers.item(i).toElement(); if (deletedIds.contains(e.attribute("id"))) { // Remove clip kdenlivedoc.removeChild(e); - break; + i--; + j++; } } for (int i = 0; i < producers.count(); i++) { e = producers.item(i).toElement(); - if (deletedIds.contains(e.attribute("id"))) { + if (deletedIds.contains(e.attribute("id").section('_', 0, 0)) || deletedIds.contains(e.attribute("id").section(':', 1, 1).section('_', 0, 0))) { // Remove clip mlt.removeChild(e); - break; + i--; } } for (int i = 0; i < playlists.count(); i++) { QDomNodeList entries = playlists.at(i).toElement().elementsByTagName("entry"); - for (int j = 0; j < playlists.count(); j++) { + for (int j = 0; j < entries.count(); j++) { e = entries.item(j).toElement(); - if (deletedIds.contains(e.attribute("producer"))) { + if (deletedIds.contains(e.attribute("producer").section('_', 0, 0)) || deletedIds.contains(e.attribute("producer").section(':', 1, 1).section('_', 0, 0))) { // Replace clip with blank + while (e.childNodes().count() > 0) + e.removeChild(e.firstChild()); e.setTagName("blank"); e.removeAttribute("producer"); int length = e.attribute("out").toInt() - e.attribute("in").toInt(); e.setAttribute("length", length); + j--; } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2011-06-26 21:32:56
|
Revision: 5733 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5733&view=rev Author: j-b-m Date: 2011-06-26 21:32:50 +0000 (Sun, 26 Jun 2011) Log Message: ----------- When proxies are missing, disable them on opening before recreating them Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-06-26 20:59:38 UTC (rev 5732) +++ trunk/kdenlive/src/documentchecker.cpp 2011-06-26 21:32:50 UTC (rev 5733) @@ -281,16 +281,53 @@ e = missingProxies.at(i).toElement(); QString clipType; int t = e.attribute("type").toInt(); + QString realPath = e.attribute("resource"); + QString id = e.attribute("id"); QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Proxy clip")); item->setIcon(0, KIcon("dialog-close")); item->setText(1, e.attribute("proxy")); item->setData(0, hashRole, e.attribute("file_hash")); item->setData(0, statusRole, PROXYMISSING); item->setData(0, typeRole, t); - item->setData(0, idRole, e.attribute("id")); + item->setData(0, idRole, id); item->setToolTip(0, i18n("Missing proxy")); + // Replace proxy url with real clip in MLT producers + QDomNodeList properties; + QDomElement mltProd; + QDomElement property; + for (int j = 0; j < documentProducers.count(); j++) { + mltProd = documentProducers.at(j).toElement(); + QString prodId = mltProd.attribute("id"); + bool slowmotion = false; + if (prodId.startsWith("slowmotion")) { + slowmotion = true; + prodId = prodId.section(':', 1, 1); + } + if (prodId.contains('_')) prodId = prodId.section('_', 0, 0); + if (prodId == id) { + // Hit, we must replace url + properties = mltProd.childNodes(); + for (int k = 0; k < properties.count(); ++k) { + property = properties.item(k).toElement(); + if (property.attribute("name") == "resource") { + QString resource = property.firstChild().nodeValue(); + QString suffix; + if (slowmotion) suffix = "?" + resource.section('?', -1); + property.firstChild().setNodeValue(realPath + suffix); + break; + } + } + } + } } + if (missingProxies.count() > 0) { + // original doc was modified + QDomNode infoXmlNode = m_doc.elementsByTagName("kdenlivedoc").at(0); + QDomElement infoXml = infoXmlNode.toElement(); + infoXml.setAttribute("modified", "1"); + } + connect(m_ui.recursiveSearch, SIGNAL(pressed()), this, SLOT(slotSearchClips())); connect(m_ui.usePlaceholders, SIGNAL(pressed()), this, SLOT(slotPlaceholders())); connect(m_ui.removeSelected, SIGNAL(pressed()), this, SLOT(slotDeleteSelected())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2011-06-29 19:25:38
|
Revision: 5746 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5746&view=rev Author: j-b-m Date: 2011-06-29 19:25:32 +0000 (Wed, 29 Jun 2011) Log Message: ----------- improve feedback for missing proxy clips on project opening Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-06-28 21:15:05 UTC (rev 5745) +++ trunk/kdenlive/src/documentchecker.cpp 2011-06-29 19:25:32 UTC (rev 5746) @@ -276,21 +276,20 @@ item->setToolTip(0, i18n("Duration mismatch")); } + if (missingProxies.count() > 0) { + QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Proxy clip")); + item->setIcon(0, KIcon("dialog-warning")); + item->setText(1, i18n("%1 missing proxy clips, will be recreated on project opening", missingProxies.count())); + item->setData(0, hashRole, e.attribute("file_hash")); + item->setData(0, statusRole, PROXYMISSING); + item->setToolTip(0, i18n("Missing proxy")); + } for (int i = 0; i < missingProxies.count(); i++) { e = missingProxies.at(i).toElement(); QString clipType; - int t = e.attribute("type").toInt(); QString realPath = e.attribute("resource"); QString id = e.attribute("id"); - QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Proxy clip")); - item->setIcon(0, KIcon("dialog-close")); - item->setText(1, e.attribute("proxy")); - item->setData(0, hashRole, e.attribute("file_hash")); - item->setData(0, statusRole, PROXYMISSING); - item->setData(0, typeRole, t); - item->setData(0, idRole, id); - item->setToolTip(0, i18n("Missing proxy")); // Replace proxy url with real clip in MLT producers QDomNodeList properties; QDomElement mltProd; @@ -760,7 +759,8 @@ if (m_ui.treeWidget->currentItem()) { QTreeWidgetItem *item = m_ui.treeWidget->currentItem(); int t = item->data(0, typeRole).toInt(); - if (t == TITLE_FONT_ELEMENT || t == TITLE_IMAGE_ELEMENT) { + int s = item->data(0, statusRole).toInt(); + if (t == TITLE_FONT_ELEMENT || t == TITLE_IMAGE_ELEMENT || s == PROXYMISSING) { m_ui.removeSelected->setEnabled(false); } else m_ui.removeSelected->setEnabled(true); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2011-07-06 00:12:56
|
Revision: 5766 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5766&view=rev Author: j-b-m Date: 2011-07-06 00:12:50 +0000 (Wed, 06 Jul 2011) Log Message: ----------- improve handling of missing luma files: http://kdenlive.org/mantis/view.php?id=2216 Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-07-05 22:49:28 UTC (rev 5765) +++ trunk/kdenlive/src/documentchecker.cpp 2011-07-06 00:12:50 UTC (rev 5766) @@ -137,8 +137,9 @@ for (int i = 0; i < trans.count(); i++) { QString luma = getProperty(trans.at(i).toElement(), "luma"); if (!luma.isEmpty()) { - if (!luma.startsWith('/')) luma.prepend(root); - if (!QFile::exists(luma) && !missingLumas.contains(luma)) { + QString lumaPath = luma; + if (!lumaPath.startsWith('/')) lumaPath.prepend(root); + if (!QFile::exists(lumaPath) && !missingLumas.contains(luma)) { missingLumas.append(luma); } } @@ -420,6 +421,13 @@ QString result = searchPath.path(KUrl::AddTrailingSlash) + KUrl(file).fileName(); if (QFile::exists(result)) return result; + // try to find luma in application path + searchPath.clear(); + searchPath = KUrl(QCoreApplication::applicationDirPath()); + searchPath.cd("../share/apps/kdenlive/lumas"); + result = searchPath.path(KUrl::AddTrailingSlash) + KUrl(file).fileName(); + if (QFile::exists(result)) + return result; return QString(); } @@ -576,6 +584,7 @@ } else if (child->data(0, statusRole).toInt() == LUMAOK) { for (int i = 0; i < trans.count(); i++) { QString luma = getProperty(trans.at(i).toElement(), "luma"); + kDebug() << "luma: " << luma; if (!luma.isEmpty() && luma == child->data(0, idRole).toString()) { setProperty(trans.at(i).toElement(), "luma", child->text(1)); @@ -665,16 +674,33 @@ if (KMessageBox::warningContinueCancel(m_dialog, i18np("This will remove the selected clip from this project", "This will remove the selected clips from this project", m_ui.treeWidget->selectedItems().count()), i18n("Remove clips")) == KMessageBox::Cancel) return; QStringList deletedIds; + QStringList deletedLumas; QDomNodeList playlists = m_doc.elementsByTagName("playlist"); foreach(QTreeWidgetItem *child, m_ui.treeWidget->selectedItems()) { - if (child->data(0, statusRole).toInt() < 10) { + int id = child->data(0, statusRole).toInt(); + if (id == CLIPMISSING) { deletedIds.append(child->data(0, idRole).toString()); delete child; } + else if (id == LUMAMISSING) { + deletedLumas.append(child->data(0, idRole).toString()); + delete child; + } } - kDebug() << "// Clips to delete: " << deletedIds; + if (!deletedLumas.isEmpty()) { + QDomElement e; + QDomNodeList transitions = m_doc.elementsByTagName("transition"); + foreach (QString lumaPath, deletedLumas) { + for (int i = 0; i < transitions.count(); i++) { + e = transitions.item(i).toElement(); + QString resource = EffectsList::property(e, "luma"); + if (resource == lumaPath) EffectsList::removeProperty(e, "luma"); + } + } + } + if (!deletedIds.isEmpty()) { QDomElement e; QDomNodeList producers = m_doc.elementsByTagName("producer"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2011-07-07 09:17:37
|
Revision: 5773 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5773&view=rev Author: j-b-m Date: 2011-07-07 09:17:31 +0000 (Thu, 07 Jul 2011) Log Message: ----------- Enable "recursive search" on missing lumas Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-07-06 21:35:14 UTC (rev 5772) +++ trunk/kdenlive/src/documentchecker.cpp 2011-07-07 09:17:31 UTC (rev 5773) @@ -235,7 +235,7 @@ } m_ui.removeSelected->setEnabled(!missingClips.isEmpty()); - m_ui.recursiveSearch->setEnabled(!missingClips.isEmpty()); + m_ui.recursiveSearch->setEnabled(!missingClips.isEmpty() || !missingLumas.isEmpty()); m_ui.usePlaceholders->setEnabled(!missingClips.isEmpty()); m_ui.fixDuration->setEnabled(!wrongDurationClips.isEmpty()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2011-07-20 07:57:42
|
Revision: 5797 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5797&view=rev Author: j-b-m Date: 2011-07-20 07:57:36 +0000 (Wed, 20 Jul 2011) Log Message: ----------- Don't check duration mismatch for slideshow clips, since it is allowed (for example with loop enabled) Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-07-16 18:09:57 UTC (rev 5796) +++ trunk/kdenlive/src/documentchecker.cpp 2011-07-20 07:57:36 UTC (rev 5797) @@ -81,7 +81,7 @@ e = m_info.item(i).toElement(); clipType = e.attribute("type").toInt(); if (clipType == COLOR) continue; - if (clipType != TEXT && clipType != IMAGE) { + if (clipType != TEXT && clipType != IMAGE && clipType != SLIDESHOW) { QString id = e.attribute("id"); int duration = e.attribute("duration").toInt(); int mltDuration = -1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2010-05-06 11:55:49
|
Revision: 4417 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4417&view=rev Author: j-b-m Date: 2010-05-06 11:55:43 +0000 (Thu, 06 May 2010) Log Message: ----------- Fix detection of missing luma files on document opening Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2010-05-06 11:33:18 UTC (rev 4416) +++ trunk/kdenlive/src/documentchecker.cpp 2010-05-06 11:55:43 UTC (rev 4417) @@ -99,9 +99,12 @@ } QStringList missingLumas; + QString root = m_doc.documentElement().attribute("root"); + if (!root.isEmpty()) root = KUrl(root).path(KUrl::AddTrailingSlash); QDomNodeList trans = m_doc.elementsByTagName("transition"); for (int i = 0; i < trans.count(); i++) { QString luma = getProperty(trans.at(i).toElement(), "luma"); + if (!luma.startsWith('/')) luma.prepend(root); if (!luma.isEmpty() && !QFile::exists(luma)) { if (!missingLumas.contains(luma)) { missingLumas.append(luma); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |