// razor tool over a clip, display current frame in monitor
if (false && !m_blockRefresh && item->type() == AVWIDGET) {
//TODO: solve crash when showing frame when moving razor over clip
- emit showClipFrame(((ClipItem *) item)->baseClip(), QPoint(), mappedXPos - (clip->startPos() - clip->cropStart()).frames(m_document->fps()));
+ emit showClipFrame(((ClipItem *) item)->baseClip(), QPoint(), false, mappedXPos - (clip->startPos() - clip->cropStart()).frames(m_document->fps()));
}
event->accept();
return;
if (pos < GenTime()) {
// Add track effect
if (effect.attribute("id") == "speed") {
- // TODO: uncomment after 0.8.2 release
- // emit displayMessage(i18n("Cannot add speed effect to track"));
+ emit displayMessage(i18n("Cannot add speed effect to track"), ErrorMessage);
return;
}
clearSelection();
return;
}
QDomElement effect = insertedEffect.cloneNode().toElement();
- //kDebug() << "// update effect ix: " << effect.attribute("kdenlive_ix")<<", TRACK: "<<track;
+ //kDebug() << "// update effect ix: " << effect.attribute("kdenlive_ix")<<", GAIN: "<<EffectsList::parameter(effect, "gain");
if (pos < GenTime()) {
// editing a track effect
EffectsParameterList effectParams = getEffectArgs(effect);
emit clipItemSelected(clip, ix);
}
}
+ else emit displayMessage(i18n("Cannot find clip to update effect"), ErrorMessage);
setDocumentModified();
}
emit displayMessage(i18n("Error removing clip at %1 on track %2", m_document->timecode().getTimecodeFromFrames(info.startPos.frames(m_document->fps())), info.track), ErrorMessage);
kDebug()<<"CANNOT REMOVE: "<<info.startPos.frames(m_document->fps())<<", TK: "<<info.track;
//m_document->renderer()->saveSceneList(QString("/tmp/error%1.mlt").arg(m_ct), QDomElement());
- exit(1);
return;
}
m_waitingThumbs.removeAll(item);
+ item->stopThumbs();
if (item->isSelected()) emit clipItemSelected(NULL);
item->baseClip()->removeReference();
m_document->updateClip(item->baseClip()->getId());
m_commandStack->push(deleteSelected);
}
-void CustomTrackView::changeClipSpeed()
-{
- // TODO: remove after string freeze
- QList<QGraphicsItem *> itemList = scene()->selectedItems();
- if (itemList.count() == 0) {
- emit displayMessage(i18n("Select clip to change speed"), ErrorMessage);
- return;
- }
- QUndoCommand *changeSelected = new QUndoCommand();
- changeSelected->setText("Edit clip speed");
- int count = 0;
- int percent = -1;
- bool ok;
- for (int i = 0; i < itemList.count(); i++) {
- if (itemList.at(i)->type() == AVWIDGET) {
- ClipItem *item = static_cast <ClipItem *>(itemList.at(i));
- if (percent == -1) percent = QInputDialog::getInteger(this, i18n("Edit Clip Speed"), i18n("New speed (percents)"), item->speed() * 100, 1, 10000, 1, &ok);
- if (!ok) break;
- double speed = (double) percent / 100.0;
- if (item->speed() != speed && (item->clipType() == VIDEO || item->clipType() == AV)) {
- count++;
- //new ChangeSpeedCommand(this, info, item->speed(), speed, item->clipProducer(), changeSelected);
- }
- }
- }
- if (count > 0) m_commandStack->push(changeSelected);
- else delete changeSelected;
-}
void CustomTrackView::doChangeClipSpeed(ItemInfo info, ItemInfo speedIndependantInfo, const double speed, const double oldspeed, int strobe, const QString &id)
{
emit displayMessage(i18n("Waiting for clip..."), InformationMessage);
emit forceClipProcessing(clipId);
qApp->processEvents();
- for (int i = 0; i < 3; i++) {
+ for (int i = 0; i < 10; i++) {
if (baseclip->getProducer() == NULL) {
- m_producerNotReady.wait(&m_mutex, 500 + 500 * i);
+ qApp->processEvents();
+ m_producerNotReady.wait(&m_mutex, 200);
} else break;
}
if (baseclip->getProducer() == NULL) {
Transition *CustomTrackView::getTransitionItemAt(int pos, int track)
{
- const QPointF p(pos, (track + 1) * m_tracksHeight);
+ const QPointF p(pos, track * m_tracksHeight + Transition::itemOffset() + 1);
QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); i++) {
Transition *CustomTrackView::getTransitionItemAtEnd(GenTime pos, int track)
{
int framepos = (int)(pos.frames(m_document->fps()));
- const QPointF p(framepos - 1, (track + 1) * m_tracksHeight);
+ const QPointF p(framepos - 1, track * m_tracksHeight + Transition::itemOffset() + 1);
QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); i++) {
Transition *CustomTrackView::getTransitionItemAtStart(GenTime pos, int track)
{
- const QPointF p(pos.frames(m_document->fps()), (track + 1) * m_tracksHeight);
+ const QPointF p(pos.frames(m_document->fps()), track * m_tracksHeight + Transition::itemOffset() + 1);
QList<QGraphicsItem *> list = scene()->items(p);
Transition *clip = NULL;
for (int i = 0; i < list.size(); ++i) {
if (!luma.isEmpty()) urls << KUrl(luma).path();
}
}
-#if QT_VERSION >= 0x040500
urls.removeDuplicates();
-#endif
return urls;
}
}
+void CustomTrackView::slotGotFilterJobResults(const QString &id, int startPos, int track, const QString &filter, stringMap filterParams)
+{
+ ClipItem *clip = getClipItemAt(GenTime(startPos, m_document->fps()), track);
+ if (clip == NULL) {
+ emit displayMessage(i18n("Cannot find clip for effect update %1.", filter), ErrorMessage);
+ return;
+ }
+ QDomElement newEffect;
+ QDomElement effect = clip->getEffectAt(clip->selectedEffectIndex());
+ if (effect.attribute("id") == filter) {
+ newEffect = effect.cloneNode().toElement();
+ QMap<QString, QString>::const_iterator i = filterParams.constBegin();
+ while (i != filterParams.constEnd()) {
+ EffectsList::setParameter(newEffect, i.key(), i.value());
+ kDebug()<<"// RESULT FILTER: "<<i.key()<<"="<< i.value();
+ ++i;
+ }
+ EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), effect, newEffect, clip->selectedEffectIndex(), true);
+ m_commandStack->push(command);
+ emit clipItemSelected(clip, clip->selectedEffectIndex());
+ }
+
+}
+
+