diff --git a/FSharpExample/FSharpExample.fsproj b/FSharpExample/FSharpExample.fsproj index d251896a4..47229e3f5 100644 --- a/FSharpExample/FSharpExample.fsproj +++ b/FSharpExample/FSharpExample.fsproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + netcoreapp3.1 @@ -14,7 +14,7 @@ - + diff --git a/FSharpExample/Program.fs b/FSharpExample/Program.fs index 62202bd22..f6f4d2462 100644 --- a/FSharpExample/Program.fs +++ b/FSharpExample/Program.fs @@ -16,30 +16,30 @@ type Demo() = class end let mutable menuKeysStyle = Unchecked.defaultof let mutable menuAutoMouseNav = Unchecked.defaultof - type Box10x() = - inherit View() - member val w = 40 with get, set - member val h = 50 with get, set + type Box10x(x : int, y : int) = + inherit View(new Rect(x, y, 20, 10)) + let w = 40 + let h = 50 member val WantCursorPosition = Unchecked.defaultof with get, set - new(x : int, y : int) as this = + new() as _this = (Box10x()) then () member this.GetContentSize() = - new Size(this.w, this.h) + new Size(w, h) member this.SetCursorPosition(pos : Point) = raise (new NotImplementedException()) override this.Redraw(region : Rect) = Application.Driver.SetAttribute (Application.Current.ColorScheme.Focus) do let mutable (y : int) = 0 - while (y < this.h) do + while (y < h) do this.Move (0, y) Application.Driver.AddStr (ustr (y.ToString())) do let mutable (x : int) = 0 - while (x < this.w - (y.ToString ()).Length) do - if (y.ToString ()).Length < this.w + while (x < w - (y.ToString ()).Length) do + if (y.ToString ()).Length < w then Application.Driver.AddStr (ustr " ") x <- x + 1 x @@ -47,9 +47,9 @@ type Demo() = class end y () - type Filler() = - inherit View() - new(rect : Rect) as this = + type Filler(rect : Rect) = + inherit View(rect) + new() as _this = (Filler ()) then () @@ -153,8 +153,8 @@ type Demo() = class end ), scrollView, scrollView2, tf, new Button(10, 19, ustr "Cancel"), - new TimeField(3, 20, DateTime.Now), - new TimeField(23, 20, DateTime.Now, true), + new TimeField(3, 20, DateTime.Now.TimeOfDay), + new TimeField(23, 20, DateTime.Now.TimeOfDay, true), new DateField(3, 22, DateTime.Now), new DateField(23, 22, DateTime.Now, true), progress, @@ -164,6 +164,7 @@ type Demo() = class end ) container.SendSubviewToBack (tf) () + let NewFile() = let mutable d = new Dialog (ustr "New File", 50, 20, new Button (ustr "Ok", true, Clicked = Action(Application.RequestStop)), @@ -202,18 +203,18 @@ type Demo() = class end Application.Run (ntop) let Quit() = - let mutable n = MessageBox.Query (50, 7, "Quit Demo", "Are you sure you want to quit this demo?", "Yes", "No") + let mutable n = MessageBox.Query (50, 7, ustr "Quit Demo", ustr "Are you sure you want to quit this demo?", ustr "Yes", ustr "No") n = 0 let Close() = - MessageBox.ErrorQuery (50, 7, "Error", "There is nothing to close", "Ok") + MessageBox.ErrorQuery (50, 7, ustr "Error", ustr "There is nothing to close", ustr "Ok") |> ignore let Open() = let mutable d = new OpenDialog (ustr "Open", ustr "Open a file", AllowsMultipleSelection = true) Application.Run (d) if not d.Canceled - then MessageBox.Query (50, 7, "Selected File", (String.Join (", ", d.FilePaths)), "Ok") |> ignore + then MessageBox.Query (50, 7, ustr "Selected File", ustr (String.Join (", ", d.FilePaths)), ustr "Ok") |> ignore let ShowHex(top : Toplevel) = let mutable tframe = top.Frame @@ -255,14 +256,14 @@ type Demo() = class end let mutable (flags : BindingFlags) = BindingFlags.Public ||| BindingFlags.Static let mutable (minfo : MethodInfo) = typeof.GetMethod ("Instance", flags) let mutable (mid : Delegate) = Delegate.CreateDelegate (typeof, minfo) - MessageBox.Query (70, 7, (mi.Title.ToString ()), - ((sprintf "%O selected. Is from submenu: %O" (mi.Title.ToString ())) (mi.GetMenuBarItem ())), "Ok") + MessageBox.Query (70, 7, ustr (mi.Title.ToString ()), + ustr ((sprintf "%O selected. Is from submenu: %O" (mi.Title.ToString ())) (mi.GetMenuBarItem ())), ustr "Ok") |> ignore - let MenuKeysStyle_Toggled(e : EventArgs) = + let MenuKeysStyle_Toggled(e : bool) = menu.UseKeysUpDownAsKeysLeftRight <- menuKeysStyle.Checked - let MenuAutoMouseNav_Toggled(e : EventArgs) = + let MenuAutoMouseNav_Toggled(e : bool) = menu.WantMousePositionReports <- menuAutoMouseNav.Checked let Copy() = @@ -284,7 +285,15 @@ type Demo() = class end () let Help() = - MessageBox.Query (50, 7, "Help", "This is a small help\nBe kind.", "Ok") + MessageBox.Query (50, 7, ustr "Help", ustr "This is a small help\nBe kind.", ustr "Ok") + |> ignore + + let Load () = + MessageBox.Query (50, 7, ustr "Load", ustr "This is a small load\nBe kind.", ustr "Ok") + |> ignore + + let Save () = + MessageBox.Query (50, 7, ustr "Save ", ustr "This is a small save\nBe kind.", ustr "Ok") |> ignore let ListSelectionDemo(multiple : System.Boolean) = @@ -319,7 +328,7 @@ type Demo() = class end i <- i + 1 i () - MessageBox.Query (60, 10, "Selected Animals", (if result = "" then "No animals selected" else result), "Ok") |> ignore + MessageBox.Query (60, 10, ustr "Selected Animals", ustr (if result = "" then "No animals selected" else result), ustr "Ok") |> ignore let OnKeyDownPressUpDemo() = let mutable container = new Dialog (ustr "KeyDown & KeyPress & KeyUp demo", 80, 20, @@ -347,9 +356,9 @@ type Demo() = class end list.Add (keyEvent.ToString ()) listView.MoveDown (); - container.KeyDown.Add(fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Down") |> ignore) - container.KeyPress.Add(fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Press") |> ignore) - container.KeyUp.Add(fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Up") |> ignore) + container.KeyDown <- Action (fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Down") |> ignore) + container.KeyPress <- Action (fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Press") |> ignore) + container.KeyUp <- Action (fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Up") |> ignore) Application.Run (container) let Main() = @@ -395,11 +404,11 @@ type Demo() = class end [|new MenuItem(ustr "SubMenu1Item_1", new MenuBarItem([|new MenuItem(ustr "SubMenu2Item_1", new MenuBarItem([|new MenuItem(ustr "SubMenu3Item_1", new MenuBarItem([|(menuItems.[2])|]))|]))|]))|]); new MenuBarItem(ustr "_About...", "Demonstrates top-level menu item", - (fun () -> MessageBox.ErrorQuery (50, 7, "About Demo", "This is a demo app for gui.cs", "Ok") |> ignore))|]) + (fun () -> MessageBox.ErrorQuery (50, 7, ustr "About Demo", ustr "This is a demo app for gui.cs", ustr "Ok") |> ignore))|]) menuKeysStyle <- new CheckBox(3, 25, ustr "UseKeysUpDownAsKeysLeftRight", true) - menuKeysStyle.Toggled.Add(MenuKeysStyle_Toggled) + menuKeysStyle.Toggled <- Action (MenuKeysStyle_Toggled) menuAutoMouseNav <- new CheckBox(40, 25, ustr "UseMenuAutoNavigation", true) - menuAutoMouseNav.Toggled.Add(MenuAutoMouseNav_Toggled) + menuAutoMouseNav.Toggled <- Action (MenuAutoMouseNav_Toggled) ShowEntries (win) let mutable (count : int) = 0 ml <- new Label(new Rect(3, 17, 47, 1), ustr "Mouse: ") @@ -422,8 +431,8 @@ type Demo() = class end ) let mutable statusBar = new StatusBar ([| new StatusItem(Key.F1, ustr "~F1~ Help", Action(Help)); - new StatusItem(Key.F2, ustr "~F2~ Load", null); - new StatusItem(Key.F3, ustr "~F3~ Save", null); + new StatusItem(Key.F2, ustr "~F2~ Load", Action(Load)); + new StatusItem(Key.F3, ustr "~F3~ Save", Action(Save)); new StatusItem(Key.ControlX, ustr "~^X~ Quit", fun () -> if (Quit ()) then top.Running <- false) |], Parent = null @@ -433,7 +442,7 @@ type Demo() = class end win.Add (bottom) let mutable bottom2 = new Label(ustr "This should go on the bottom of another top-level!") top.Add (bottom2) - Application.Loaded.Add ( + Application.Loaded <- Action ( fun (_) -> bottom.X <- win.X bottom.Y <- Pos.Bottom (win) - Pos.Top (win) - Pos.At(margin)