21 #include "models/multitrackmodel.h" 22 #include "docks/timelinedock.h" 23 #include "undohelper.h" 24 #include <QUndoCommand> 27 #include <MltTransition.h> 37 UndoIdTrimTransitionIn,
38 UndoIdTrimTransitionOut,
39 UndoIdAddTransitionByTrimIn,
40 UndoIdAddTransitionByTrimOut,
44 class AppendCommand :
public QUndoCommand
47 AppendCommand(MultitrackModel& model,
int trackIndex,
const QString& xml, QUndoCommand * parent = 0);
51 MultitrackModel& m_model;
54 UndoHelper m_undoHelper;
57 class InsertCommand :
public QUndoCommand
60 InsertCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
64 MultitrackModel& m_model;
68 QStringList m_oldTracks;
69 UndoHelper m_undoHelper;
71 bool m_rippleAllTracks;
74 class OverwriteCommand :
public QUndoCommand
77 OverwriteCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
81 MultitrackModel& m_model;
85 UndoHelper m_undoHelper;
89 class LiftCommand :
public QUndoCommand
92 LiftCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
96 MultitrackModel& m_model;
99 UndoHelper m_undoHelper;
102 class RemoveCommand :
public QUndoCommand
105 RemoveCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
109 MultitrackModel& m_model;
112 UndoHelper m_undoHelper;
113 bool m_rippleAllTracks;
116 class NameTrackCommand :
public QUndoCommand
119 NameTrackCommand(MultitrackModel& model,
int trackIndex,
const QString& name, QUndoCommand * parent = 0);
123 MultitrackModel& m_model;
129 class MergeCommand :
public QUndoCommand
132 MergeCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
136 MultitrackModel& m_model;
139 UndoHelper m_undoHelper;
142 class MuteTrackCommand :
public QUndoCommand
145 MuteTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
149 MultitrackModel& m_model;
154 class HideTrackCommand :
public QUndoCommand
157 HideTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
161 MultitrackModel& m_model;
166 class CompositeTrackCommand :
public QUndoCommand
169 CompositeTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
173 MultitrackModel& m_model;
179 class LockTrackCommand :
public QUndoCommand
182 LockTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
186 MultitrackModel& m_model;
192 class MoveClipCommand :
public QUndoCommand
195 MoveClipCommand(MultitrackModel& model,
int fromTrackIndex,
int toTrackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
199 MultitrackModel& m_model;
200 int m_fromTrackIndex;
206 bool m_rippleAllTracks;
207 UndoHelper m_undoHelper;
210 class TrimCommand :
public QUndoCommand
213 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
214 void setUndoHelper(UndoHelper* helper) { m_undoHelper.reset(helper); }
217 QScopedPointer<UndoHelper> m_undoHelper;
220 class TrimClipInCommand :
public TrimCommand
223 TrimClipInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
227 int id()
const {
return UndoIdTrimClipIn; }
228 bool mergeWith(
const QUndoCommand *other);
230 MultitrackModel& m_model;
235 bool m_rippleAllTracks;
239 class TrimClipOutCommand :
public TrimCommand
242 TrimClipOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
246 int id()
const {
return UndoIdTrimClipOut; }
247 bool mergeWith(
const QUndoCommand *other);
249 MultitrackModel& m_model;
254 bool m_rippleAllTracks;
258 class SplitCommand :
public QUndoCommand
261 SplitCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position, QUndoCommand * parent = 0);
265 MultitrackModel& m_model;
269 UndoHelper m_undoHelper;
272 class FadeInCommand :
public QUndoCommand
275 FadeInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
279 int id()
const {
return UndoIdFadeIn; }
280 bool mergeWith(
const QUndoCommand *other);
282 MultitrackModel& m_model;
289 class FadeOutCommand :
public QUndoCommand
292 FadeOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
296 int id()
const {
return UndoIdFadeOut; }
297 bool mergeWith(
const QUndoCommand *other);
299 MultitrackModel& m_model;
306 class AddTransitionCommand :
public QUndoCommand
309 AddTransitionCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
312 int getTransitionIndex()
const {
return m_transitionIndex; }
314 MultitrackModel& m_model;
318 int m_transitionIndex;
320 UndoHelper m_undoHelper;
321 bool m_rippleAllTracks;
324 class TrimTransitionInCommand :
public TrimCommand
327 TrimTransitionInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
331 int id()
const {
return UndoIdTrimTransitionIn; }
332 bool mergeWith(
const QUndoCommand *other);
334 MultitrackModel& m_model;
342 class TrimTransitionOutCommand :
public TrimCommand
345 TrimTransitionOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
349 int id()
const {
return UndoIdTrimTransitionOut; }
350 bool mergeWith(
const QUndoCommand *other);
352 MultitrackModel& m_model;
360 class AddTransitionByTrimInCommand :
public TrimCommand
363 AddTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
367 int id()
const {
return UndoIdAddTransitionByTrimIn; }
368 bool mergeWith(
const QUndoCommand *other);
370 MultitrackModel& m_model;
379 class RemoveTransitionByTrimInCommand :
public TrimCommand
382 RemoveTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
386 MultitrackModel& m_model;
393 class RemoveTransitionByTrimOutCommand :
public TrimCommand
396 RemoveTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
400 MultitrackModel& m_model;
407 class AddTransitionByTrimOutCommand :
public TrimCommand
410 AddTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
414 int id()
const {
return UndoIdAddTransitionByTrimOut; }
415 bool mergeWith(
const QUndoCommand *other);
417 MultitrackModel& m_model;
426 class AddTrackCommand:
public QUndoCommand
429 AddTrackCommand(MultitrackModel& model,
bool isVideo, QUndoCommand* parent = 0);
433 MultitrackModel& m_model;
438 class InsertTrackCommand :
public QUndoCommand
441 InsertTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
445 MultitrackModel& m_model;
447 TrackType m_trackType;
450 class RemoveTrackCommand :
public QUndoCommand
453 RemoveTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
457 MultitrackModel& m_model;
459 TrackType m_trackType;
461 UndoHelper m_undoHelper;
462 QScopedPointer<Mlt::Producer> m_filtersProducer;
465 class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
469 ChangeBlendModeCommand(Mlt::Transition& transition,
const QString& propertyName,
const QString& mode, QUndoCommand* parent = 0);
473 void modeChanged(QString& mode);
475 Mlt::Transition m_transition;
476 QString m_propertyName;
481 class UpdateCommand :
public QUndoCommand
484 UpdateCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
485 QUndoCommand * parent = 0);
486 void setXmlAfter(
const QString& xml) { m_xmlAfter = xml; }
487 void setPosition(
int trackIndex,
int clipIndex,
int position);
488 int trackIndex()
const {
return m_trackIndex;}
489 int clipIndex()
const {
return m_clipIndex;}
490 int position()
const {
return m_position;}
494 TimelineDock& m_timeline;
500 UndoHelper m_undoHelper;
503 class DetachAudioCommand:
public QUndoCommand
506 DetachAudioCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
const QString& xml, QUndoCommand* parent = 0);
510 MultitrackModel& m_model;
514 int m_targetTrackIndex;
515 QString m_audioIndex;
517 UndoHelper m_undoHelper;