AsyncInvoke operations related to embedded dependencies

This commit is contained in:
Jake Turner
2026-01-29 11:05:10 +13:00
parent 3da3c24f34
commit a72067cca5
2 changed files with 41 additions and 10 deletions
+32 -2
View File
@@ -2893,7 +2893,22 @@ void CaptureContext::EmbedDependentFiles()
return;
// Always operate on the capture access (local or remote)
m_Replay.GetCaptureAccess()->EmbedDependenciesIntoCapture();
QString tag = lit("replayEmbedDependenciesIntoCapture");
bool done = false;
Replay().AsyncInvoke(tag, [this, &done](IReplayController *) {
m_Replay.GetCaptureAccess()->EmbedDependenciesIntoCapture();
done = true;
});
// wait a short while before displaying the progress dialog
for(int i = 0; !done && (i < 100 || m_Replay.GetCurrentProcessingTag().isEmpty() ||
m_Replay.GetCurrentProcessingTag() == tag);
i++)
QThread::msleep(5);
ShowProgressDialog(m_MainWindow->Widget(), tr("Please wait, working..."),
[&done]() { return done; });
// Local replay
if(m_Replay.GetCaptureFile())
@@ -2923,7 +2938,22 @@ void CaptureContext::RemoveDependentFiles()
return;
// Always operate on the capture access (local or remote)
m_Replay.GetCaptureAccess()->RemoveDependenciesFromCapture();
QString tag = lit("replayRemoveDependenciesFromCapture");
bool done = false;
Replay().AsyncInvoke(tag, [this, &done](IReplayController *) {
m_Replay.GetCaptureAccess()->RemoveDependenciesFromCapture();
done = true;
});
// wait a short while before displaying the progress dialog
for(int i = 0; !done && (i < 100 || m_Replay.GetCurrentProcessingTag().isEmpty() ||
m_Replay.GetCurrentProcessingTag() == tag);
i++)
QThread::msleep(5);
ShowProgressDialog(m_MainWindow->Widget(), tr("Please wait, working..."),
[&done]() { return done; });
// Local replay
if(m_Replay.GetCaptureFile())
+9 -8
View File
@@ -3066,17 +3066,18 @@ void MainWindow::loadLayout_triggered()
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();
}
m_Ctx.Replay().AsyncInvoke([this](IReplayController *) {
bool hasEmbeddedDependencies = m_Ctx.Replay().GetCaptureAccess()->HasEmbeddedDependencies();
bool hasPendingDependencies = m_Ctx.Replay().GetCaptureAccess()->HasPendingDependencies();
ui->action_EmbedExternalFiles->setEnabled(!hasEmbeddedDependencies && hasPendingDependencies);
ui->action_RemoveExternalFiles->setEnabled(hasEmbeddedDependencies);
GUIInvoke::call(this, [this, hasEmbeddedDependencies, hasPendingDependencies]() {
ui->action_EmbedExternalFiles->setEnabled(!hasEmbeddedDependencies && hasPendingDependencies);
ui->action_RemoveExternalFiles->setEnabled(hasEmbeddedDependencies);
});
});
}
}
void MainWindow::closeEvent(QCloseEvent *event)