void CustomTrackView::dragEnterEvent(QDragEnterEvent * event)
{
if (insertDropClips(event->mimeData(), event->pos())) {
- event->acceptProposedAction();
+ if (event->source() == this) {
+ event->setDropAction(Qt::MoveAction);
+ event->accept();
+ } else {
+ event->setDropAction(Qt::MoveAction);
+ event->acceptProposedAction();
+ }
} else QGraphicsView::dragEnterEvent(event);
}
} else delete effectCommand;
}
+void CustomTrackView::slotAddEffect(ClipItem *clip, QDomElement effect)
+{
+ if (clip) slotAddEffect(effect, clip->startPos(), clip->track());
+}
+
void CustomTrackView::slotAddEffect(QDomElement effect, GenTime pos, int track)
{
QList<QGraphicsItem *> itemList;
if (effect.attribute("id") == "freeze" && m_cursorPos > item->startPos().frames(m_document->fps()) && m_cursorPos < item->endPos().frames(m_document->fps())) {
item->initEffect(effect, m_cursorPos - item->startPos().frames(m_document->fps()));
} else {
+ kDebug()<<"PREIT 0: "<<effect.attribute("kdenlive_ix");
item->initEffect(effect);
}
new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), effect, true, effectCommand);
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET) {
ClipItem *clip = static_cast<ClipItem *>(itemList.at(i));
+ clip->setSelectedEffect(clip->effectsCount() - 1);
if (!clip->isSelected()) {
- clearSelection();
+ clearSelection(false);
clip->setSelected(true);
+ emit clipItemSelected(clip, clip->selectedEffectIndex());
}
- clip->setSelectedEffect(clip->effectsCount() - 1);
- emit clipItemSelected(clip, clip->effectsCount() - 1);
break;
}
}
if (strobe == 0) strobe = 1;
doChangeClipSpeed(clip->info(), clip->speedIndependantInfo(), speed, clip->speed(), strobe, clip->baseClip()->getId());
}
- clip->setEffectAt(ix, effect);
- if (ix == clip->selectedEffectIndex()) {
- clip->setSelectedEffect(ix);
- if (!triggeredByUser)
- emit clipItemSelected(clip, ix);
- }
+ if (clip->updateEffect(effect)) {
+ if (ix == clip->selectedEffectIndex()) {
+ clip->setSelectedEffect(ix);
+ if (!triggeredByUser)
+ emit clipItemSelected(clip, ix);
+ }
+ } else emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
return;
}
clip->setFadeOut(pos);
}
}
+ bool success = true;
+ if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams)) success = false;
- if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams))
- emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
-
- clip->setEffectAt(ix, effect);
- if (ix == clip->selectedEffectIndex()) {
- clip->setSelectedEffect(ix);
- if (!triggeredByUser)
- emit clipItemSelected(clip, ix);
- }
+ if (success && clip->updateEffect(effect)) {
+ if (ix == clip->selectedEffectIndex()) {
+ clip->setSelectedEffect(ix);
+ if (!triggeredByUser)
+ emit clipItemSelected(clip, ix);
+ }
+ }
+ else emit displayMessage(i18n("Problem editing effect"), ErrorMessage);
}
else emit displayMessage(i18n("Cannot find clip to update effect"), ErrorMessage);
setDocumentModified();
{
if (pos < GenTime()) {
// Moving track effect
- QDomElement act = m_document->getTrackEffect(m_document->tracksCount() - track - 1, newPos - 1);
- QDomElement before = m_document->getTrackEffect(m_document->tracksCount() - track - 1, oldPos - 1);
-
+ if (newPos > m_document->getTrackEffects(m_document->tracksCount() - track - 1).count()) {
+ newPos = m_document->getTrackEffects(m_document->tracksCount() - track - 1).count();
+ }
+ QDomElement act = m_document->getTrackEffect(m_document->tracksCount() - track - 1, newPos);
+ QDomElement before = m_document->getTrackEffect(m_document->tracksCount() - track - 1, oldPos);
if (!act.isNull() && !before.isNull()) {
- m_document->setTrackEffect(m_document->tracksCount() - track - 1, oldPos - 1, act);
- m_document->setTrackEffect(m_document->tracksCount() - track - 1, newPos - 1, before);
+ //m_document->setTrackEffect(m_document->tracksCount() - track - 1, oldPos, act);
+ m_document->setTrackEffect(m_document->tracksCount() - track - 1, newPos, before);
m_document->renderer()->mltMoveEffect(m_document->tracksCount() - track, pos, oldPos, newPos);
emit showTrackEffects(m_document->tracksCount() - track, m_document->trackInfoAt(m_document->tracksCount() - track - 1));
} else emit displayMessage(i18n("Cannot move effect"), ErrorMessage);
return;
}
ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()), m_document->tracksCount() - track);
- if (clip && !clip->effectAt(newPos - 1).isNull() && !clip->effectAt(oldPos - 1).isNull()) {
- QDomElement act = clip->effectAt(newPos - 1);
- QDomElement before = clip->effectAt(oldPos - 1);
- clip->setEffectAt(oldPos - 1, act);
- clip->setEffectAt(newPos - 1, before);
+ if (newPos > clip->effectsCount()) {
+ newPos = clip->effectsCount();
+ }
+ if (clip) {
+ QDomElement act = clip->effectAt(newPos);
+ QDomElement before = clip->effectAt(oldPos);
+ if (act.isNull() || before.isNull()) {
+ emit displayMessage(i18n("Cannot move effect"), ErrorMessage);
+ return;
+ }
+ //clip->moveEffect(act, oldPos);
+ clip->moveEffect(before, newPos);
// special case: speed effect, which is a pseudo-effect, not appearing in MLT's effects
if (act.attribute("id") == "speed") {
m_document->renderer()->mltUpdateEffectPosition(track, pos, oldPos, newPos);
} else if (before.attribute("id") == "speed") {
m_document->renderer()->mltUpdateEffectPosition(track, pos, newPos, oldPos);
} else m_document->renderer()->mltMoveEffect(track, pos, oldPos, newPos);
- emit clipItemSelected(clip, newPos - 1);
+ emit clipItemSelected(clip, newPos);
setDocumentModified();
} else emit displayMessage(i18n("Cannot move effect"), ErrorMessage);
}
info.duration = 0;
info.isMute = false;
info.isLocked = false;
+ info.effectsList = EffectsList(true);
if (d.video_track->isChecked()) {
info.type = VIDEOTRACK;
info.isBlind = false;
splitAudio();
}
-void CustomTrackView::clearSelection()
+void CustomTrackView::clearSelection(bool emitInfo)
{
resetSelectionGroup();
scene()->clearSelection();
m_dragItem = NULL;
- emit clipItemSelected(NULL);
+ if (emitInfo) emit clipItemSelected(NULL);
}
void CustomTrackView::updatePalette()
parameters.addParam("tag", effect.attribute("tag"));
if (effect.hasAttribute("region")) parameters.addParam("region", effect.attribute("region"));
parameters.addParam("kdenlive_ix", effect.attribute("kdenlive_ix"));
+ parameters.addParam("kdenlive_info", effect.attribute("kdenlive_info"));
parameters.addParam("id", effect.attribute("id"));
if (effect.hasAttribute("src")) parameters.addParam("src", effect.attribute("src"));
if (effect.hasAttribute("disable")) parameters.addParam("disable", effect.attribute("disable"));