fully implemented saving/loading effect data to file, fixes #418

This commit is contained in:
itsmattkc
2019-02-03 20:55:47 +11:00
parent 7c447680d2
commit 87df07e6e7
4 changed files with 172 additions and 118 deletions
+34 -16
View File
@@ -3,6 +3,7 @@
#include <QTreeWidgetItem>
#include <QMessageBox>
#include <QCheckBox>
#include <QXmlStreamWriter>
#include "project/clip.h"
#include "project/sequence.h"
@@ -804,22 +805,22 @@ void SetAutoscaleAction::redo() {
}
AddMarkerAction::AddMarkerAction(bool is_sequence, void* s, long t, QString n) :
is_sequence_internal(is_sequence),
target(s),
is_sequence_internal(is_sequence),
target(s),
time(t),
name(n),
old_project_changed(mainWindow->isWindowModified())
{}
void AddMarkerAction::undo() {
QVector<Marker>& markers = is_sequence_internal ?
static_cast<Sequence*>(target)->markers :
static_cast<Clip*>(target)->get_markers();
QVector<Marker>& markers = is_sequence_internal ?
static_cast<Sequence*>(target)->markers :
static_cast<Clip*>(target)->get_markers();
if (index == -1) {
markers.removeLast();
markers.removeLast();
} else {
markers[index].name = old_name;
markers[index].name = old_name;
}
mainWindow->setWindowModified(old_project_changed);
@@ -828,12 +829,12 @@ void AddMarkerAction::undo() {
void AddMarkerAction::redo() {
index = -1;
QVector<Marker>& markers = is_sequence_internal ?
static_cast<Sequence*>(target)->markers :
static_cast<Clip*>(target)->get_markers();
QVector<Marker>& markers = is_sequence_internal ?
static_cast<Sequence*>(target)->markers :
static_cast<Clip*>(target)->get_markers();
for (int i=0;i<markers.size();i++) {
if (markers.at(i).frame == time) {
for (int i=0;i<markers.size();i++) {
if (markers.at(i).frame == time) {
index = i;
break;
}
@@ -842,11 +843,11 @@ void AddMarkerAction::redo() {
if (index == -1) {
Marker m;
m.frame = time;
m.name = name;
markers.append(m);
m.name = name;
markers.append(m);
} else {
old_name = markers.at(index).name;
markers[index].name = name;
old_name = markers.at(index).name;
markers[index].name = name;
}
mainWindow->setWindowModified(true);
@@ -1295,3 +1296,20 @@ void UpdateViewer::undo() {
void UpdateViewer::redo() {
panel_sequence_viewer->viewer_widget->frame_update();
}
SetEffectData::SetEffectData(Effect *e, const QByteArray &s) :
effect(e),
data(s)
{}
void SetEffectData::undo() {
effect->load_from_string(old_data);
old_data.clear();
}
void SetEffectData::redo() {
old_data = effect->save_to_string();
effect->load_from_string(data);
}