Add some key shortcut.
[master-thesis.git] / Parasitemia / ParasitemiaUI / GUI.fs
index ade197e..985c8a4 100644 (file)
@@ -438,6 +438,16 @@ let run (defaultConfig : Config) (fileToOpen : string option) =
             if noSourceImage then
                 updateCurrentImage ()
 
+    let showAnalysisWindow () =
+        if Analysis.showWindow win state then
+            updateGlobalParasitemia ()
+            updateCurrentImage ()
+
+    let setHighlightRBC (highlight : bool) =
+        displayHealthy <- highlight
+        updateRBCFramesPreview ()
+        updateRBCFramesCurrent ()
+
     win.txtPatient.TextChanged.AddHandler(fun obj args -> state.PatientID <- win.txtPatient.Text)
 
     win.menuExit.Click.AddHandler(fun obj args -> win.Close())
@@ -451,17 +461,9 @@ let run (defaultConfig : Config) (fileToOpen : string option) =
 
     win.menuAnalysis.SubmenuOpened.AddHandler(fun obj args -> win.menuStartAnalysis.IsEnabled <- state.SourceImages.Count() > 0)
 
-    win.menuStartAnalysis.Click.AddHandler(fun obj args ->
-        if Analysis.showWindow win state then
-            updateGlobalParasitemia ()
-            updateCurrentImage ()
-    )
+    win.menuStartAnalysis.Click.AddHandler(fun obj args -> showAnalysisWindow ())
 
-    win.menuHightlightRBC.Click.AddHandler(fun obj args ->
-        displayHealthy <- win.menuHightlightRBC.IsChecked
-        updateRBCFramesPreview ()
-        updateRBCFramesCurrent ()
-    )
+    win.menuHightlightRBC.Click.AddHandler(fun obj args -> setHighlightRBC win.menuHightlightRBC.IsChecked)
 
     win.menuAbout.Click.AddHandler(fun obj args -> About.showWindow win)
 
@@ -601,6 +603,29 @@ let run (defaultConfig : Config) (fileToOpen : string option) =
         )
     ) |> ignore
 
+    // Show analysis dialog.
+    win.InputBindings.Add(
+        Input.KeyBinding(
+            ViewModule.FunCommand((fun obj -> showAnalysisWindow ()), (fun obj -> state.SourceImages.Count() > 0)),
+            Input.KeyGesture(Input.Key.Y, Input.ModifierKeys.Control)
+        )
+    ) |> ignore
+
+    // Toggle RBC highlight.
+    win.InputBindings.Add(
+        Input.KeyBinding(
+            ViewModule.FunCommand(
+                (
+                    fun obj ->
+                        win.menuHightlightRBC.IsChecked <- not win.menuHightlightRBC.IsChecked
+                        setHighlightRBC win.menuHightlightRBC.IsChecked
+                ),
+                (fun obj -> true)
+            ),
+            Input.KeyGesture(Input.Key.H, Input.ModifierKeys.Control)
+        )
+    ) |> ignore
+
     // Viewport preview.
     win.scrollViewCurrentImage.ScrollChanged.AddHandler(fun obj args -> updateViewportPreview ())