From e5a9a04265f30c16632870ee90ff1823b9e986bd Mon Sep 17 00:00:00 2001 From: unclshura Date: Tue, 9 Jun 2026 13:51:13 +0100 Subject: [PATCH] Added slider for identity confidence. Progress is back. --- Splitter-UI/ViewModels/JobViewModel.cs | 13 ++++++++++++ Splitter-UI/ViewModels/MainViewModel.cs | 12 +++++------ Splitter-UI/ViewModels/ProgressViewModel.cs | 20 +++++++++++++++--- Splitter-UI/Views/InspectorPane.axaml | 23 +++++++++++++++++++-- Splitter-UI/Views/MainWindow.axaml | 4 ++++ splitter-cli/SingleJob.cs | 5 +++++ splitter-cli/algo/IdentityCache.cs | 11 +++++----- splitter-cli/algo/ObjectTracker.cs | 2 +- 8 files changed, 72 insertions(+), 18 deletions(-) diff --git a/Splitter-UI/ViewModels/JobViewModel.cs b/Splitter-UI/ViewModels/JobViewModel.cs index f192fa7..7ea0737 100644 --- a/Splitter-UI/ViewModels/JobViewModel.cs +++ b/Splitter-UI/ViewModels/JobViewModel.cs @@ -122,6 +122,19 @@ public partial class JobViewModel : ObservableObject } } + public float IdentityThreshold + { + get => Job.IdentityThreshold; + set + { + if (Math.Abs(Job.IdentityThreshold - value) < 0.001) + return; + Job.IdentityThreshold = value; + OnPropertyChanged(); + Task.Run(CreatePreview); + } + } + public string? Mask { get => Job.Mask; diff --git a/Splitter-UI/ViewModels/MainViewModel.cs b/Splitter-UI/ViewModels/MainViewModel.cs index 3445189..d22d857 100644 --- a/Splitter-UI/ViewModels/MainViewModel.cs +++ b/Splitter-UI/ViewModels/MainViewModel.cs @@ -54,14 +54,14 @@ public partial class MainViewModel : ViewModelBase _cancellationTokenSource?.Cancel(); } - public async Task Start() + public Task Start() => Task.Run(async () => { _cancellationTokenSource = new CancellationTokenSource(); try { StatusBar.StatusText = "Processing…"; - StatusBar.Percent = 0; - TransformMode = true; + StatusBar.Percent = 0; + TransformMode = true; var files = FileList.Files.ToList(); var jobs = new List(); @@ -84,11 +84,11 @@ public partial class MainViewModel : ViewModelBase finally { StatusBar.StatusText = "Ready…"; - StatusBar.Percent = 0; - TransformMode = false; + StatusBar.Percent = 0; + TransformMode = false; _cancellationTokenSource?.Dispose(); } - } + }); } diff --git a/Splitter-UI/ViewModels/ProgressViewModel.cs b/Splitter-UI/ViewModels/ProgressViewModel.cs index d6ef8ee..2b366f9 100644 --- a/Splitter-UI/ViewModels/ProgressViewModel.cs +++ b/Splitter-UI/ViewModels/ProgressViewModel.cs @@ -1,4 +1,5 @@ using System.Collections.ObjectModel; +using Avalonia.Threading; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; @@ -26,7 +27,7 @@ public partial class ProgressViewModel : ObservableObject _mainModel = mainModel; } - public void ClearProgress(string name, int progressLine) + public void ClearProgress(string name, int progressLine) => Dispatch(() => { lock (_lock) { @@ -36,8 +37,9 @@ public partial class ProgressViewModel : ObservableObject NumberOfProcesses -= 1; Processes[progressLine] = new ProgressInfo("", progressLine, 0, TimeSpan.Zero, 0); } - } - public void DrawProgress(string name, int progressLine, double progress, TimeSpan eta, double speed) + }); + + public void DrawProgress(string name, int progressLine, double progress, TimeSpan eta, double speed) => Dispatch(() => { lock (_lock) { @@ -53,6 +55,18 @@ public partial class ProgressViewModel : ObservableObject NumberOfProcesses += 1; Processes[progressLine] = new ProgressInfo(name, progressLine, progress, eta, speed); } + }); + + private void Dispatch(Action action) + { + if (Dispatcher.UIThread.CheckAccess()) + { + action(); + } + else + { + Dispatcher.UIThread.Post(() => action()); + } } } diff --git a/Splitter-UI/Views/InspectorPane.axaml b/Splitter-UI/Views/InspectorPane.axaml index 6e5d301..4153bc4 100644 --- a/Splitter-UI/Views/InspectorPane.axaml +++ b/Splitter-UI/Views/InspectorPane.axaml @@ -12,7 +12,7 @@ x:DataType="vm:InspectorPaneViewModel"> + Margin="0,0,10,0">