21 #include "models/multitrackmodel.h"
22 #include "models/markersmodel.h"
23 #include "docks/timelinedock.h"
24 #include "undohelper.h"
25 #include <QUndoCommand>
28 #include <MltTransition.h>
29 #include <MltProducer.h>
39 UndoIdTrimTransitionIn,
40 UndoIdTrimTransitionOut,
41 UndoIdAddTransitionByTrimIn,
42 UndoIdAddTransitionByTrimOut,
46 class AppendCommand :
public QUndoCommand
49 AppendCommand(MultitrackModel& model,
int trackIndex,
const QString& xml,
bool skipProxy =
false, QUndoCommand * parent = 0);
53 MultitrackModel& m_model;
56 UndoHelper m_undoHelper;
60 class InsertCommand :
public QUndoCommand
63 InsertCommand(MultitrackModel& model, MarkersModel& markersModel,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
67 MultitrackModel& m_model;
68 MarkersModel& m_markersModel;
72 QStringList m_oldTracks;
73 UndoHelper m_undoHelper;
75 bool m_rippleAllTracks;
80 class OverwriteCommand :
public QUndoCommand
83 OverwriteCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
87 MultitrackModel& m_model;
91 UndoHelper m_undoHelper;
95 class LiftCommand :
public QUndoCommand
98 LiftCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
102 MultitrackModel& m_model;
105 UndoHelper m_undoHelper;
108 class RemoveCommand :
public QUndoCommand
111 RemoveCommand(MultitrackModel& model, MarkersModel& markersModel,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
115 MultitrackModel& m_model;
116 MarkersModel& m_markersModel;
119 UndoHelper m_undoHelper;
120 bool m_rippleAllTracks;
121 bool m_rippleMarkers;
122 int m_markerRemoveStart;
123 int m_markerRemoveEnd;
124 QList<Markers::Marker> m_markers;
127 class NameTrackCommand :
public QUndoCommand
130 NameTrackCommand(MultitrackModel& model,
int trackIndex,
const QString& name, QUndoCommand * parent = 0);
134 MultitrackModel& m_model;
140 class MergeCommand :
public QUndoCommand
143 MergeCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
147 MultitrackModel& m_model;
150 UndoHelper m_undoHelper;
153 class MuteTrackCommand :
public QUndoCommand
156 MuteTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
160 MultitrackModel& m_model;
165 class HideTrackCommand :
public QUndoCommand
168 HideTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
172 MultitrackModel& m_model;
177 class CompositeTrackCommand :
public QUndoCommand
180 CompositeTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
184 MultitrackModel& m_model;
190 class LockTrackCommand :
public QUndoCommand
193 LockTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
197 MultitrackModel& m_model;
203 class MoveClipCommand :
public QUndoCommand
206 MoveClipCommand(MultitrackModel& model, MarkersModel& markersModel,
int trackDelta,
bool ripple, QUndoCommand * parent = 0);
209 QMultiMap<int, Mlt::Producer>& selection() {
return m_selection; }
213 MultitrackModel& m_model;
214 MarkersModel& m_markersModel;
217 bool m_rippleAllTracks;
218 bool m_rippleMarkers;
219 UndoHelper m_undoHelper;
220 QMultiMap<int, Mlt::Producer> m_selection;
225 int m_markerOldStart;
226 int m_markerNewStart;
227 QList<Markers::Marker> m_markers;
230 class TrimCommand :
public QUndoCommand
233 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
234 void setUndoHelper(UndoHelper* helper) { m_undoHelper.reset(helper); }
237 QScopedPointer<UndoHelper> m_undoHelper;
240 class TrimClipInCommand :
public TrimCommand
243 TrimClipInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
247 int id()
const {
return UndoIdTrimClipIn; }
248 bool mergeWith(
const QUndoCommand *other);
250 MultitrackModel& m_model;
255 bool m_rippleAllTracks;
259 class TrimClipOutCommand :
public TrimCommand
262 TrimClipOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
266 int id()
const {
return UndoIdTrimClipOut; }
267 bool mergeWith(
const QUndoCommand *other);
269 MultitrackModel& m_model;
274 bool m_rippleAllTracks;
278 class SplitCommand :
public QUndoCommand
281 SplitCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position, QUndoCommand * parent = 0);
285 MultitrackModel& m_model;
289 UndoHelper m_undoHelper;
292 class FadeInCommand :
public QUndoCommand
295 FadeInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
299 int id()
const {
return UndoIdFadeIn; }
300 bool mergeWith(
const QUndoCommand *other);
302 MultitrackModel& m_model;
309 class FadeOutCommand :
public QUndoCommand
312 FadeOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
316 int id()
const {
return UndoIdFadeOut; }
317 bool mergeWith(
const QUndoCommand *other);
319 MultitrackModel& m_model;
326 class AddTransitionCommand :
public QUndoCommand
329 AddTransitionCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
332 int getTransitionIndex()
const {
return m_transitionIndex; }
334 TimelineDock& m_timeline;
335 MultitrackModel& m_model;
336 MarkersModel& m_markersModel;
340 int m_transitionIndex;
342 UndoHelper m_undoHelper;
343 bool m_rippleAllTracks;
344 bool m_rippleMarkers;
345 int m_markerOldStart;
346 int m_markerNewStart;
347 QList<Markers::Marker> m_markers;
350 class TrimTransitionInCommand :
public TrimCommand
353 TrimTransitionInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
357 int id()
const {
return UndoIdTrimTransitionIn; }
358 bool mergeWith(
const QUndoCommand *other);
360 MultitrackModel& m_model;
368 class TrimTransitionOutCommand :
public TrimCommand
371 TrimTransitionOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
375 int id()
const {
return UndoIdTrimTransitionOut; }
376 bool mergeWith(
const QUndoCommand *other);
378 MultitrackModel& m_model;
386 class AddTransitionByTrimInCommand :
public TrimCommand
389 AddTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
393 int id()
const {
return UndoIdAddTransitionByTrimIn; }
394 bool mergeWith(
const QUndoCommand *other);
396 MultitrackModel& m_model;
405 class RemoveTransitionByTrimInCommand :
public TrimCommand
408 RemoveTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
412 MultitrackModel& m_model;
419 class RemoveTransitionByTrimOutCommand :
public TrimCommand
422 RemoveTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
426 MultitrackModel& m_model;
433 class AddTransitionByTrimOutCommand :
public TrimCommand
436 AddTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
440 int id()
const {
return UndoIdAddTransitionByTrimOut; }
441 bool mergeWith(
const QUndoCommand *other);
443 MultitrackModel& m_model;
452 class AddTrackCommand:
public QUndoCommand
455 AddTrackCommand(MultitrackModel& model,
bool isVideo, QUndoCommand* parent = 0);
459 MultitrackModel& m_model;
464 class InsertTrackCommand :
public QUndoCommand
467 InsertTrackCommand(MultitrackModel& model,
int trackIndex, TrackType trackType = PlaylistTrackType, QUndoCommand* parent = 0);
471 MultitrackModel& m_model;
473 TrackType m_trackType;
476 class RemoveTrackCommand :
public QUndoCommand
479 RemoveTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
483 MultitrackModel& m_model;
485 TrackType m_trackType;
487 UndoHelper m_undoHelper;
488 QScopedPointer<Mlt::Producer> m_filtersProducer;
491 class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
495 ChangeBlendModeCommand(Mlt::Transition& transition,
const QString& propertyName,
const QString& mode, QUndoCommand* parent = 0);
499 void modeChanged(QString& mode);
501 Mlt::Transition m_transition;
502 QString m_propertyName;
507 class UpdateCommand :
public QUndoCommand
510 UpdateCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
511 QUndoCommand * parent = 0);
512 void setXmlAfter(
const QString& xml) { m_xmlAfter = xml; }
513 void setPosition(
int trackIndex,
int clipIndex,
int position);
514 int trackIndex()
const {
return m_trackIndex;}
515 int clipIndex()
const {
return m_clipIndex;}
516 int position()
const {
return m_position;}
520 TimelineDock& m_timeline;
526 UndoHelper m_undoHelper;
529 class DetachAudioCommand:
public QUndoCommand
532 DetachAudioCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
const QString& xml, QUndoCommand* parent = 0);
536 MultitrackModel& m_model;
540 int m_targetTrackIndex;
542 UndoHelper m_undoHelper;
546 class ReplaceCommand :
public QUndoCommand
549 ReplaceCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
const QString& xml, QUndoCommand* parent =
nullptr);
553 MultitrackModel& m_model;
558 UndoHelper m_undoHelper;