diff --git a/dialogs/loaddialog.cpp b/dialogs/loaddialog.cpp index 3a065241e..8e8522102 100644 --- a/dialogs/loaddialog.cpp +++ b/dialogs/loaddialog.cpp @@ -34,6 +34,8 @@ LoadDialog::LoadDialog(QWidget *parent, bool autorecovery) : QDialog(parent) { layout->addLayout(hboxLayout); + update(); + LoadThread* lt = new LoadThread(this, autorecovery); QObject::connect(lt, SIGNAL(success()), this, SLOT(thread_done())); lt->start(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 0e6e2f552..ce8bcbd43 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -250,10 +250,15 @@ MainWindow::~MainWindow() { delete ui; delete panel_sequence_viewer; + panel_sequence_viewer = NULL; delete panel_footage_viewer; + panel_footage_viewer = NULL; delete panel_project; + panel_project = NULL; delete panel_effect_controls; + panel_effect_controls = NULL; delete panel_timeline; + panel_timeline = NULL; close_debug(); } diff --git a/olive.pro b/olive.pro index b9cb61096..aabbbdaa3 100644 --- a/olive.pro +++ b/olive.pro @@ -33,7 +33,8 @@ SOURCES += \ ui/sourcetable.cpp \ dialogs/aboutdialog.cpp \ ui/timelinewidget.cpp \ - io/media.cpp \ + project/media.cpp \ + project/footage.cpp \ project/sequence.cpp \ project/clip.cpp \ playback/playback.cpp \ @@ -66,6 +67,8 @@ SOURCES += \ dialogs/speeddialog.cpp \ dialogs/mediapropertiesdialog.cpp \ io/crc32.cpp \ + project/projectmodel.cpp \ + io/loadthread.cpp \ dialogs/loaddialog.cpp \ debug.cpp \ io/path.cpp \ @@ -91,8 +94,7 @@ SOURCES += \ project/effectfield.cpp \ effects/internal/cubetransition.cpp \ project/effectgizmo.cpp \ - io/clipboard.cpp \ - effects/internal/maskeffect.cpp + io/clipboard.cpp HEADERS += \ mainwindow.h \ @@ -103,7 +105,8 @@ HEADERS += \ ui/sourcetable.h \ dialogs/aboutdialog.h \ ui/timelinewidget.h \ - io/media.h \ + project/media.h \ + project/footage.h \ project/sequence.h \ project/clip.h \ playback/playback.h \ @@ -138,6 +141,8 @@ HEADERS += \ dialogs/speeddialog.h \ dialogs/mediapropertiesdialog.h \ io/crc32.h \ + project/projectmodel.h \ + io/loadthread.h \ dialogs/loaddialog.h \ debug.h \ io/path.h \ @@ -163,8 +168,7 @@ HEADERS += \ project/effectfield.h \ effects/internal/cubetransition.h \ project/effectgizmo.h \ - io/clipboard.h \ - effects/internal/maskeffect.h + io/clipboard.h FORMS += \ mainwindow.ui \ diff --git a/panels/project.cpp b/panels/project.cpp index 5349240ab..c22c07d31 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -59,7 +59,6 @@ Project::Project(QWidget *parent) : source_table = ui->treeView; source_table->setModel(&project_model); - connect(source_table, SIGNAL(itemChanged(Media*,int)), this, SLOT(rename_media(Media*,int))); /*Media* m = new Media(project_model.get_root()); project_model.get_root()->appendChild(m);*/ @@ -161,14 +160,6 @@ Sequence* create_sequence_from_media(QVector& media_list) { return s; } -void Project::rename_media(Media* item, int column) { - QString n = "rename function"; - switch (item->get_type()) { - case MEDIA_TYPE_FOOTAGE: item->to_footage()->name = n; break; - case MEDIA_TYPE_SEQUENCE: item->to_sequence()->name = n; break; - } -} - void Project::duplicate_selected() { QModelIndexList items = source_table->selectionModel()->selectedRows(); bool duped = false; @@ -739,6 +730,7 @@ void Project::clear() { void Project::new_project() { // clear existing project set_sequence(NULL); + panel_footage_viewer->set_media(NULL); clear(); mainWindow->setWindowModified(false); } diff --git a/panels/project.h b/panels/project.h index feac5f90c..4f392a808 100644 --- a/panels/project.h +++ b/panels/project.h @@ -102,7 +102,6 @@ private: QString get_file_name_from_path(const QString &path); QDir proj_dir; private slots: - void rename_media(Media* item, int column); void clear_recent_projects(); }; diff --git a/project/effect.cpp b/project/effect.cpp index 7bee62a95..3358e4822 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -27,7 +27,6 @@ #include "effects/internal/paneffect.h" #include "effects/internal/shakeeffect.h" #include "effects/internal/cornerpineffect.h" -#include "effects/internal/maskeffect.h" #include #include @@ -59,8 +58,7 @@ Effect* create_effect(Clip* c, const EffectMeta* em) { case EFFECT_INTERNAL_PAN: return new PanEffect(c, em); case EFFECT_INTERNAL_TONE: return new ToneEffect(c, em); case EFFECT_INTERNAL_SHAKE: return new ShakeEffect(c, em); - case EFFECT_INTERNAL_CORNERPIN: return new CornerPinEffect(c, em); - case EFFECT_INTERNAL_MASK: return new MaskEffect(c, em); + case EFFECT_INTERNAL_CORNERPIN: return new CornerPinEffect(c, em); } } else { dout << "[ERROR] Invalid effect data"; diff --git a/project/projectmodel.cpp b/project/projectmodel.cpp index 34e0c5ee7..f5991db26 100644 --- a/project/projectmodel.cpp +++ b/project/projectmodel.cpp @@ -18,14 +18,19 @@ void ProjectModel::destroy_root() { if (panel_sequence_viewer != NULL) panel_sequence_viewer->viewer_widget->delete_function(); if (panel_footage_viewer != NULL) panel_footage_viewer->viewer_widget->delete_function(); - if (root_item != NULL) delete root_item; + if (root_item != NULL) { + beginRemoveRows(QModelIndex(), 0, root_item->childCount()); + delete root_item; + endRemoveRows(); + } } void ProjectModel::clear() { destroy_root(); + beginResetModel(); root_item = new Media(0); root_item->root = true; - update_data(); + endResetModel(); } Media *ProjectModel::get_root() {