let logListener =
{
new Logger.IListener with
- member this.NewEntry severity _header mess =
+ member this.NewEntry severity header mess =
win.Dispatcher.Invoke (
fun () ->
win.textLog.Inlines.Add (Documents.Run mess)
else
Some parameters
+ win.butSelectAll.Click.AddHandler (
+ fun obj args ->
+ for srcImgCtrl in win.stackSourceImagesSelection.Children |> Seq.cast<ImageSourceSelection> do
+ srcImgCtrl.chkSelection.IsChecked <- true
+ )
+
+ win.butUnselectAll.Click.AddHandler (
+ fun obj args ->
+ for srcImgCtrl in win.stackSourceImagesSelection.Children |> Seq.cast<ImageSourceSelection> do
+ srcImgCtrl.chkSelection.IsChecked <- false
+ )
+
win.butClose.Click.AddHandler (fun obj args -> win.Close ())
win.butStart.Click.AddHandler (
MessageBox.Show ("No image selected", "Cannot start analysis", MessageBoxButton.OK, MessageBoxImage.Information) |> ignore
else
win.stackSourceImagesSelection.IsEnabled <- false
+ win.butSelectAll.IsEnabled <- false
+ win.butUnselectAll.IsEnabled <- false
analysisPerformed <- false
win.butStart.IsEnabled <- false
win.textLog.Text <- ""
win.butClose.Content <- "Abort"
+ let sw = System.Diagnostics.Stopwatch ()
+ sw.Start ()
+
async {
let maybeResults =
ParasitemiaCore.Analysis.doMultipleAnalysis
| Some results ->
for id, cells in results do
state.SetResult id cells
- Logger.Log.Info "All analyses terminated successfully"
+ Logger.Log.Info $"All analyses terminated successfully (total time: %d{sw.ElapsedMilliseconds} ms)"
atLeastOneAnalysisPerformed <- true
analysisPerformed <- true
| None ->
fun () ->
win.progress.Value <- if maybeResults.IsSome then 100. else 0.
win.stackSourceImagesSelection.IsEnabled <- true
+ win.butSelectAll.IsEnabled <- true
+ win.butUnselectAll.IsEnabled <- true
win.butStart.IsEnabled <- true
win.butClose.Content <- "Close"
updateSourceImages ()
win.ShowDialog () |> ignore
- Logger.Log.RmListener (logListener)
+ Logger.Log.RemoveListener (logListener)
lock monitor (
fun () ->