return;
}
if (replace) toReload = clipId;
- if (!toReload.isEmpty())
+ if (!toReload.isEmpty()) {
emit clipNeedsReload(toReload);
+ }
}
bool ProjectList::adjustProjectProfileToItem(ProjectItem *item)
params = ui.extra_params->toPlainText().simplified();
KdenliveSettings::setAdd_new_clip(ui.add_clip->isChecked());
int index = 0;
- foreach(const QString &id, ids) {
- ProjectItem *item = getItemById(id);
+ i = ids.constBegin();
+ while (i != ids.constEnd()) {
+ ProjectItem *item = getItemById(i.key());
if (!item || !item->referencedClip()) continue;
- QString src = item->clipUrl().path();
+ QString src = i.value();
QString dest;
if (ids.count() > 1) {
dest = destinations.at(index);
jobParams << duration;
jobParams << QString::number(KdenliveSettings::add_new_clip());
jobParams << params;
- CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams);
+ CutClipJob *job = new CutClipJob(item->clipType(), i.key(), jobParams);
if (job->isExclusive() && hasPendingJob(item, job->jobType)) {
delete job;
continue;
}
m_jobList.append(job);
setJobStatus(item, job->jobType, JOBWAITING, 0, job->statusMessage());
+ ++i;
}
delete d;
slotCheckJobProcess();
else {
destination = ids.values();
}
+ if (filterName == "framebuffer") {
+ Mlt::Profile profile;
+ QStringList keys = ids.keys();
+ int ix = 0;
+ foreach(const QString &url, destination) {
+ QString prodstring = QString("framebuffer:" + url + "?-1");
+ Mlt::Producer *reversed = new Mlt::Producer(profile, prodstring.toUtf8().constData());
+ if (!reversed || !reversed->is_valid()) {
+ emit displayMessage(i18n("Cannot reverse clip"), -2, ErrorMessage);
+ continue;
+ }
+ QString dest = url + ".mlt";
+ if (QFile::exists(dest)) {
+ if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", dest)) == KMessageBox::No) continue;
+ }
+ Mlt::Consumer *cons = new Mlt::Consumer(profile, "xml", dest.toUtf8().constData());
+ if (cons == NULL || !cons->is_valid()) {
+ emit displayMessage(i18n("Cannot render reversed clip"), -2, ErrorMessage);
+ continue;
+ }
+ Mlt::Playlist list;
+ list.insert_at(0, reversed, 0);
+ delete reversed;
+ cons->connect(list);
+ cons->run();
+ delete cons;
+ QString groupId;
+ QString groupName;
+ DocClipBase *base = m_doc->clipManager()->getClipById(keys.at(ix));
+ if (base) {
+ groupId = base->getProperty("groupid");
+ groupName = base->getProperty("groupname");
+ }
+ emit addClip(dest, groupId, groupName);
+ ix++;
+ }
+ return;
+ }
if (filterName == "motion_est") {
// Show config dialog