Releases: ngocnhiem/Eto
2.5.7
⭐ New Features
-
Build for .NET 5.0 #1821
-
Wpf/WinForms: Report per-monitor screen information when in system-dpi mode #1820
-
Wpf/WinForms: Extract dependencies to normal nuget references #1806
-
Mac: Add automatic code signing and notarization #1805
-
Add PixelOffsetMode.Aligned for aligned drawing with sharp lines #1799
-
[Feature Request] Custom WndProc #1790
🪲 Bug Fixes
-
Fix Big Sur issue with Mac64 #1822
-
Building running Mac with .NET 5 prompts to install Mono framework #1814
-
Extracting dependencies broke XAML loading on non-Windows platforms #1810
-
Wpf: Graphics.ResetClip() can reset transform if one exists #1808
-
Fix slow leak of Pango context objects in drawable update #1801
-
Mac: Fix sizing of labels when initially shown on a PixelLayout #1798
-
Mac: Fix closing attached dialog until mouse moves #1797
-
GTK Platform/GtkSharp has a slow memory leak with Drawable controls #1796
-
Gtk3: Fix autosizing of forms with wrapping labels. #1793
-
Mac: DataObject.GetData() should not crash when data is zero #1792
-
GTK Form vertically scaled too large using TableLayout #1791
-
BundleResource not working correctly MacOS #1789
-
Mac: Support proper packaging for .NET 5 #1788
-
Mac: Fix drag/drop changes #1787
-
Mac: Properly handle Padding with Scrollable #1786
-
Eto.Platform.Mac64 bundle doesn't recognize .NET 5 #1762
-
[Mac] Labels not sized correctly in PixelLayout #1747
-
Gtk3: incorrect extra height of last vertical element in DynamicTable #1708
-
Attached dialogs on macOS don't close until you move your mouse #1685
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
2.5.6
Bug fix release.
Fixes these issues.
2.5.5
Bug fix release.
2.5.4
Bug fix release. Issues fixed
2.5.3
Bug fix release. Issues fixed
2.5.2 Hotfix release
This fixes a few issues:
-
Bundling Mac64 apps with msbuild can cause an error picoe#1701
-
Mac: Fix issues setting width/height of a form when it has already been shown picoe#1701
-
Auto load the handler type when subclassing custom platform controls picoe#1701
-
Wpf: Fix huge performance issue when creating many small bitmaps using a Graphics object picoe#1698
-
Fix GraphicsPath.GetRoundRect when the width/height is smaller or equal to radius*4 picoe#1694
-
Fix
Application.Instance.Openon .NET Core picoe#1695 -
Gtk: Fix
PixelFormats.Format32bppRgbpicoe#1458 -
Wpf: Fix
PixelFormats.Format32bppRgbwhen using a Graphics object picoe#1458
2.5.1
This release brings in some fixes since 2.5.0, namely:
-
Can now debug .NET Core Eto.Mac64 apps in VS for Mac
-
Native macOS .dylib libraries are included with mkbundle --library option
-
Added FontTypeface.IsSymbol and HasCharacterRanges
-
Bindings now support child properties of struct properties
-
Child property bindings can now be used with more than one control
-
DropDown allows formatting the Font of each item
-
MaskedTextBox/Stepper allow formatting the decimal and sign characters with a specific culture
-
Added Screen.GetImage() to get a Bitmap representation of a screen
-
Added APIs to set progress for long running tasks in the Taskbar.
-
Many fixes
2.5.0
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).
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 panel
Styles.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
Windows (with drop description)
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 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
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.
ToggleButton
The ToggleButton is perfect when you want something other than a check box to toggle a value.
SegmentedButton
The SegmentedButton presents a grouped set of buttons that can optionally be selected and optionally show drop down menus for each item.
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.
2.4.1
2.4.0
Eto.Forms 2.4.0 is now released! This release brings many new cool things, such as a fresh new Gtk platform supporting Gtk+ 3.14 or later, addin updates for VS 2017 and VS for Mac, and many new controls. See below for details.
There have been over 500 commits and 2755 files changed since v2.3, with 7 authors. Thanks to the following for their very generous contributions:
.. and thanks to everyone that has submitted issues to help make Eto.Forms better!
Visual Studio Addins
All new addins have been created for VS 2017 and VS for Mac/MonoDevelop, including form preview for xaml, json, and code view definitions.
Download links for the addins are above!
dotnet new
Project templates are now based on the dotnet template engine. This means you can easily create project templates from the command line using the dotnet sdk or in IDEs like Rider and VS Code. First, install the template package:
dotnet new -i "Eto.Forms.Templates::*"
Now you can create a new application:
dotnet new etoapp
Add --help to that to get a list of options, such as creating a .sln, using xaml, etc.
.NET Standard
Eto, Eto.Serialization.Xaml, and Eto.Serialization.Json has been migrated to .NET Standard 1.0. They are still compatible with the same platforms and projects as before, but now are much friendlier with .NET Core. (see Gtk Platform)
Gtk Platform
Eto.Platform.Gtk is now Gtk 3.14+ and uses @cra0zy's exellent GtkSharp library. Works on Windows, Linux, and Mac. This platform is also the first to have full .NET Core support! Note that the project templates do not use .NET Core by default but you can easily change the target framework after.
Note that you can still use Gtk2 by installing the new Eto.Platform.Gtk2 package.
Mac Templates
Projects created on Windows or Linux now can be run directly when loaded in VS for Mac using the Mac/Mac64/XamMac2 platforms, and the Mac platforms all create the .app bundle for you instead of relying on a separate Eto.Platform.Mac.Template (which is now obsolete).
Drag 'n Drop
A long awaited feature is now here! Fully integrated with each native OS, and gives you great control over which nodes you can drag to for GridView and TreeGridView. See here for samples.
AboutDialog
Shows a dialog with all the information about your app. Uses the native GTK3 about dialog, and a custom themed dialog for the other platforms. It'll also automatically grab all the metadata from your assembly!
DocumentControl
A new control that is similar to a TabControl, but allows the user to close or optionally reorder tabs.
FilePicker
Pick files or folders.
FontPicker
Pick a font family, style, and size.
TextStepper and MaskedTextStepper
A custom stepper that you can control the text completely and react to up/down events.