#ifndef UNDO_H #define UNDO_H class QTreeWidgetItem; class QCheckBox; struct Clip; struct Sequence; #include #include #include extern QUndoStack undo_stack; class TimelineAction : public QUndoCommand { public: TimelineAction(); ~TimelineAction(); void change_sequence(Sequence* s); void new_sequence(QTreeWidgetItem* s, QTreeWidgetItem* parent); void add_clips(Sequence* s, QVector& add); void set_timeline_in(Sequence* s, int clip, long value); void increase_timeline_in(Sequence* s, int clip, long value); void set_timeline_out(Sequence* s, int clip, long value); void increase_timeline_out(Sequence* s, int clip, long value); void set_clip_in(Sequence* s, int clip, long value); void increase_clip_in(Sequence* s, int clip, long value); void set_track(Sequence* s, int clip, int value); void increase_track(Sequence* s, int clip, int value); void delete_clip(Sequence* s, int clip); void add_media(QTreeWidgetItem* item); void delete_media(QTreeWidgetItem* item); void ripple(Sequence* s, long point, long length); void ripple(Sequence* s, long point, long length, QVector &ignore); void set_in_out(Sequence* s, bool enabled, long in, long out); void undo(); void redo(); private: bool done; bool change_seq; Sequence* old_seq; Sequence* new_seq; QVector new_sequence_items; QVector new_sequence_parents; QVector sequences; QVector actions; QVector clips; QVector old_values; QVector new_values; QVector deleted_clips; QVector deleted_clips_indices; QVector deleted_clip_sequences; QVector sequence_to_add_clips_to; QVector clips_to_add; QVector added_indexes; QVector removed_link_from_sequence; QVector removed_link_from; QVector removed_link_to; QVector deleted_media; QVector deleted_media_parents; QVector media_to_add; Sequence* ripple_sequence; bool ripple_enabled; long ripple_point; long ripple_length; QVector rippled_clips; QVector ripple_ignores; bool change_in_out; Sequence* change_in_out_sequence; bool old_in_out_enabled; bool new_in_out_enabled; long old_sequence_in; long new_sequence_in; long old_sequence_out; long new_sequence_out; void new_action(Sequence* s, int action, int clip, long old_val, long new_val); void offset_links(QVector& clips, int offset); }; class LinkCommand : public QUndoCommand { public: LinkCommand(); void undo(); void redo(); QVector clips; bool link; private: QVector< QVector > old_links; }; class CheckboxCommand : public QUndoCommand { public: CheckboxCommand(QCheckBox* b); ~CheckboxCommand(); void undo(); void redo(); private: QCheckBox* box; bool checked; bool done; }; #endif // UNDO_H