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, QUndoCommand * parent = 0);
52 MultitrackModel& m_model;
55 UndoHelper m_undoHelper;
58 class InsertCommand :
public QUndoCommand
61 InsertCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
65 MultitrackModel& m_model;
69 QStringList m_oldTracks;
70 UndoHelper m_undoHelper;
72 bool m_rippleAllTracks;
75 class OverwriteCommand :
public QUndoCommand
78 OverwriteCommand(MultitrackModel& model,
int trackIndex,
int position,
const QString &xml,
bool seek =
true, QUndoCommand * parent = 0);
82 MultitrackModel& m_model;
86 UndoHelper m_undoHelper;
90 class LiftCommand :
public QUndoCommand
93 LiftCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
97 MultitrackModel& m_model;
100 UndoHelper m_undoHelper;
103 class RemoveCommand :
public QUndoCommand
106 RemoveCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
110 MultitrackModel& m_model;
113 UndoHelper m_undoHelper;
114 bool m_rippleAllTracks;
117 class NameTrackCommand :
public QUndoCommand
120 NameTrackCommand(MultitrackModel& model,
int trackIndex,
const QString& name, QUndoCommand * parent = 0);
124 MultitrackModel& m_model;
130 class MergeCommand :
public QUndoCommand
133 MergeCommand(MultitrackModel& model,
int trackIndex,
int clipIndex, QUndoCommand * parent = 0);
137 MultitrackModel& m_model;
140 UndoHelper m_undoHelper;
143 class MuteTrackCommand :
public QUndoCommand
146 MuteTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
150 MultitrackModel& m_model;
155 class HideTrackCommand :
public QUndoCommand
158 HideTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand * parent = 0);
162 MultitrackModel& m_model;
167 class CompositeTrackCommand :
public QUndoCommand
170 CompositeTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
174 MultitrackModel& m_model;
180 class LockTrackCommand :
public QUndoCommand
183 LockTrackCommand(MultitrackModel& model,
int trackIndex,
bool value, QUndoCommand * parent = 0);
187 MultitrackModel& m_model;
193 class MoveClipCommand :
public QUndoCommand
196 MoveClipCommand(MultitrackModel& model,
int trackDelta,
bool ripple, QUndoCommand * parent = 0);
199 QMultiMap<int, Mlt::Producer>& selection() {
return m_selection; }
202 MultitrackModel& m_model;
205 bool m_rippleAllTracks;
206 UndoHelper m_undoHelper;
207 QMultiMap<int, Mlt::Producer> m_selection;
214 class TrimCommand :
public QUndoCommand
217 explicit TrimCommand(QUndoCommand *parent = 0) : QUndoCommand(parent) {}
218 void setUndoHelper(UndoHelper* helper) { m_undoHelper.reset(helper); }
221 QScopedPointer<UndoHelper> m_undoHelper;
224 class TrimClipInCommand :
public TrimCommand
227 TrimClipInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
231 int id()
const {
return UndoIdTrimClipIn; }
232 bool mergeWith(
const QUndoCommand *other);
234 MultitrackModel& m_model;
239 bool m_rippleAllTracks;
243 class TrimClipOutCommand :
public TrimCommand
246 TrimClipOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool ripple,
bool redo =
true, QUndoCommand * parent = 0);
250 int id()
const {
return UndoIdTrimClipOut; }
251 bool mergeWith(
const QUndoCommand *other);
253 MultitrackModel& m_model;
258 bool m_rippleAllTracks;
262 class SplitCommand :
public QUndoCommand
265 SplitCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position, QUndoCommand * parent = 0);
269 MultitrackModel& m_model;
273 UndoHelper m_undoHelper;
276 class FadeInCommand :
public QUndoCommand
279 FadeInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
283 int id()
const {
return UndoIdFadeIn; }
284 bool mergeWith(
const QUndoCommand *other);
286 MultitrackModel& m_model;
293 class FadeOutCommand :
public QUndoCommand
296 FadeOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration, QUndoCommand * parent = 0);
300 int id()
const {
return UndoIdFadeOut; }
301 bool mergeWith(
const QUndoCommand *other);
303 MultitrackModel& m_model;
310 class AddTransitionCommand :
public QUndoCommand
313 AddTransitionCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
bool ripple, QUndoCommand * parent = 0);
316 int getTransitionIndex()
const {
return m_transitionIndex; }
318 TimelineDock& m_timeline;
322 int m_transitionIndex;
324 UndoHelper m_undoHelper;
325 bool m_rippleAllTracks;
328 class TrimTransitionInCommand :
public TrimCommand
331 TrimTransitionInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
335 int id()
const {
return UndoIdTrimTransitionIn; }
336 bool mergeWith(
const QUndoCommand *other);
338 MultitrackModel& m_model;
346 class TrimTransitionOutCommand :
public TrimCommand
349 TrimTransitionOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
353 int id()
const {
return UndoIdTrimTransitionOut; }
354 bool mergeWith(
const QUndoCommand *other);
356 MultitrackModel& m_model;
364 class AddTransitionByTrimInCommand :
public TrimCommand
367 AddTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
371 int id()
const {
return UndoIdAddTransitionByTrimIn; }
372 bool mergeWith(
const QUndoCommand *other);
374 MultitrackModel& m_model;
383 class RemoveTransitionByTrimInCommand :
public TrimCommand
386 RemoveTransitionByTrimInCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
390 MultitrackModel& m_model;
397 class RemoveTransitionByTrimOutCommand :
public TrimCommand
400 RemoveTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int delta,
bool redo =
true, QUndoCommand * parent = 0);
404 MultitrackModel& m_model;
411 class AddTransitionByTrimOutCommand :
public TrimCommand
414 AddTransitionByTrimOutCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int duration,
int trimDelta,
bool redo =
true, QUndoCommand * parent = 0);
418 int id()
const {
return UndoIdAddTransitionByTrimOut; }
419 bool mergeWith(
const QUndoCommand *other);
421 MultitrackModel& m_model;
430 class AddTrackCommand:
public QUndoCommand
433 AddTrackCommand(MultitrackModel& model,
bool isVideo, QUndoCommand* parent = 0);
437 MultitrackModel& m_model;
442 class InsertTrackCommand :
public QUndoCommand
445 InsertTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
449 MultitrackModel& m_model;
451 TrackType m_trackType;
454 class RemoveTrackCommand :
public QUndoCommand
457 RemoveTrackCommand(MultitrackModel& model,
int trackIndex, QUndoCommand* parent = 0);
461 MultitrackModel& m_model;
463 TrackType m_trackType;
465 UndoHelper m_undoHelper;
466 QScopedPointer<Mlt::Producer> m_filtersProducer;
469 class ChangeBlendModeCommand :
public QObject,
public QUndoCommand
473 ChangeBlendModeCommand(Mlt::Transition& transition,
const QString& propertyName,
const QString& mode, QUndoCommand* parent = 0);
477 void modeChanged(QString& mode);
479 Mlt::Transition m_transition;
480 QString m_propertyName;
485 class UpdateCommand :
public QUndoCommand
488 UpdateCommand(TimelineDock& timeline,
int trackIndex,
int clipIndex,
int position,
489 QUndoCommand * parent = 0);
490 void setXmlAfter(
const QString& xml) { m_xmlAfter = xml; }
491 void setPosition(
int trackIndex,
int clipIndex,
int position);
492 int trackIndex()
const {
return m_trackIndex;}
493 int clipIndex()
const {
return m_clipIndex;}
494 int position()
const {
return m_position;}
498 TimelineDock& m_timeline;
504 UndoHelper m_undoHelper;
507 class DetachAudioCommand:
public QUndoCommand
510 DetachAudioCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
int position,
const QString& xml, QUndoCommand* parent = 0);
514 MultitrackModel& m_model;
518 int m_targetTrackIndex;
519 QString m_audioIndex;
521 UndoHelper m_undoHelper;
525 class ReplaceCommand :
public QUndoCommand
528 ReplaceCommand(MultitrackModel& model,
int trackIndex,
int clipIndex,
const QString& xml, QUndoCommand* parent =
nullptr);
532 MultitrackModel& m_model;
537 UndoHelper m_undoHelper;