let showWindow (parent: Window) (state: State.State) : bool =
let win = Views.AnalysisWindow()
win.Root.Owner <- parent
- win.Root.Left <- parent.Left + parent.ActualWidth / 2. - win.Root.Width / 2.
- win.Root.Top <- parent.Top + parent.ActualHeight / 2. - win.Root.Height / 2.
+ win.Root.Left <- (if parent.WindowState = WindowState.Maximized then 0. else parent.Left) + parent.ActualWidth / 2. - win.Root.Width / 2.
+ win.Root.Top <- (if parent.WindowState = WindowState.Maximized then 0. else parent.Top) + parent.ActualHeight / 2. - win.Root.Height / 2.
let logListener =
{ new Logger.IListener with
imageSourceSelection.lblDateLastAnalysis.Content <- if srcImg.dateLastAnalysis.Ticks = 0L then "<Never>" else srcImg.dateLastAnalysis.ToString()
imageSourceSelection.txtResolution.Text <- if srcImg.dateLastAnalysis.Ticks = 0L then "" else srcImg.config.Parameters.resolution.ToString()
- imageSourceSelection.menuZoom50X.Click.AddHandler(fun obj args -> imageSourceSelection.txtResolution.Text <- "230000")
- imageSourceSelection.menuZoom100X.Click.AddHandler(fun obj args -> imageSourceSelection.txtResolution.Text <- "460000")
+
+ for ppi in Utils.predefinedPPI do
+ let menu = MenuItem()
+ menu.Header <- ppi.ToString()
+ menu.Click.AddHandler(fun obj args -> imageSourceSelection.txtResolution.Text <- ppi.ppi.ToString())
+ imageSourceSelection.predefinedValuesMenu.Items.Add(menu) |> ignore
imageSourceSelection.butPPICalculator.Click.AddHandler(fun obj args ->
match PPICalculator.showWindow win.Root with
| Some results ->
for id, cells in results do
state.SetResult (int id) cells
-
- win.Root.Dispatcher.Invoke(fun () ->
- win.stackSourceImagesSelection.IsEnabled <- true
- win.butStart.IsEnabled <- true
- win.butClose.Content <- "Close"
- updateSourceImages ())
-
Logger.Log.User("All analyses terminated successfully")
atLeastOneAnalysisPerformed <- true
analysisPerformed <- true
- | None -> ())
+ | None ->
+ Logger.Log.User("Analysis aborted")
+
+ win.Root.Dispatcher.Invoke(fun () ->
+ win.progress.Value <- if maybeResults.IsSome then 100. else 0.
+ win.stackSourceImagesSelection.IsEnabled <- true
+ win.butStart.IsEnabled <- true
+ win.butClose.Content <- "Close"
+ updateSourceImages ()))
} |> Async.Start
| _ -> ())
lock monitor (fun () ->
if not analysisPerformed
then
+ // To cancel the current analysis if one is running on the next call to the progress function.
analysisCancelled <- true
atLeastOneAnalysisPerformed)