X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=Parasitemia%2FParasitemia%2FGUI%2FGUI.fs;h=8c57e20abeeb1480dc3d50f20e26d878b18bafc9;hb=81d1b86719a1ebaf649c1de4c1364603155a53e1;hp=a7bed54de884aaca34ff3b145568e6856e3d74a3;hpb=4147bfad3c85dcf4fe7d291abf7d356379d88b4f;p=master-thesis.git diff --git a/Parasitemia/Parasitemia/GUI/GUI.fs b/Parasitemia/Parasitemia/GUI/GUI.fs index a7bed54..8c57e20 100644 --- a/Parasitemia/Parasitemia/GUI/GUI.fs +++ b/Parasitemia/Parasitemia/GUI/GUI.fs @@ -16,7 +16,7 @@ open Emgu.CV.WPF open Config open Types -let run (defaultConfig: Config) = +let run (defaultConfig: Config) (fileToOpen: string option) = let app = new Application() let mainWindow = Views.MainWindow() let ctrl (name: string): 'a = @@ -34,7 +34,9 @@ let run (defaultConfig: Config) = let menuLoadFile: MenuItem = ctrl "menuOpen" let menuNewFile: MenuItem = ctrl "menuNew" let menuAddSourceImage: MenuItem = ctrl "menuAddSourceImage" + let menuAnalysis: MenuItem = ctrl "menuAnalysis" let menuStartAnalysis: MenuItem = ctrl "menuStartAnalysis" + let menuView: MenuItem = ctrl "menuView" let menuHightlightRBC: MenuItem = ctrl "menuHightlightRBC" let txtPatient: TextBox = ctrl "txtPatient" @@ -114,8 +116,7 @@ let run (defaultConfig: Config) = txtImageInformation.Inlines.Add(Documents.LineBreak()) txtImageInformation.Inlines.Add(Documents.Run("Average erytrocyte diameter: ", FontWeight = FontWeights.Bold)) - txtImageInformation.Inlines.Add(Documents.Run(string (Utils.roundInt <| 2. * srcImg.rbcRadius))) - txtImageInformation.Inlines.Add(Documents.Run(" px")) + txtImageInformation.Inlines.Add(Documents.Run(srcImg.config.RBCRadius.ToString())) txtImageInformation.Inlines.Add(Documents.LineBreak()) txtImageInformation.Inlines.Add(Documents.Run("Last analysis: ", FontWeight = FontWeights.Bold)) @@ -324,7 +325,6 @@ let run (defaultConfig: Config) = then imgCtrl.ReleaseMouseCapture()) - let updatePreviews () = stackPreviews.Children.Clear () for srcImg in state.SourceImages do @@ -336,7 +336,13 @@ let run (defaultConfig: Config) = updatePreviews () updateGlobalParasitemia () - txtPatient.TextChanged.AddHandler(fun obj args -> state.PatientID <- txtPatient.Text) + let loadFile (filepath: string) = + askSaveCurrent () + state.FilePath <- filepath + state.Load() + updateGUI () + + txtPatient.LostFocus.AddHandler(fun obj args -> state.PatientID <- txtPatient.Text) menuExit.Click.AddHandler(fun obj args -> askSaveCurrent () @@ -349,11 +355,7 @@ let run (defaultConfig: Config) = let dialog = OpenFileDialog(Filter = PiaZ.filter) let res = dialog.ShowDialog() if res.HasValue && res.Value - then - askSaveCurrent () - state.FilePath <- dialog.FileName - state.Load() - updateGUI ()) + then loadFile dialog.FileName) menuNewFile.Click.AddHandler(fun obj args -> askSaveCurrent () @@ -365,15 +367,18 @@ let run (defaultConfig: Config) = let res = dialog.ShowDialog() if res.HasValue && res.Value then - let srcImg = state.AddSourceImage(dialog.FileName) + let srcImg = state.AddSourceImage dialog.FileName defaultConfig addPreview srcImg updateGlobalParasitemia () if state.SourceImages.Count() = 1 then updateCurrentImage ()) + + menuAnalysis.SubmenuOpened.AddHandler(fun obj args -> menuStartAnalysis.IsEnabled <- state.SourceImages.Count() > 0) + menuStartAnalysis.Click.AddHandler(fun obj args -> - if Analysis.showWindow mainWindow.Root state defaultConfig + if Analysis.showWindow mainWindow.Root state then updateGlobalParasitemia () updateCurrentImage ()) @@ -469,4 +474,9 @@ let run (defaultConfig: Config) = scrollViewCurrentImage.ScrollChanged.AddHandler(fun obj args -> updateViewportPreview ()) mainWindow.Root.Show() + + match fileToOpen with + | Some filepath -> loadFile filepath + | None -> () + app.Run() \ No newline at end of file