addfoldercommand.cpp
editfoldercommand.cpp
clipproperties.cpp
+ movetransitioncommand.cpp
)
kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc )
m_document->setModified(true);
}
+void CustomTrackView::moveTransition(GenTime oldpos, GenTime newpos) {
+ kDebug() << "move";
+}
+
void CustomTrackView::addItem(DocClipBase *clip, QPoint pos) {
int in = 0;
GenTime out = clip->duration();
MoveClipCommand *command = new MoveClipCommand(this, m_startPos, QPointF(m_dragItem->startPos().frames(m_document->fps()), m_dragItem->track()), false);
m_commandStack->push(command);
if (m_dragItem->type() == AVWIDGET) m_document->renderer()->mltMoveClip((int)(m_tracksList.count() - m_startPos.y()), (int)(m_tracksList.count() - m_dragItem->track()), (int) m_startPos.x(), (int)(m_dragItem->startPos().frames(m_document->fps())));
+ if (m_dragItem->type() == TRANSITIONWIDGET) {
+ Transition* transition = (Transition*)m_dragItem;
+ GenTime oldin = transition->transitionStartTime();
+ GenTime oldout = transition->transitionEndTime();
+ GenTime newin = m_dragItem->startPos();
+ GenTime newout = newin + (oldout - oldin);
+ m_document->renderer()->mltMoveTransition(transition->transitionName(),
+ (int)(m_tracksList.count() - m_dragItem->track()), 0,
+ oldin, oldout, newin, newout);
+ }
+
} else if (m_operationMode == RESIZESTART) {
// resize start
ResizeClipCommand *command = new ResizeClipCommand(this, m_startPos, QPointF(m_dragItem->startPos().frames(m_document->fps()), m_dragItem->track()), true, false);
QList<QGraphicsItem *> list = scene()->items(QPointF(pos * m_scale, track * m_tracksHeight + m_tracksHeight / 2));
ClipItem *clip = NULL;
for (int i = 0; i < list.size(); ++i) {
- if (list.at(i)->type() == AVWIDGET) {
- clip = static_cast <ClipItem *> (list.at(i));
- break;
- }
+ if (list.at(i)->type() == AVWIDGET) {
+ clip = static_cast <ClipItem *>(list.at(i));
+ break;
+ }
}
return clip;
}
QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()) * m_scale, track * m_tracksHeight + m_tracksHeight / 2));
ClipItem *clip = NULL;
for (int i = 0; i < list.size(); ++i) {
- if (list.at(i)->type() == AVWIDGET) {
- clip = static_cast <ClipItem *> (list.at(i));
- break;
- }
+ if (list.at(i)->type() == AVWIDGET) {
+ clip = static_cast <ClipItem *>(list.at(i));
+ break;
+ }
}
return clip;
}
QList<QGraphicsItem *> itemList = items();
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET && itemList.at(i) != selected) {
- ClipItem *item = static_cast <ClipItem *> (itemList.at(i));
+ ClipItem *item = static_cast <ClipItem *>(itemList.at(i));
GenTime start = item->startPos();
GenTime end = item->endPos();
m_snapPoints.append(start);
if (start > offset) m_snapPoints.append(start - offset);
if (end > offset) m_snapPoints.append(end - offset);
}
- }
- else if (itemList.at(i)->type() == TRANSITIONWIDGET) {
- Transition *transition = static_cast <Transition*> (itemList.at(i));
- GenTime start = transition->transitionStartTime();
+ } else if (itemList.at(i)->type() == TRANSITIONWIDGET) {
+ Transition *transition = static_cast <Transition*>(itemList.at(i));
+ GenTime start = transition->transitionStartTime();
GenTime end = transition->transitionEndTime();
m_snapPoints.append(start);
m_snapPoints.append(end);
if (offset != GenTime()) {
if (start > offset) m_snapPoints.append(start - offset);
if (end > offset) m_snapPoints.append(end - offset);
- }
- }
+ }
+ }
}
qSort(m_snapPoints);
//for (int i = 0; i < m_snapPoints.size(); ++i)
void addTransition(int track, GenTime pos, QDomElement transition);
void deleteTransition(int track, GenTime pos, QDomElement transition);
void updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition);
+ void moveTransition(GenTime oldpos,GenTime newpos);
void activateMonitor();
int duration() const;
void deleteSelectedClips();
lsval->list->setCurrentIndex(listitems.indexOf(value));
for (int i = 0;i < lsval->list->count();i++) {
QString entry = lsval->list->itemText(i);
- if (!entry.isEmpty() && (entry.endsWith(".png") || entry.endsWith(".pnm"))) {
+ if (!entry.isEmpty() && (entry.endsWith(".png") || entry.endsWith(".pgm"))) {
if (!iconCache.contains(entry)) {
QPixmap pix(entry);
iconCache[entry] = pix.scaled(30, 30);
--- /dev/null
+/***************************************************************************
+ movetransitioncommand.h - description
+ -------------------
+ begin : Mar 15 2008
+ copyright : (C) 2008 by Marco Gittler
+ email : g.marco@freenet.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#include <KLocale>
+
+#include "movetransitioncommand.h"
+#include "customtrackview.h"
+MoveTransitionCommand::MoveTransitionCommand(CustomTrackView *view, const QPointF startPos, const QPointF endPos, int startTrack, int endTrack, bool doIt)
+ : m_view(view), m_startPos(startPos), m_endPos(endPos), m_doIt(doIt) {
+ setText(i18n("Move transition"));
+}
+
+
+// virtual
+void MoveTransitionCommand::undo() {
+// kDebug()<<"---- undoing action";
+ m_doIt = true;
+ //if (m_doIt) m_view->moveTransition(m_endPos, m_startPos);
+}
+// virtual
+void MoveTransitionCommand::redo() {
+ kDebug() << "---- redoing action";
+ //if (m_doIt) m_view->moveTransition(m_startPos, m_endPos);
+ m_doIt = true;
+}
+
+#include "moveclipcommand.moc"
--- /dev/null
+/***************************************************************************
+ movetransitioncommand.h - description
+ -------------------
+ begin : Mar 15 2008
+ copyright : (C) 2008 by Marco Gittler
+ email : g.marco@freenet.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef MOVETRANSITIONCOMMAND_H
+#define MOVETRANSITIONCOMMAND_H
+
+#include <QUndoCommand>
+#include <QGraphicsView>
+#include <QPointF>
+
+#include <KDebug>
+
+class CustomTrackView;
+
+class MoveTransitionCommand : public QUndoCommand {
+public:
+ MoveTransitionCommand(CustomTrackView *view, const QPointF startPos, const QPointF endPos, bool doIt);
+ virtual void undo();
+ virtual void redo();
+
+private:
+ CustomTrackView *m_view;
+ QPointF m_startPos;
+ QPointF m_endPos;
+ bool m_doIt;
+ int m_startTrack;
+ int m_endTrack;
+};
+
+#endif
+
void Render::mltMoveTransition(QString type, int startTrack, int trackOffset, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut) {
m_isBlocked = true;
m_mltConsumer->set("refresh", 0);
- mlt_service serv = m_mltProducer->parent().get_service();
-
- mlt_service nextservice = mlt_service_get_producer(serv);
- mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice);
- QString mlt_type = mlt_properties_get(properties, "mlt_type");
- QString resource = mlt_properties_get(properties, "mlt_service");
- int old_pos = (int)(oldIn.frames(m_fps) + oldOut.frames(m_fps)) / 2;
-
- int new_in = (int)newIn.frames(m_fps);
- int new_out = (int)newOut.frames(m_fps) - 1;
- while (mlt_type == "transition") {
- mlt_transition tr = (mlt_transition) nextservice;
- int currentTrack = mlt_transition_get_b_track(tr);
- int currentIn = (int) mlt_transition_get_in(tr);
- int currentOut = (int) mlt_transition_get_out(tr);
- kDebug() << "// FOUND EXISTING TRANS, IN: " << currentIn << ", OUT: " << currentOut << ", TRACK: " << currentTrack;
- //kDebug()<<"// LOOKING FOR IN: "<<old_in<<", OUT: "<<old_out;
- kDebug() << "// OLD IN: " << oldIn.frames(m_fps) << " // OLD OUT: " << oldOut.frames(m_fps) << ", TRACK: " << startTrack << ", MID POS: " << old_pos;
- if (resource == type && startTrack == currentTrack && currentIn <= old_pos && currentOut >= old_pos) {
- mlt_transition_set_in_and_out(tr, new_in, new_out);
- if (trackOffset != 0) {
- mlt_properties properties = MLT_TRANSITION_PROPERTIES(tr);
- mlt_properties_set_int(properties, "a_track", mlt_transition_get_a_track(tr) + trackOffset);
- mlt_properties_set_int(properties, "b_track", mlt_transition_get_b_track(tr) + trackOffset);
+
+ Mlt::Tractor *tractor = getTractor();
+ if (tractor) {
+ Mlt::Tractor newTractor;
+ mlt_service service = tractor->get_service();
+ mlt_service nextservice = mlt_service_get_producer(service);
+ mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice);
+ QString mlt_type = mlt_properties_get(properties, "mlt_type");
+ QString resource = mlt_properties_get(properties, "mlt_service");
+ int old_pos = (int)(oldIn.frames(m_fps) + oldOut.frames(m_fps)) / 2;
+
+ int new_in = (int)newIn.frames(m_fps);
+ int new_out = (int)newOut.frames(m_fps) - 1;
+ while (mlt_type == "transition") {
+ mlt_transition tr = (mlt_transition) nextservice;
+ int currentTrack = mlt_transition_get_b_track(tr);
+ int currentIn = (int) mlt_transition_get_in(tr);
+ int currentOut = (int) mlt_transition_get_out(tr);
+ kDebug() << "// FOUND EXISTING TRANS, IN: " << type << resource << currentIn << ", OUT: " << currentOut << ", TRACK: " << currentTrack;
+ //kDebug()<<"// LOOKING FOR IN: "<<old_in<<", OUT: "<<old_out;
+ kDebug() << "// OLD IN: " << oldIn.frames(m_fps) << " // OLD OUT: " << oldOut.frames(m_fps) << ", TRACK: " << startTrack << ", MID POS: " << old_pos;
+ if (resource == type && startTrack == currentTrack && currentIn <= old_pos && currentOut >= old_pos) {
+ mlt_transition_set_in_and_out(tr, new_in, new_out);
+ if (trackOffset != 0) {
+ mlt_properties properties = MLT_TRANSITION_PROPERTIES(tr);
+ mlt_properties_set_int(properties, "a_track", mlt_transition_get_a_track(tr) + trackOffset);
+ mlt_properties_set_int(properties, "b_track", mlt_transition_get_b_track(tr) + trackOffset);
+ kDebug() << "set new start & end :" << new_in << new_out;
+ }
+ break;
}
- break;
+ nextservice = mlt_service_producer(nextservice);
+ properties = MLT_SERVICE_PROPERTIES(nextservice);
+ mlt_type = mlt_properties_get(properties, "mlt_type");
+ resource = mlt_properties_get(properties, "mlt_service");
}
- nextservice = mlt_service_producer(nextservice);
- properties = MLT_SERVICE_PROPERTIES(nextservice);
- mlt_type = mlt_properties_get(properties, "mlt_type");
- resource = mlt_properties_get(properties, "mlt_service");
+ m_isBlocked = false;
}
- m_isBlocked = false;
}
void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml) {