From 8c25651162a21ff222fbd22f4d5f84a0b85e48b5 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 10 Dec 2025 21:58:30 +1300 Subject: [PATCH] Add Tools Menu Option for externally referenced dependent files "Embed external files into Capture" "Remove external files from Capture" --- qrenderdoc/Windows/MainWindow.cpp | 35 +++++++++++++++++++++++++++++++ qrenderdoc/Windows/MainWindow.h | 3 +++ qrenderdoc/Windows/MainWindow.ui | 12 +++++++++++ 3 files changed, 50 insertions(+) diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index b7ff9d1dd..b96ad6afd 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -131,6 +131,8 @@ MainWindow::MainWindow(ICaptureContext &ctx) : QMainWindow(NULL), ui(new Ui::Mai setAcceptDrops(true); + QObject::connect(ui->menu_Tools, &QMenu::aboutToShow, this, &MainWindow::updateToolsMenuOptions); + QObject::connect(ui->action_Load_Default_Layout, &QAction::triggered, this, &MainWindow::loadLayout_triggered); QObject::connect(ui->action_Load_Layout_1, &QAction::triggered, this, @@ -445,6 +447,8 @@ MainWindow::MainWindow(ICaptureContext &ctx) : QMainWindow(NULL), ui(new Ui::Mai ui->action_Resolve_Symbols->setText(tr("Resolve Symbols")); ui->action_Recompress_Capture->setEnabled(false); + ui->action_EmbedExternalFiles->setEnabled(false); + ui->action_RemoveExternalFiles->setEnabled(false); #if defined(Q_OS_WIN32) #define SELF_HOST_NAME "rdocself.dll" @@ -675,6 +679,8 @@ void MainWindow::captureModified() // enabled if this capture was a temporary one if(m_Ctx.IsCaptureLoaded()) ui->action_Save_Capture_Inplace->setEnabled(true); + + updateToolsMenuOptions(); } void MainWindow::LoadFromFilename(const QString &filename, bool temporary) @@ -2238,6 +2244,8 @@ void MainWindow::OnCaptureLoaded() bool is_image = driver == lit("Image"); ui->action_Recompress_Capture->setEnabled(!is_image); + updateToolsMenuOptions(); + ui->action_Start_Replay_Loop->setEnabled(true); ui->action_Open_RGP_Profile->setEnabled( m_Ctx.Replay().GetCaptureAccess()->FindSectionByType(SectionType::AMDRGPProfile) >= 0); @@ -2286,6 +2294,8 @@ void MainWindow::OnCaptureClosed() ui->action_Resolve_Symbols->setText(tr("Resolve Symbols")); ui->action_Recompress_Capture->setEnabled(false); + ui->action_EmbedExternalFiles->setEnabled(false); + ui->action_RemoveExternalFiles->setEnabled(false); SetTitle(); @@ -2638,6 +2648,16 @@ void MainWindow::on_action_Recompress_Capture_triggered() m_Ctx.RecompressCapture(); } +void MainWindow::on_action_EmbedExternalFiles_triggered() +{ + m_Ctx.EmbedDependentFiles(); +} + +void MainWindow::on_action_RemoveExternalFiles_triggered() +{ + m_Ctx.RemoveDependentFiles(); +} + void MainWindow::on_action_Start_Replay_Loop_triggered() { if(!m_Ctx.IsCaptureLoaded()) @@ -2995,6 +3015,21 @@ void MainWindow::loadLayout_triggered() LoadSaveLayout(qobject_cast(QObject::sender()), false); } +void MainWindow::updateToolsMenuOptions() +{ + bool hasEmbeddedDependencies = false; + bool hasPendingDependencies = false; + + if(m_Ctx.Replay().GetCaptureAccess()) + { + hasEmbeddedDependencies = m_Ctx.Replay().GetCaptureAccess()->HasEmbeddedDependencies(); + hasPendingDependencies = m_Ctx.Replay().GetCaptureAccess()->HasPendingDependencies(); + } + + ui->action_EmbedExternalFiles->setEnabled(!hasEmbeddedDependencies && hasPendingDependencies); + ui->action_RemoveExternalFiles->setEnabled(hasEmbeddedDependencies); +} + void MainWindow::closeEvent(QCloseEvent *event) { if(RENDERDOC_IsGlobalHookActive()) diff --git a/qrenderdoc/Windows/MainWindow.h b/qrenderdoc/Windows/MainWindow.h index 7eba0b715..c84f0beac 100644 --- a/qrenderdoc/Windows/MainWindow.h +++ b/qrenderdoc/Windows/MainWindow.h @@ -168,6 +168,8 @@ private slots: void on_action_Inject_into_Process_triggered(); void on_action_Resolve_Symbols_triggered(); void on_action_Recompress_Capture_triggered(); + void on_action_EmbedExternalFiles_triggered(); + void on_action_RemoveExternalFiles_triggered(); void on_action_Start_Replay_Loop_triggered(); void on_action_Open_RGP_Profile_triggered(); void on_action_Create_RGP_Profile_triggered(); @@ -194,6 +196,7 @@ private slots: void statusDoubleClicked(QMouseEvent *event); void switchContext(); void contextChooser_menuShowing(); + void updateToolsMenuOptions(); void ClearRecentCaptureFiles(); void ClearRecentCaptureSettings(); diff --git a/qrenderdoc/Windows/MainWindow.ui b/qrenderdoc/Windows/MainWindow.ui index 1ddce6f3e..1d586e3f2 100644 --- a/qrenderdoc/Windows/MainWindow.ui +++ b/qrenderdoc/Windows/MainWindow.ui @@ -51,6 +51,8 @@ + + @@ -450,6 +452,16 @@ Re&compress Capture + + + Embed external files into Capture + + + + + Remove external files from Capture + + &Clear Reported Bugs