Save predefined PPI and sensor sizes in JSON files.
[master-thesis.git] / Parasitemia / ParasitemiaUI / GUI.fs
index 0b0d6dd..77281d3 100644 (file)
@@ -427,16 +427,7 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
                 Log.Error(ex.ToString())
                 MessageBox.Show(sprintf "The results cannot be exported in \"%s\"" state.FilePath, "Error exporting the files", MessageBoxButton.OK, MessageBoxImage.Error) |> ignore
 
-    win.txtPatient.TextChanged.AddHandler(fun obj args -> state.PatientID <- win.txtPatient.Text)
-
-    win.menuExit.Click.AddHandler(fun obj args -> win.Root.Close())
-    win.menuSave.Click.AddHandler(fun obj args -> saveCurrentDocument ())
-    win.menuSaveAs.Click.AddHandler(fun obj args -> saveCurrentDocumentAsNewFile ())
-    win.menuOpen.Click.AddHandler(fun obj args -> askLoadFile ())
-    win.menuNew.Click.AddHandler(fun obj args -> newFile ())
-    win.menuExportResults.Click.AddHandler(fun obj args -> exportResults ())
-
-    win.menuAddSourceImage.Click.AddHandler(fun obj args ->
+    let importImage () =
         let dialog = OpenFileDialog(Filter = "Image Files|*.png;*.jpg;*.tif;*.tiff", Multiselect = true)
         let res = dialog.ShowDialog()
         if res.HasValue && res.Value
@@ -456,7 +447,18 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
 
             if noSourceImage
             then
-                updateCurrentImage ())
+                updateCurrentImage ()
+
+    win.txtPatient.TextChanged.AddHandler(fun obj args -> state.PatientID <- win.txtPatient.Text)
+
+    win.menuExit.Click.AddHandler(fun obj args -> win.Root.Close())
+    win.menuSave.Click.AddHandler(fun obj args -> saveCurrentDocument ())
+    win.menuSaveAs.Click.AddHandler(fun obj args -> saveCurrentDocumentAsNewFile ())
+    win.menuOpen.Click.AddHandler(fun obj args -> askLoadFile ())
+    win.menuNew.Click.AddHandler(fun obj args -> newFile ())
+    win.menuExportResults.Click.AddHandler(fun obj args -> exportResults ())
+
+    win.menuAddSourceImage.Click.AddHandler(fun obj args -> importImage ())
 
     win.menuAnalysis.SubmenuOpened.AddHandler(fun obj args -> win.menuStartAnalysis.IsEnabled <- state.SourceImages.Count() > 0)
 
@@ -588,6 +590,12 @@ let run (defaultConfig: Config) (fileToOpen: string option) =
             FSharp.ViewModule.FunCommand((fun obj -> exportResults ()), (fun obj -> true)),
             Input.KeyGesture(Input.Key.E, Input.ModifierKeys.Control))) |> ignore
 
+    // Import an image.
+    win.Root.InputBindings.Add(
+        Input.KeyBinding(
+            FSharp.ViewModule.FunCommand((fun obj -> importImage ()), (fun obj -> true)),
+            Input.KeyGesture(Input.Key.A, Input.ModifierKeys.Control))) |> ignore
+
     // Viewport preview.
     win.scrollViewCurrentImage.ScrollChanged.AddHandler(fun obj args -> updateViewportPreview ())