+ EditEffectCommand *command = new EditEffectCommand(this, m_tracksList.count() - clip->track(), clip->startPos(), oldeffect, effect, true);
+ m_commandStack->push(command);
+}
+
+void CustomTrackView::cutClip(ItemInfo info, GenTime cutTime, bool cut) {
+ if (cut) {
+ // cut clip
+ ClipItem *item = getClipItemAt((int) info.startPos.frames(m_document->fps()), info.track);
+ int cutPos = (int) cutTime.frames(m_document->fps());
+ ItemInfo newPos;
+ newPos.startPos = cutTime;
+ newPos.endPos = info.endPos;
+ newPos.track = info.track;
+ ClipItem *dup = new ClipItem(item->baseClip(), newPos, m_scale, m_document->fps());
+ dup->setCropStart(dup->cropStart() + (cutTime - info.startPos));
+ item->resizeEnd(cutPos, m_scale);
+ scene()->addItem(dup);
+ m_document->renderer()->mltCutClip(m_tracksList.count() - info.track, cutTime);
+ } else {
+ // uncut clip
+ ClipItem *item = getClipItemAt((int) info.startPos.frames(m_document->fps()), info.track);
+ ClipItem *dup = getClipItemAt((int) cutTime.frames(m_document->fps()), info.track);
+ delete dup;
+ item->resizeEnd((int) info.endPos.frames(m_document->fps()), m_scale);
+ m_document->renderer()->mltRemoveClip(m_tracksList.count() - info.track, cutTime);
+ m_document->renderer()->mltResizeClipEnd(m_tracksList.count() - info.track, info.startPos, item->cropStart(), item->cropStart() + info.endPos - info.startPos);
+ }
+}
+
+void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition) {
+ AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, transition, true);
+ m_commandStack->push(command);
+ m_document->setModified(true);
+}
+
+void CustomTrackView::addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
+ Transition *tr = new Transition(transitionInfo, endTrack, m_scale, m_document->fps(), params);
+ scene()->addItem(tr);
+
+ //kDebug() << "---- ADDING transition " << e.attribute("tag") << ", on tracks " << m_tracksList.count() - e.attribute("transition_track").toInt() << " / " << getPreviousVideoTrack(e.attribute("transition_track").toInt());
+ m_document->renderer()->mltAddTransition(tr->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, tr->toXML());
+ m_document->setModified(true);
+}
+
+void CustomTrackView::deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
+ Transition *item = getTransitionItemAt((int)transitionInfo.startPos.frames(m_document->fps()) + 1, transitionInfo.track);
+ m_document->renderer()->mltDeleteTransition(item->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, item->toXML());
+ delete item;
+ m_document->setModified(true);
+}
+
+void CustomTrackView::slotTransitionUpdated(Transition *tr, QDomElement old) {
+ EditTransitionCommand *command = new EditTransitionCommand(this, tr->track(), tr->startPos(), old, tr->toXML() , true);