proxy: add dedicated Proxy dialog and preferences fields

- New ProxyDialog (Tools > Proxy Settings..., plus 'Proxy Settings...'
  in the project panel and timeline Proxy submenus) unifying global
  proxy settings, per-footage custom presets, generation and deletion
  in one place instead of three scattered entry points; this also fixes
  the Tools menu action opening the wrong preferences tab
- Preferences Disk tab gains an 'include audio in proxies' checkbox and
  an ffmpeg executable path field (blank = auto-detect)
- Add ProxyDialog smoke tests
This commit is contained in:
2026-07-16 22:53:13 +08:00
parent 6aaf37e2e5
commit ddca6a5e01
13 changed files with 592 additions and 2 deletions
@@ -40,6 +40,7 @@
#include "codec/proxymanager.h"
#include "core.h"
#include "common/range.h"
#include "dialog/proxy/proxydialog.h"
#include "dialog/sequence/sequence.h"
#include "dialog/speedduration/speeddurationdialog.h"
#include "node/block/transition/transition.h"
@@ -1236,6 +1237,12 @@ void TimelineWidget::DeleteProxiesForSelectedClips()
}
}
void TimelineWidget::ShowProxyDialogForSelectedClips()
{
ProxyDialog d(this, GetSelectedProxyFootage(selected_blocks_));
d.exec();
}
void TimelineWidget::RecordingCallback(const QString &filename,
const TimeRange &time,
const Track::Reference &track)
@@ -1784,6 +1791,11 @@ void TimelineWidget::ShowContextMenu()
}));
connect(delete_proxy, &QAction::triggered, this,
&TimelineWidget::DeleteProxiesForSelectedClips);
QAction *proxy_settings =
proxy_menu->addAction(tr("Proxy Settings..."));
connect(proxy_settings, &QAction::triggered, this,
&TimelineWidget::ShowProxyDialogForSelectedClips);
}
if (clip->connected_viewer()) {