Eto.Forms v2.5.0 Release Notes

Release Date: 2020-02-19 // about 4 years ago
  • ๐Ÿš€ The 2.5.0 release is a culmination of new features, refinements, and fixes.

    ๐Ÿš€ There have been over 680 commits and 948 files changed since v2.4.1. Thanks to the following for their very generous contributions included in this release: @couven92, @MartinRothschink, @SteveGilham, @harry-cpp, @e673, @halid-durakovic, @wjk, @acormier, @carlreinke, @oigami, @kike-garbo, @brtn, @allsorts46, @ItEndsWithTens

    Also, a big thanks to everyone that submitted or contributed to issues and helped others on gitter. It is greatly appreciated!

    ๐Ÿ†• New Features

    ๐Ÿš€ Here are some of the most notable features of this release:

    • ๐Ÿ‘ Full support for .NET Core 3.x for WPF, WinForms, Gtk, and Mac64
    • โšก๏ธ Updated extensions for VS for Mac 8.x and VS 2019
    • ๐Ÿ’… Cascading Styles
    • Drag images with cursor offset
    • โฌ‡๏ธ Drop descriptions (windows only)
    • ๐Ÿ†• New Eto.Drawing.FormattedText to draw wrapped and/or aligned text using any brush with the Graphics object
    • ๐Ÿ†• New Windows.MovableByWindowBackground property
    • ๐Ÿ†• New Controls: CheckBoxList, EnumCheckBoxList, PropertyGrid, ToggleButton, and SegmentedButton
    • ๐ŸŽ 32-bit macOS platforms are no longer supported (Eto.Platform.Mac and Eto.Platform.XamMac).
      Please use Eto.Platform.Mac64 or Eto.Platform.XamMac2 instead.

    .NET Core 3.x

    This release brings support for .NET Core to all of the desktop platforms including Eto.Platform.Wpf, Eto.Platform.Windows, Eto.Platform.Mac64, and Eto.Platform.Gtk (which already had support for .NET Core 2.x). This means you can use the same libraries and runtime for all platforms, and use newer packages that depend on .NET Standard 2.1.

    ๐Ÿ‘ > Note that this does not include Xamarin.Mac as it does not support .NET Core.

    ๐Ÿš€ For the Mac64 platform it will automatically package up the .NET Core runtime into an .app bundle in Release mode, for other platforms you can use the standard dotnet publish to publish your app to run without anything pre-installed.

    ๐ŸŽ > Note that you can only debug apps using .NET Core for Mac64 using VSCode on macOS. Support for debugging .NET Core using VS for Mac is forthcoming.

    When targeting .NET Core, you must use separate launchers per platform, the combined launcher only works when targetting .NET Framework only.

    Visual Studio Extensions

    โšก๏ธ The visual studio extensions have been updated for the latest VS for Mac and VS 2019, including the design preview for xaml (.xeto), json (.jeto), and code preview (.eto.cs).

    ๐Ÿ Windows-NewProject

    ๐Ÿ’… Cascading Styles

    ๐Ÿ’… Cascading styles allows you to apply styles to all controls within a specific container instead of globally. You can also provide your own style provider which could eventually support things like using .css files to define styles.

    ๐Ÿ’… The syntax for adding styles is nearly identical to global styles, allowing you to optionally specify a style identifier. A simple example could be something like the following, which vertically centers all labels in a panel:

    class MyPanel : Panel{ public MyPanel() { // make all labels vertically centered in this panelStyles.Add\<Label\>(null, l =\> l.VerticalAlignment = VerticalAlignment.Center); Content = new TableLayout { Rows = { new TableRow("First Name", new TextBox()), new TableRow("Last Name", new TextBox()), new TableRow("Birth Date", new DateTimePicker()) } }; } }
    

    Drag Images and Drop Descriptions

    You can now specify drag images and drop descriptions for a Drag 'n Drop operation by using the new Control.DoDragDrop(DataObject data, DragEffects allowedEffects, Image image, PointF cursorOffset) override and DragEventArgs.SetDropDescription(string format, string inner = null).

    ๐Ÿ These integrate with the standard functionality of each platform so your apps will work beautifully. On windows it uses the newer shell drag/drop to provide a more modern look for the link/move/copy actions.

    Mac

    Mac-DragImage

    ๐Ÿ Windows (with drop description)

    ๐Ÿ Windows-DragImageDropDescription

    ๐Ÿ‘ > Note that the drop description is only supported on Wpf and WinForms, on other platforms it will be ignored. Drag images are supported on all platforms.

    FormattedText

    You can now draw formatted text with wrapping and alignment options, with any brush (solid, linear gradient, radial gradient, texture brush).

    Mac-FormattedText

    Mac and Xamarin.Mac Improvements

    ๐ŸŽ The macOS platforms have had numerous updates to improve layout performance, and also it now uses the alignment rectangle for sizing and positioning controls. This means that many standard controls, such as Button, Stepper, DropDown, etc that have had intrinsic padding no longer do and will now align to the control itself.

    CheckBoxList and EnumCheckBoxList

    ๐Ÿ Windows-CheckBoxList

    PropertyGrid

    ๐Ÿ The PropertyGrid can be used to edit object(s) and arrays, very much like the one included in Windows Forms. This combines the TreeGridView and PropertyCell to provide an editor UI you can use to allow you users to easily modify objects and its properties.

    ๐Ÿ Windows-PropertyGrid

    ToggleButton

    The ToggleButton is perfect when you want something other than a check box to toggle a value.

    Mac-ToggleButton

    SegmentedButton

    The SegmentedButton presents a grouped set of buttons that can optionally be selected and optionally show drop down menus for each item.

    Mac-SegmentedButton

    ๐Ÿš€ Release Cadence

    ๐Ÿš€ 2.5.x will continue to be improved, and point releases will be distributed as often as necessary to bring the latest features and fixes to official nuget packages sooner than has been done in the past. This is thanks in part of the added CI automation provided by Azure DevOps.