diff --git a/dialogs/replaceclipmediadialog.cpp b/dialogs/replaceclipmediadialog.cpp index c6b5d77d0..cf88a0c2a 100644 --- a/dialogs/replaceclipmediadialog.cpp +++ b/dialogs/replaceclipmediadialog.cpp @@ -7,6 +7,7 @@ #include "project/sequence.h" #include "playback/playback.h" #include "playback/cacher.h" +#include "io/media.h" #include #include @@ -89,6 +90,13 @@ void ReplaceClipMediaDialog::replace() { } c->media = new_media; + + if (get_type_from_tree(new_item) == MEDIA_TYPE_FOOTAGE) { + // TODO: the media streams may be invalid, here we have a BASIC heuristic for getting the right ones that COULD BE BETTER + Media* casted_new_media = static_cast(new_media); + c->media_stream = (c->track < 0) ? casted_new_media->video_tracks.at(0)->file_index : casted_new_media->audio_tracks.at(0)->file_index; + } + c->refresh(); changed = true; } diff --git a/panels/project.cpp b/panels/project.cpp index 50f13b6ae..19d19baab 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -16,10 +16,7 @@ #include "mainwindow.h" #include "io/config.h" #include "playback/cacher.h" -<<<<<<< HEAD #include "dialogs/replaceclipmediadialog.h" -======= ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 #include #include @@ -114,17 +111,12 @@ void Project::replace_selected_file() { if (selected_items.size() == 1) { QTreeWidgetItem* item = selected_items.at(0); if (get_type_from_tree(item) == MEDIA_TYPE_FOOTAGE) { -<<<<<<< HEAD replace_media(item, 0); -======= - replace_media(item, ""); ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 } } } void Project::replace_media(QTreeWidgetItem* item, QString filename) { -<<<<<<< HEAD Media* m = get_footage_from_tree(item); QStringList files; @@ -177,42 +169,6 @@ void Project::replace_clip_media() { dialog.exec(); } } -======= - Media* m = get_media_from_tree(item); - - // close any clips currently using this media - QVector all_sequences = list_all_project_sequences(); - for (int i=0;iclip_count();j++) { - Clip* c = s->get_clip(j); - if (c != NULL && c->media == m && c->open) { - close_clip(c); - c->cacher->wait(); - } - } - } - - QStringList files; - if (filename.isEmpty()) { - files.append(QFileDialog::getOpenFileName(this, "Replace '" + item->text(0) + "'", "", "All Files (*)")); - } else { - files.append(filename); - } - process_file_list(NULL, files, NULL, item); - - for (int i=0;iclip_count();j++) { - Clip* c = s->get_clip(j); - if (c != NULL && c->media == m) { - c->refresh(); - } - } - } - - panel_timeline->redraw_all_clips(true); ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 } void Project::new_sequence(TimelineAction *ta, Sequence *s, bool open, QTreeWidgetItem* parent) { @@ -520,11 +476,7 @@ void Project::process_file_list(bool recursive, QStringList& files, QTreeWidgetI if (replace != NULL) { item = replace; -<<<<<<< HEAD m = get_footage_from_tree(replace); -======= - m = get_media_from_tree(replace); ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 m->reset(); } else { item = new_item(); @@ -532,11 +484,7 @@ void Project::process_file_list(bool recursive, QStringList& files, QTreeWidgetI } import_file(item, m, file, files.at(i)); -<<<<<<< HEAD set_footage_of_tree(item, m); -======= - set_media_of_tree(item, m); ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 if (recursive) { parent->addChild(item); @@ -614,20 +562,7 @@ int get_type_from_tree(QTreeWidgetItem* item) { } void Project::delete_media(QTreeWidgetItem* item) { -<<<<<<< HEAD delete get_media_from_tree(item); -======= - int type = get_type_from_tree(item); - switch (type) { - case MEDIA_TYPE_FOOTAGE: - delete get_media_from_tree(item); - break; - case MEDIA_TYPE_SEQUENCE: - Sequence* s = get_sequence_from_tree(item); - delete s; - break; - } ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 } void Project::delete_clips_using_selected_media() { @@ -641,11 +576,7 @@ void Project::delete_clips_using_selected_media() { if (c != NULL) { QList items = source_table->selectedItems(); for (int j=0;j>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 if (c->media == m) { ta->delete_clip(sequence, i); deleted = true; diff --git a/panels/project.h b/panels/project.h index 766c9eb40..f10514fd3 100644 --- a/panels/project.h +++ b/panels/project.h @@ -77,10 +77,7 @@ public slots: void duplicate_selected(); void delete_clips_using_selected_media(); void replace_selected_file(); -<<<<<<< HEAD void replace_clip_media(); -======= ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 private: Ui::Project *ui; QTreeWidgetItem* new_item(); diff --git a/ui/labelslider.cpp b/ui/labelslider.cpp index a5aaddcd4..0aac0379b 100644 --- a/ui/labelslider.cpp +++ b/ui/labelslider.cpp @@ -44,7 +44,10 @@ double LabelSlider::value() { void LabelSlider::set_default_value(double v) { default_value = v; - if (!set) set_value(v); + if (!set) { + set_value(v); + set = false; + } } void LabelSlider::set_minimum_value(double v) { diff --git a/ui/sourcetable.cpp b/ui/sourcetable.cpp index 9232a4dde..7b71e7f61 100644 --- a/ui/sourcetable.cpp +++ b/ui/sourcetable.cpp @@ -36,16 +36,10 @@ void SourceTable::show_context_menu(const QPoint& pos) { } else { if (selectedItems().size() == 1) { // replace footage -<<<<<<< HEAD int type = get_type_from_tree(selectedItems().at(0)); if (type == MEDIA_TYPE_FOOTAGE) { QAction* replace_action = menu.addAction("Replace/Relink Media"); connect(replace_action, SIGNAL(triggered(bool)), panel_project, SLOT(replace_selected_file())); -======= - if (get_type_from_tree(selectedItems().at(0)) == MEDIA_TYPE_FOOTAGE) { - QAction* replace_action = menu.addAction("Replace/Relink Media"); - connect(replace_action, SIGNAL(triggered(bool)), panel_project, SLOT(replace_media())); ->>>>>>> b8b99901d8f71ebc1583cb9b7c49e26d38e01ec9 } if (type != MEDIA_TYPE_FOLDER) { QAction* replace_clip_media = menu.addAction("Replace Clips Using This Media");