implemented rolling edit (#74)

This commit is contained in:
itsmattkc
2018-07-08 14:38:40 +01:00
parent 0b739fcb76
commit 4b29e19a3e
8 changed files with 195 additions and 50 deletions
+30 -13
View File
@@ -358,7 +358,8 @@ void Project::load_project() {
Clip* temp_clip;
int state = LOAD_STATE_IDLE;
while (!stream.atEnd()) {
bool error = false;
while (!error && !stream.atEnd()) {
stream.readNext();
switch (state) {
case LOAD_STATE_IDLE:
@@ -380,9 +381,13 @@ void Project::load_project() {
case LOAD_STATE_FOOTAGE:
if (stream.isEndElement() && stream.name() == "footage") {
Media* m = import_file(temp_url);
m->save_id = temp_media_id;
m->name = temp_name;
temp_media_list.append(m);
if (m == NULL) {
error = (QMessageBox::warning(this, "Source load error", "Couldn't load source file '" + temp_url + "'. This is unsupported and may lead to crashes. Do you wish to continue?", QMessageBox::Yes, QMessageBox::No) == QMessageBox::No);
} else {
m->save_id = temp_media_id;
m->name = temp_name;
temp_media_list.append(m);
}
state = LOAD_STATE_IDLE;
} else if (stream.isStartElement()) {
if (stream.name() == "name") {
@@ -410,9 +415,12 @@ void Project::load_project() {
break;
}
}
if (!found) {
clip->linked.removeAt(j);
qDebug() << "[WARNING] Discarded link from loaded file - this should NEVER happen";
if (!found) {
if (QMessageBox::warning(this, "Corrupt clip link", "Project contains a non-existent clip link. It may be corrupt. Would you like to load it anyway?", QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
clip->linked.removeAt(j);
} else {
error = true;
}
}
}
}
@@ -497,9 +505,13 @@ void Project::load_project() {
} else if (stream.name() == "stream") {
stream.readNext();
int stream_index = stream.text().toInt();
temp_clip->media_stream = temp_clip->media->get_stream_from_file_index(stream_index);
if (temp_clip->media_stream == NULL) {
qDebug() << "[WARNING] Could not load media stream - project file seems corrupt";
if (temp_clip->media != NULL) {
temp_clip->media_stream = temp_clip->media->get_stream_from_file_index(stream_index);
if (temp_clip->media_stream == NULL) {
if (QMessageBox::warning(this, "Source changed", "Source file '" + temp_clip->media->url + "' appears to have changed since last saving the project. This is unsupported and may lead to crashes. Do you wish to continue?", QMessageBox::Yes, QMessageBox::No) == QMessageBox::No) {
error = true;
}
}
}
} else if (stream.name() == "linked") {
state = LOAD_STATE_CLIP_LINKS;
@@ -531,11 +543,16 @@ void Project::load_project() {
}
if (stream.hasError()) {
qDebug() << "[ERROR] Error parsing XML." << stream.error();
QMessageBox::critical(this, "XML Parsing Error", "Couldn't load '" + project_url + "'. " + stream.error(), QMessageBox::Ok);
error = true;
}
panel_timeline->redraw_all_clips(false);
project_changed = false;
if (error) {
new_project();
} else {
panel_timeline->redraw_all_clips(false);
project_changed = false;
}
}
void Project::save_project() {
+1 -1
View File
@@ -29,7 +29,7 @@ Timeline::Timeline(QWidget *parent) :
splitting = false;
importing = false;
playing = false;
trim_in = false;
trim_in_point = false;
snapped = false;
rect_select_init = false;
rect_select_proc = false;
+5 -2
View File
@@ -34,6 +34,7 @@ struct Ghost {
// other variables
long ghost_length;
long media_length;
bool trim_in;
};
struct Selection {
@@ -44,6 +45,8 @@ struct Selection {
long old_in;
long old_out;
int old_track;
bool trim_in;
};
namespace Ui {
@@ -141,11 +144,11 @@ public:
// moving
bool moving_init;
bool moving_proc;
QVector<Ghost> ghosts;
QVector<Ghost> ghosts;
// trimming
int trim_target;
bool trim_in;
bool trim_in_point;
// splitting
bool splitting;