diff --git a/app/widget/projectexplorer/projectexplorer.cpp b/app/widget/projectexplorer/projectexplorer.cpp index 2236d4b84..8236dfe55 100644 --- a/app/widget/projectexplorer/projectexplorer.cpp +++ b/app/widget/projectexplorer/projectexplorer.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -37,6 +38,7 @@ #include "task/taskmanager.h" #include "widget/menu/menu.h" #include "widget/menu/menushared.h" +#include "widget/nodeparamview/nodeparamviewundo.h" #include "window/mainwindow/mainwindow.h" #include "window/mainwindow/mainwindowundo.h" #include "widget/nodeview/nodeviewundo.h" @@ -392,6 +394,9 @@ void ProjectExplorer::ShowContextMenu() QAction* reveal_action = menu.addAction(reveal_text); connect(reveal_action, &QAction::triggered, this, &ProjectExplorer::RevealSelectedFootage); + QAction *replace_action = menu.addAction(tr("Replace Footage")); + connect(replace_action, &QAction::triggered, this, &ProjectExplorer::ReplaceSelectedFootage); + } menu.addSeparator(); @@ -497,6 +502,17 @@ void ProjectExplorer::RevealSelectedFootage() #endif } +void ProjectExplorer::ReplaceSelectedFootage() +{ + Footage* footage = static_cast(context_menu_items_.first()); + + QString file = QFileDialog::getOpenFileName(this, tr("Replace Footage")); + if (!file.isEmpty()) { + auto c = new NodeParamSetStandardValueCommand(NodeKeyframeTrackReference(NodeInput(footage, Footage::kFilenameInput)), file); + Core::instance()->undo_stack()->push(c); + } +} + void ProjectExplorer::OpenContextMenuItemInNewTab() { Core::instance()->main_window()->FolderOpen(project(), static_cast(context_menu_items_.first()), false); diff --git a/app/widget/projectexplorer/projectexplorer.h b/app/widget/projectexplorer/projectexplorer.h index 30200a757..eb31a2acc 100644 --- a/app/widget/projectexplorer/projectexplorer.h +++ b/app/widget/projectexplorer/projectexplorer.h @@ -185,6 +185,8 @@ private slots: void RevealSelectedFootage(); + void ReplaceSelectedFootage(); + void OpenContextMenuItemInNewTab(); void OpenContextMenuItemInNewWindow();