21 #include "models/multitrackmodel.h" 22 #include "docks/timelinedock.h" 23 #include "undohelper.h" 24 #include <QUndoCommand> 27 #include <MltTransition.h> 28 #include <MltProducer.h> 38 UndoIdTrimTransitionIn,
39 UndoIdTrimTransitionOut,
40 UndoIdAddTransitionByTrimIn,
41 UndoIdAddTransitionByTrimOut,
45 class AppendCommand :
public QUndoCommand
48 AppendCommand(MultitrackModel& model,
int trackIndex,
const QString& xml,
bool skipProxy =
false, QUndoCommand * parent = 0);
52 MultitrackModel& m_model;
55 UndoHelper m_undoHelper;
59 class InsertCommand :
public QUndoCommand
62 InsertCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
66 MultitrackModel& m_model;
70 QStringList m_oldTracks;
71 UndoHelper m_undoHelper;
73 bool m_rippleAllTracks;
76 class OverwriteCommand :
public QUndoCommand
79 OverwriteCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
83 MultitrackModel& m_model;
87 UndoHelper m_undoHelper;
91 class LiftCommand :
public QUndoCommand
94 LiftCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
98 MultitrackModel& m_model;
101 UndoHelper m_undoHelper;
104 class RemoveCommand :
public QUndoCommand
107 RemoveCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
111 MultitrackModel& m_model;
114 UndoHelper m_undoHelper;
115 bool m_rippleAllTracks;
118 class NameTrackCommand :
public QUndoCommand
121 NameTrackCommand(MultitrackModel& model,
int trackIndex,
const QString& name, QUndoCommand * parent = 0);
125 MultitrackModel& m_model;
131 class MergeCommand :
public QUndoCommand
134 MergeCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
138 MultitrackModel& m_model;
141 UndoHelper m_undoHelper;
144 class MuteTrackCommand :
public QUndoCommand
147 MuteTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
151 MultitrackModel& m_model;
156 class HideTrackCommand :
public QUndoCommand
159 HideTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
163 MultitrackModel& m_model;
168 class CompositeTrackCommand :
public QUndoCommand
171 CompositeTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
175 MultitrackModel& m_model;
181 class LockTrackCommand :
public QUndoCommand
184 LockTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
188 MultitrackModel& m_model;
194 class MoveClipCommand :
public QUndoCommand
197 MoveClipCommand(MultitrackModel& model,
int trackDelta,
bool ripple, QUndoCommand * parent = 0);
200 QMultiMap<int, Mlt::Producer>& selection() {
return m_selection; }
203 MultitrackModel& m_model;
206 bool m_rippleAllTracks;
207 UndoHelper m_undoHelper;
208 QMultiMap<int, Mlt::Producer> m_selection;
215 class TrimCommand :
public QUndoCommand
218 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
219 void setUndoHelper(UndoHelper* helper) { m_undoHelper.reset(helper); }
222 QScopedPointer<UndoHelper> m_undoHelper;
225 class TrimClipInCommand :
public TrimCommand
228 TrimClipInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
232 int id()
const {
return UndoIdTrimClipIn; }
233 bool mergeWith(
const QUndoCommand *other);
235 MultitrackModel& m_model;
240 bool m_rippleAllTracks;
244 class TrimClipOutCommand :
public TrimCommand
247 TrimClipOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
251 int id()
const {
return UndoIdTrimClipOut; }
252 bool mergeWith(
const QUndoCommand *other);
254 MultitrackModel& m_model;
259 bool m_rippleAllTracks;
263 class SplitCommand :
public QUndoCommand
266 SplitCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position, QUndoCommand * parent = 0);
270 MultitrackModel& m_model;
274 UndoHelper m_undoHelper;
277 class FadeInCommand :
public QUndoCommand
280 FadeInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
284 int id()
const {
return UndoIdFadeIn; }
285 bool mergeWith(
const QUndoCommand *other);
287 MultitrackModel& m_model;
294 class FadeOutCommand :
public QUndoCommand
297 FadeOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
301 int id()
const {
return UndoIdFadeOut; }
302 bool mergeWith(
const QUndoCommand *other);
304 MultitrackModel& m_model;
311 class AddTransitionCommand :
public QUndoCommand
314 AddTransitionCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
317 int getTransitionIndex()
const {
return m_transitionIndex; }
319 TimelineDock& m_timeline;
323 int m_transitionIndex;
325 UndoHelper m_undoHelper;
326 bool m_rippleAllTracks;
329 class TrimTransitionInCommand :
public TrimCommand
332 TrimTransitionInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
336 int id()
const {
return UndoIdTrimTransitionIn; }
337 bool mergeWith(
const QUndoCommand *other);
339 MultitrackModel& m_model;
347 class TrimTransitionOutCommand :
public TrimCommand
350 TrimTransitionOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
354 int id()
const {
return UndoIdTrimTransitionOut; }
355 bool mergeWith(
const QUndoCommand *other);
357 MultitrackModel& m_model;
365 class AddTransitionByTrimInCommand :
public TrimCommand
368 AddTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
372 int id()
const {
return UndoIdAddTransitionByTrimIn; }
373 bool mergeWith(
const QUndoCommand *other);
375 MultitrackModel& m_model;
384 class RemoveTransitionByTrimInCommand :
public TrimCommand
387 RemoveTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
391 MultitrackModel& m_model;
398 class RemoveTransitionByTrimOutCommand :
public TrimCommand
401 RemoveTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
405 MultitrackModel& m_model;
412 class AddTransitionByTrimOutCommand :
public TrimCommand
415 AddTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
419 int id()
const {
return UndoIdAddTransitionByTrimOut; }
420 bool mergeWith(
const QUndoCommand *other);
422 MultitrackModel& m_model;
431 class AddTrackCommand:
public QUndoCommand
434 AddTrackCommand(MultitrackModel& model,
bool isVideo, QUndoCommand* parent = 0);
438 MultitrackModel& m_model;
443 class InsertTrackCommand :
public QUndoCommand
446 InsertTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
450 MultitrackModel& m_model;
452 TrackType m_trackType;
455 class RemoveTrackCommand :
public QUndoCommand
458 RemoveTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
462 MultitrackModel& m_model;
464 TrackType m_trackType;
466 UndoHelper m_undoHelper;
467 QScopedPointer<Mlt::Producer> m_filtersProducer;
470 class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
474 ChangeBlendModeCommand(Mlt::Transition& transition,
const QString& propertyName,
const QString& mode, QUndoCommand* parent = 0);
478 void modeChanged(QString& mode);
480 Mlt::Transition m_transition;
481 QString m_propertyName;
486 class UpdateCommand :
public QUndoCommand
489 UpdateCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
490 QUndoCommand * parent = 0);
491 void setXmlAfter(
const QString& xml) { m_xmlAfter = xml; }
492 void setPosition(
int trackIndex,
int clipIndex,
int position);
493 int trackIndex()
const {
return m_trackIndex;}
494 int clipIndex()
const {
return m_clipIndex;}
495 int position()
const {
return m_position;}
499 TimelineDock& m_timeline;
505 UndoHelper m_undoHelper;
508 class DetachAudioCommand:
public QUndoCommand
511 DetachAudioCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
const QString& xml, QUndoCommand* parent = 0);
515 MultitrackModel& m_model;
519 int m_targetTrackIndex;
520 QString m_audioIndex;
522 UndoHelper m_undoHelper;
526 class ReplaceCommand :
public QUndoCommand
529 ReplaceCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
const QString& xml, QUndoCommand* parent =
nullptr);
533 MultitrackModel& m_model;
538 UndoHelper m_undoHelper;