module ParasitemiaUI.About open System open System.Windows open System.Windows.Media open System.Windows.Markup open System.Windows.Shapes open System.Windows.Controls open System.Diagnostics let showWindow (parent: Window) = let window = Views.AboutWindow() window.Root.Owner <- parent window.Root.Left <- parent.Left + parent.ActualWidth / 2. - window.Root.Width / 2. window.Root.Top <- parent.Top + parent.ActualHeight / 2. - window.Root.Height / 2. let ctrl (name: string): 'a = window.Root.FindName(name) :?> 'a let butClose: Button = ctrl "butClose" let txtAbout: TextBlock = ctrl "txtAbout" let linkHESSO: Documents.Hyperlink = ctrl "linkHESSO" let linkCHUV: Documents.Hyperlink = ctrl "linkCHUV" let linkGBurri: Documents.Hyperlink = ctrl "linkGBurri" let version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version let txtVersion = sprintf " %d.%d.%d" version.Major version.Minor version.Revision txtAbout.Inlines.FirstInline.ElementEnd.InsertTextInRun(txtVersion) let navigateTo = Navigation.RequestNavigateEventHandler(fun obj args -> Process.Start(ProcessStartInfo(args.Uri.AbsoluteUri)) |> ignore args.Handled <- true) linkHESSO.RequestNavigate.AddHandler(navigateTo); linkCHUV.RequestNavigate.AddHandler(navigateTo); linkGBurri.RequestNavigate.AddHandler(navigateTo); #if DEBUG txtAbout.Inlines.FirstInline.ElementEnd.InsertTextInRun(" - DEBUG") #endif butClose.Click.AddHandler(fun obj args -> window.Root.Close()) window.Root.ShowDialog() |> ignore