├── .config └── dotnet-tools.json ├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── build.yml │ ├── create-release.yml │ └── publish.yml ├── .gitignore ├── .gitmodules ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── CODE_OF_CONDUCT.md ├── LICENSE.txt ├── README.md ├── build.cmd ├── build.sh ├── build ├── Build.proj ├── Common.Build.props ├── Common.Build.targets ├── Common.Mac.targets ├── Common.props ├── Utilities.targets ├── build-help-mdoc.sh ├── build-help-shfb.cmd ├── help │ ├── Help.shfbproj │ ├── Help.sln │ └── xml │ │ ├── index.xml │ │ ├── ns-Eto.Drawing.xml │ │ ├── ns-Eto.Forms.xml │ │ ├── ns-Eto.IO.xml │ │ ├── ns-Eto.Misc.xml │ │ └── ns-Eto.xml └── msbuild.cmd ├── dotnet-workloads.json ├── images ├── linux.png ├── mac.png └── windows.png ├── lib ├── GtkSharp3 │ ├── atk-sharp.dll │ ├── atk-sharp.dll.config │ ├── atk-sharp.dll.mdb │ ├── cairo-sharp.dll │ ├── cairo-sharp.dll.mdb │ ├── gdk-sharp.dll │ ├── gdk-sharp.dll.config │ ├── gdk-sharp.dll.mdb │ ├── gio-sharp.dll │ ├── gio-sharp.dll.config │ ├── gio-sharp.dll.mdb │ ├── glib-sharp.dll │ ├── glib-sharp.dll.config │ ├── glib-sharp.dll.mdb │ ├── gtk-sharp.dll │ ├── gtk-sharp.dll.config │ ├── gtk-sharp.dll.mdb │ ├── pango-sharp.dll │ ├── pango-sharp.dll.config │ └── pango-sharp.dll.mdb ├── SHDocVw │ └── Interop.SHDocVw.dll └── webkit-sharp │ └── webkit-sharp.dll ├── nuget.config ├── samples ├── Directory.Build.props ├── Directory.Build.targets ├── Gtk │ ├── EmbedEtoInGtk │ │ ├── EmbedEtoInGtk.csproj │ │ ├── MainWindow.cs │ │ ├── MyEtoPanel.cs │ │ └── Program.cs │ └── EmbedGtkInEto │ │ ├── EmbedGtkInEto.csproj │ │ ├── MainForm.cs │ │ ├── MyNativeWidget.cs │ │ └── Program.cs ├── MacOS │ ├── EmbedEtoInMacOS │ │ ├── AppDelegate.cs │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── AppIcon-128.png │ │ │ │ ├── AppIcon-128@2x.png │ │ │ │ ├── AppIcon-16.png │ │ │ │ ├── AppIcon-16@2x.png │ │ │ │ ├── AppIcon-256.png │ │ │ │ ├── AppIcon-256@2x.png │ │ │ │ ├── AppIcon-32.png │ │ │ │ ├── AppIcon-32@2x.png │ │ │ │ ├── AppIcon-512.png │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── EmbedEtoInMacOS.csproj │ │ ├── Entitlements.plist │ │ ├── Info.plist │ │ ├── Main.cs │ │ ├── Main.storyboard │ │ ├── MyEtoPanel.cs │ │ ├── ViewController.cs │ │ └── ViewController.designer.cs │ └── EmbedMacOSInEto │ │ ├── AppDelegate.cs │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon-128.png │ │ │ ├── AppIcon-128@2x.png │ │ │ ├── AppIcon-16.png │ │ │ ├── AppIcon-16@2x.png │ │ │ ├── AppIcon-256.png │ │ │ ├── AppIcon-256@2x.png │ │ │ ├── AppIcon-32.png │ │ │ ├── AppIcon-32@2x.png │ │ │ ├── AppIcon-512.png │ │ │ ├── AppIcon-512@2x.png │ │ │ └── Contents.json │ │ └── Contents.json │ │ ├── EmbedMacOSInEto.csproj │ │ ├── Entitlements.plist │ │ ├── Info.plist │ │ ├── Main.cs │ │ ├── MainForm.cs │ │ ├── MyNativeView.cs │ │ ├── MyNativeView.designer.cs │ │ ├── MyNativeView.xib │ │ ├── MyNativeViewController.cs │ │ └── MyNativeViewController.designer.cs ├── Samples.sln ├── SdkTest │ ├── Info.plist │ ├── MacIcon.icns │ ├── MainForm.cs │ ├── Program.cs │ ├── SdkTest.csproj │ └── nuget.config ├── Tutorials │ ├── CSharp │ │ ├── Tutorial1 │ │ │ ├── CS.Tutorial1.HelloWorld.csproj │ │ │ └── Main.cs │ │ ├── Tutorial2 │ │ │ ├── CS.Tutorial2.MenusAndToolbars.csproj │ │ │ └── Main.cs │ │ ├── Tutorial3 │ │ │ ├── CS.Tutorial3.TableLayout.csproj │ │ │ └── Main.cs │ │ └── Tutorial4 │ │ │ ├── CS.Tutorial4.Binding.csproj │ │ │ └── Main.cs │ ├── FSharp │ │ ├── Tutorial1 │ │ │ ├── FS.Tutorial1.HelloWorld.fsproj │ │ │ └── Program.fs │ │ ├── Tutorial2 │ │ │ ├── FS.Tutorial2.MenusAndToolbars.fsproj │ │ │ └── Program.fs │ │ ├── Tutorial3 │ │ │ ├── FS.Tutorial3.TableLayout.fsproj │ │ │ └── Program.fs │ │ └── Tutorial4 │ │ │ ├── FS.Tutorial4.Binding.fsproj │ │ │ └── Program.fs │ └── README.md ├── WinForms │ ├── EmbedEtoInWinForms │ │ ├── App.config │ │ ├── EmbedEtoInWinForms.csproj │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── MyEtoPanel.cs │ │ ├── Program.cs │ │ └── Properties │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ └── EmbedWinFormsInEto │ │ ├── EmbedWinFormsInEto.csproj │ │ ├── MainForm.cs │ │ ├── MyNativeControl.Designer.cs │ │ ├── MyNativeControl.cs │ │ ├── MyNativeControl.resx │ │ └── Program.cs └── Wpf │ ├── EmbedEtoInWpf │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── EmbedEtoInWpf.csproj │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── MyEtoPanel.cs │ └── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ └── EmbedWpfInEto │ ├── App.config │ ├── EmbedWpfInEto.csproj │ ├── MainForm.cs │ ├── MyNativeControl.xaml │ ├── MyNativeControl.xaml.cs │ └── Program.cs ├── src ├── CustomDictionary.xml ├── Directory.Build.props ├── Directory.Build.targets ├── Eto.Android.sln ├── Eto.Android │ ├── AndroidHelpers.cs │ ├── ContextMenuHandler.cs │ ├── Conversions.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── BrushHandler.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── SolidBrushHandler.cs │ │ ├── SystemColorsHandler.cs │ │ └── TextureBrushHandler.cs │ ├── Eto.Android.csproj │ ├── Forms │ │ ├── AndroidContainer.cs │ │ ├── AndroidControl.cs │ │ ├── AndroidExtensions.cs │ │ ├── AndroidPanel.cs │ │ ├── AndroidTextControl.cs │ │ ├── AndroidWindow.cs │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── ICellHandler.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ ├── ProgressCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── Controls │ │ │ ├── AndroidCommonControl.cs │ │ │ ├── ButtonHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── FontPickerHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── LinkButtonHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NavigationHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── NumericUpDownHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButtonHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SpinnerHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ ├── TreeViewHandler.cs │ │ │ └── WebViewHandler.cs │ │ ├── DialogHandler.cs │ │ ├── EtoEnvironmentHandler.cs │ │ ├── FormHandler.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItemHandler.cs │ │ │ ├── CheckMenuItemHandler.cs │ │ │ ├── MenuItemHandler.cs │ │ │ └── SeparatorMenuItemHandler.cs │ │ ├── ScreenHandler.cs │ │ ├── ScreensHandler.cs │ │ ├── TableLayoutHandler.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── SeparatorToolItemHandler.cs │ │ │ ├── ToolBarHandler.cs │ │ │ └── ToolItemHandler.cs │ │ └── UITimerHandler.cs │ ├── KeyMap.cs │ ├── MessageBoxHandler.cs │ ├── PixelLayoutHandler.cs │ └── Platform.cs ├── Eto.Direct2D │ ├── 2DConversions.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── BrushData.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconFrameHandler.cs │ │ ├── IconHandler.cs │ │ ├── ImageHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── RadialGradientBrushHandler.cs │ │ ├── SDFactory.cs │ │ ├── SolidBrushHandler.cs │ │ └── TextureBrushHandler.cs │ ├── Eto.Direct2D.csproj │ ├── Forms │ │ ├── Controls │ │ │ └── DrawableHandler.cs │ │ └── Printing │ │ │ └── PrintDocumentHandler.cs │ └── Platform.cs ├── Eto.Forms.Templates │ ├── Eto.Forms.Templates.csproj │ └── content │ │ ├── App-CSharp │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ ├── ide.host.json │ │ │ └── template.json │ │ ├── EtoApp.1.sln │ │ ├── EtoApp.1 │ │ │ ├── EtoApp.1.csproj │ │ │ ├── Info.plist │ │ │ ├── MacIcon.icns │ │ │ ├── MainForm.cs │ │ │ ├── MainForm.eto.cs │ │ │ ├── MainForm.jeto │ │ │ ├── MainForm.jeto.cs │ │ │ ├── MainForm.xeto │ │ │ ├── MainForm.xeto.cs │ │ │ └── Program.cs │ │ └── Separate │ │ │ ├── EtoApp.1.Gtk │ │ │ ├── EtoApp.1.Gtk.csproj │ │ │ └── Program.cs │ │ │ ├── EtoApp.1.Mac │ │ │ ├── EtoApp.1.Mac.csproj │ │ │ ├── Icon.icns │ │ │ ├── Info.plist │ │ │ └── Program.cs │ │ │ ├── EtoApp.1.MacOS │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── AppIcon-128.png │ │ │ │ │ ├── AppIcon-128@2x.png │ │ │ │ │ ├── AppIcon-16.png │ │ │ │ │ ├── AppIcon-16@2x.png │ │ │ │ │ ├── AppIcon-256.png │ │ │ │ │ ├── AppIcon-256@2x.png │ │ │ │ │ ├── AppIcon-32.png │ │ │ │ │ ├── AppIcon-32@2x.png │ │ │ │ │ ├── AppIcon-512.png │ │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── EtoApp.1.MacOS.csproj │ │ │ ├── Info.plist │ │ │ └── Program.cs │ │ │ ├── EtoApp.1.WinForms │ │ │ ├── EtoApp.1.WinForms.csproj │ │ │ └── Program.cs │ │ │ └── EtoApp.1.Wpf │ │ │ ├── EtoApp.1.Wpf.csproj │ │ │ └── Program.cs │ │ ├── App-FSharp │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ ├── ide.host.json │ │ │ └── template.json │ │ ├── EtoApp.1.sln │ │ ├── EtoApp.1 │ │ │ ├── EtoApp.1.fsproj │ │ │ ├── Info.plist │ │ │ ├── MacIcon.icns │ │ │ ├── MainForm.eto.fs │ │ │ ├── MainForm.fs │ │ │ ├── MainForm.jeto │ │ │ ├── MainForm.jeto.fs │ │ │ ├── MainForm.xeto │ │ │ ├── MainForm.xeto.fs │ │ │ └── Program.fs │ │ └── Separate │ │ │ ├── EtoApp.1.Gtk │ │ │ ├── EtoApp.1.Gtk.fsproj │ │ │ └── Program.fs │ │ │ ├── EtoApp.1.Mac │ │ │ ├── EtoApp.1.Mac.fsproj │ │ │ ├── Icon.icns │ │ │ ├── Info.plist │ │ │ └── Program.fs │ │ │ ├── EtoApp.1.MacOS │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── AppIcon-128.png │ │ │ │ │ ├── AppIcon-128@2x.png │ │ │ │ │ ├── AppIcon-16.png │ │ │ │ │ ├── AppIcon-16@2x.png │ │ │ │ │ ├── AppIcon-256.png │ │ │ │ │ ├── AppIcon-256@2x.png │ │ │ │ │ ├── AppIcon-32.png │ │ │ │ │ ├── AppIcon-32@2x.png │ │ │ │ │ ├── AppIcon-512.png │ │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── EtoApp.1.MacOS.fsproj │ │ │ ├── Info.plist │ │ │ └── Program.fs │ │ │ ├── EtoApp.1.WinForms │ │ │ ├── EtoApp.1.WinForms.fsproj │ │ │ └── Program.fs │ │ │ └── EtoApp.1.Wpf │ │ │ ├── EtoApp.1.Wpf.csproj │ │ │ └── Program.cs │ │ ├── App-VisualBasic │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ ├── ide.host.json │ │ │ └── template.json │ │ ├── EtoApp.1.sln │ │ ├── EtoApp.1 │ │ │ ├── EtoApp.1.vbproj │ │ │ ├── Info.plist │ │ │ ├── MacIcon.icns │ │ │ ├── MainForm.eto.vb │ │ │ ├── MainForm.jeto │ │ │ ├── MainForm.jeto.vb │ │ │ ├── MainForm.vb │ │ │ ├── MainForm.xeto │ │ │ ├── MainForm.xeto.vb │ │ │ └── Program.vb │ │ └── Separate │ │ │ ├── EtoApp.1.Gtk │ │ │ ├── EtoApp.1.Gtk.vbproj │ │ │ └── Program.vb │ │ │ ├── EtoApp.1.Mac │ │ │ ├── EtoApp.1.Mac.vbproj │ │ │ ├── Icon.icns │ │ │ ├── Info.plist │ │ │ └── Program.vb │ │ │ ├── EtoApp.1.MacOS │ │ │ ├── Assets.xcassets │ │ │ │ ├── AppIcon.appiconset │ │ │ │ │ ├── AppIcon-128.png │ │ │ │ │ ├── AppIcon-128@2x.png │ │ │ │ │ ├── AppIcon-16.png │ │ │ │ │ ├── AppIcon-16@2x.png │ │ │ │ │ ├── AppIcon-256.png │ │ │ │ │ ├── AppIcon-256@2x.png │ │ │ │ │ ├── AppIcon-32.png │ │ │ │ │ ├── AppIcon-32@2x.png │ │ │ │ │ ├── AppIcon-512.png │ │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── EtoApp.1.MacOS.csproj │ │ │ ├── Info.plist │ │ │ └── Program.cs │ │ │ ├── EtoApp.1.WinForms │ │ │ ├── EtoApp.1.WinForms.vbproj │ │ │ └── Program.vb │ │ │ └── EtoApp.1.Wpf │ │ │ ├── EtoApp.1.Wpf.vbproj │ │ │ └── Program.vb │ │ ├── Directory.Build.props │ │ ├── Directory.Build.targets │ │ ├── File-CSharp │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ └── template.json │ │ ├── MainForm.cs │ │ ├── MainForm.eto.cs │ │ ├── MainForm.jeto │ │ ├── MainForm.jeto.cs │ │ ├── MainForm.xeto │ │ └── MainForm.xeto.cs │ │ ├── File-FSharp │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ └── template.json │ │ ├── MainForm.eto.fs │ │ ├── MainForm.fs │ │ ├── MainForm.jeto │ │ ├── MainForm.jeto.fs │ │ ├── MainForm.xeto │ │ └── MainForm.xeto.fs │ │ ├── File-VisualBasic │ │ ├── .template.config │ │ │ ├── dotnetcli.host.json │ │ │ └── template.json │ │ ├── MainForm.eto.vb │ │ ├── MainForm.jeto │ │ ├── MainForm.jeto.vb │ │ ├── MainForm.vb │ │ ├── MainForm.xeto │ │ └── MainForm.xeto.vb │ │ └── NuGet.Config ├── Eto.Gtk │ ├── CustomControls │ │ ├── AnalogClock.cs │ │ ├── BaseComboBox.gtk2.cs │ │ ├── BaseComboBox.gtk3.cs │ │ ├── DateComboBox.cs │ │ ├── DateComboBoxDialog.cs │ │ ├── SizableBin.cs │ │ └── WindowExtensions.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── BrushHandler.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconFrameHandler.cs │ │ ├── IconHandler.cs │ │ ├── ImageHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── RadialGradientBrushHandler.cs │ │ ├── SolidBrushHandler.cs │ │ ├── SystemColorsHandler.cs │ │ ├── SystemIconsHandler.cs │ │ └── TextureBrushHandler.cs │ ├── Eto.Gtk.csproj │ ├── Eto.Gtk2.csproj │ ├── Eto.Gtk3.csproj │ ├── EtoEnvironmentHandler.cs │ ├── EtoWebView.cs │ ├── Forms │ │ ├── AboutDialogHandler.cs │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CellHandler.cs │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── CustomCellHandler.cs │ │ │ ├── DrawableCellHandler.cs │ │ │ ├── GridCellFormattingEventArgs.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ ├── ProgressCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── ClipboardHandler.cs │ │ ├── ColorDialogHandler.cs │ │ ├── ColorDialogHandlerOld.cs │ │ ├── Controls │ │ │ ├── ButtonHandler.cs │ │ │ ├── ButtonHandler.gtk2.cs │ │ │ ├── ButtonHandler.gtk3.cs │ │ │ ├── CalendarHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ColorPickerHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DocumentControlHandler.cs │ │ │ ├── DocumentPageHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── ExpanderHandler.cs │ │ │ ├── FilePickerHandler.cs │ │ │ ├── FontPickerHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── GtkEnumerableModel.cs │ │ │ ├── GtkListModel.cs │ │ │ ├── GtkTreeModel.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── LinkButtonHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NativeControlHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButtonHandler.cs │ │ │ ├── RichTextAreaHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SpinnerHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── StepperHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── TextStepperHandler.cs │ │ │ ├── ToggleButtonHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ ├── TreeViewHandler.cs │ │ │ ├── WebKit2WebViewHandler.cs │ │ │ └── WebViewHandler.cs │ │ ├── CursorHandler.cs │ │ ├── DataObjectHandler.cs │ │ ├── DialogHandler.cs │ │ ├── EtoControls.cs │ │ ├── EtoControls.tt │ │ ├── FloatingFormHandler.cs │ │ ├── FontDialogHandler.cs │ │ ├── FontDialogHandlerOld.cs │ │ ├── FormHandler.cs │ │ ├── GtkContainer.cs │ │ ├── GtkControl.cs │ │ ├── GtkFileDialog.cs │ │ ├── GtkPanel.cs │ │ ├── GtkSynchronizationContext.cs │ │ ├── GtkWindow.cs │ │ ├── KeyboardHandler.cs │ │ ├── LinuxNotificationHandler.cs │ │ ├── LinuxTrayIndicatorHandler.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItemHandler.cs │ │ │ ├── CheckMenuItemHandler.cs │ │ │ ├── ContextMenuHandler.cs │ │ │ ├── MenuBarHandler.cs │ │ │ ├── MenuHandler.cs │ │ │ ├── RadioMenuItemHandler.cs │ │ │ ├── SeparatorMenuItemHandler.cs │ │ │ └── SubMenuItemHandler.cs │ │ ├── MessageBoxHandler.cs │ │ ├── MouseHandler.cs │ │ ├── OpenFileDialogHandler.cs │ │ ├── OpenWithDialogHandler.cs │ │ ├── OtherTrayIndicatorHandler.cs │ │ ├── PixelLayoutHandler.cs │ │ ├── Printing │ │ │ ├── PrintDialogHandler.cs │ │ │ ├── PrintDocumentHandler.cs │ │ │ ├── PrintPreviewDialogHandler.cs │ │ │ └── PrintSettingsHandler.cs │ │ ├── SaveFileDialogHandler.cs │ │ ├── ScreenHandler.gtk2.cs │ │ ├── ScreenHandler.gtk3.cs │ │ ├── ScreensHandler.cs │ │ ├── SelectFolderDialogHandler.cs │ │ ├── TableLayoutHandler.gtk2.cs │ │ ├── TableLayoutHandler.gtk3.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── DropDownToolItemHandler.cs │ │ │ ├── RadioToolItemHandler.cs │ │ │ ├── SeparatorToolItemHandler.cs │ │ │ ├── ToolBarHandler.cs │ │ │ └── ToolItemHandler.cs │ │ ├── UITimerHandler.cs │ │ ├── UnityTaskbarHandler.cs │ │ └── WindowHandler.cs │ ├── Gtk3Compatibility.cs │ ├── GtkConversions.cs │ ├── GtkExtensions.cs │ ├── GtkHelpers.cs │ ├── GtkVersion.cs │ ├── KeyMap.cs │ ├── MenuActionItemHandler.cs │ ├── NativeMacMethods.cs │ ├── NativeMethods.cs │ ├── NativeMethods.tt │ └── Platform.cs ├── Eto.Mac │ ├── AppDelegate.cs │ ├── AsyncQueue.cs │ ├── CGConversions.cs │ ├── ColorizeView.cs │ ├── CrashReporter.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── BrushHandler.cs │ │ ├── ColorHandler.cs │ │ ├── EtoFontManager.cs │ │ ├── FontExtensions.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconFrameHandler.cs │ │ ├── IconHandler.cs │ │ ├── ImageHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── RadialGradientBrushHandler.cs │ │ ├── SolidBrushHandler.cs │ │ ├── SplineHelper.cs │ │ ├── SystemColorsHandler.cs │ │ ├── SystemIconsHandler.cs │ │ └── TextureBrushHandler.cs │ ├── Eto.Mac64.csproj │ ├── Eto.macOS.csproj │ ├── EtoBundle.cs │ ├── EtoEnvironmentHandler.cs │ ├── Forms │ │ ├── Actions │ │ │ └── MacCommand.cs │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CellHandler.cs │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── CustomCellHandler.cs │ │ │ ├── DrawableCellHandler.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ ├── ProgressCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── ClipboardHandler.cs │ │ ├── ColorDialogHandler.cs │ │ ├── Controls │ │ │ ├── ButtonHandler.cs │ │ │ ├── CalendarHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ColorPickerHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── ExpanderHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── LinkButtonHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── MacButton.cs │ │ │ ├── MacControl.cs │ │ │ ├── MacEventView.cs │ │ │ ├── MacImageAndTextCell.cs │ │ │ ├── MacImageTextView.cs │ │ │ ├── MacLabel.cs │ │ │ ├── MacText.cs │ │ │ ├── NativeControlHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButtonHandler.cs │ │ │ ├── RichTextAreaHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SegmentedButtonHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SpinnerHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── StepperHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── ToggleButtonHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ ├── TreeViewHandler.cs │ │ │ └── WKWebViewHandler.cs │ │ ├── CursorHandler.cs │ │ ├── DataObjectHandler.cs │ │ ├── DialogHandler.cs │ │ ├── EtoDragSource.cs │ │ ├── FloatingFormHandler.cs │ │ ├── FontDialogHandler.cs │ │ ├── FormHandler.cs │ │ ├── KeyboardHandler.cs │ │ ├── MacBase.cs │ │ ├── MacCommon.cs │ │ ├── MacContainer.cs │ │ ├── MacControlExtensions.cs │ │ ├── MacFieldEditor.cs │ │ ├── MacFileDialog.cs │ │ ├── MacModal.cs │ │ ├── MacObject.cs │ │ ├── MacPanel.cs │ │ ├── MacView.cs │ │ ├── MacViewTextInput.cs │ │ ├── MacWindow.cs │ │ ├── MemoryDataObjectHandler.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItemHandler.cs │ │ │ ├── CheckMenuItemHandler.cs │ │ │ ├── ContextMenuHandler.cs │ │ │ ├── MenuActionHandler.cs │ │ │ ├── MenuBarHandler.cs │ │ │ ├── MenuHandler.cs │ │ │ ├── RadioMenuItemHandler.cs │ │ │ ├── SeparatorMenuItem.cs │ │ │ └── SubMenuItemHandler.cs │ │ ├── MessageBoxHandler.cs │ │ ├── MouseHandler.cs │ │ ├── NativeFormHandler.cs │ │ ├── NotificationHandler.cs │ │ ├── OpenFileDialogHandler.cs │ │ ├── OpenWithDialogHandler.cs │ │ ├── PixelLayoutHandler.cs │ │ ├── Printing │ │ │ ├── PrintDialogHandler.cs │ │ │ ├── PrintDocumentHandler.cs │ │ │ └── PrintSettingsHandler.cs │ │ ├── SaveFileDialogHandler.cs │ │ ├── ScreenHandler.cs │ │ ├── ScreensHandler.cs │ │ ├── SelectFolderDialogHandler.cs │ │ ├── TableLayoutHandler.cs │ │ ├── TaskbarHandler.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── DropDownToolItemHandler.cs │ │ │ ├── DropDownToolItemPreCatalinaHandler.cs │ │ │ ├── RadioToolItemHandler.cs │ │ │ ├── SeparatorToolItemHandler.cs │ │ │ ├── ToolBarHandler.cs │ │ │ └── ToolItemHandler.cs │ │ ├── TrayIndicatorHandler.cs │ │ ├── UITimerHandler.cs │ │ ├── WindowHandler.cs │ │ └── iosCompatibility.cs │ ├── InvokeHelper.cs │ ├── KeyMap.cs │ ├── Mac64Extensions.cs │ ├── MacConversions.cs │ ├── MacConversions.ns.cs │ ├── MacExtensions.cs │ ├── MacHelpers.cs │ ├── MacVersion.cs │ ├── Messaging.cs │ ├── NSImageExtensions.cs │ ├── ObjCExtensions.cs │ ├── Platform.cs │ ├── SDConversions.cs │ ├── Threading │ │ └── ThreadHandler.cs │ └── build │ │ ├── BundleDotNetCore.targets │ │ ├── BundleMono.targets │ │ ├── CodeSign.entitlements │ │ ├── CodeSign.targets │ │ ├── Dmg.background.png │ │ ├── Dmg.targets │ │ ├── Icon.icns │ │ ├── Info.plist │ │ ├── Launcher64 │ │ ├── Mac.props │ │ ├── Mac.targets │ │ ├── Notarization.targets │ │ ├── README.txt │ │ ├── RunConfiguration.Default.targets │ │ └── RunConfiguration.Mac.targets ├── Eto.Serialization.Json │ ├── Converters │ │ ├── DelegateConverter.cs │ │ ├── DynamicLayoutConverter.cs │ │ ├── FontConverter.cs │ │ ├── ListItemConverter.cs │ │ ├── NameConverter.cs │ │ ├── PropertyStoreConverter.cs │ │ ├── StackLayoutConverter.cs │ │ ├── TableLayoutConverter.cs │ │ └── TypeConverterConverter.cs │ ├── DefaultNamespaceManager.cs │ ├── Eto.Serialization.Json.csproj │ ├── Eto.Serialization.Json.targets │ ├── EtoBinder.cs │ ├── EtoContractResolver.cs │ ├── EventValueProvider.cs │ ├── JsonReader.cs │ └── NamespaceManager.cs ├── Eto.Serialization.Xaml │ ├── DesignerUserControl.cs │ ├── Eto.Serialization.Xaml.csproj │ ├── Eto.Serialization.Xaml.targets │ ├── EtoNameScope.cs │ ├── EtoXamlSchemaContext.cs │ ├── EtoXamlType.cs │ ├── Extensions │ │ ├── BindingExtension.cs │ │ ├── FileExtension.cs │ │ ├── FontExtension.cs │ │ ├── OnExtension.cs │ │ ├── ResourceExtension.cs │ │ └── StaticResourceExtension.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── XamlReader.cs ├── Eto.WinForms │ ├── BubbleEventFilter.cs │ ├── CustomControls │ │ ├── CalendarPicker.png │ │ ├── ExtendedDateTimePicker.cs │ │ └── TreeController.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── BrushHandler.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconFrameHandler.cs │ │ ├── IconHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── RadialGradientBrushHandler.cs │ │ ├── SolidBrushHandler.cs │ │ ├── SystemColorsHandler.cs │ │ └── TextureBrushHandler.cs │ ├── Eto.WinForms.csproj │ ├── EtoEnvironmentHandler.cs │ ├── Forms │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CellHandler.cs │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── CustomCellHandler.cs │ │ │ ├── DrawableCellHandler.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ ├── ProgressCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── ClipboardHandler.cs │ │ ├── ColorDialogHandler.cs │ │ ├── Controls │ │ │ ├── ButtonHandler.cs │ │ │ ├── CalendarHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ColorPickerHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── ControlHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── LinkButtonHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NativeControlHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButton.cs │ │ │ ├── RichTextAreaHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── StepperHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── TextStepperHandler.cs │ │ │ ├── ToggleButtonHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ ├── TreeViewHandler.cs │ │ │ └── WebViewHandler.cs │ │ ├── CursorHandler.cs │ │ ├── DialogHandler.cs │ │ ├── Extensions.cs │ │ ├── FloatingFormHandler.cs │ │ ├── FontDialogHandler.cs │ │ ├── FormHandler.cs │ │ ├── HwndFormHandler.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItemHandler.cs │ │ │ ├── CheckMenuItemHandler.cs │ │ │ ├── ContextMenuHandler.cs │ │ │ ├── MenuBarHandler.cs │ │ │ ├── MenuHandler.cs │ │ │ ├── RadioMenuItemHandler.cs │ │ │ ├── SeparatorMenuItem.cs │ │ │ └── SubMenuItemHandler.cs │ │ ├── MessageBoxHandler.cs │ │ ├── MouseHandler.cs │ │ ├── NativeFormHandler.cs │ │ ├── OpenFileDialogHandler.cs │ │ ├── OpenWithDialogHandler.cs │ │ ├── PixelLayoutHandler.cs │ │ ├── Printing │ │ │ ├── PrintDialogHandler.cs │ │ │ ├── PrintDocumentHandler.cs │ │ │ ├── PrintPreviewDialogHandler.cs │ │ │ └── PrintSettingsHandler.cs │ │ ├── SaveFileDialogHandler.cs │ │ ├── ScreenHandler.cs │ │ ├── ScreensHandler.cs │ │ ├── SelectFolderDialogHandler.cs │ │ ├── SwfDragEventArgs.cs │ │ ├── SwfShellDropBehavior.cs │ │ ├── TableLayoutHandler.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── DropDownToolItemHandler.cs │ │ │ ├── RadioToolItemHandler.cs │ │ │ ├── SeparatorToolBarItemHandler.cs │ │ │ ├── ToolBarHandler.cs │ │ │ └── ToolItemHandler.cs │ │ ├── TrayIndicatorHandler.cs │ │ ├── UITimerHandler.cs │ │ ├── WindowHandler.cs │ │ ├── WindowsContainer.cs │ │ ├── WindowsControl.cs │ │ ├── WindowsFileDialog.cs │ │ └── WindowsPanel.cs │ ├── KeyMap.cs │ ├── LeakHelper.cs │ ├── OctreeQuantizer.cs │ ├── PaletteQuantizer.cs │ ├── Platform.cs │ ├── Quantizer.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Resources │ │ ├── Clear.png │ │ └── Search.png │ ├── ScrollMessageFilter.cs │ ├── Win32.cs │ ├── Win32.dpi.cs │ ├── Win32.gdi.cs │ ├── Win32TextBox.cs │ ├── WinConversions.cs │ ├── WinConversions.shared.cs │ └── WinFormsHelpers.cs ├── Eto.WinUI │ ├── CustomControls │ │ └── SpinButton.cs │ ├── Eto.WinUI.csproj │ ├── EtoEnvironmentHandler.cs │ ├── Forms │ │ ├── ApplicationHandler.cs │ │ ├── ControlExtensions.cs │ │ ├── Controls │ │ │ ├── BindingConverter.cs │ │ │ ├── BindingTemplates.xaml │ │ │ ├── ButtonHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── EtoBindingTextBlock.xaml │ │ │ ├── EtoBindingTextBlock.xaml.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── StepperHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ └── WinUIExtensions.cs │ │ ├── FormHandler.cs │ │ ├── TableLayoutHandler.cs │ │ ├── WinUIBorderedControl.cs │ │ ├── WinUIContainer.cs │ │ ├── WinUIControl.cs │ │ ├── WinUIFrameworkElement.cs │ │ ├── WinUILayout.cs │ │ ├── WinUIPanel.cs │ │ └── WinUIWindow.cs │ ├── Platform.cs │ ├── WinUIConversions.cs │ ├── WinUIExtensions.cs │ ├── WinUIHelpers.cs │ └── themes │ │ └── Generic.xaml ├── Eto.Wpf │ ├── AssemblyAbsoluteResourceDictionary.cs │ ├── CustomControls │ │ ├── DragDropLib.Swf.cs │ │ ├── DragDropLib.Wpf.cs │ │ ├── DragDropLib.cs │ │ ├── EditableTextBlock.cs │ │ ├── FontDialog │ │ │ ├── fontchooser.xaml │ │ │ ├── fontchooser.xaml.cs │ │ │ ├── fontfamilylistitem.cs │ │ │ ├── fontsizelistitem.cs │ │ │ ├── typefacelistitem.cs │ │ │ └── typographicfeaturelistitem.cs │ │ ├── GlassHelper.cs │ │ ├── HttpServer.cs │ │ ├── MultiSizeImage.cs │ │ ├── SelectableTreeView.cs │ │ └── TreeGridView │ │ │ └── TreeToggleButton.cs │ ├── DragDropConversions.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── CachedBitmapFrame.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── FontsHandler.cs │ │ ├── FormattedTextHandler.cs │ │ ├── GraphicsHandler.cs │ │ ├── GraphicsPathHandler.cs │ │ ├── IconFrameHandler.cs │ │ ├── IconHandler.cs │ │ ├── IndexedBitmapHandler.cs │ │ ├── LinearGradientBrushHandler.cs │ │ ├── MatrixHandler.cs │ │ ├── PenHandler.cs │ │ ├── RadialGradientBrushHandler.cs │ │ ├── SolidBrushHandler.cs │ │ ├── SystemColorsHandler.cs │ │ ├── SystemIconsHandler.cs │ │ ├── TextureBrushHandler.cs │ │ └── TransformStack.cs │ ├── Eto.Wpf.csproj │ ├── EtoEnvironmentHandler.cs │ ├── Forms │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CellHandler.cs │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── CustomCellHandler.cs │ │ │ ├── DrawableCellHandler.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ ├── ProgressCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── ClipboardHandler.cs │ │ ├── ColorDialogHandler.cs │ │ ├── Controls │ │ │ ├── ButtonHandler.cs │ │ │ ├── CalendarHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ColorPickerHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── EtoGridCollectionView.cs │ │ │ ├── ExpanderHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── LinkButtonHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NativeControlHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButtonHandler.cs │ │ │ ├── RichTextAreaHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── StepperHandler.cs │ │ │ ├── SwfWebViewHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── TextStepperHandler.cs │ │ │ ├── ToggleButtonHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ ├── TreeViewHandler.cs │ │ │ ├── WebView2Handler.cs │ │ │ ├── WpfListItemHelper.cs │ │ │ ├── WpfTreeItemHelper.cs │ │ │ └── WpfWebViewHandler.cs │ │ ├── CursorHandler.cs │ │ ├── DataObjectHandler.cs │ │ ├── DialogHandler.cs │ │ ├── EnableThemingInScope.cs │ │ ├── EtoBorder.cs │ │ ├── FloatingFormHandler.cs │ │ ├── FontDialogHandler.cs │ │ ├── FormHandler.cs │ │ ├── KeyboardHandler.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItemHandler.cs │ │ │ ├── CheckMenuItemHandler.cs │ │ │ ├── ContextMenuHandler.cs │ │ │ ├── MenuBarHandler.cs │ │ │ ├── MenuHandler.cs │ │ │ ├── MenuItemHandler.cs │ │ │ ├── RadioMenuItemHandler.cs │ │ │ ├── SeparatorMenuItemHandler.cs │ │ │ └── SubMenuItemHandler.cs │ │ ├── MessageBoxHandler.cs │ │ ├── MouseHandler.cs │ │ ├── NativeFormHandler.cs │ │ ├── NotificationHandler.cs │ │ ├── OpenFileDialogHandler.cs │ │ ├── OpenWithDialogHandler.cs │ │ ├── PerMonitorDpiHelper.cs │ │ ├── PixelLayoutHandler.cs │ │ ├── Printing │ │ │ ├── PrintDialogHandler.cs │ │ │ ├── PrintDocumentHandler.cs │ │ │ ├── PrintPreviewDialogHandler.cs │ │ │ └── PrintSettingsHandler.cs │ │ ├── SaveFileDialogHandler.cs │ │ ├── ScreenHandler.cs │ │ ├── ScreensHandler.cs │ │ ├── SelectFolderDialogHandler.cs │ │ ├── TableLayoutHandler.cs │ │ ├── TaskbarHandler.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── DropDownToolItemHandler.cs │ │ │ ├── RadioToolItemHandler.cs │ │ │ ├── SeparatorToolItemHandler.cs │ │ │ ├── ToolBarHandler.cs │ │ │ └── ToolItemHandler.cs │ │ ├── TrayIndicatorHandler.cs │ │ ├── UITimerHandler.cs │ │ ├── VistaSelectFolderDialogHandler.cs │ │ ├── WindowHandler.cs │ │ ├── WindowsFormsHostHandler.cs │ │ ├── WpfCommonDialog.cs │ │ ├── WpfContainer.cs │ │ ├── WpfControl.cs │ │ ├── WpfDragEventArgs.cs │ │ ├── WpfFileDialog.cs │ │ ├── WpfFrameworkElement.cs │ │ ├── WpfLayout.cs │ │ ├── WpfPanel.cs │ │ ├── WpfShellDropBehavior.cs │ │ └── WpfWindow.cs │ ├── KeyMap.cs │ ├── LogicalScreenHelper.cs │ ├── NameDictionaryExtensions.cs │ ├── Platform.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── FontDialogResources.Designer.cs │ │ ├── FontDialogResources.resources │ │ └── FontDialogResources.resx │ ├── PropertyChangeNotifier.cs │ ├── PropertyPathHelper.cs │ ├── ShellIcon.cs │ ├── Win32.dib.cs │ ├── WinFormsHelpers.cs │ ├── WpfConversions.cs │ ├── WpfExtensions.cs │ ├── WpfHelpers.cs │ ├── WpfProperties.cs │ ├── XPThemes.manifest │ └── themes │ │ ├── controls │ │ ├── DataGrid.xaml │ │ ├── SearchTextBox.xaml │ │ ├── ToggleButton.xaml │ │ ├── WatermarkTextBox.xaml │ │ ├── Window.xaml │ │ └── XceedColorDialog.xaml │ │ ├── generic.xaml │ │ └── wpftoolkit │ │ └── ButtonSpinner.xaml ├── Eto.iOS.sln ├── Eto.iOS │ ├── Conversions.cs │ ├── Drawing │ │ ├── BitmapHandler.cs │ │ ├── FontFamilyHandler.cs │ │ ├── FontTypefaceHandler.cs │ │ ├── IconHandler.cs │ │ ├── ImageHandler.cs │ │ └── IndexedBitmapHandler.cs │ ├── Eto.iOS.csproj │ ├── EtoAppDelegate.cs │ ├── EtoEnvironmentHandler.cs │ ├── Extensions.cs │ ├── Forms │ │ ├── ApplicationHandler.cs │ │ ├── Cells │ │ │ ├── CellHandler.cs │ │ │ ├── CheckBoxCellHandler.cs │ │ │ ├── ComboBoxCellHandler.cs │ │ │ ├── ImageTextCellHandler.cs │ │ │ ├── ImageViewCellHandler.cs │ │ │ └── TextBoxCellHandler.cs │ │ ├── ClipboardHandler.cs │ │ ├── Controls │ │ │ ├── BasePickerHandler.cs │ │ │ ├── ButtonHandler.cs │ │ │ ├── CheckBoxHandler.cs │ │ │ ├── ComboBoxHandler.cs │ │ │ ├── DateTimePickerHandler.cs │ │ │ ├── DrawableHandler.cs │ │ │ ├── DropDownHandler.cs │ │ │ ├── GridColumnHandler.cs │ │ │ ├── GridHandler.cs │ │ │ ├── GridViewHandler.cs │ │ │ ├── GroupBoxHandler.cs │ │ │ ├── ImageViewHandler.cs │ │ │ ├── IosButton.cs │ │ │ ├── IosControl.cs │ │ │ ├── LabelHandler.cs │ │ │ ├── ListBoxHandler.cs │ │ │ ├── NavigationHandler.cs │ │ │ ├── NumericStepperHandler.cs │ │ │ ├── PanelHandler.cs │ │ │ ├── PasswordBoxHandler.cs │ │ │ ├── ProgressBarHandler.cs │ │ │ ├── RadioButtonHandler.cs │ │ │ ├── ScrollableHandler.cs │ │ │ ├── SearchBoxHandler.cs │ │ │ ├── SliderHandler.cs │ │ │ ├── SpinnerHandler.cs │ │ │ ├── SplitterHandler.cs │ │ │ ├── TabControlHandler.cs │ │ │ ├── TabPageHandler.cs │ │ │ ├── TextAreaHandler.cs │ │ │ ├── TextBoxHandler.cs │ │ │ ├── TreeGridViewHandler.cs │ │ │ └── WebViewHandler.cs │ │ ├── DialogHandler.cs │ │ ├── FormHandler.cs │ │ ├── IosLayout.cs │ │ ├── IosView.cs │ │ ├── IosViewExtensions.cs │ │ ├── IosWindow.cs │ │ ├── MacCompatibility.cs │ │ ├── MessageBoxHandler.cs │ │ ├── PixelLayoutHandler.cs │ │ ├── RotatableViewController.cs │ │ ├── ScreenHandler.cs │ │ ├── ScreensHandler.cs │ │ └── Toolbar │ │ │ ├── ButtonToolItemHandler.cs │ │ │ ├── CheckToolItemHandler.cs │ │ │ ├── RadioToolItemHandler.cs │ │ │ ├── SeparatorToolItemHandler.cs │ │ │ ├── ToolItemHandler.cs │ │ │ └── ToolbarHandler.cs │ ├── InvokeHelper.cs │ ├── Platform.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── Threading │ │ └── ThreadHandler.cs ├── Eto.sln ├── Eto │ ├── AutoInitializeAttribute.cs │ ├── BreakingChanges.txt │ ├── CollectionChangedHandler.cs │ ├── ContentProperty.cs │ ├── DefaultStyleProvider.cs │ ├── DisplayAttributeExtensions.cs │ ├── Drawing │ │ ├── Bitmap.cs │ │ ├── BitmapData.cs │ │ ├── Brush.cs │ │ ├── Brushes.cs │ │ ├── Color.cs │ │ ├── ColorCMYK.cs │ │ ├── ColorConverter.cs │ │ ├── ColorHSB.cs │ │ ├── ColorHSL.cs │ │ ├── Colors.cs │ │ ├── DashStyle.cs │ │ ├── DashStyles.cs │ │ ├── FillMode.cs │ │ ├── Font.cs │ │ ├── FontConverter.cs │ │ ├── FontFamilies.cs │ │ ├── FontFamily.cs │ │ ├── FontTypeface.cs │ │ ├── Fonts.cs │ │ ├── FormattedText.cs │ │ ├── Graphics.cs │ │ ├── GraphicsPath.cs │ │ ├── Icon.cs │ │ ├── IconFrame.cs │ │ ├── Image.cs │ │ ├── ImageConverter.cs │ │ ├── ImageInterpolation.cs │ │ ├── IndexedBitmap.cs │ │ ├── LinearGradientBrush.cs │ │ ├── Matrix.cs │ │ ├── Padding.cs │ │ ├── PaddingConverter.cs │ │ ├── PaddingF.cs │ │ ├── PaddingFConverter.cs │ │ ├── Palette.cs │ │ ├── Pen.cs │ │ ├── PenLineCap.cs │ │ ├── PenLineJoin.cs │ │ ├── Pens.cs │ │ ├── PixelOffsetMode.cs │ │ ├── Point.cs │ │ ├── PointConverter.cs │ │ ├── PointF.cs │ │ ├── PointFConverter.cs │ │ ├── RadialGradientBrush.cs │ │ ├── Rectangle.cs │ │ ├── RectangleConverter.cs │ │ ├── RectangleF.cs │ │ ├── RectangleFConverter.cs │ │ ├── Region.cs │ │ ├── Size.cs │ │ ├── SizeConverter.cs │ │ ├── SizeF.cs │ │ ├── SizeFConverter.cs │ │ ├── SolidBrush.cs │ │ ├── SystemColors.cs │ │ ├── SystemFonts.cs │ │ ├── SystemIcons.cs │ │ └── TextureBrush.cs │ ├── Eto.Forms.targets │ ├── Eto.csproj │ ├── EtoEnvironment.cs │ ├── EtoMemberIdentifier.cs │ ├── EventLookup.cs │ ├── ExportHandlerAttribute.cs │ ├── ExtendedObservableCollection.cs │ ├── FileAction.cs │ ├── Forms │ │ ├── AboutDialog.cs │ │ ├── Application.cs │ │ ├── Binding │ │ │ ├── BindableBinding.cs │ │ │ ├── BindableExtensions.cs │ │ │ ├── BindableWidget.cs │ │ │ ├── Binding.cs │ │ │ ├── Binding.helpers.cs │ │ │ ├── BindingChangedEventArgs.cs │ │ │ ├── BindingChangingEventArgs.cs │ │ │ ├── BindingCollection.cs │ │ │ ├── BindingExtensionsNonGeneric.cs │ │ │ ├── ColumnBinding.cs │ │ │ ├── DelegateBinding.cs │ │ │ ├── DirectBinding.cs │ │ │ ├── DualBinding.cs │ │ │ ├── IBindable.cs │ │ │ ├── IValueConverter.cs │ │ │ ├── IndirectBinding.cs │ │ │ ├── IndirectChildBinding.cs │ │ │ ├── ObjectBinding.cs │ │ │ ├── PropertyBinding.cs │ │ │ ├── PropertyBindingException.cs │ │ │ └── PropertyNotifyHelper.cs │ │ ├── BindingExtensions.cs │ │ ├── Cells │ │ │ ├── Cell.cs │ │ │ ├── CheckBoxCell.cs │ │ │ ├── ComboBoxCell.cs │ │ │ ├── CustomCell.cs │ │ │ ├── DrawableCell.cs │ │ │ ├── ImageTextCell.cs │ │ │ ├── ImageViewCell.cs │ │ │ ├── ProgressCell.cs │ │ │ ├── PropertyCell.cs │ │ │ ├── SingleValueCell.cs │ │ │ └── TextBoxCell.cs │ │ ├── Clipboard.cs │ │ ├── ColorDialog.cs │ │ ├── Command.cs │ │ ├── CommonDialog.cs │ │ ├── Container.cs │ │ ├── ControlBinding.cs │ │ ├── ControlConverter.cs │ │ ├── Controls │ │ │ ├── Button.cs │ │ │ ├── Calendar.cs │ │ │ ├── CheckBox.cs │ │ │ ├── CheckBoxList.cs │ │ │ ├── CollectionEditor.cs │ │ │ ├── ColorPicker.cs │ │ │ ├── ComboBox.cs │ │ │ ├── CommonControl.cs │ │ │ ├── Control.cs │ │ │ ├── DataStoreExtensions.cs │ │ │ ├── DateTimePicker.cs │ │ │ ├── DocumentControl.cs │ │ │ ├── DocumentPage.cs │ │ │ ├── DragEventArgs.cs │ │ │ ├── Drawable.cs │ │ │ ├── DropDown.cs │ │ │ ├── EnumCheckBoxList.cs │ │ │ ├── EnumDropDown.cs │ │ │ ├── EnumRadioButtonList.cs │ │ │ ├── Expander.cs │ │ │ ├── FilePicker.cs │ │ │ ├── FontPicker.cs │ │ │ ├── Grid.cs │ │ │ ├── GridColumn.cs │ │ │ ├── GridItem.cs │ │ │ ├── GridView.cs │ │ │ ├── GroupBox.cs │ │ │ ├── ImageView.cs │ │ │ ├── KeyEventArgs.cs │ │ │ ├── Label.cs │ │ │ ├── LinkButton.cs │ │ │ ├── ListBox.cs │ │ │ ├── ListControl.cs │ │ │ ├── MaskedTextBox.cs │ │ │ ├── MaskedTextStepper.cs │ │ │ ├── MouseEventArgs.cs │ │ │ ├── NativeControlHost.cs │ │ │ ├── Navigation.cs │ │ │ ├── NavigationItem.cs │ │ │ ├── NumericStepper.cs │ │ │ ├── Panel.cs │ │ │ ├── PasswordBox.cs │ │ │ ├── ProgressBar.cs │ │ │ ├── PropertyGrid.cs │ │ │ ├── RadioButton.cs │ │ │ ├── RadioButtonList.cs │ │ │ ├── RichTextArea.cs │ │ │ ├── Scrollable.cs │ │ │ ├── SearchBox.cs │ │ │ ├── Slider.cs │ │ │ ├── Spinner.cs │ │ │ ├── Splitter.cs │ │ │ ├── Stepper.cs │ │ │ ├── TabControl.cs │ │ │ ├── TabPage.cs │ │ │ ├── TextArea.cs │ │ │ ├── TextBox.cs │ │ │ ├── TextChangingEventArgs.cs │ │ │ ├── TextControl.cs │ │ │ ├── TextInputEventArgs.cs │ │ │ ├── TextStepper.cs │ │ │ ├── ThemedContainerHandler.cs │ │ │ ├── ThemedControlHandler.cs │ │ │ ├── ToggleButton.cs │ │ │ ├── TreeGridItem.cs │ │ │ ├── TreeGridView.cs │ │ │ ├── TreeItem.cs │ │ │ ├── TreeView.cs │ │ │ └── WebView.cs │ │ ├── Cursor.cs │ │ ├── Cursors.cs │ │ ├── DataFormats.cs │ │ ├── DataObject.cs │ │ ├── DataStoreVirtualCollection.cs │ │ ├── Dialog.cs │ │ ├── DockPosition.cs │ │ ├── FileDialog.cs │ │ ├── FileFilter.cs │ │ ├── FilterCollection.cs │ │ ├── FloatingForm.cs │ │ ├── FontDialog.cs │ │ ├── Form.cs │ │ ├── IDataStore.cs │ │ ├── IKeyboardInputSource.cs │ │ ├── IMouseInputSource.cs │ │ ├── Key.cs │ │ ├── Keyboard.cs │ │ ├── KeysConverter.cs │ │ ├── Layout │ │ │ ├── DynamicControl.cs │ │ │ ├── DynamicItem.cs │ │ │ ├── DynamicItemConverter.cs │ │ │ ├── DynamicLayout.cs │ │ │ ├── DynamicRowConverter.cs │ │ │ ├── DynamicTable.cs │ │ │ ├── Layout.cs │ │ │ ├── PixelLayout.cs │ │ │ ├── StackLayout.cs │ │ │ ├── StackLayoutItemConverter.cs │ │ │ ├── TableCell.cs │ │ │ ├── TableCellConverter.cs │ │ │ ├── TableLayout.cs │ │ │ ├── TableRow.cs │ │ │ └── TableRowConverter.cs │ │ ├── ListItem.cs │ │ ├── LocalizeEventArgs.cs │ │ ├── MaskedTextProvider │ │ │ ├── FixedMaskedTextProvider.cs │ │ │ ├── IMaskedTextProvider.cs │ │ │ ├── NumericMaskedTextProvider.cs │ │ │ └── VariableMaskedTextProvider.cs │ │ ├── Menu │ │ │ ├── ButtonMenuItem.cs │ │ │ ├── CheckMenuItem.cs │ │ │ ├── ContextMenu.cs │ │ │ ├── Menu.cs │ │ │ ├── MenuBar.cs │ │ │ ├── MenuItem.cs │ │ │ ├── MenuItemCollection.cs │ │ │ ├── MenuItemConverter.cs │ │ │ ├── RadioMenuItem.cs │ │ │ ├── SeparatorMenuItem.cs │ │ │ ├── SubMenu.cs │ │ │ └── SubMenuItem.cs │ │ ├── MessageBox.cs │ │ ├── Mouse.cs │ │ ├── Notification.cs │ │ ├── NotificationEventArgs.cs │ │ ├── ObjectData.cs │ │ ├── OpenFileDialog.cs │ │ ├── OpenWithDialog.cs │ │ ├── Orientation.cs │ │ ├── Printing │ │ │ ├── PageSettings.cs │ │ │ ├── PrintDialog.cs │ │ │ ├── PrintDocument.cs │ │ │ ├── PrintPageEventArgs.cs │ │ │ ├── PrintPreviewDialog.cs │ │ │ └── PrintSettings.cs │ │ ├── Range.cs │ │ ├── RelayCommand.cs │ │ ├── RelayValueCommand.cs │ │ ├── SaveFileDialog.cs │ │ ├── Screen.cs │ │ ├── SegmentedButton │ │ │ ├── ButtonSegmentedItem.cs │ │ │ ├── MenuSegmentedItem.cs │ │ │ ├── SegmentedButton.cs │ │ │ ├── SegmentedItem.cs │ │ │ ├── SegmentedItemClickEventArgs.cs │ │ │ ├── SegmentedItemCollection.cs │ │ │ └── SegmentedItemConverter.cs │ │ ├── SelectFolderDialog.cs │ │ ├── Taskbar.cs │ │ ├── TaskbarProgressState.cs │ │ ├── ThemedControls │ │ │ ├── ThemedAboutHandler.cs │ │ │ ├── ThemedCollectionEditorHandler.cs │ │ │ ├── ThemedColorPickerHandler.cs │ │ │ ├── ThemedDocumentControlHandler.cs │ │ │ ├── ThemedDocumentPageHandler.cs │ │ │ ├── ThemedExpanderHandler.cs │ │ │ ├── ThemedFilePickerHandler.cs │ │ │ ├── ThemedFontPickerHandler.cs │ │ │ ├── ThemedMessageBoxHandler.cs │ │ │ ├── ThemedPropertyGridHandler.cs │ │ │ ├── ThemedSegmentedButtonHandler.cs │ │ │ ├── ThemedSpinnerHandler.cs │ │ │ ├── ThemedSplitterHandler.cs │ │ │ ├── ThemedStepperHandler.cs │ │ │ └── ThemedTextStepperHandler.cs │ │ ├── ToolBar │ │ │ ├── ButtonToolItem.cs │ │ │ ├── CheckToolItem.cs │ │ │ ├── DropDownToolItem.cs │ │ │ ├── RadioToolItem.cs │ │ │ ├── SeparatorToolItem.cs │ │ │ ├── Tool.cs │ │ │ ├── ToolBar.cs │ │ │ ├── ToolItem.cs │ │ │ ├── ToolItemCollection.cs │ │ │ └── ToolItemConverter.cs │ │ ├── TrayIndicator.cs │ │ ├── UITimer.cs │ │ ├── ValueCommand.cs │ │ ├── WidgetExtensions.cs │ │ └── Window.cs │ ├── HandlerAttribute.cs │ ├── Helper.cs │ ├── IO │ │ └── SystemIcons.cs │ ├── NamespaceInfo.cs │ ├── OperatingSystemPlatform.cs │ ├── PclTypes.cs │ ├── Platform.cs │ ├── PlatformContext.cs │ ├── PlatformExtension.cs │ ├── Platforms.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── PropertyDescriptorHelpers.cs │ ├── PropertyStore.cs │ ├── RuntimeNamePropertyAttribute.cs │ ├── Style.cs │ ├── Threading │ │ └── Thread.cs │ ├── UnhandledExceptionEventHandler.cs │ ├── Widget.cs │ ├── WidgetHandler.cs │ └── sdk │ │ ├── Sdk.props │ │ └── Sdk.targets └── Shared │ ├── BaseBitmapData.cs │ ├── Conversions.cs │ ├── EmbeddedAssemblyLoader.cs │ ├── EnumerableExtensions.cs │ ├── FixedMaskedTextProviderHandler.cs │ ├── GradientHelper.cs │ ├── HttpClientExtensions.cs │ ├── MutableCellEventArgs.cs │ └── OpenTypeFontInfo.cs └── test ├── Directory.Build.props ├── Directory.Build.targets ├── Eto.Test.Android ├── Assets │ └── AboutAssets.txt ├── Eto.Test.Android.csproj ├── MainActivity.cs ├── Properties │ └── AndroidManifest.xml └── Resources │ ├── AboutResources.txt │ ├── drawable │ └── Icon.png │ ├── layout │ └── Main.axml │ └── values │ └── Strings.xml ├── Eto.Test.Direct2D ├── Eto.Test.Direct2D.csproj ├── Startup.cs └── app.config ├── Eto.Test.Gtk ├── Eto.Test.Gtk.csproj ├── Eto.Test.Gtk2.csproj ├── Eto.Test.Gtk3.csproj ├── NativeHostControls.cs ├── Startup.cs └── UnitTests │ └── NativeParentWindowTests.cs ├── Eto.Test.Mac ├── Assets │ ├── TestBundleResource.txt │ ├── TestContent.txt │ └── TestCopyToOutput.txt ├── Eto.Test.Mac64.csproj ├── Eto.Test.macOS.csproj ├── Info.plist ├── NativeHostControls.cs ├── Startup.cs ├── TestIcon.icns ├── UnitTests │ ├── BitmapTests.cs │ ├── ButtonTests.cs │ ├── CheckBoxTests.cs │ ├── DrawableTests.cs │ ├── GridViewTests.cs │ ├── IconTests.cs │ ├── LabelTests.cs │ ├── NativeParentWindowTests.cs │ ├── RadioButtonTests.cs │ ├── ResourceTests.cs │ ├── RichTextAreaHandlerTests.cs │ └── ScrollableTests.cs └── linker.xml ├── Eto.Test.WinForms ├── Eto.Test.WinForms.csproj ├── NativeHostControls.cs ├── Startup.cs ├── UnitTests │ ├── NativeParentWindowTests.cs │ └── NativeTests.cs ├── app.config └── app.manifest ├── Eto.Test.WinUI ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png ├── Eto.Test.WinUI.csproj ├── Package.appxmanifest ├── Properties │ ├── PublishProfiles │ │ ├── win10-arm64.pubxml │ │ ├── win10-x64.pubxml │ │ └── win10-x86.pubxml │ └── launchSettings.json └── app.manifest ├── Eto.Test.Wpf ├── Eto.Test.Wpf.csproj ├── NativeHostControls.cs ├── Properties │ └── AssemblyInfo.cs ├── Startup.cs ├── TestIcon.ico ├── UnitTests │ ├── BitmapTests.cs │ ├── DataContextTests.cs │ ├── DropDownTests.cs │ ├── LabelTests.cs │ ├── MenuBarTests.cs │ ├── NativeParentWindowTests.cs │ ├── ScreenTests.cs │ ├── ScreenToClientTests.cs │ ├── ScrollableTests.cs │ ├── TransformStackTest.cs │ └── WindowTests.cs ├── app.config └── app.manifest ├── Eto.Test.iOS ├── Eto.Test.iOS.csproj ├── Info.plist ├── MainForm.cs ├── Properties │ └── AssemblyInfo.cs ├── Resources │ ├── Default-568h@2x.png │ ├── Default.png │ └── Default@2x.png ├── Startup.cs └── app.config └── Eto.Test ├── Commands ├── About.cs └── Quit.cs ├── CultureDropDown.cs ├── Eto.Test.csproj ├── Handlers ├── TabControlHandler.cs └── TabPageHandler.cs ├── Images ├── Busy.cur ├── Logo.png ├── Logo@0.5x.png ├── Logo@1.5x.png ├── Logo@2x.png ├── Logo@4x.png ├── LogoWith288DPI.png ├── LogoWith288DPI@2x.png ├── TestIcon.ico ├── TestImage.png ├── Textures.gif └── Textures.png ├── Log.cs ├── LoremGenerator.cs ├── MainForm.cs ├── NativeHostControls.cs ├── PointEntry.cs ├── Resources └── Resource.designer.cs ├── SectionList.cs ├── Sections ├── Behaviors │ ├── AllControlsBase.cs │ ├── BadgeLabelSection.cs │ ├── ClipboardSection.cs │ ├── ContextMenuSection.cs │ ├── CursorSection.cs │ ├── DragDropSection.cs │ ├── DynamicFocusSection.cs │ ├── DynamicMenuBarSection.cs │ ├── FocusEventsSection.cs │ ├── KeyEventsSection.cs │ ├── KeyboardSection.cs │ ├── MouseEventsSection.cs │ ├── MousePositionSection.cs │ ├── NotificationSection.cs │ ├── OperatingSystemPlatformSection.cs │ ├── RestartSection.cs │ ├── ScreenSection.cs │ ├── TabIndexSection.cs │ ├── TaskbarSection.cs │ ├── ToolBarSection.cs │ ├── ToolTipSection.cs │ ├── TrayIndicatorSection.cs │ └── WindowsSection.cs ├── Controls │ ├── ButtonSection.cs │ ├── CalendarSection.cs │ ├── CheckBoxListSection.cs │ ├── CheckBoxSection.cs │ ├── ColorPickerSection.cs │ ├── ComboBoxSection.cs │ ├── ControlColorsSection.cs │ ├── DateTimePickerSection.cs │ ├── DocumentControlSection.cs │ ├── DrawableSection.cs │ ├── DropDownSection.cs │ ├── ExpanderSection.cs │ ├── FilePickerSection.cs │ ├── FontPickerSection.cs │ ├── GridCellFormattingSection.cs │ ├── GridViewSection.cs │ ├── GroupBoxSection.cs │ ├── ImageViewSection.cs │ ├── KitchenSinkSection.cs │ ├── LabelSection.cs │ ├── LinkButtonSection.cs │ ├── ListBoxSection.cs │ ├── MaskedTextBoxSection.cs │ ├── MaskedTextStepperSection.cs │ ├── NumericStepperSection.cs │ ├── PasswordBoxSection.cs │ ├── ProgressBarSection.cs │ ├── PropertyCellSection.cs │ ├── PropertyGridSection.cs │ ├── RadioButtonListSection.cs │ ├── RadioButtonSection.cs │ ├── RichTextAreaSection.cs │ ├── ScrollableSection.cs │ ├── SegmentedButtonSection.cs │ ├── SliderSection.cs │ ├── SpinnerSection.cs │ ├── SplitterSection.cs │ ├── StepperSection.cs │ ├── TabControlSection.cs │ ├── TextAreaSection.cs │ ├── TextBoxSection.cs │ ├── TextStepperSection.cs │ ├── ToggleButtonSection.cs │ ├── TreeGridViewSection.cs │ ├── TreeViewSection.cs │ └── WebViewSection.cs ├── Dialogs │ ├── AboutDialogSection.cs │ ├── ColorDialogSection.cs │ ├── DialogSection.cs │ ├── FileDialogSection.cs │ ├── FontDialogSection.cs │ ├── MessageBoxSection.cs │ ├── OpenWithDialogSection.cs │ └── SelectFolderSection.cs ├── Drawing │ ├── AntialiasSection.cs │ ├── BitmapSection.cs │ ├── BrushSection.cs │ ├── ClearSection.cs │ ├── ClipSection.cs │ ├── ClipTransformSection.cs │ ├── DrawLoopSection.cs │ ├── DrawTextSection.cs │ ├── FormattedTextSection.cs │ ├── GetPixelSection.cs │ ├── GraphicsPathSection.cs │ ├── IconFrameSection.cs │ ├── IndexedBitmapSection.cs │ ├── InterpolationSection.cs │ ├── PenSection.cs │ ├── PixelOffsetModeSection.cs │ ├── PixelOffsetTransforms.cs │ ├── SystemColorSection.cs │ ├── SystemIconsSection.cs │ ├── TextureBrushesSection.cs │ ├── TextureBrushesSection2.cs │ └── TransformSection.cs ├── Layouts │ ├── PixelLayoutSection │ │ └── AnchorSection.cs │ ├── ScrollingLayouts │ │ ├── DockLayoutExpansion.cs │ │ ├── PixelLayoutExpansion.cs │ │ ├── TableLayoutExpansion.cs │ │ └── TablePaddingAndSpacingSection.cs │ └── TableLayoutSection │ │ ├── ChildWidthSection.cs │ │ ├── RuntimeSection.cs │ │ ├── ScalingSection.cs │ │ └── SpacingSection.cs ├── Printing │ └── PrintDialogSection.cs ├── Serialization │ ├── Json │ │ ├── Test.cs │ │ └── Test.jeto │ ├── JsonReadSection.cs │ ├── Xaml │ │ ├── Test.cs │ │ └── Test.xeto │ └── XamlReadSection.cs ├── UnitTestPanel.cs └── UnitTestSection.cs ├── Settings.cs ├── SizeEntry.cs ├── TestApplication.cs ├── TestIcons.cs ├── TestSections.cs └── UnitTests ├── CollectionChangedHandlerTest.cs ├── Drawing ├── BitmapTests.cs ├── BrushTests.cs ├── ClipTests.cs ├── ColorTests.cs ├── DefaultValueTests.cs ├── FontTests.cs ├── GraphicsOffsetModeTests.cs ├── GraphicsPathTests.cs ├── GraphicsTests.cs ├── IconTests.cs ├── MatrixTests.cs └── PenTests.cs ├── Forms ├── ApplicationTests.cs ├── Behaviors │ └── MouseTests.cs ├── Bindings │ ├── BindingHelpersTests.cs │ ├── ChildBindingTests.cs │ ├── DelegateBindingTests.cs │ ├── ObjectBindingChangedTests.cs │ ├── ObjectBindingObjectChangedTests.cs │ └── PropertyBindingTests.cs ├── CascadingStyleTests.cs ├── ClipboardTests.cs ├── ContainerTests.cs ├── Controls │ ├── ButtonTests.cs │ ├── CalendarTests.cs │ ├── ComboBoxTests.cs │ ├── ControlEventTests.cs │ ├── ControlTests.cs │ ├── CustomCellTests.cs │ ├── DocumentControlTests.cs │ ├── DrawableTests.cs │ ├── DropDownTests.cs │ ├── GridTests.cs │ ├── GridViewFilterTests.cs │ ├── GridViewSelectTests.cs │ ├── GridViewSelectableFilterTests.cs │ ├── GridViewTests.cs │ ├── GroupBoxTests.cs │ ├── ImageViewTests.cs │ ├── LabelTests.cs │ ├── ListBoxTests.cs │ ├── ListControlTests.cs │ ├── NumericStepperTests.cs │ ├── PanelTests.cs │ ├── ProgressBarTests.cs │ ├── RadioButtonListTests.cs │ ├── RadioButtonTests.cs │ ├── RichTextAreaTests.cs │ ├── ScrollableTests.cs │ ├── SegmentedButtonTests.cs │ ├── SliderTests.cs │ ├── SplitterTests.cs │ ├── TextAreaTests.cs │ ├── TextBoxTests.cs │ ├── TextChangingEventArgsTests.cs │ ├── TreeGridViewTests.cs │ └── WebViewTests.cs ├── DataContextTests.cs ├── DefaultStyleProviderTests.cs ├── DialogTests.cs ├── FileDialogTests.cs ├── FilterCollectionTests.cs ├── FloatingFormTests.cs ├── FontDialogTests.cs ├── FormTests.cs ├── GlobalStyleProviderTests.cs ├── GridViewUtils.cs ├── Layout │ ├── DynamicLayoutTests.cs │ ├── LayoutTests.cs │ ├── PixelLayoutTests.cs │ ├── StackLayoutTests.cs │ └── TableLayoutTests.cs ├── MenuItemTests.cs ├── MessageBoxTests.cs ├── NativeControlHostTests.cs ├── PrintingTests.cs ├── RangeTests.cs ├── TestClasses.cs ├── ThemedMessageBoxTests.cs ├── ToolBarTests.cs ├── ToolItemCollectionTests.cs ├── WindowTests.cs └── XamlTests.cs ├── PlatformTests.cs ├── SingleFileDefaultTestAssemblyBuilder.cs └── TestBase.cs /.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "dotnet-t4": { 6 | "version": "2.2.1", 7 | "commands": [ 8 | "t4" 9 | ] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | 2 | * text=auto 3 | *.sh eol=lf 4 | *.entitlements eol=lf 5 | *.sln eol=crlf 6 | *.cmd eol=crlf 7 | *.csproj text 8 | *.xaml text 9 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: cwensley 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.orig 2 | *.user 3 | *.pidb 4 | *.userprefs 5 | *.suo 6 | bin/ 7 | obj/ 8 | *.shfbproj_* 9 | UpgradeLog*.htm 10 | /src/Components 11 | AppPackages 12 | .vs/ 13 | [Tt]humbs.db 14 | /artifacts 15 | packages/ 16 | .store 17 | .DS_Store 18 | *.proj.Backup.tmp 19 | ._.* 20 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/monomac"] 2 | path = lib/monomac 3 | url = https://github.com/cwensley/monomac.git 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.insertSpaces": false, 3 | "editor.detectIndentation": false, 4 | "files.exclude": { 5 | "**/.vs": true, 6 | "**/*.user": true 7 | }, 8 | "var": { 9 | "configuration" : "Debug", 10 | "buildProperties" : "/v:Minimal /p:GenerateFullPaths=True /consoleloggerparameters:'ForceNoAlign;NoSummary'" 11 | }, 12 | "vssolution.altSolutionFolders": [ 13 | "src", 14 | "samples" 15 | ], 16 | "dotnet.defaultSolution": "src/Eto.sln" 17 | 18 | } -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | WHERE dotnet > nul 4 | IF %ERRORLEVEL% NEQ 0 ( 5 | ECHO dotnet not found. Install the .NET 5+ SDK 6 | pause 7 | ) 8 | 9 | set BUILD_DIR=%~dp0build 10 | dotnet msbuild -v:minimal -t:Package -p:SetVersion=%1 "%BUILD_DIR%\Build.proj" 11 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 4 | dotnet msbuild /v:minimal /t:Package /p:SetVersion=$1 $DIR/build/Build.proj 5 | -------------------------------------------------------------------------------- /build/Common.Mac.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /build/build-help-shfb.cmd: -------------------------------------------------------------------------------- 1 | echo off 2 | 3 | WHERE msbuild > nul 4 | IF %ERRORLEVEL% NEQ 0 ( 5 | ECHO msbuild not found. Run in the Developer Command Prompt for VS 2017 6 | pause 7 | ) 8 | 9 | set BUILD_DIR=%~dp0 10 | msbuild -t:BuildHelpShfb "%BUILD_DIR%\Build.proj" 11 | 12 | pause -------------------------------------------------------------------------------- /build/help/xml/index.xml: -------------------------------------------------------------------------------- 1 | 2 | Eto Cross Platform Framework 3 | © 2018 by Curtis Wensley 4 | 5 | -------------------------------------------------------------------------------- /build/help/xml/ns-Eto.Drawing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Graphics and Drawing 4 | Graphics and drawing routines 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/help/xml/ns-Eto.Forms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | User Interface 4 | User interface forms and controls 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/help/xml/ns-Eto.IO.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Abstracted I/O 4 | Abstracted input/output interfaces 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/help/xml/ns-Eto.Misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Obsolete namespace 4 | Obsolete namespace 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/help/xml/ns-Eto.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Core functionality 4 | Core functionality of the Eto framework 5 | 6 | 7 | -------------------------------------------------------------------------------- /build/msbuild.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | set vswhere=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe 5 | set version=16.0 6 | 7 | for /f "usebackq tokens=*" %%i in (`"%vswhere%" -version %version% -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe`) do ( 8 | "%%i" %* 9 | exit /b !errorlevel! 10 | ) -------------------------------------------------------------------------------- /dotnet-workloads.json: -------------------------------------------------------------------------------- 1 | { 2 | "microsoft.net.sdk.macos": "14.0.8478" 3 | } -------------------------------------------------------------------------------- /images/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/images/linux.png -------------------------------------------------------------------------------- /images/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/images/mac.png -------------------------------------------------------------------------------- /images/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/images/windows.png -------------------------------------------------------------------------------- /lib/GtkSharp3/atk-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/atk-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/atk-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib/GtkSharp3/atk-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/atk-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/cairo-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/cairo-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/cairo-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/cairo-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/gdk-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gdk-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/gdk-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/GtkSharp3/gdk-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gdk-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/gio-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gio-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/gio-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/GtkSharp3/gio-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gio-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/glib-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/glib-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/glib-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /lib/GtkSharp3/glib-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/glib-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/gtk-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gtk-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/gtk-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/GtkSharp3/gtk-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/gtk-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/GtkSharp3/pango-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/pango-sharp.dll -------------------------------------------------------------------------------- /lib/GtkSharp3/pango-sharp.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/GtkSharp3/pango-sharp.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/GtkSharp3/pango-sharp.dll.mdb -------------------------------------------------------------------------------- /lib/SHDocVw/Interop.SHDocVw.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/SHDocVw/Interop.SHDocVw.dll -------------------------------------------------------------------------------- /lib/webkit-sharp/webkit-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/lib/webkit-sharp/webkit-sharp.dll -------------------------------------------------------------------------------- /nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | $(BasePath)artifacts\samples\$(MSBuildProjectName)\ 7 | 8 | -------------------------------------------------------------------------------- /samples/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /samples/Gtk/EmbedEtoInGtk/MainWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Gtk; 3 | using Eto.Forms; 4 | 5 | namespace EmbedEtoInGtk 6 | { 7 | 8 | public class MainWindow: Gtk.Window 9 | { 10 | public MainWindow() : base(Gtk.WindowType.Toplevel) 11 | { 12 | Title = "EmbedEtoInGtk.MainWindow"; 13 | WindowPosition = Gtk.WindowPosition.CenterOnParent; 14 | DefaultWidth = 423; 15 | DefaultHeight = 312; 16 | DeleteEvent += OnDeleteEvent; 17 | 18 | var nativeWidget = new MyEtoPanel().ToNative(true); 19 | 20 | Child = nativeWidget; 21 | } 22 | 23 | protected void OnDeleteEvent(object sender, DeleteEventArgs a) 24 | { 25 | Gtk.Application.Quit(); 26 | a.RetVal = true; 27 | } 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /samples/Gtk/EmbedEtoInGtk/MyEtoPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedEtoInGtk 6 | { 7 | /// 8 | /// Eto.Forms panel to embed in an existing WinForms app 9 | /// 10 | public class MyEtoPanel : Panel 11 | { 12 | public MyEtoPanel() 13 | { 14 | Content = new TableLayout 15 | { 16 | Spacing = new Size(5, 5), 17 | Rows = 18 | { 19 | new TableRow(new Label { Text = "An Eto.Forms control" }), 20 | new TableRow(new TextBox()), 21 | new TableRow(new ComboBox { Items = { "Item 1", "Item 2", "Item 3" } }), 22 | null 23 | } 24 | }; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /samples/Gtk/EmbedEtoInGtk/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Gtk; 3 | 4 | namespace EmbedEtoInGtk 5 | { 6 | static class Program 7 | { 8 | public static MainWindow MainWindow { get; set; } 9 | 10 | [STAThread] 11 | public static void Main(string[] args) 12 | { 13 | Application.Init(); 14 | new Eto.Forms.Application(new Eto.GtkSharp.Platform()).Attach(); 15 | MainWindow = new MainWindow(); 16 | MainWindow.Show(); 17 | Application.Run(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /samples/Gtk/EmbedGtkInEto/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedGtkInEto 6 | { 7 | public class MainForm : Form 8 | { 9 | public MainForm() 10 | { 11 | Menu = new MenuBar(); 12 | 13 | // create a new native MonoMac view and wrap it in an eto control 14 | var nativeControl = new MyNativeWidget().ToEto(); 15 | 16 | Content = new TableLayout 17 | { 18 | Padding = new Padding(10), 19 | Spacing = new Size(5, 5), 20 | Rows = 21 | { 22 | nativeControl, 23 | null, 24 | new TableLayout(new TableRow(null, new Button { Text = "An Eto.Forms button" })), 25 | } 26 | }; 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /samples/Gtk/EmbedGtkInEto/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EmbedGtkInEto 5 | { 6 | static class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(new Eto.GtkSharp.Platform()).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using AppKit; 2 | using Foundation; 3 | 4 | namespace EmbedEtoInMacOS 5 | { 6 | [Register("AppDelegate")] 7 | public class AppDelegate : NSApplicationDelegate 8 | { 9 | public AppDelegate() 10 | { 11 | } 12 | 13 | public override void DidFinishLaunching(NSNotification notification) 14 | { 15 | // Insert code here to initialize your application 16 | } 17 | 18 | public override void WillTerminate(NSNotification notification) 19 | { 20 | // Insert code here to tear down your application 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/Main.cs: -------------------------------------------------------------------------------- 1 | using AppKit; 2 | 3 | namespace EmbedEtoInMacOS 4 | { 5 | static class MainClass 6 | { 7 | static void Main(string[] args) 8 | { 9 | NSApplication.Init(); 10 | 11 | // initialize eto forms after native app is initialized 12 | new Eto.Forms.Application(new Eto.Mac.Platform()).Attach(); 13 | 14 | NSApplication.Main(args); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/MyEtoPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedEtoInMacOS 6 | { 7 | /// 8 | /// Eto.Forms panel to embed in an existing MonoMac app 9 | /// 10 | /// 11 | /// This is used in to add to the existing native app. 12 | /// 13 | public class MyEtoPanel : Panel 14 | { 15 | public MyEtoPanel() 16 | { 17 | Content = new TableLayout 18 | { 19 | Spacing = new Size(5, 5), 20 | Rows = 21 | { 22 | new TableRow(new Label { Text = "An Eto.Forms control" }), 23 | new TableRow(new TextBox()), 24 | new TableRow(new ComboBox { Items = { "Item 1", "Item 2", "Item 3" } }), 25 | null 26 | } 27 | }; 28 | } 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedEtoInMacOS/ViewController.designer.cs: -------------------------------------------------------------------------------- 1 | // WARNING 2 | // 3 | // This file has been generated automatically by Visual Studio to store outlets and 4 | // actions made in the UI designer. If it is removed, they will be lost. 5 | // Manual changes to this file may not be handled correctly. 6 | // 7 | using Foundation; 8 | using System.CodeDom.Compiler; 9 | 10 | namespace EmbedEtoInMacOS 11 | { 12 | [Register ("ViewController")] 13 | partial class ViewController 14 | { 15 | 16 | void ReleaseDesignerOutlets () 17 | { 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using AppKit; 2 | using Foundation; 3 | 4 | namespace EmbedMacOSInEto 5 | { 6 | [Register("AppDelegate")] 7 | public class AppDelegate : NSApplicationDelegate 8 | { 9 | public AppDelegate() 10 | { 11 | } 12 | 13 | public override void DidFinishLaunching(NSNotification notification) 14 | { 15 | // Insert code here to initialize your application 16 | } 17 | 18 | public override void WillTerminate(NSNotification notification) 19 | { 20 | // Insert code here to tear down your application 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/MacOS/EmbedMacOSInEto/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AppKit; 3 | using Eto.Forms; 4 | 5 | namespace EmbedMacOSInEto 6 | { 7 | static class MainClass 8 | { 9 | [STAThread] 10 | public static void Main(string[] args) 11 | { 12 | new Application(new Eto.Mac.Platform()).Run(new MainForm()); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Drawing; 3 | using Eto.Forms; 4 | 5 | namespace EmbedMacOSInEto 6 | { 7 | public class MainForm : Form 8 | { 9 | public MainForm() 10 | { 11 | Menu = new MenuBar(); 12 | 13 | // create a new native MonoMac view and wrap it in an eto control 14 | var nativeControl = new MyNativeViewController().ToEto(); 15 | 16 | Content = new TableLayout 17 | { 18 | Padding = new Padding(10), 19 | Spacing = new Size(5, 5), 20 | Rows = 21 | { 22 | nativeControl, 23 | null, 24 | new TableLayout(new TableRow(null, new Button { Text = "An Eto.Forms button" })), 25 | } 26 | }; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/MyNativeView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Foundation; 5 | using AppKit; 6 | 7 | namespace EmbedMacOSInEto 8 | { 9 | public partial class MyNativeView : AppKit.NSView 10 | { 11 | #region Constructors 12 | 13 | // Called when created from unmanaged code 14 | public MyNativeView(IntPtr handle) : base(handle) 15 | { 16 | Initialize(); 17 | } 18 | 19 | // Called when created directly from a XIB file 20 | [Export("initWithCoder:")] 21 | public MyNativeView(NSCoder coder) : base(coder) 22 | { 23 | Initialize(); 24 | } 25 | 26 | // Shared initialization code 27 | void Initialize() 28 | { 29 | } 30 | 31 | #endregion 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/MyNativeView.designer.cs: -------------------------------------------------------------------------------- 1 | namespace EmbedMacOSInEto 2 | { 3 | 4 | // Should subclass AppKit.NSView 5 | [Foundation.Register("MyNativeView")] 6 | public partial class MyNativeView 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /samples/MacOS/EmbedMacOSInEto/MyNativeViewController.designer.cs: -------------------------------------------------------------------------------- 1 | namespace EmbedMacOSInEto 2 | { 3 | 4 | // Should subclass AppKit.NSViewController 5 | [Foundation.Register("MyNativeViewController")] 6 | public partial class MyNativeViewController 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /samples/SdkTest/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | SdkTest 7 | CFBundleIdentifier 8 | ca.picoe.SdkTest 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | MacIcon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /samples/SdkTest/MacIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/samples/SdkTest/MacIcon.icns -------------------------------------------------------------------------------- /samples/SdkTest/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace Sdk 6 | { 7 | class Program 8 | { 9 | [STAThread] 10 | static void Main(string[] args) 11 | { 12 | new Application(Eto.Platform.Detect).Run(new MainForm()); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /samples/SdkTest/nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /samples/Tutorials/CSharp/Tutorial1/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace Tutorial1 6 | { 7 | public class MyForm : Form 8 | { 9 | public MyForm() 10 | { 11 | // Set ClientSize instead of Size, as each platform has different window border sizes 12 | ClientSize = new Size(600, 400); 13 | 14 | // Title to show in the title bar 15 | Title = "Hello, Eto.Forms"; 16 | 17 | // Content of the form 18 | Content = new Label { Text = "Some content", VerticalAlignment = VerticalAlignment.Center, TextAlignment = TextAlignment.Center }; 19 | } 20 | } 21 | 22 | class Program 23 | { 24 | [STAThread] 25 | public static void Main(string[] args) 26 | { 27 | new Application().Run(new MyForm()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /samples/Tutorials/FSharp/Tutorial1/Program.fs: -------------------------------------------------------------------------------- 1 | open System 2 | open Eto.Forms 3 | open Eto.Drawing 4 | 5 | type MyForm() as this = 6 | inherit Form() 7 | do 8 | this.ClientSize <- Size(600, 400) 9 | this.Title <- "Hello, Eto.Forms" 10 | this.Content <- new Label(Text = "Some content", VerticalAlignment = VerticalAlignment.Center, TextAlignment = TextAlignment.Center) 11 | 12 | [] 13 | let main argv = 14 | (new Application()).Run(new MyForm()) 15 | 0 16 | 17 | -------------------------------------------------------------------------------- /samples/Tutorials/README.md: -------------------------------------------------------------------------------- 1 | Eto.Forms Tutorials 2 | =================== 3 | 4 | How to Build 5 | ------------ 6 | 7 | These tutorials use a script to copy the required platform dependencies: 8 | 9 | - buildapp.sh is used for OS X or Linux 10 | - buildapp.cmd is used for Windows 11 | 12 | 13 | How to Run 14 | ---------- 15 | 16 | You can run from the IDE, though on OS X an .app bundle is created in the output directory that you must run separately, 17 | otherwise it will run the GTK platform on OS X. 18 | 19 | To run the MonoMac platform directly in MonoDevelop for OS X, you must create a MonoMac project separate from your GUI 20 | executable project. See the Eto.Test.Mac application as an example of how this looks. -------------------------------------------------------------------------------- /samples/WinForms/EmbedEtoInWinForms/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedEtoInWinForms/MyEtoPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedEtoInWinForms 6 | { 7 | /// 8 | /// Eto.Forms panel to embed in an existing WinForms app 9 | /// 10 | public class MyEtoPanel : Panel 11 | { 12 | public MyEtoPanel() 13 | { 14 | var button = new Button { Text = "Show Dialog" }; 15 | 16 | Content = new TableLayout 17 | { 18 | Spacing = new Size(5, 5), 19 | Rows = 20 | { 21 | new TableRow(new Label { Text = "An Eto.Forms control" }), 22 | new TableRow(new TextBox()), 23 | new TableRow(new ComboBox { Items = { "Item 1", "Item 2", "Item 3" } }), 24 | button, 25 | null 26 | } 27 | }; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedEtoInWinForms/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace EmbedEtoInWinForms 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | 20 | // initialize eto forms after native app is initialized 21 | new Eto.Forms.Application(new Eto.WinForms.Platform()).Attach(); 22 | 23 | Application.Run(new Form1()); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedEtoInWinForms/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedWinFormsInEto/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedWinFormsInEto 6 | { 7 | public class MainForm : Form 8 | { 9 | public MainForm() 10 | { 11 | Menu = new MenuBar(); 12 | 13 | // create a new native WinForms control and wrap it in an eto control 14 | var nativeControl = new MyNativeControl().ToEto(); 15 | 16 | Content = new TableLayout 17 | { 18 | Padding = new Padding(10), 19 | Spacing = new Size(5, 5), 20 | Rows = 21 | { 22 | nativeControl, 23 | null, 24 | new TableLayout(new TableRow(null, new Button { Text = "An Eto.Forms button" })), 25 | } 26 | }; 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedWinFormsInEto/MyNativeControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Data; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace EmbedWinFormsInEto 12 | { 13 | public partial class MyNativeControl : UserControl 14 | { 15 | public MyNativeControl() 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /samples/WinForms/EmbedWinFormsInEto/Program.cs: -------------------------------------------------------------------------------- 1 | using Eto.Forms; 2 | using System; 3 | 4 | namespace EmbedWinFormsInEto 5 | { 6 | static class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(new Eto.WinForms.Platform()).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace EmbedEtoInWpf 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | 17 | protected override void OnStartup(StartupEventArgs e) 18 | { 19 | base.OnStartup(e); 20 | 21 | 22 | new Eto.Forms.Application(new Eto.Wpf.Platform()).Attach(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/MyEtoPanel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedEtoInWpf 6 | { 7 | /// 8 | /// Eto.Forms panel to embed in an existing Wpf app 9 | /// 10 | public class MyEtoPanel : Panel 11 | { 12 | public MyEtoPanel() 13 | { 14 | Content = new TableLayout 15 | { 16 | Spacing = new Size(5, 5), 17 | Rows = 18 | { 19 | new TableRow(new Label { Text = "An Eto.Forms control" }), 20 | new TableRow(new TextBox()), 21 | new TableRow(new ComboBox { Items = { "Item 1", "Item 2", "Item 3" } }), 22 | null 23 | } 24 | }; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedEtoInWpf/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedWpfInEto/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedWpfInEto/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EmbedWpfInEto 6 | { 7 | public class MainForm : Form 8 | { 9 | public MainForm() 10 | { 11 | Menu = new MenuBar(); 12 | 13 | // create a new native Wpf control and wrap it in an eto control 14 | var nativeControl = new MyNativeControl().ToEto(); 15 | 16 | Content = new TableLayout 17 | { 18 | Padding = new Padding(10), 19 | Spacing = new Size(5, 5), 20 | Rows = 21 | { 22 | nativeControl, 23 | null, 24 | new TableLayout(new TableRow(null, new Button { Text = "An Eto.Forms button" })), 25 | } 26 | }; 27 | } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedWpfInEto/MyNativeControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace EmbedWpfInEto 17 | { 18 | /// 19 | /// Interaction logic for MyNativeControl.xaml 20 | /// 21 | public partial class MyNativeControl : UserControl 22 | { 23 | public MyNativeControl() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /samples/Wpf/EmbedWpfInEto/Program.cs: -------------------------------------------------------------------------------- 1 | using Eto.Forms; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace EmbedWpfInEto 9 | { 10 | static class Program 11 | { 12 | [STAThread] 13 | static void Main(string[] args) 14 | { 15 | new Application(new Eto.Wpf.Platform()).Run(new MainForm()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/CustomDictionary.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Eto 6 | Ega 7 | Rgb 8 | Argb 9 | Instantiator 10 | Drawable 11 | xscale 12 | yscale 13 | x 14 | y 15 | Monospace 16 | Gtk 17 | Xam 18 | ios 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | 6 | 7 | 8 | 9 | $(ArtifactsDir)core\$(MSBuildProjectName)\ 10 | 11 | -------------------------------------------------------------------------------- /src/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Eto.Android/Drawing/BrushHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Drawing 10 | { 11 | public abstract class BrushHandler 12 | { 13 | public abstract ag.Paint GetPaint(Brush brush); 14 | } 15 | } -------------------------------------------------------------------------------- /src/Eto.Android/Drawing/IndexedBitmapHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Drawing 10 | { 11 | class IndexedBitmapHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Drawing/SystemColorsHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Android 2 | { 3 | public class SystemColorsHandler : SystemColors.IHandler 4 | { 5 | // TODO: Not really implemented - just try to approximate the default WinForms look for now. 6 | 7 | public Color DisabledText => Colors.Gray; 8 | 9 | public Color ControlText => Colors.Black; 10 | 11 | public Color HighlightText => Colors.White; 12 | 13 | public Color Control => Colors.LightSlateGray; 14 | 15 | public Color ControlBackground => Colors.LightSlateGray; 16 | 17 | public Color Highlight => Colors.Blue; 18 | 19 | public Color WindowBackground => Colors.White; 20 | 21 | public Color SelectionText => HighlightText; 22 | 23 | public Color Selection => Highlight; 24 | 25 | public Color LinkText => Colors.Blue; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Eto.Android/Drawing/TextureBrushHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Drawing 10 | { 11 | class TextureBrushHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Eto.Android.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6.0-android 4 | 21 5 | enable 6 | disable 7 | $(DefaultItemExcludes);obj\**\* 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Cells/CheckBoxCellHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | namespace Eto.Android.Forms.Cells 9 | { 10 | public class CheckBoxCellHandler : CellHandler, CheckBoxCell.IHandler 11 | { 12 | public override av.View CreateView(av.View view, object item) 13 | { 14 | var tv = view as aw.TextView ?? new aw.TextView(Platform.AppContextThemed); 15 | 16 | tv.Text = Widget.Binding?.GetValue(item)?.ToString() ?? String.Empty; 17 | return tv; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Cells/ComboBoxCellHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | namespace Eto.Android.Forms.Cells 9 | { 10 | public class ComboBoxCellHandler : CellHandler, ComboBoxCell.IHandler 11 | { 12 | public IEnumerable DataStore 13 | { 14 | get; 15 | set; 16 | } 17 | 18 | public override av.View CreateView(av.View view, object item) 19 | { 20 | var tv = view as aw.TextView ?? new aw.TextView(Platform.AppContextThemed); 21 | 22 | tv.Text = Widget.Binding?.GetValue(item)?.ToString() ?? String.Empty; 23 | return tv; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Cells/ICellHandler.cs: -------------------------------------------------------------------------------- 1 | using av = Android.Views; 2 | 3 | namespace Eto.Android.Forms.Cells 4 | { 5 | public interface ICellHandler 6 | { 7 | av.View CreateView(av.View view, object item); 8 | } 9 | 10 | public abstract class CellHandler : WidgetHandler, Cell.IHandler, ICellHandler 11 | where TWidget : Cell 12 | { 13 | public abstract av.View CreateView(av.View view, object item); 14 | } 15 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Cells/ImageViewCellHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Cells 10 | { 11 | public class ImageViewCellHandler : CellHandler, ImageViewCell.IHandler 12 | { 13 | public ImageInterpolation ImageInterpolation 14 | { 15 | get; 16 | set; 17 | } 18 | 19 | public override av.View CreateView(av.View view, object item) 20 | { 21 | return new aw.Space(Platform.AppContextThemed); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Cells/ProgressCellHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | namespace Eto.Android.Forms.Cells 9 | { 10 | public class ProgressCellHandler : CellHandler, ProgressCell.IHandler 11 | { 12 | public override av.View CreateView(av.View view, object item) 13 | { 14 | var tv = view as aw.TextView ?? new aw.TextView(Platform.AppContextThemed); 15 | 16 | tv.Text = Widget.Binding?.GetValue(item)?.ToString() ?? String.Empty; 17 | return tv; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/AndroidCommonControl.cs: -------------------------------------------------------------------------------- 1 | using av = Android.Views; 2 | using aw = Android.Widget; 3 | using au = Android.Util; 4 | 5 | namespace Eto.Android.Forms.Controls 6 | { 7 | public abstract class AndroidCommonControl : AndroidTextControl, CommonControl.IHandler 8 | where TWidget: CommonControl 9 | where TControl: aw.TextView 10 | where TCallback: CommonControl.ICallback 11 | { 12 | public override av.View ContainerControl 13 | { 14 | get { return Control; } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/DateTimePickerHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class DateTimePickerHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/FontPickerHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | public class FontPickerHandler : AndroidControl, FontPicker.IHandler 12 | { 13 | public FontPickerHandler() : base() 14 | { 15 | Control = new av.View(Platform.AppContextThemed); 16 | Value = Fonts.Sans(20); 17 | } 18 | 19 | public Font Value { get; set; } 20 | 21 | public override av.View ContainerControl => Control; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/GroupBoxHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class GroupBoxHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/SearchBoxHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | public class SearchBoxHandler : TextBoxHandler, SearchBox.IHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/SliderHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class SliderHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/TabControlHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class TabControlHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/TabPageHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class TabPageHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/TreeGridViewHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class TreeGridViewHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/TreeViewHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class TreeViewHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Controls/WebViewHandler.cs: -------------------------------------------------------------------------------- 1 | using aa = Android.App; 2 | using ac = Android.Content; 3 | using ao = Android.OS; 4 | using ar = Android.Runtime; 5 | using av = Android.Views; 6 | using aw = Android.Widget; 7 | using ag = Android.Graphics; 8 | 9 | namespace Eto.Android.Forms.Controls 10 | { 11 | class WebViewHandler 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/EtoEnvironmentHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Android.Forms 2 | { 3 | internal class EtoEnvironmentHandler : EtoEnvironment.IHandler 4 | { 5 | public EtoEnvironmentHandler() 6 | { 7 | } 8 | 9 | public string GetFolderPath(EtoSpecialFolder folder) 10 | { 11 | return String.Empty; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto.Android/Forms/Menu/SeparatorMenuItemHandler.cs: -------------------------------------------------------------------------------- 1 | using av = Android.Views; 2 | 3 | namespace Eto.Android 4 | { 5 | internal class SeparatorMenuItemHandler : MenuItemHandler, SeparatorMenuItem.IHandler 6 | { 7 | public override void PerformClick() 8 | { 9 | } 10 | 11 | public override void CreateControl(av.IMenu androidMenu, System.Int32 index) 12 | { 13 | // Actually do nothing, the ContextMenuHandler takes care of separators itself. 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/ToolBar/ButtonToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | using aw = Android.Widget; 2 | 3 | namespace Eto.Android.Forms.ToolBar 4 | { 5 | public class ButtonToolItemHandler : ToolItemHandler, ButtonToolItem.IHandler 6 | { 7 | protected override aw.Button GetInnerControl(ToolBarHandler handler) 8 | { 9 | if (!HasControl) 10 | { 11 | Control = new aw.Button(Platform.AppContextThemed); 12 | Control.Click += control_Click; 13 | } 14 | 15 | return Control; 16 | } 17 | 18 | void control_Click(object sender, EventArgs e) 19 | { 20 | Widget.OnClick(EventArgs.Empty); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Eto.Android/Forms/ToolBar/SeparatorToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | using aw = Android.Widget; 2 | 3 | namespace Eto.Android.Forms.ToolBar 4 | { 5 | public class SeparatorToolItemHandler : ToolItemHandler, SeparatorToolItem.IHandler 6 | { 7 | protected override aw.Space GetInnerControl(ToolBarHandler handler) 8 | { 9 | if (!HasControl) 10 | { 11 | Control = new aw.Space(Platform.AppContextThemed); 12 | } 13 | 14 | return Control; 15 | } 16 | 17 | public override void SetText(string text) { } 18 | 19 | public SeparatorToolItemType Type { get; set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Eto.Direct2D/Drawing/SDFactory.cs: -------------------------------------------------------------------------------- 1 | using s = SharpDX; 2 | using sd = SharpDX.Direct2D1; 3 | using sw = SharpDX.DirectWrite; 4 | 5 | namespace Eto.Direct2D.Drawing 6 | { 7 | public static class SDFactory 8 | { 9 | static sd.Factory d2D1Factory; 10 | public static sd.Factory D2D1Factory { get { return d2D1Factory ?? (d2D1Factory = new sd.Factory()); } } 11 | 12 | static s.WIC.ImagingFactory wicImagingFactory; 13 | public static s.WIC.ImagingFactory WicImagingFactory { get { return wicImagingFactory ?? (wicImagingFactory = new s.WIC.ImagingFactory()); } } 14 | 15 | static sw.Factory directWriteFactory; 16 | public static sw.Factory DirectWriteFactory { get { return directWriteFactory ?? (directWriteFactory = new sw.Factory()); } } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Eto.Direct2D/Forms/Printing/PrintDocumentHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Direct2D.Forms.Printing 2 | { 3 | public class PrintDocumentHandler : Eto.WinForms.Forms.Printing.PrintDocumentHandler 4 | { 5 | protected override void HandlePrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 6 | { 7 | using (((Eto.Direct2D.Platform)Widget.Platform).BasePlatform.Context) 8 | { 9 | base.HandlePrintPage(sender, e); 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/.template.config/ide.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/vs-2017.3.host", 3 | "unsupportedHosts": [ 4 | { 5 | "id": "vs" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | MacIcon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/MacIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/MacIcon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/MainForm.jeto.cs: -------------------------------------------------------------------------------- 1 | #if (UseJeto) 2 | using System; 3 | using System.Collections.Generic; 4 | using Eto.Forms; 5 | using Eto.Drawing; 6 | using Eto.Serialization.Json; 7 | 8 | namespace EtoApp._1 9 | { 10 | public class MainForm : Form 11 | { 12 | public MainForm() 13 | { 14 | JsonReader.Load(this); 15 | } 16 | #if IsForm 17 | 18 | protected void HandleClickMe(object sender, EventArgs e) 19 | { 20 | MessageBox.Show("I was clicked!"); 21 | } 22 | 23 | protected void HandleAbout(object sender, EventArgs e) 24 | { 25 | new AboutDialog().ShowDialog(this); 26 | } 27 | 28 | protected void HandleQuit(object sender, EventArgs e) 29 | { 30 | Application.Instance.Quit(); 31 | } 32 | #endif 33 | } 34 | } 35 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/MainForm.xeto.cs: -------------------------------------------------------------------------------- 1 | #if (UseXeto) 2 | using System; 3 | using System.Collections.Generic; 4 | using Eto.Forms; 5 | using Eto.Drawing; 6 | using Eto.Serialization.Xaml; 7 | 8 | namespace EtoApp._1 9 | { 10 | public class MainForm : Form 11 | { 12 | public MainForm() 13 | { 14 | XamlReader.Load(this); 15 | } 16 | #if IsForm 17 | 18 | protected void HandleClickMe(object sender, EventArgs e) 19 | { 20 | MessageBox.Show("I was clicked!"); 21 | } 22 | 23 | protected void HandleAbout(object sender, EventArgs e) 24 | { 25 | new AboutDialog().ShowDialog(this); 26 | } 27 | 28 | protected void HandleQuit(object sender, EventArgs e) 29 | { 30 | Application.Instance.Quit(); 31 | } 32 | #endif 33 | } 34 | } 35 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/EtoApp.1/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | using Eto.Drawing; 4 | 5 | namespace EtoApp._1 6 | { 7 | class Program 8 | { 9 | [STAThread] 10 | static void Main(string[] args) 11 | { 12 | new Application(Eto.Platform.Detect).Run(new MainForm()); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Gtk/EtoApp.1.Gtk.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net6.0 6 | TargetFrameworkOverride 7 | EtoApp._1.Gtk 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Gtk/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Gtk 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.Gtk).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Mac/Icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Mac/Icon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Mac/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | Icon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Mac/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Mac 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.Mac64).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/EtoApp.1.MacOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-macos 4 | Exe 5 | EtoApp._1 6 | 10.15 7 | osx-x64;osx-arm64 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.MacOS/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Mac 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.macOS).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.WinForms/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.WinForms 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.WinForms).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-CSharp/Separate/EtoApp.1.Wpf/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Wpf 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.Wpf).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/.template.config/ide.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/vs-2017.3.host", 3 | "unsupportedHosts": [ 4 | { 5 | "id": "vs" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | Icon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/MacIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/MacIcon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/MainForm.jeto.fs: -------------------------------------------------------------------------------- 1 | #if (UseJeto) 2 | namespace EtoApp._1 3 | 4 | open System 5 | open Eto.Forms 6 | open Eto.Drawing 7 | open Eto.Serialization.Json; 8 | 9 | type MainForm() as this = 10 | inherit Form() 11 | 12 | do 13 | JsonReader.Load(this) 14 | 15 | #if IsForm 16 | member this.HandleClickMe(sender:obj, e:EventArgs) = 17 | MessageBox.Show("Hello!") |> ignore 18 | 19 | member this.HandleAbout(sender:obj, e:EventArgs) = 20 | let dlg = new AboutDialog() 21 | dlg.ShowDialog(this) |> ignore 22 | 23 | member this.HandleQuit(sender:obj, e:EventArgs) = 24 | Application.Instance.Quit() 25 | #endif 26 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/MainForm.xeto.fs: -------------------------------------------------------------------------------- 1 | #if (UseXeto) 2 | namespace EtoApp._1 3 | 4 | open System 5 | open Eto.Forms 6 | open Eto.Drawing 7 | open Eto.Serialization.Xaml; 8 | 9 | type MainForm() as this = 10 | inherit Form() 11 | 12 | do 13 | XamlReader.Load(this) 14 | 15 | #if IsForm 16 | member this.HandleClickMe(sender:obj, e:EventArgs) = 17 | MessageBox.Show("Hello!") |> ignore 18 | 19 | member this.HandleAbout(sender:obj, e:EventArgs) = 20 | let dlg = new AboutDialog() 21 | dlg.ShowDialog(this) |> ignore 22 | 23 | member this.HandleQuit(sender:obj, e:EventArgs) = 24 | Application.Instance.Quit() 25 | #endif 26 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/EtoApp.1/Program.fs: -------------------------------------------------------------------------------- 1 | namespace EtoApp._1.Desktop 2 | module Program = 3 | 4 | open System 5 | open EtoApp._1 6 | 7 | [] 8 | [] 9 | let Main(args) = 10 | let app = new Eto.Forms.Application(Eto.Platform.Detect) 11 | app.Run(new MainForm()) 12 | 0 -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Gtk/Program.fs: -------------------------------------------------------------------------------- 1 | namespace EtoApp._1.Gtk 2 | module Program = 3 | 4 | open System 5 | open EtoApp._1 6 | 7 | [] 8 | [] 9 | let Main(args) = 10 | let app = new Eto.Forms.Application(Eto.Platforms.Gtk) 11 | app.Run(new MainForm()) 12 | 0 -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Mac/Icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Mac/Icon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Mac/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | Icon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Mac/Program.fs: -------------------------------------------------------------------------------- 1 | namespace EtoApp._1.Mac 2 | module Program = 3 | 4 | open System 5 | open EtoApp._1 6 | 7 | [] 8 | [] 9 | let Main(args) = 10 | let app = new Eto.Forms.Application(Eto.Platforms.Mac64) 11 | app.Run(new MainForm()) 12 | 0 -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.MacOS/Program.fs: -------------------------------------------------------------------------------- 1 | namespace EtoApp._1.macOS 2 | module Program = 3 | 4 | open System 5 | open EtoApp._1 6 | 7 | [] 8 | [] 9 | let Main(args) = 10 | let app = new Eto.Forms.Application(Eto.Platforms.macOS) 11 | app.Run(new MainForm()) 12 | 0 -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.WinForms/Program.fs: -------------------------------------------------------------------------------- 1 | namespace EtoApp._1.WinForms 2 | module Program = 3 | 4 | open System 5 | open EtoApp._1 6 | 7 | [] 8 | [] 9 | let Main(args) = 10 | let app = new Eto.Forms.Application(Eto.Platforms.WinForms) 11 | app.Run(new MainForm()) 12 | 0 -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-FSharp/Separate/EtoApp.1.Wpf/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Wpf 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.Wpf).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/.template.config/ide.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/vs-2017.3.host", 3 | "unsupportedHosts": [ 4 | { 5 | "id": "vs" 6 | } 7 | ] 8 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | MacIcon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/MacIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/MacIcon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/MainForm.jeto.vb: -------------------------------------------------------------------------------- 1 | #If (UseJeto) 2 | Imports Eto.Forms 3 | Imports Eto.Drawing 4 | Imports Eto.Serialization.Json 5 | 6 | Public Class MainForm 7 | Inherits Form 8 | 9 | Public Sub New() 10 | JsonReader.Load(Me) 11 | End Sub 12 | #If IsForm 13 | 14 | Protected Sub HandleClickMe(sender As Object, e As EventArgs) 15 | MessageBox.Show("I was clicked!") 16 | End Sub 17 | 18 | Protected Sub HandleAbout(sender As Object, e As EventArgs) 19 | Dim dlg As New AboutDialog() 20 | dlg.ShowDialog(Me) 21 | End Sub 22 | 23 | Protected Sub HandleQuit(sender As Object, e As EventArgs) 24 | Application.Instance.Quit() 25 | End Sub 26 | #End If 27 | 28 | End Class 29 | #End If -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/MainForm.xeto.vb: -------------------------------------------------------------------------------- 1 | #If (UseXeto) 2 | Imports Eto.Forms 3 | Imports Eto.Drawing 4 | Imports Eto.Serialization.Xaml 5 | 6 | Public Class MainForm 7 | Inherits Form 8 | 9 | Public Sub New() 10 | XamlReader.Load(Me) 11 | End Sub 12 | #If IsForm 13 | 14 | Protected Sub HandleClickMe(sender As Object, e As EventArgs) 15 | MessageBox.Show("I was clicked!") 16 | End Sub 17 | 18 | Protected Sub HandleAbout(sender As Object, e As EventArgs) 19 | Dim dlg As New AboutDialog() 20 | dlg.ShowDialog(Me) 21 | End Sub 22 | 23 | Protected Sub HandleQuit(sender As Object, e As EventArgs) 24 | Application.Instance.Quit() 25 | End Sub 26 | #End If 27 | 28 | End Class 29 | #End If -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/EtoApp.1/Program.vb: -------------------------------------------------------------------------------- 1 | Imports Eto.Forms 2 | 3 | Class Program 4 | 5 | 6 | Public Shared Sub Main(args As String()) 7 | Dim app As New Application(Eto.Platform.Detect) 8 | app.Run(New MainForm()) 9 | End Sub 10 | End Class -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Gtk/EtoApp.1.Gtk.vbproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net6.0 6 | TargetFrameworkOverride 7 | EtoApp._1 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Gtk/Program.vb: -------------------------------------------------------------------------------- 1 | Imports Eto.Forms 2 | 3 | Class Program 4 | 5 | 6 | Public Shared Sub Main(args As String()) 7 | Dim app As New Application(Eto.Platforms.Gtk) 8 | app.Run(New MainForm()) 9 | End Sub 10 | End Class -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Mac/Icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Mac/Icon.icns -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Mac/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | EtoApp.1 7 | CFBundleIdentifier 8 | com.example.EtoApp.1 9 | CFBundleShortVersionString 10 | 1.0 11 | LSMinimumSystemVersion 12 | 10.15 13 | CFBundleDevelopmentRegion 14 | en 15 | NSHumanReadableCopyright 16 | 17 | CFBundleIconFile 18 | Icon.icns 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Mac/Program.vb: -------------------------------------------------------------------------------- 1 | Imports Eto.Forms 2 | 3 | Class Program 4 | 5 | 6 | Public Shared Sub Main(args As String()) 7 | Dim app As New Application(Eto.Platforms.Mac64) 8 | app.Run(New MainForm()) 9 | End Sub 10 | End Class -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/EtoApp.1.MacOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-macos 4 | Exe 5 | EtoApp._1 6 | 10.15 7 | osx-x64;osx-arm64 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.MacOS/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Eto.Forms; 3 | 4 | namespace EtoApp._1.Mac 5 | { 6 | class Program 7 | { 8 | [STAThread] 9 | public static void Main(string[] args) 10 | { 11 | new Application(Eto.Platforms.macOS).Run(new MainForm()); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.WinForms/Program.vb: -------------------------------------------------------------------------------- 1 | Imports Eto.Forms 2 | 3 | Class Program 4 | 5 | 6 | Public Shared Sub Main(args As String()) 7 | Dim app As New Application(Eto.Platforms.WinForms) 8 | app.Run(New MainForm()) 9 | End Sub 10 | End Class -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/App-VisualBasic/Separate/EtoApp.1.Wpf/Program.vb: -------------------------------------------------------------------------------- 1 | Imports Eto.Forms 2 | 3 | Class Program 4 | 5 | 6 | Public Shared Sub Main(args As String()) 7 | Dim app As New Application(Eto.Platforms.Wpf) 8 | app.Run(New MainForm()) 9 | End Sub 10 | End Class -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-CSharp/.template.config/dotnetcli.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/dotnetcli.host", 3 | "symbolInfo": { 4 | "Mode": { 5 | "longName": "mode", 6 | "shortName": "m" 7 | }, 8 | "Base": { 9 | "longName": "base", 10 | "shortName": "b" 11 | }, 12 | "Namespace": { 13 | "longName": "namespace", 14 | "shortName": "na" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-CSharp/MainForm.jeto.cs: -------------------------------------------------------------------------------- 1 | #if (UseJeto) 2 | using System; 3 | using System.Collections.Generic; 4 | using Eto.Forms; 5 | using Eto.Drawing; 6 | using Eto.Serialization.Json; 7 | 8 | namespace EtoApp._1 9 | { 10 | public class MainForm : Form 11 | { 12 | public MainForm() 13 | { 14 | JsonReader.Load(this); 15 | } 16 | #if IsForm 17 | 18 | protected void HandleClickMe(object sender, EventArgs e) 19 | { 20 | MessageBox.Show("I was clicked!"); 21 | } 22 | 23 | protected void HandleAbout(object sender, EventArgs e) 24 | { 25 | new AboutDialog().ShowDialog(this); 26 | } 27 | 28 | protected void HandleQuit(object sender, EventArgs e) 29 | { 30 | Application.Instance.Quit(); 31 | } 32 | #endif 33 | } 34 | } 35 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-CSharp/MainForm.xeto.cs: -------------------------------------------------------------------------------- 1 | #if (UseXeto) 2 | using System; 3 | using System.Collections.Generic; 4 | using Eto.Forms; 5 | using Eto.Drawing; 6 | using Eto.Serialization.Xaml; 7 | 8 | namespace EtoApp._1 9 | { 10 | public class MainForm : Form 11 | { 12 | public MainForm() 13 | { 14 | XamlReader.Load(this); 15 | } 16 | #if IsForm 17 | 18 | protected void HandleClickMe(object sender, EventArgs e) 19 | { 20 | MessageBox.Show("I was clicked!"); 21 | } 22 | 23 | protected void HandleAbout(object sender, EventArgs e) 24 | { 25 | new AboutDialog().ShowDialog(this); 26 | } 27 | 28 | protected void HandleQuit(object sender, EventArgs e) 29 | { 30 | Application.Instance.Quit(); 31 | } 32 | #endif 33 | } 34 | } 35 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-FSharp/.template.config/dotnetcli.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/dotnetcli.host", 3 | "symbolInfo": { 4 | "Mode": { 5 | "longName": "mode", 6 | "shortName": "m" 7 | }, 8 | "Base": { 9 | "longName": "base", 10 | "shortName": "b" 11 | }, 12 | "Namespace": { 13 | "longName": "namespace", 14 | "shortName": "na" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-FSharp/MainForm.jeto.fs: -------------------------------------------------------------------------------- 1 | #if (UseJeto) 2 | namespace EtoApp._1 3 | 4 | open System 5 | open Eto.Forms 6 | open Eto.Drawing 7 | open Eto.Serialization.Json; 8 | 9 | type MainForm() as this = 10 | inherit Form() 11 | 12 | do 13 | JsonReader.Load(this) 14 | 15 | #if IsForm 16 | member this.HandleClickMe(sender:obj, e:EventArgs) = 17 | MessageBox.Show("Hello!") |> ignore 18 | 19 | member this.HandleAbout(sender:obj, e:EventArgs) = 20 | let dlg = new AboutDialog() 21 | dlg.ShowDialog(this) |> ignore 22 | 23 | member this.HandleQuit(sender:obj, e:EventArgs) = 24 | Application.Instance.Quit() 25 | #endif 26 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-FSharp/MainForm.xeto.fs: -------------------------------------------------------------------------------- 1 | #if (UseXeto) 2 | namespace EtoApp._1 3 | 4 | open System 5 | open Eto.Forms 6 | open Eto.Drawing 7 | open Eto.Serialization.Xaml; 8 | 9 | type MainForm() as this = 10 | inherit Form() 11 | 12 | do 13 | XamlReader.Load(this) 14 | 15 | #if IsForm 16 | member this.HandleClickMe(sender:obj, e:EventArgs) = 17 | MessageBox.Show("Hello!") |> ignore 18 | 19 | member this.HandleAbout(sender:obj, e:EventArgs) = 20 | let dlg = new AboutDialog() 21 | dlg.ShowDialog(this) |> ignore 22 | 23 | member this.HandleQuit(sender:obj, e:EventArgs) = 24 | Application.Instance.Quit() 25 | #endif 26 | #endif -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-VisualBasic/.template.config/dotnetcli.host.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/dotnetcli.host", 3 | "symbolInfo": { 4 | "Mode": { 5 | "longName": "mode", 6 | "shortName": "m" 7 | }, 8 | "Base": { 9 | "longName": "base", 10 | "shortName": "b" 11 | }, 12 | "Namespace": { 13 | "longName": "namespace", 14 | "shortName": "na" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-VisualBasic/MainForm.jeto.vb: -------------------------------------------------------------------------------- 1 | #If (UseJeto) 2 | Imports Eto.Forms 3 | Imports Eto.Drawing 4 | Imports Eto.Serialization.Json 5 | 6 | Public Class MainForm 7 | Inherits Form 8 | 9 | Public Sub New() 10 | JsonReader.Load(Me) 11 | End Sub 12 | #If IsForm 13 | 14 | Protected Sub HandleClickMe(sender As Object, e As EventArgs) 15 | MessageBox.Show("I was clicked!") 16 | End Sub 17 | 18 | Protected Sub HandleAbout(sender As Object, e As EventArgs) 19 | Dim dlg As New AboutDialog() 20 | dlg.ShowDialog(Me) 21 | End Sub 22 | 23 | Protected Sub HandleQuit(sender As Object, e As EventArgs) 24 | Application.Instance.Quit() 25 | End Sub 26 | #End If 27 | 28 | End Class 29 | #End If -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/File-VisualBasic/MainForm.xeto.vb: -------------------------------------------------------------------------------- 1 | #If (UseXeto) 2 | Imports Eto.Forms 3 | Imports Eto.Drawing 4 | Imports Eto.Serialization.Xaml 5 | 6 | Public Class MainForm 7 | Inherits Form 8 | 9 | Public Sub New() 10 | XamlReader.Load(Me) 11 | End Sub 12 | #If IsForm 13 | 14 | Protected Sub HandleClickMe(sender As Object, e As EventArgs) 15 | MessageBox.Show("I was clicked!") 16 | End Sub 17 | 18 | Protected Sub HandleAbout(sender As Object, e As EventArgs) 19 | Dim dlg As New AboutDialog() 20 | dlg.ShowDialog(Me) 21 | End Sub 22 | 23 | Protected Sub HandleQuit(sender As Object, e As EventArgs) 24 | Application.Instance.Quit() 25 | End Sub 26 | #End If 27 | 28 | End Class 29 | #End If -------------------------------------------------------------------------------- /src/Eto.Forms.Templates/content/NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Eto.Gtk/Drawing/BrushHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp.Drawing 2 | { 3 | /// 4 | /// Handler for the 5 | /// 6 | /// (c) 2012-2014 by Curtis Wensley 7 | /// See LICENSE for full terms 8 | public abstract class BrushHandler : Brush.IHandler 9 | { 10 | public abstract void Apply(object control, Cairo.Context context); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /src/Eto.Gtk/Drawing/IconFrameHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp.Drawing 2 | { 3 | public class IconFrameHandler : IconFrame.IHandler 4 | { 5 | public object Create(IconFrame frame, Stream stream) 6 | { 7 | return new Bitmap(stream); 8 | } 9 | public object Create(IconFrame frame, Func load) 10 | { 11 | return new Bitmap(load()); 12 | } 13 | public object Create(IconFrame frame, Bitmap bitmap) 14 | { 15 | return bitmap; 16 | } 17 | public Bitmap GetBitmap(IconFrame frame) 18 | { 19 | return (Bitmap)frame.ControlObject; 20 | } 21 | public Size GetPixelSize(IconFrame frame) 22 | { 23 | return GetBitmap(frame).Size; 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/Eto.Gtk/Drawing/SystemIconsHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp.Drawing; 2 | 3 | public class SystemIconsHandler : SystemIcons.IHandler 4 | { 5 | #region ISystemIcons Members 6 | 7 | public Icon GetFileIcon(string fileName, SystemIconSize size) 8 | { 9 | return null; 10 | } 11 | 12 | public Icon Get(SystemIconType type, SystemIconSize size) 13 | { 14 | return null; 15 | } 16 | 17 | #endregion 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/Eto.Gtk/Forms/Controls/PanelHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp.Forms.Controls 2 | { 3 | public class PanelHandler : GtkPanel, Panel.IHandler 4 | { 5 | #if GTK3 6 | public PanelHandler() 7 | { 8 | Control = new EtoEventBox { Handler = this }; 9 | } 10 | 11 | protected override void SetContainerContent(Gtk.Widget content) 12 | { 13 | Control.Add(content); 14 | } 15 | #else 16 | readonly Gtk.VBox box; 17 | 18 | public PanelHandler() 19 | { 20 | Control = new Gtk.EventBox(); 21 | box = new Gtk.Box(Gtk.Orientation.Vertical, 0); 22 | Control.Add(box); 23 | } 24 | 25 | protected override void SetContainerContent(Gtk.Widget content) 26 | { 27 | box.Add(content); 28 | } 29 | #endif 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Eto.Gtk/Forms/Controls/SearchBoxHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp.Forms.Controls 2 | { 3 | #if GTKCORE 4 | public class SearchBoxHandler : TextBoxHandler, SearchBox.IHandler 5 | { 6 | public SearchBoxHandler() 7 | { 8 | Control = new Gtk.SearchEntry(); 9 | Control.WidthRequest = 100; 10 | } 11 | } 12 | #else 13 | public class SearchBoxHandler : TextBoxHandler, SearchBox.IHandler 14 | { 15 | } 16 | #endif 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Eto.Gtk/GtkExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.GtkSharp 2 | { 3 | static class GtkExtensions 4 | { 5 | public static void RemoveAllChildren(this Gtk.Container widget) 6 | { 7 | foreach (Gtk.Widget w in widget.Children) 8 | { 9 | widget.Remove(w); 10 | } 11 | } 12 | 13 | public static Point GetScreenPosition(this Gtk.Widget widget) 14 | { 15 | var parent = widget.ParentWindow; 16 | widget.GetWindow().GetOrigin(out var x, out var y); 17 | 18 | if (parent != null) 19 | { 20 | parent.GetOrigin(out var wx, out var wy); 21 | var extents = parent.FrameExtents; 22 | //x += (wx + extents.X) / parent.ScaleFactor; 23 | //y += (wy + extents.Y) / parent.ScaleFactor; 24 | } 25 | 26 | return new Point(x, y); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Eto.Mac/Drawing/BrushHandler.cs: -------------------------------------------------------------------------------- 1 | #if OSX 2 | 3 | namespace Eto.Mac.Drawing 4 | #elif IOS 5 | 6 | namespace Eto.iOS.Drawing 7 | #endif 8 | { 9 | /// 10 | /// Handler for 11 | /// 12 | /// (c) 2012-2014 by Curtis Wensley 13 | /// See LICENSE for full terms 14 | public abstract class BrushHandler : Brush.IHandler 15 | { 16 | public abstract void Draw(object control, GraphicsHandler graphics, bool stroke, FillMode fillMode, bool clip); 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/Actions/MacCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms.Actions 2 | { 3 | public class MacCommand : Command 4 | { 5 | public Selector Selector { get; private set; } 6 | 7 | public MacCommand(string id, string text, string selector) 8 | { 9 | ID = id; 10 | MenuText = ToolBarText = text; 11 | Selector = new Selector(selector); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/ClipboardHandler.cs: -------------------------------------------------------------------------------- 1 | using Eto.Mac.Drawing; 2 | namespace Eto.Mac.Forms 3 | { 4 | public class ClipboardHandler : DataObjectHandler, Clipboard.IHandler 5 | { 6 | protected override NSPasteboard CreateControl() => NSPasteboard.GeneralPasteboard; 7 | 8 | protected override bool DisposeControl => false; 9 | 10 | /* 11 | public DataObject DataObject 12 | { 13 | get 14 | { 15 | return new DataObject(new DataObjectHandler(Control.MutableCopy() as NSPasteboard)); 16 | } 17 | set 18 | { 19 | Control.ClearContents(); 20 | var handler = value?.Handler as IDataObjectHandler; 21 | handler?.Apply(Control); 22 | } 23 | } 24 | */ 25 | 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/Controls/LabelHandler.cs: -------------------------------------------------------------------------------- 1 | using Eto.Mac.Drawing; 2 | namespace Eto.Mac.Forms.Controls 3 | { 4 | public class LabelHandler : MacLabel, Label.IHandler 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/Controls/PanelHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms.Controls 2 | { 3 | public class PanelHandler : MacPanel, Panel.IHandler 4 | { 5 | public class EtoPanelView : MacPanelView 6 | { 7 | public EtoPanelView() 8 | { 9 | } 10 | public EtoPanelView(NativeHandle handle) : base(handle) 11 | { 12 | } 13 | } 14 | 15 | protected override NSView CreateControl() => new EtoPanelView(); 16 | 17 | public override NSView ContainerControl => Control; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/MacCommon.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms 2 | { 3 | public static class MacCommon 4 | { 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/ScreensHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms 2 | { 3 | public class ScreensHandler : Screen.IScreensHandler 4 | { 5 | public IEnumerable Screens 6 | { 7 | get 8 | { 9 | foreach (var screen in NSScreen.Screens) 10 | { 11 | yield return new Screen(new ScreenHandler(screen)); 12 | } 13 | } 14 | } 15 | 16 | public Screen PrimaryScreen 17 | { 18 | get 19 | { 20 | var screen = NSScreen.Screens[0]; 21 | return new Screen(new ScreenHandler(screen)); 22 | } 23 | } 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/ToolBar/ButtonToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms.ToolBar 2 | { 3 | 4 | public class ButtonToolItemHandler : ToolItemHandler, ButtonToolItem.IHandler 5 | { 6 | public override void InvokeButton() 7 | { 8 | Widget.OnClick(EventArgs.Empty); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/ToolBar/CheckToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms.ToolBar 2 | { 3 | public class CheckToolItemHandler : ToolItemHandler, CheckToolItem.IHandler 4 | { 5 | public bool Checked 6 | { 7 | get { return Button.State == NSCellStateValue.On; } 8 | set { 9 | Button.State = value ? NSCellStateValue.On : NSCellStateValue.Off; 10 | } 11 | } 12 | 13 | protected override void Initialize() 14 | { 15 | base.Initialize(); 16 | Button.SetButtonType(NSButtonType.PushOnPushOff); 17 | } 18 | 19 | public override void InvokeButton() 20 | { 21 | Widget.OnClick(EventArgs.Empty); 22 | Widget.OnCheckedChanged(EventArgs.Empty); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/WindowHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac.Forms 2 | { 3 | public class WindowHandler : Window.IWindowHandler 4 | { 5 | public Window FromPoint(PointF point) 6 | { 7 | var mainFrame = NSScreen.Screens[0].Frame; 8 | var nspoint = new CGPoint(point.X, mainFrame.Height - point.Y); 9 | var windowNumber = NSWindow.WindowNumberAtPoint(nspoint, 0); 10 | foreach (var window in Application.Instance.Windows) 11 | { 12 | if (!window.IsDisposed && window.Handler is IMacWindow handler && handler.Control.WindowNumber == windowNumber) 13 | { 14 | return window; 15 | } 16 | } 17 | return null; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Eto.Mac/Forms/iosCompatibility.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Eto.Mac.Forms 3 | { 4 | public static class IosCompatibility 5 | { 6 | /// 7 | /// Compatibility with ios 8 | /// 9 | public static void SetNeedsDisplay(this NSView view) 10 | { 11 | view.NeedsDisplay = true; 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/Eto.Mac/InvokeHelper.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Mac 2 | { 3 | class InvokeHelper 4 | { 5 | public Delegate Delegate { get; set; } 6 | public object[] Args { get; set; } 7 | public object Return { get; private set; } 8 | 9 | public void Action() 10 | { 11 | Return = Delegate.DynamicInvoke(Args); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/Eto.Mac/build/CodeSign.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.cs.allow-jit 6 | 7 | com.apple.security.cs.allow-unsigned-executable-memory 8 | 9 | com.apple.security.cs.allow-dyld-environment-variables 10 | 11 | com.apple.security.cs.disable-library-validation 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Eto.Mac/build/Dmg.background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Mac/build/Dmg.background.png -------------------------------------------------------------------------------- /src/Eto.Mac/build/Icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Mac/build/Icon.icns -------------------------------------------------------------------------------- /src/Eto.Mac/build/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | com.yourcompany.myapp 7 | NSHumanReadableCopyright 8 | Copyright © 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | CFBundleDevelopmentRegion 14 | en 15 | CFBundleIconFile 16 | Icon.icns 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Eto.Mac/build/Launcher64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Mac/build/Launcher64 -------------------------------------------------------------------------------- /src/Eto.Mac/build/RunConfiguration.Default.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Program 5 | $(_MacRunConfigurationStartPath) 6 | false 7 | 8 | -------------------------------------------------------------------------------- /src/Eto.Mac/build/RunConfiguration.Mac.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Program 5 | $(_MacRunConfigurationStartPath) 6 | false 7 | 8 | -------------------------------------------------------------------------------- /src/Eto.Serialization.Json/DefaultNamespaceManager.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Serialization.Json 2 | { 3 | public class DefaultNamespaceManager : NamespaceManager 4 | { 5 | public DefaultNamespaceManager () 6 | { 7 | var asm = typeof(Eto.Forms.Application).Assembly; 8 | DefaultNamespace = new NamespaceInfo("Eto.Forms", asm); 9 | Namespaces.Add ("drawing", new NamespaceInfo("Eto.Drawing", asm)); 10 | } 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/Eto.Serialization.Json/Eto.Serialization.Json.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | %(Filename) 11 | 12 | 13 | %(Filename) 14 | 15 | 16 | %(Filename) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Eto.Serialization.Json/EventValueProvider.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json.Serialization; 2 | namespace Eto.Serialization.Json 3 | { 4 | class EventValueProvider : IValueProvider 5 | { 6 | public EventInfo EventInfo { get; set; } 7 | 8 | public void SetValue (object target, object value) 9 | { 10 | if (value != null) 11 | EventInfo.AddEventHandler (target, (Delegate)value); 12 | } 13 | 14 | public object GetValue (object target) 15 | { 16 | return null; 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/Eto.Serialization.Xaml/Eto.Serialization.Xaml.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | %(Filename) 11 | 12 | 13 | %(Filename) 14 | 15 | 16 | %(Filename) 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Eto.Serialization.Xaml/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | #if PORTABLE 2 | using Portable.Xaml; 3 | using Portable.Xaml.Markup; 4 | #else 5 | using System.Xaml; 6 | using System.Windows.Markup; 7 | #endif 8 | 9 | //#if !PCL 10 | [assembly: XmlnsDefinition(Eto.Serialization.Xaml.EtoXamlSchemaContext.EtoFormsNamespace, "Eto.Serialization.Xaml.Extensions")] 11 | [assembly: XmlnsDefinition(Eto.Serialization.Xaml.EtoXamlSchemaContext.EtoFormsNamespace, "Eto.Forms", AssemblyName="Eto")] 12 | [assembly: XmlnsDefinition(Eto.Serialization.Xaml.EtoXamlSchemaContext.EtoFormsNamespace, "Eto", AssemblyName="Eto")] 13 | [assembly: XmlnsPrefix(Eto.Serialization.Xaml.EtoXamlSchemaContext.EtoFormsNamespace, "eto")] 14 | //#endif 15 | -------------------------------------------------------------------------------- /src/Eto.WinForms/CustomControls/CalendarPicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.WinForms/CustomControls/CalendarPicker.png -------------------------------------------------------------------------------- /src/Eto.WinForms/Drawing/BrushHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Drawing 2 | { 3 | /// 4 | /// Base handler for , to get the platform-specific brush 5 | /// 6 | /// (c) 2012-2014 by Curtis Wensley 7 | /// See LICENSE for full terms 8 | public abstract class BrushHandler 9 | { 10 | public abstract sd.Brush GetBrush(Brush brush, RectangleF rect); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/Controls/ControlHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms.Controls 2 | { 3 | public class ControlHandler : WindowsControl 4 | { 5 | public ControlHandler() 6 | { 7 | Control = new swf.Control(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/Controls/PanelHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms.Controls 2 | { 3 | public class PanelHandler : WindowsPanel, Panel.IHandler 4 | { 5 | public class EtoPanel: EtoPanel 6 | { 7 | public EtoPanel(PanelHandler handler) : base(handler) { } 8 | } 9 | public PanelHandler() 10 | { 11 | Control = new EtoPanel(this); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/Extensions.cs: -------------------------------------------------------------------------------- 1 | using Eto.WinForms.Drawing; 2 | 3 | namespace Eto.WinForms.Forms 4 | { 5 | public static class Extensions 6 | { 7 | public static void AddImage (this System.Windows.Forms.ImageList list, Image image, string key, int? size = null) 8 | { 9 | var imageHandler = image.Handler as IWindowsImageSource; 10 | if (imageHandler != null) { 11 | list.Images.Add (key, imageHandler.GetImageWithSize (size ?? list.ImageSize.Width)); 12 | return; 13 | } 14 | 15 | var sdimage = image.ControlObject as sd.Image; 16 | if (sdimage != null) { 17 | list.Images.Add (key, sdimage); 18 | return; 19 | } 20 | var icon = image.ControlObject as sd.Icon; 21 | if (icon != null) { 22 | list.Images.Add (key, icon); 23 | return; 24 | } 25 | } 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/MouseHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class MouseHandler : Mouse.IHandler 4 | { 5 | public Widget Widget { get; set; } 6 | 7 | public void Initialize() 8 | { 9 | } 10 | 11 | public void SetCursor(Cursor cursor) => swf.Cursor.Current = cursor.ToSwf(); 12 | 13 | public Eto.Platform Platform { get; set; } 14 | 15 | public PointF Position 16 | { 17 | get { return swf.Cursor.Position.ToEto(); } 18 | set { swf.Cursor.Position = value.ToSDPoint(); } 19 | } 20 | 21 | public MouseButtons Buttons 22 | { 23 | get { return swf.Control.MouseButtons.ToEto(); } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/NativeFormHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class NativeFormHandler : WindowHandler, Form.IHandler 4 | { 5 | public override bool IsAttached => true; 6 | 7 | public bool ShowActivated { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } 8 | public bool CanFocus { get => Control.CanFocus; set => throw new NotImplementedException(); } 9 | 10 | public NativeFormHandler(swf.Form form) 11 | { 12 | Control = form; 13 | } 14 | public void Show() => Control.Show(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/OpenFileDialogHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class OpenFileDialogHandler : WindowsFileDialog, OpenFileDialog.IHandler 4 | { 5 | public OpenFileDialogHandler() 6 | { 7 | Control = new swf.OpenFileDialog(); 8 | } 9 | 10 | public bool MultiSelect 11 | { 12 | get { return Control.Multiselect; } 13 | set { Control.Multiselect = value; } 14 | } 15 | 16 | public IEnumerable Filenames 17 | { 18 | get { return Control.FileNames; } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/OpenWithDialogHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class OpenWithDialogHandler : WidgetHandler, OpenWithDialog.IHandler 4 | { 5 | public string FilePath { get; set; } 6 | 7 | public DialogResult ShowDialog(Window parent) 8 | { 9 | var args = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "shell32.dll"); 10 | Process.Start("rundll32.exe", args + ",OpenAs_RunDLL " + FilePath); 11 | 12 | return DialogResult.Ok; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/SaveFileDialogHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class SaveFileDialogHandler : WindowsFileDialog, SaveFileDialog.IHandler 4 | { 5 | 6 | public SaveFileDialogHandler() 7 | { 8 | Control = new swf.SaveFileDialog(); 9 | } 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/ScreensHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms 2 | { 3 | public class ScreensHandler : Screen.IScreensHandler 4 | { 5 | public void Initialize () 6 | { 7 | } 8 | 9 | public Widget Widget { get; set; } 10 | 11 | public Eto.Platform Platform { get; set; } 12 | 13 | public IEnumerable Screens 14 | { 15 | get 16 | { 17 | foreach (var screen in swf.Screen.AllScreens) 18 | { 19 | yield return new Screen(new ScreenHandler(screen)); 20 | } 21 | } 22 | } 23 | 24 | public Screen PrimaryScreen 25 | { 26 | get 27 | { 28 | var screen = swf.Screen.PrimaryScreen; 29 | return new Screen(new ScreenHandler (screen)); 30 | } 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Forms/ToolBar/ButtonToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinForms.Forms.ToolBar 2 | { 3 | public class ButtonToolItemHandler : ToolItemHandler, ButtonToolItem.IHandler 4 | { 5 | public ButtonToolItemHandler() 6 | { 7 | Control = new swf.ToolStripButton(); 8 | Control.Tag = this; 9 | Control.Click += control_Click; 10 | } 11 | 12 | void control_Click(object sender, EventArgs e) 13 | { 14 | Widget.OnClick(EventArgs.Empty); 15 | } 16 | 17 | public override bool Enabled 18 | { 19 | get { return Control.Enabled; } 20 | set { Control.Enabled = value; } 21 | } 22 | 23 | public override void CreateControl(ToolBarHandler handler, int index) 24 | { 25 | handler.Control.Items.Insert(index, Control); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Eto.WinForms/Resources/Clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.WinForms/Resources/Clear.png -------------------------------------------------------------------------------- /src/Eto.WinForms/Resources/Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.WinForms/Resources/Search.png -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/Controls/BindingConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinUI.Forms.Controls; 2 | 3 | public class BindingConverter : IValueConverter 4 | { 5 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 6 | { 7 | if (parameter is IIndirectBinding binding) 8 | { 9 | return binding.GetValue(value); 10 | } 11 | return value; 12 | } 13 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 14 | { 15 | throw new NotSupportedException(); 16 | } 17 | } 18 | 19 | public class StringBindingConverter : BindingConverter 20 | { 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/Controls/BindingTemplates.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/Controls/EtoBindingTextBlock.xaml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/Controls/StepperHandler.cs: -------------------------------------------------------------------------------- 1 | using Eto.WinUI.CustomControls; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Eto.WinUI.Forms.Controls; 9 | 10 | public class StepperHandler : WinUIControl, Stepper.IHandler 11 | { 12 | StepperValidDirections _validDirection = StepperValidDirections.Both; 13 | public StepperValidDirections ValidDirection 14 | { 15 | get => _validDirection; 16 | set 17 | { 18 | _validDirection = value; 19 | Control.UpEnabled = value.HasFlag(StepperValidDirections.Up); 20 | Control.DownEnabled = value.HasFlag(StepperValidDirections.Down); 21 | } 22 | } 23 | 24 | protected override SpinButton CreateControl() => new(); 25 | } 26 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/FormHandler.cs: -------------------------------------------------------------------------------- 1 | using mui = Microsoft.UI.Xaml; 2 | 3 | namespace Eto.WinUI.Forms; 4 | 5 | public class FormHandler : WinUIWindow, Form.IHandler 6 | { 7 | protected override mui.Window CreateControl() => new mui.Window(); 8 | 9 | public bool ShowActivated { get; set; } 10 | public bool CanFocus { get; set; } 11 | 12 | public void Show() 13 | { 14 | //Control.CoreWindow.Di = Windows.UI.Core.CoreWindowActivationMode.ActivatedNotForeground; 15 | Control.Activate(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/WinUIContainer.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinUI.Forms; 2 | 3 | public abstract class WinUIContainer : WinUIFrameworkElement, Container.IHandler 4 | where TControl : class 5 | where TWidget : Container 6 | where TCallback : Container.ICallback 7 | { 8 | public Size ClientSize { get; set; } 9 | public bool RecurseToChildren => true; 10 | public override IEnumerable VisualControls => Widget.Controls; 11 | } 12 | -------------------------------------------------------------------------------- /src/Eto.WinUI/Forms/WinUILayout.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.WinUI.Forms; 2 | 3 | public abstract class WinUILayout : WinUIContainer, Layout.IHandler 4 | where TControl : mux.UIElement 5 | where TWidget : Layout 6 | where TCallback : Layout.ICallback 7 | { 8 | 9 | public virtual void Update() 10 | { 11 | Control.UpdateLayout(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Drawing/FontsHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Drawing 2 | { 3 | public class FontsHandler : WidgetHandler, Fonts.IHandler 4 | { 5 | HashSet availableFontFamilies; 6 | 7 | public IEnumerable AvailableFontFamilies 8 | { 9 | get { return swm.Fonts.SystemFontFamilies.Select (r => new FontFamily (new FontFamilyHandler (r))); } 10 | } 11 | 12 | public bool FontFamilyAvailable (string fontFamily) 13 | { 14 | if (availableFontFamilies == null) { 15 | availableFontFamilies = new HashSet (StringComparer.InvariantCultureIgnoreCase); 16 | foreach (var family in swm.Fonts.SystemFontFamilies) { 17 | availableFontFamilies.Add (family.Source); 18 | } 19 | } 20 | return availableFontFamilies.Contains (fontFamily); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Drawing/IconFrameHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Drawing 2 | { 3 | 4 | public class IconFrameHandler : IconFrame.IHandler 5 | { 6 | public object Create(IconFrame frame, Bitmap bitmap) 7 | { 8 | return bitmap; 9 | } 10 | 11 | public object Create(IconFrame frame, Func load) 12 | { 13 | return new Bitmap(load()); 14 | } 15 | 16 | public object Create(IconFrame frame, Stream stream) 17 | { 18 | return new Bitmap(stream); 19 | } 20 | 21 | public Bitmap GetBitmap(IconFrame frame) 22 | { 23 | return (Bitmap)frame.ControlObject; 24 | } 25 | 26 | public Size GetPixelSize(IconFrame frame) 27 | { 28 | return GetBitmap(frame).Size; 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/Controls/PanelHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms.Controls 2 | { 3 | public class PanelHandler : WpfPanel, Panel.IHandler 4 | { 5 | public PanelHandler () 6 | { 7 | Control = new EtoBorder 8 | { 9 | Handler = this, 10 | Focusable = false, 11 | Background = swm.Brushes.Transparent // to get mouse events 12 | }; 13 | } 14 | 15 | public override Color BackgroundColor 16 | { 17 | get { return Control.Background.ToEtoColor(); } 18 | set { Control.Background = value.ToWpfBrush(Control.Background); } 19 | } 20 | 21 | public override void SetContainerContent(sw.FrameworkElement content) 22 | { 23 | Control.Child = content; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/EtoBorder.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms 2 | { 3 | /// 4 | /// Shared class to use as a container that properly handles measurement for Eto sizing rules 5 | /// 6 | /// 7 | /// This should only be used if it is set to the . 8 | /// 9 | public class EtoBorder : swc.Border 10 | { 11 | public IWpfFrameworkElement Handler { get; set; } 12 | 13 | protected override sw.Size MeasureOverride(sw.Size constraint) 14 | { 15 | return Handler?.MeasureOverride(constraint, base.MeasureOverride) ?? base.MeasureOverride(constraint); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/Menu/ButtonMenuItemHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms.Menu 2 | { 3 | public class ButtonMenuItemHandler : MenuItemHandler, ButtonMenuItem.IHandler 4 | { 5 | public ButtonMenuItemHandler () 6 | { 7 | Control = new swc.MenuItem(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/NativeFormHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms 2 | { 3 | public class NativeFormHandler : WpfWindow, Form.IHandler 4 | { 5 | 6 | public NativeFormHandler(sw.Window window) 7 | { 8 | Control = window; 9 | } 10 | 11 | protected override bool IsAttached => true; 12 | 13 | public bool ShowActivated { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } 14 | public bool CanFocus { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } 15 | 16 | public void Show() 17 | { 18 | throw new NotImplementedException(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/OpenFileDialogHandler.cs: -------------------------------------------------------------------------------- 1 | using mw = Microsoft.Win32; 2 | 3 | namespace Eto.Wpf.Forms 4 | { 5 | public class OpenFileDialogHandler : WpfFileDialog, OpenFileDialog.IHandler 6 | { 7 | public OpenFileDialogHandler () 8 | { 9 | Control = new mw.OpenFileDialog (); 10 | } 11 | 12 | public bool MultiSelect 13 | { 14 | get { return Control.Multiselect; } 15 | set { Control.Multiselect = value; } 16 | } 17 | 18 | public IEnumerable Filenames 19 | { 20 | get { return Control.FileNames; } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/OpenWithDialogHandler.cs: -------------------------------------------------------------------------------- 1 | using Eto.Wpf.Drawing; 2 | 3 | namespace Eto.Wpf.Forms 4 | { 5 | public class OpenWithDialogHandler : WidgetHandler, OpenWithDialog.IHandler 6 | { 7 | public string FilePath { get; set; } 8 | 9 | public DialogResult ShowDialog(Window parent) 10 | { 11 | var args = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "shell32.dll"); 12 | Process.Start("rundll32.exe", args + ",OpenAs_RunDLL " + FilePath); 13 | 14 | return DialogResult.Ok; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/SaveFileDialogHandler.cs: -------------------------------------------------------------------------------- 1 | using mw = Microsoft.Win32; 2 | 3 | namespace Eto.Wpf.Forms 4 | { 5 | public class SaveFileDialogHandler : WpfFileDialog, SaveFileDialog.IHandler 6 | { 7 | public SaveFileDialogHandler () 8 | { 9 | Control = new mw.SaveFileDialog (); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/ScreensHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms 2 | { 3 | public class ScreensHandler : Screen.IScreensHandler 4 | { 5 | public void Initialize () 6 | { 7 | } 8 | 9 | public Widget Widget { get; set; } 10 | 11 | public Eto.Platform Platform { get; set; } 12 | 13 | public IEnumerable Screens 14 | { 15 | get 16 | { 17 | foreach (var screen in swf.Screen.AllScreens) 18 | { 19 | yield return new Screen(new ScreenHandler(screen)); 20 | } 21 | } 22 | } 23 | 24 | public Screen PrimaryScreen 25 | { 26 | get 27 | { 28 | var screen = swf.Screen.PrimaryScreen; 29 | return new Screen(new ScreenHandler(screen)); 30 | } 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/ToolBar/ButtonToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms.ToolBar 2 | { 3 | public class ButtonToolItemHandler : ToolItemHandler, ButtonToolItem.IHandler 4 | { 5 | public ButtonToolItemHandler () 6 | { 7 | Control = new swc.Button(); 8 | Control.Click += Control_Click; 9 | } 10 | 11 | protected override void Initialize() 12 | { 13 | base.Initialize(); 14 | Control.Content = CreateContent(); 15 | } 16 | 17 | private void Control_Click(object sender, sw.RoutedEventArgs e) 18 | { 19 | Widget.OnClick(EventArgs.Empty); 20 | } 21 | 22 | public override string ToolTip 23 | { 24 | get { return Control.ToolTip as string; } 25 | set { Control.ToolTip = value; } 26 | } 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/WindowHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms 2 | { 3 | 4 | public class WindowHandler : Window.IWindowHandler 5 | { 6 | internal static readonly object MovableByWindowBackground_Key = new object(); 7 | 8 | public Window FromPoint(PointF point) 9 | { 10 | var screenPoint = point.LogicalToScreen(); 11 | var windowHandle = Win32.WindowFromPoint(new Win32.POINT(screenPoint.X, screenPoint.Y)); 12 | if (windowHandle == IntPtr.Zero) 13 | return null; 14 | windowHandle = Win32.GetAncestor(windowHandle, Win32.GA.GA_ROOT); 15 | 16 | foreach (var window in Application.Instance.Windows) 17 | { 18 | if (window.NativeHandle == windowHandle) 19 | { 20 | return window; 21 | } 22 | } 23 | return null; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/WpfCommonDialog.cs: -------------------------------------------------------------------------------- 1 | using mw = Microsoft.Win32; 2 | 3 | namespace Eto.Wpf.Forms 4 | { 5 | public abstract class WpfCommonDialog : WidgetHandler, CommonDialog.IHandler 6 | where TControl : mw.CommonDialog 7 | where TWidget : CommonDialog 8 | { 9 | public virtual DialogResult ShowDialog (Window parent) 10 | { 11 | bool? result; 12 | if (parent != null) { 13 | var owner = parent.ControlObject as sw.Window; 14 | result = Control.ShowDialog (owner); 15 | } 16 | else { 17 | result = Control.ShowDialog (); 18 | } 19 | WpfFrameworkElementHelper.ShouldCaptureMouse = false; 20 | return result != null && result.Value ? DialogResult.Ok : DialogResult.Cancel; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Forms/WpfLayout.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Wpf.Forms 2 | { 3 | public abstract class WpfLayout : WpfContainer, Layout.IHandler 4 | where TControl : sw.FrameworkElement 5 | where TWidget : Layout 6 | where TCallback : Layout.ICallback 7 | { 8 | 9 | public virtual void Update() 10 | { 11 | Control.UpdateLayout(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo ( 4 | ResourceDictionaryLocation.SourceAssembly, 5 | ResourceDictionaryLocation.SourceAssembly 6 | )] 7 | -------------------------------------------------------------------------------- /src/Eto.Wpf/Properties/FontDialogResources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/src/Eto.Wpf/Properties/FontDialogResources.resources -------------------------------------------------------------------------------- /src/Eto.Wpf/XPThemes.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | Windows Forms Common Control manifest 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Eto.Wpf/themes/controls/XceedColorDialog.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /src/Eto.iOS/EtoAppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | using Eto.iOS.Forms; 4 | namespace Eto.iOS 5 | { 6 | [Foundation.Register("EtoAppDelegate")] 7 | public class EtoAppDelegate : UIApplicationDelegate 8 | { 9 | public EtoAppDelegate() 10 | { 11 | } 12 | 13 | public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) 14 | { 15 | ApplicationHandler.Instance.Initialize(this); 16 | return true; 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Controls/ComboBoxHandler.cs: -------------------------------------------------------------------------------- 1 | using SD = System.Drawing; 2 | using UIKit; 3 | using Foundation; 4 | namespace Eto.iOS.Forms.Controls 5 | { 6 | public class ComboBoxHandler : DropDownHandler, ComboBox.IHandler 7 | { 8 | public string Text 9 | { 10 | get; 11 | set; 12 | } 13 | 14 | public bool ReadOnly 15 | { 16 | get; 17 | set; 18 | } 19 | 20 | public bool AutoComplete 21 | { 22 | get; 23 | set; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Controls/GridColumnHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.iOS.Forms.Controls 2 | { 3 | public class GridColumnHandler : WidgetHandler, GridColumn.IHandler 4 | { 5 | public GridColumnHandler () 6 | { 7 | } 8 | 9 | public string HeaderText { 10 | get; 11 | set; 12 | } 13 | 14 | public bool Resizable { 15 | get; 16 | set; 17 | } 18 | 19 | public bool Sortable { 20 | get; 21 | set; 22 | } 23 | 24 | public bool AutoSize { 25 | get; 26 | set; 27 | } 28 | 29 | public int Width { 30 | get; 31 | set; 32 | } 33 | 34 | public Cell DataCell { 35 | get; 36 | set; 37 | } 38 | 39 | public bool Editable { 40 | get; 41 | set; 42 | } 43 | 44 | public bool Visible { 45 | get; 46 | set; 47 | } 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Controls/ImageViewHandler.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | using Eto.iOS.Drawing; 3 | 4 | namespace Eto.iOS.Forms.Controls 5 | { 6 | public class ImageViewHandler : IosView, ImageView.IHandler 7 | { 8 | Image image; 9 | 10 | public ImageViewHandler () 11 | { 12 | Control = new UIImageView(); 13 | Control.ContentMode = UIViewContentMode.ScaleAspectFit; 14 | } 15 | 16 | public Eto.Drawing.Image Image { 17 | get { return image; } 18 | set { 19 | image = value; 20 | Control.Image = value.ToUI (); 21 | } 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Controls/IosControl.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | using Eto.iOS.Drawing; 3 | using Foundation; 4 | 5 | namespace Eto.iOS.Forms.Controls 6 | { 7 | public class IosControl : IosView, Control.IHandler 8 | where TControl: UIControl 9 | where TWidget: Control 10 | where TCallback: Control.ICallback 11 | { 12 | public override bool Enabled 13 | { 14 | get { return base.Enabled; } 15 | set 16 | { 17 | base.Enabled = value; 18 | Control.Enabled = value; 19 | } 20 | } 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Controls/PanelHandler.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | using Eto.Mac.Forms; 3 | 4 | namespace Eto.iOS.Forms.Controls 5 | { 6 | public class PanelHandler : MacPanel, Panel.IHandler 7 | { 8 | public override UIView ContainerControl { get { return Control; } } 9 | 10 | protected override void Initialize () 11 | { 12 | base.Initialize (); 13 | Control = new UIView(); 14 | Control.BackgroundColor = UIColor.White; 15 | } 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/IosLayout.cs: -------------------------------------------------------------------------------- 1 | using SD = System.Drawing; 2 | using Foundation; 3 | using UIKit; 4 | using Eto.Mac.Forms; 5 | 6 | namespace Eto.iOS.Forms 7 | { 8 | public abstract class IosLayout : MacContainer, Layout.IHandler 9 | where TControl: UIView 10 | where TWidget: Layout 11 | where TCallback: Layout.ICallback 12 | { 13 | public override UIView ContainerControl { get { return Control; } } 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/MacCompatibility.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | using sd = System.Drawing; 3 | 4 | namespace Eto.Mac.Forms 5 | { 6 | public static class MacCompatibility 7 | { 8 | public static void SetFrameSize(this UIView view, CoreGraphics.CGSize size) 9 | { 10 | var frame = view.Frame; 11 | frame.Size = size; 12 | view.Frame = frame; 13 | } 14 | 15 | public static void SetFrameOrigin(this UIView view, CoreGraphics.CGPoint location) 16 | { 17 | var frame = view.Frame; 18 | frame.Location = location; 19 | view.Frame = frame; 20 | } 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/RotatableViewController.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | using ObjCRuntime; 3 | 4 | namespace Eto.iOS.Forms 5 | { 6 | class RotatableViewController : UIViewController 7 | { 8 | 9 | public RotatableViewController() 10 | { 11 | if (this.AutomaticallyAdjustsScrollViewInsetsIsSupported()) 12 | AutomaticallyAdjustsScrollViewInsets = true; 13 | if (this.ExtendLayoutIncludesOpaqueBarsIsSupported()) 14 | ExtendedLayoutIncludesOpaqueBars = true; 15 | } 16 | 17 | public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 18 | { 19 | return UIInterfaceOrientationMask.All; 20 | } 21 | 22 | public override bool ShouldAutorotateToInterfaceOrientation(UIInterfaceOrientation toInterfaceOrientation) 23 | { 24 | return true; 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/ScreensHandler.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | namespace Eto.iOS.Forms 3 | { 4 | public class ScreensHandler : Screen.IScreensHandler 5 | { 6 | public System.Collections.Generic.IEnumerable Screens 7 | { 8 | get { return UIScreen.Screens.Select(r => new Screen(new ScreenHandler(r))); } 9 | } 10 | 11 | public Screen PrimaryScreen 12 | { 13 | get { return new Screen(new ScreenHandler(UIScreen.MainScreen)); } 14 | } 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Toolbar/ButtonToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | using ObjCRuntime; 2 | using UIKit; 3 | using sd = System.Drawing; 4 | 5 | namespace Eto.iOS.Forms.Toolbar 6 | { 7 | 8 | public class ButtonToolItemHandler : ToolItemHandler, ButtonToolItem.IHandler 9 | { 10 | public override void InvokeButton() 11 | { 12 | Widget.OnClick(EventArgs.Empty); 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/Eto.iOS/Forms/Toolbar/RadioToolItemHandler.cs: -------------------------------------------------------------------------------- 1 | using ObjCRuntime; 2 | using UIKit; 3 | using sd = System.Drawing; 4 | 5 | namespace Eto.iOS.Forms.Toolbar 6 | { 7 | 8 | public class RadioToolItemHandler : ToolItemHandler, RadioToolItem.IHandler 9 | { 10 | public bool Checked 11 | { 12 | get { return Button.Selected; } 13 | set 14 | { 15 | if (value != Button.Selected) 16 | { 17 | Button.Selected = value; 18 | Widget.OnCheckedChanged(EventArgs.Empty); 19 | } 20 | } 21 | } 22 | 23 | protected override void Initialize() 24 | { 25 | base.Initialize(); 26 | Selectable = true; 27 | } 28 | 29 | public override void InvokeButton() 30 | { 31 | Widget.OnClick(EventArgs.Empty); 32 | Checked = true; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Eto.iOS/InvokeHelper.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.iOS 2 | { 3 | class InvokeHelper 4 | { 5 | public Delegate Delegate { get; set; } 6 | public object[] Args { get; set; } 7 | public object Return { get; private set; } 8 | 9 | public void Action() 10 | { 11 | this.Return = Delegate.DynamicInvoke(Args); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/Eto.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly: AssemblyTitle("Eto.Forms - iOS Platform")] 4 | [assembly: AssemblyDescription("iOS Platform for the Eto.Forms UI Framework")] -------------------------------------------------------------------------------- /src/Eto/DisplayAttributeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace Eto; 4 | 5 | class BaseAttributeWrapper 6 | where T : Attribute 7 | { 8 | public static T Get(Type type) => type.GetTypeInfo().GetCustomAttribute(); 9 | 10 | public static T Get(PropertyDescriptor descriptor) => descriptor.Attributes.OfType().FirstOrDefault(); 11 | 12 | public static T Get(IPropertyDescriptor descriptor) => descriptor.GetCustomAttribute(); } 13 | 14 | class EditorAttributeWrapper : BaseAttributeWrapper { } 15 | 16 | class DisplayAttributeWrapper : BaseAttributeWrapper { } -------------------------------------------------------------------------------- /src/Eto/Drawing/FillMode.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Eto.Drawing; 3 | 4 | /// 5 | /// Mode for how a closed is filled 6 | /// 7 | /// (c) 2014 by Curtis Wensley 8 | /// See LICENSE for full terms 9 | public enum FillMode 10 | { 11 | /// 12 | /// Alternating / Even-Odd fill mode 13 | /// 14 | Alternate = 0, 15 | 16 | /// 17 | /// Winding fill mode 18 | /// 19 | Winding = 1, 20 | } -------------------------------------------------------------------------------- /src/Eto/Drawing/PenLineCap.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Eto.Drawing; 3 | 4 | /// 5 | /// Specifies the line cap for a 6 | /// 7 | /// (c) 2012-2014 by Curtis Wensley 8 | /// See LICENSE for full terms 9 | public enum PenLineCap 10 | { 11 | /// 12 | /// Lines have a square cap, that is the same size as the width of the pen 13 | /// 14 | Square, 15 | 16 | /// 17 | /// Lines are capped exactly at the ending points of the line 18 | /// 19 | Butt, 20 | 21 | /// 22 | /// Lines have a rounded cap, which is equal to the width of the pen 23 | /// 24 | Round 25 | } -------------------------------------------------------------------------------- /src/Eto/Drawing/PenLineJoin.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Eto.Drawing; 3 | 4 | /// 5 | /// Specifies how lines are joined for a 6 | /// 7 | /// (c) 2012-2014 by Curtis Wensley 8 | /// See LICENSE for full terms 9 | public enum PenLineJoin 10 | { 11 | /// 12 | /// Uses a miter to join lines, usually within a certain limit specified by 13 | /// 14 | Miter, 15 | 16 | /// 17 | /// Uses a bevel along the angle of the join 18 | /// 19 | Bevel, 20 | 21 | /// 22 | /// Uses a rounded edge to join lines 23 | /// 24 | Round 25 | } -------------------------------------------------------------------------------- /src/Eto/Eto.Forms.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | $([System.String]::Copy('%(Filename)').Replace('.eto', ''))%(Extension) 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Eto/FileAction.cs: -------------------------------------------------------------------------------- 1 | namespace Eto; 2 | 3 | /// 4 | /// File action. 5 | /// 6 | public enum FileAction 7 | { 8 | /// 9 | /// The open file. 10 | /// 11 | OpenFile, 12 | 13 | /// 14 | /// The save file. 15 | /// 16 | SaveFile, 17 | 18 | /// 19 | /// The select folder. 20 | /// 21 | SelectFolder 22 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Cells/Cell.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Base class for cells in a . 5 | /// 6 | public abstract class Cell : Widget 7 | { 8 | /// 9 | /// Initializes a new instance of the class. 10 | /// 11 | protected Cell() 12 | { 13 | } 14 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Cells/SingleValueCell.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Base class for cells that bind to a single value. 5 | /// 6 | public abstract class SingleValueCell : Cell 7 | { 8 | /// 9 | /// Gets or sets the binding to get/set the value of the cell. 10 | /// 11 | /// The cell's binding. 12 | public IIndirectBinding Binding { get; set; } 13 | 14 | /// 15 | /// Initializes a new instance of the class. 16 | /// 17 | protected SingleValueCell() 18 | { 19 | } 20 | } -------------------------------------------------------------------------------- /src/Eto/Forms/ControlConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | class ControlConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 6 | { 7 | return sourceType == typeof(string); 8 | } 9 | 10 | public override bool CanConvertTo(sc.ITypeDescriptorContext context, Type destinationType) 11 | { 12 | return false; 13 | } 14 | 15 | public override object ConvertFrom(sc.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) 16 | { 17 | if (value is string text) 18 | return new Label { Text = text }; 19 | return null; 20 | } 21 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Controls/SearchBox.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Search box control 5 | /// 6 | /// 7 | /// The search box control is similar to a plain text box, but provides platform-specific styling. 8 | /// 9 | /// (c) 2014 by Curtis Wensley 10 | /// See LICENSE for full terms 11 | [Handler(typeof(IHandler))] 12 | public class SearchBox: TextBox 13 | { 14 | /// 15 | /// Handler interface for the control 16 | /// 17 | /// (c) 2014 by Curtis Wensley 18 | /// See LICENSE for full terms 19 | public new interface IHandler : TextBox.IHandler 20 | { 21 | } 22 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Controls/TextInputEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Event arguments when handling text input events 5 | /// 6 | public class TextInputEventArgs : CancelEventArgs 7 | { 8 | /// 9 | /// The entered text, or null if no text was entered. 10 | /// 11 | public string Text { get; private set; } 12 | 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | /// Text that was input into the control 17 | public TextInputEventArgs(string text) 18 | { 19 | Text = text; 20 | } 21 | } -------------------------------------------------------------------------------- /src/Eto/Forms/DockPosition.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Enumeration to define the dock position of a control, such as tabs in the 5 | /// 6 | public enum DockPosition 7 | { 8 | /// 9 | /// Element is docked to the top of the content. 10 | /// 11 | Top, 12 | /// 13 | /// Element is docked to the left of the content. 14 | /// 15 | Left, 16 | /// 17 | /// Element is docked to the right of the content. 18 | /// 19 | Right, 20 | /// 21 | /// Element is docked to the bottom of the content. 22 | /// 23 | Bottom 24 | } -------------------------------------------------------------------------------- /src/Eto/Forms/IKeyboardInputSource.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Defines an interface for controls or classes that implement keyboard events. 5 | /// 6 | public interface IKeyboardInputSource 7 | { 8 | /// 9 | /// Occurs when a key was released 10 | /// 11 | event EventHandler KeyUp; 12 | 13 | /// 14 | /// Occurs when a key has been pressed and is down 15 | /// 16 | event EventHandler KeyDown; 17 | 18 | /// 19 | /// Occurs when text is input for the control. 20 | /// 21 | event EventHandler TextInput; 22 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Layout/DynamicItemConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | class DynamicItemConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertTo(sc.ITypeDescriptorContext context, Type destinationType) 6 | { 7 | return false; 8 | } 9 | 10 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 11 | { 12 | return typeof(Control).IsAssignableFrom(sourceType); 13 | } 14 | 15 | public override object ConvertTo(sc.ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 16 | { 17 | throw new NotSupportedException(); 18 | } 19 | 20 | public override object ConvertFrom(sc.ITypeDescriptorContext context, CultureInfo culture, object value) 21 | { 22 | return new DynamicControl { Control = value as Control }; 23 | } 24 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Layout/TableRowConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | class TableRowConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertTo(sc.ITypeDescriptorContext context, Type destinationType) 6 | { 7 | return false; 8 | } 9 | 10 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 11 | { 12 | return typeof(Control).IsAssignableFrom(sourceType); 13 | } 14 | 15 | public override object ConvertTo(sc.ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 16 | { 17 | throw new NotSupportedException(); 18 | } 19 | 20 | public override object ConvertFrom(sc.ITypeDescriptorContext context, CultureInfo culture, object value) 21 | { 22 | return new TableRow { Cells = { (Control)value } }; 23 | } 24 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Menu/MenuItemConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | class MenuItemConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 6 | { 7 | return typeof(Command).IsAssignableFrom(sourceType); 8 | } 9 | 10 | public override bool CanConvertTo(sc.ITypeDescriptorContext context, Type destinationType) 11 | { 12 | return false; 13 | } 14 | 15 | public override object ConvertFrom(sc.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) 16 | { 17 | var command = value as Command; 18 | if (command != null) 19 | return command.CreateMenuItem(); 20 | return base.ConvertFrom(context, culture, value); 21 | } 22 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Menu/SeparatorMenuItem.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Menu item to separate menu items 5 | /// 6 | /// (c) 2014 by Curtis Wensley 7 | /// See LICENSE for full terms 8 | [Handler(typeof(SeparatorMenuItem.IHandler))] 9 | public class SeparatorMenuItem : MenuItem 10 | { 11 | /// 12 | /// Handler interface for the 13 | /// 14 | public new interface IHandler : MenuItem.IHandler 15 | { 16 | } 17 | } -------------------------------------------------------------------------------- /src/Eto/Forms/Orientation.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Represents either horizontal or vertical orientation for controls. 5 | /// 6 | public enum Orientation 7 | { 8 | /// 9 | /// The control or layout should be oriented horizontally. 10 | /// 11 | Horizontal, 12 | /// 13 | /// The control or layout should be oriented vertically. 14 | /// 15 | Vertical 16 | } -------------------------------------------------------------------------------- /src/Eto/Forms/SaveFileDialog.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Dialog for the user to select a file to save 5 | /// 6 | [Handler(typeof(SaveFileDialog.IHandler))] 7 | public class SaveFileDialog : FileDialog 8 | { 9 | /// 10 | /// Handler interface for the 11 | /// 12 | public new interface IHandler : FileDialog.IHandler 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /src/Eto/Forms/SegmentedButton/SegmentedItemConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | internal class SegmentedItemConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 6 | { 7 | return sourceType == typeof(string) || sourceType == typeof(Image); 8 | } 9 | 10 | public override object ConvertFrom(sc.ITypeDescriptorContext context, CultureInfo culture, object value) 11 | { 12 | if (value is string str) 13 | return new ButtonSegmentedItem { Text = str }; 14 | if (value is Image img) 15 | return new ButtonSegmentedItem { Image = img }; 16 | 17 | return base.ConvertFrom(context, culture, value); 18 | } 19 | } -------------------------------------------------------------------------------- /src/Eto/Forms/TaskbarProgressState.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Eto.Forms; 3 | 4 | /// 5 | /// Taskbar state for . 6 | /// 7 | public enum TaskbarProgressState 8 | { 9 | /// 10 | /// The default state with no progress or indication. 11 | /// 12 | None, 13 | 14 | /// 15 | /// Standard state with visible progress. 16 | /// 17 | Progress, 18 | 19 | /// 20 | /// Indeterminate state where the progressbar value will be ignored. 21 | /// 22 | Indeterminate, 23 | 24 | /// 25 | /// Error state where the taskbar will try to signal to the end user that an error occured. 26 | /// 27 | Error, 28 | 29 | /// 30 | /// The paused state. 31 | /// 32 | Paused 33 | } -------------------------------------------------------------------------------- /src/Eto/Forms/ToolBar/ToolItemConverter.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | class ToolItemConverter : sc.TypeConverter 4 | { 5 | public override bool CanConvertFrom(sc.ITypeDescriptorContext context, Type sourceType) 6 | { 7 | return typeof(Command).IsAssignableFrom(sourceType); 8 | } 9 | 10 | public override bool CanConvertTo(sc.ITypeDescriptorContext context, Type destinationType) 11 | { 12 | return false; 13 | } 14 | 15 | public override object ConvertFrom(sc.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) 16 | { 17 | var command = value as Command; 18 | if (command != null) 19 | return command.CreateToolItem(); 20 | return base.ConvertFrom(context, culture, value); 21 | } 22 | } -------------------------------------------------------------------------------- /src/Eto/Forms/WidgetExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Forms; 2 | 3 | /// 4 | /// Extensions for widget objects 5 | /// 6 | public static class WidgetExtensions 7 | { 8 | /// 9 | /// Allows execution of extra code on a widget in a declarative manner. 10 | /// 11 | /// Type of the widget 12 | /// Widget to perform the action on 13 | /// Action to execute on the widget before returning 14 | /// Widget instance 15 | public static T With(this T widget, Action action) 16 | where T: Widget 17 | { 18 | action(widget); 19 | return widget; 20 | } 21 | } -------------------------------------------------------------------------------- /src/Eto/PlatformContext.cs: -------------------------------------------------------------------------------- 1 | namespace Eto; 2 | 3 | /// 4 | /// Sets the current generator for a block of code 5 | /// 6 | class PlatformContext : IDisposable 7 | { 8 | readonly Platform previous; 9 | 10 | public PlatformContext(Platform platform) 11 | { 12 | previous = Platform.Instance; 13 | Platform.SetInstance(platform); 14 | } 15 | 16 | public void Dispose() 17 | { 18 | Platform.SetInstance(previous); 19 | } 20 | } -------------------------------------------------------------------------------- /src/Eto/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | [assembly: CLSCompliant(true)] 4 | #if !NETSTANDARD 5 | [assembly: System.Runtime.InteropServices.ComVisible(false)] 6 | #endif -------------------------------------------------------------------------------- /src/Eto/sdk/Sdk.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Exe 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | False 5 | true 6 | 7 | 8 | 9 | $(ArtifactsDir)test\$(MSBuildProjectName)\ 10 | 11 | -------------------------------------------------------------------------------- /test/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Eto.Test.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with your package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /test/Eto.Test.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/Eto.Test.Android/Resources/drawable/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.Android/Resources/drawable/Icon.png -------------------------------------------------------------------------------- /test/Eto.Test.Android/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World, Click Me! 4 | Eto.Test.Android 5 | Eto.Android 6 | 7 | -------------------------------------------------------------------------------- /test/Eto.Test.Direct2D/Startup.cs: -------------------------------------------------------------------------------- 1 | using Eto; 2 | using Eto.Test; 3 | 4 | namespace Eto.Test.Direct2D 5 | { 6 | class Startup 7 | { 8 | [STAThread] 9 | static void Main(string[] args) 10 | { 11 | var platform = new Eto.Direct2D.Platform(); 12 | var app = new TestApplication(platform); 13 | app.TestAssemblies.Add(typeof(Startup).Assembly); 14 | app.Run(); 15 | } 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /test/Eto.Test.Direct2D/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Eto.Test.Gtk/NativeHostControls.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Gtk; 2 | 3 | class NativeHostControls : INativeHostControls 4 | { 5 | public IEnumerable GetNativeHostTests() 6 | { 7 | yield return new NativeHostTest("Gtk.Button", () => new global::Gtk.Button { Child = new global::Gtk.Label { Text = "A Gtk.Button" } }); 8 | yield return new NativeHostTest("IntPtr", () => new global::Gtk.Button { Child = new global::Gtk.Label { Text = "An IntPtr handle button" } }.Handle); 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /test/Eto.Test.Gtk/Startup.cs: -------------------------------------------------------------------------------- 1 | using Eto; 2 | using Eto.Test; 3 | namespace Eto.Test.Gtk 4 | { 5 | class Startup 6 | { 7 | [STAThread] 8 | static void Main(string[] args) 9 | { 10 | var platform = new Eto.GtkSharp.Platform(); 11 | platform.Add(() => new NativeHostControls()); 12 | 13 | var app = new TestApplication(platform); 14 | app.TestAssemblies.Add(typeof(Startup).Assembly); 15 | app.Run(); 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /test/Eto.Test.Mac/Assets/TestBundleResource.txt: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test/Eto.Test.Mac/Assets/TestContent.txt: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test/Eto.Test.Mac/Assets/TestCopyToOutput.txt: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /test/Eto.Test.Mac/NativeHostControls.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Mac 2 | { 3 | class NativeHostControls : INativeHostControls 4 | { 5 | public IEnumerable GetNativeHostTests() 6 | { 7 | yield return new NativeHostTest("NSView", () => new NSButton { Title = "A NSButton"}); 8 | yield return new NativeHostTest("IntPtr", () => new NSButton { Title = "An IntPtr handle button"}.Handle); 9 | } 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/Eto.Test.Mac/TestIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.Mac/TestIcon.icns -------------------------------------------------------------------------------- /test/Eto.Test.Mac/linker.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/Eto.Test.WinForms/NativeHostControls.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.WinForms 2 | { 3 | class NativeHostControls : INativeHostControls 4 | { 5 | public IEnumerable GetNativeHostTests() 6 | { 7 | yield return new NativeHostTest("HWND", () => new swf.UserControl { AutoScaleMode = swf.AutoScaleMode.Dpi, Controls = { new swf.Button { Text = "A HWND button" } } }.Handle); 8 | yield return new NativeHostTest("WinForms", () => new swf.Button { Text = "A WinForms button" }); 9 | } 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/Eto.Test.WinForms/Startup.cs: -------------------------------------------------------------------------------- 1 | using Eto; 2 | using Eto.Test; 3 | 4 | namespace Eto.Test.WinForms 5 | { 6 | class Startup 7 | { 8 | [STAThread] 9 | static void Main(string[] args) 10 | { 11 | var platform = new Eto.WinForms.Platform(); 12 | platform.Add(() => new NativeHostControls()); 13 | 14 | var app = new TestApplication(platform); 15 | app.TestAssemblies.Add(typeof(Startup).Assembly); 16 | app.Run(); 17 | } 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /test/Eto.Test.WinForms/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/StoreLogo.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.WinUI/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /test/Eto.Test.WinUI/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Eto.Test.WinUI (Package)": { 4 | "commandName": "MsixPackage" 5 | }, 6 | "Eto.Test.WinUI (Unpackaged)": { 7 | "commandName": "Project" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/NativeHostControls.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Wpf 2 | { 3 | class NativeHostControls : INativeHostControls 4 | { 5 | public IEnumerable GetNativeHostTests() 6 | { 7 | yield return new NativeHostTest("FrameworkElement", () => new System.Windows.Controls.Button { Content = "A WPF button"}); 8 | yield return new NativeHostTest("HWND", () => new System.Windows.Forms.Button { Text = "A HWND button"}.Handle); 9 | yield return new NativeHostTest("WinForms", () => new System.Windows.Forms.Button { Text = "A WinForms button"}); 10 | } 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo ( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/TestIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.Wpf/TestIcon.ico -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/UnitTests/BitmapTests.cs: -------------------------------------------------------------------------------- 1 | using Eto.Test.UnitTests; 2 | using NUnit.Framework; 3 | 4 | namespace Eto.Test.Wpf.UnitTests 5 | { 6 | [TestFixture] 7 | public class BitmapTests : TestBase 8 | { 9 | [Test, CancelAfter(1000)] 10 | public void CreatingManySmallBitmapsShouldBeFast(CancellationToken token) 11 | { 12 | var sw = new Stopwatch(); 13 | sw.Start(); 14 | for (int i = 0; i < 100; i++) 15 | { 16 | if (token.IsCancellationRequested) 17 | break; 18 | 19 | var bmp = new Bitmap(20, 20, PixelFormat.Format32bppRgba); 20 | 21 | using (var g = new Graphics(bmp)) 22 | { 23 | g.Clear(Colors.Blue); 24 | } 25 | } 26 | sw.Stop(); 27 | Console.WriteLine($"Total time: {sw.Elapsed}"); 28 | } 29 | 30 | } 31 | } -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/UnitTests/ScrollableTests.cs: -------------------------------------------------------------------------------- 1 | using Eto.Test.UnitTests; 2 | using NUnit.Framework; 3 | 4 | namespace Eto.Test.Wpf.UnitTests 5 | { 6 | [TestFixture] 7 | public class ScrollableTests : TestBase 8 | { 9 | [Test] 10 | public void ScrollableShouldSetScrollSize() 11 | { 12 | Invoke(() => 13 | { 14 | var form = new Form(); 15 | 16 | var scrollable = new Scrollable(); 17 | form.Content = scrollable; 18 | 19 | scrollable.ScrollSize = new Size(1000, 1000); 20 | }); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /test/Eto.Test.Wpf/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/Eto.Test.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly: AssemblyTitle ("Eto Test for iOS")] 4 | [assembly: AssemblyDescription ("")] -------------------------------------------------------------------------------- /test/Eto.Test.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /test/Eto.Test.iOS/Resources/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.iOS/Resources/Default.png -------------------------------------------------------------------------------- /test/Eto.Test.iOS/Resources/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test.iOS/Resources/Default@2x.png -------------------------------------------------------------------------------- /test/Eto.Test.iOS/Startup.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Eto.Test.iOS 3 | { 4 | public class Startup 5 | { 6 | // This is the main entry point of the application. 7 | static void Main(string[] args) 8 | { 9 | var platform = new Eto.iOS.Platform(); 10 | var app = new TestApplication(platform); 11 | app.Run(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/Eto.Test.iOS/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Eto.Test/Commands/About.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Commands 2 | { 3 | public class About : Command 4 | { 5 | public About() 6 | { 7 | ID = "about"; 8 | if (Platform.Instance.Supports()) 9 | Image = TestIcons.TestIcon; 10 | MenuText = "About Test Application"; 11 | ToolBarText = "About"; 12 | Shortcut = Keys.F11; 13 | } 14 | 15 | protected override void OnExecuted(EventArgs e) 16 | { 17 | base.OnExecuted(e); 18 | 19 | var about = new AboutDialog(); 20 | about.Logo = TestIcons.TestIcon; 21 | about.WebsiteLabel = "Eto Forms Website"; 22 | about.Website = new Uri("https://github.com/picoe/Eto"); 23 | 24 | about.ShowDialog(Application.Instance.MainForm); 25 | } 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /test/Eto.Test/Commands/Quit.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Commands 2 | { 3 | public class Quit : Command 4 | { 5 | public Quit() 6 | { 7 | ID = "quit"; 8 | MenuText = "&Quit"; 9 | ToolBarText = "Quit"; 10 | ToolTip = "Close the application"; 11 | Shortcut = Keys.Q | Application.Instance.CommonModifier; 12 | Image = TestIcons.TestImage; 13 | } 14 | 15 | protected override void OnExecuted(EventArgs e) 16 | { 17 | base.OnExecuted(e); 18 | Application.Instance.Quit(); 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /test/Eto.Test/CultureDropDown.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test 2 | { 3 | public class CultureDropDown : DropDown 4 | { 5 | public CultureDropDown() 6 | { 7 | ItemTextBinding = Binding.Delegate((CultureInfo c) => c.ThreeLetterISOLanguageName == "IVL" ? "Invariant" : c.Name); 8 | DataStore = CultureInfo.GetCultures(CultureTypes.AllCultures).OrderBy(r => r.Name); 9 | } 10 | 11 | public new CultureInfo SelectedValue 12 | { 13 | get => base.SelectedValue as CultureInfo; 14 | set => base.SelectedValue = value; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/Eto.Test/Images/Busy.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Busy.cur -------------------------------------------------------------------------------- /test/Eto.Test/Images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Logo.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/Logo@0.5x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Logo@0.5x.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/Logo@1.5x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Logo@1.5x.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/Logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Logo@2x.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/Logo@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Logo@4x.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/LogoWith288DPI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/LogoWith288DPI.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/LogoWith288DPI@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/LogoWith288DPI@2x.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/TestIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/TestIcon.ico -------------------------------------------------------------------------------- /test/Eto.Test/Images/TestImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/TestImage.png -------------------------------------------------------------------------------- /test/Eto.Test/Images/Textures.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Textures.gif -------------------------------------------------------------------------------- /test/Eto.Test/Images/Textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Images/Textures.png -------------------------------------------------------------------------------- /test/Eto.Test/Resources/Resource.designer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/picoe/Eto/3fe1a808ade99210545ce9dc1dc17144941634f0/test/Eto.Test/Resources/Resource.designer.cs -------------------------------------------------------------------------------- /test/Eto.Test/Sections/Behaviors/RestartSection.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Sections.Behaviors 2 | { 3 | [Section("Behaviors", "Restart")] 4 | public class RestartSection : DynamicLayout 5 | { 6 | public RestartSection() 7 | { 8 | var restartButton = new Button { Text = "Restart Application" }; 9 | restartButton.Click += (sender, e) => 10 | { 11 | Application.Instance.Restart(); 12 | }; 13 | 14 | AddCentered(restartButton, verticalCenter: true); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/Eto.Test/Sections/Behaviors/ToolTipSection.cs: -------------------------------------------------------------------------------- 1 | using Eto.Forms; 2 | namespace Eto.Test.Sections.Behaviors 3 | { 4 | [Section("Behaviors", "ToolTip")] 5 | public class ToolTipSection : AllControlsBase 6 | { 7 | protected override void LogEvents(Control control) 8 | { 9 | base.LogEvents(control); 10 | control.ToolTip = $"ToolTip for {control.GetType().Name}"; 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/Eto.Test/Sections/Controls/GridCellFormattingSection.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Sections.Controls 2 | { 3 | [Section("Controls", typeof(GridView), "GridView Formatting")] 4 | public class GridCellFormattingSection : GridViewSection 5 | { 6 | 7 | protected override void LogEvents(GridView control) 8 | { 9 | control.RowHeight = 36; 10 | var font = Fonts.Serif(18, FontStyle.Italic); 11 | control.CellFormatting += (sender, e) => 12 | { 13 | // Log.Write (control, "Formatting Row: {1}, Column: {2}, Item: {0}", e.Item, e.Row, control.Columns.IndexOf (e.Column)); 14 | e.Font = font; 15 | e.BackgroundColor = e.Row % 2 == 0 ? Colors.Blue : Colors.LightBlue; 16 | e.ForegroundColor = e.Row % 2 == 0 ? Colors.Lime : Colors.Yellow; 17 | }; 18 | } 19 | 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /test/Eto.Test/Sections/Serialization/JsonReadSection.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Sections.Serialization 2 | { 3 | [Section("Serialization", "Json")] 4 | public class JsonReadSection : Panel 5 | { 6 | public JsonReadSection() 7 | { 8 | Content = new Json.Test(); 9 | } 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/Eto.Test/Sections/Serialization/XamlReadSection.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Sections.Serialization 2 | { 3 | [Section("Serialization", "Xaml")] 4 | public class XamlReadSection : Panel 5 | { 6 | public XamlReadSection() 7 | { 8 | Content = new Xaml.Test(); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /test/Eto.Test/Sections/UnitTestSection.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.Sections 2 | { 3 | 4 | [Section("Automated Tests", "Unit Tests")] 5 | public class UnitTestSection : Panel 6 | { 7 | static UnitTestPanel unitTestPanel; 8 | UnitTestRunner runner; 9 | 10 | public UnitTestSection() 11 | { 12 | if (unitTestPanel == null) 13 | { 14 | runner = new UnitTestRunner(((TestApplication)TestApplication.Instance).TestAssemblies); 15 | unitTestPanel = new UnitTestPanel(runner, false); 16 | unitTestPanel.Log += (sender, e) => Log.Write(null, e.Message); 17 | } 18 | 19 | Content = unitTestPanel; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Drawing/DefaultValueTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | namespace Eto.Test.UnitTests.Drawing 3 | { 4 | [TestFixture] 5 | public class DefaultValueTests : TestBase 6 | { 7 | static IEnumerable GetTests() 8 | { 9 | yield return PropertyTest(() => new Eto.Drawing.LinearGradientBrush(Colors.Black, Colors.White, PointF.Empty, new PointF(10, 10)), r => r.Wrap); 10 | yield return PropertyTest(() => new Eto.Drawing.RadialGradientBrush(Colors.Black, Colors.White, PointF.Empty, new PointF(1, 1), new SizeF(10, 10)), r => r.Wrap); 11 | } 12 | 13 | [Test] 14 | [TestCaseSource(nameof(GetTests))] 15 | public void DefaultPropertyValuesShouldBeCorrect(PropertyTestInfo test) 16 | { 17 | Invoke(test.Run); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Drawing/PenTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | namespace Eto.Test.UnitTests.Drawing 3 | { 4 | [TestFixture] 5 | public class PenTests : TestBase 6 | { 7 | /// 8 | /// Issue 1066 9 | /// 10 | [Test] 11 | public void PenShouldReturnBrush() 12 | { 13 | var pen = new Pen(Colors.Blue); 14 | Assert.That(pen.Brush, Is.Not.Null, "#1.1"); 15 | Assert.That(pen.Brush, Is.InstanceOf()); 16 | Assert.That(((SolidBrush)pen.Brush).Color, Is.EqualTo(Colors.Blue), "#1.3"); 17 | 18 | var brush = new SolidBrush(Colors.Blue); 19 | pen = new Pen(brush); 20 | Assert.That(pen.Brush, Is.Not.Null, "#2.1"); 21 | Assert.That(brush, Is.SameAs(pen.Brush), "#2.2"); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/Controls/GroupBoxTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace Eto.Test.UnitTests.Forms.Controls 4 | { 5 | [TestFixture] 6 | public class GroupBoxTests : TestBase 7 | { 8 | [Test] 9 | public void GroupBoxShouldHaveCorrectlySizedContent() 10 | { 11 | GroupBox groupBox = null; 12 | Shown(form => 13 | { 14 | groupBox = new GroupBox { Content = new Panel { Size = new Size(200, 200) } }; 15 | return TableLayout.AutoSized(groupBox); 16 | }, c => 17 | { 18 | Assert.That(groupBox.Content.Size, Is.EqualTo(new Size(200, 200)), "#1 Content Size should auto size to its desired size"); 19 | }); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/Controls/ListBoxTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace Eto.Test.UnitTests.Forms.Controls 4 | { 5 | public class ListBoxTests : ListControlTests 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/Controls/ProgressBarTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | namespace Eto.Test.UnitTests.Forms.Controls 3 | { 4 | [TestFixture] 5 | public class ProgressBarTests : TestBase 6 | { 7 | [Test] 8 | public void IncrementingByOneShouldGetToTheEnd() 9 | { 10 | Invoke(() => 11 | { 12 | var progressBar = new ProgressBar(); 13 | progressBar.MaxValue = 100; 14 | progressBar.MinValue = 0; 15 | progressBar.Value = 0; 16 | for (int i = 0; i < 100; i++) 17 | { 18 | progressBar.Value++; 19 | } 20 | Assert.That(progressBar.Value, Is.EqualTo(100), "#1"); 21 | }); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/Controls/SliderTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | namespace Eto.Test.UnitTests.Forms.Controls 3 | { 4 | [TestFixture] 5 | public class SliderTests : TestBase 6 | { 7 | [Test] 8 | public void TickFrequencyShouldAllowZero() 9 | { 10 | Invoke(() => 11 | { 12 | var slider = new Slider(); 13 | slider.TickFrequency = 0; 14 | Assert.That(slider.TickFrequency, Is.EqualTo(0)); 15 | slider.Value = 10; 16 | slider.TickFrequency = 20; 17 | Assert.That(slider.TickFrequency, Is.EqualTo(20)); 18 | Assert.That(slider.Value, Is.EqualTo(10)); 19 | }); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/FloatingFormTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | namespace Eto.Test.UnitTests.Forms; 3 | 4 | [TestFixture] 5 | public class FloatingFormTests : WindowTests 6 | { 7 | protected override void Test(Action test, int timeout = 4000) => Form(test, timeout); 8 | protected override void ManualTest(string message, Func test) 9 | { 10 | // ManualForm(message, test); 11 | } 12 | protected override void Show(FloatingForm window) => window.Show(); 13 | protected override Task ShowAsync(FloatingForm window) => window.ShowAsync(); 14 | 15 | } -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/Forms/TestClasses.cs: -------------------------------------------------------------------------------- 1 | namespace Eto.Test.UnitTests.Forms 2 | { 3 | public class TestXamlChild : Panel 4 | { 5 | } 6 | 7 | public class TestXamlParent : StackLayout 8 | { 9 | public TestXamlChild myControl1; 10 | public TestXamlChild myControl2; 11 | public Panel panel1; 12 | public Panel panel2; 13 | 14 | public TestXamlChild MyControlProperty1 { get; set; } 15 | public TestXamlChild MyControlProperty2 { get; set; } 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /test/Eto.Test/UnitTests/PlatformTests.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace Eto.Test.UnitTests 4 | { 5 | [TestFixture] 6 | public class PlatformTests : TestBase 7 | { 8 | [Test, InvokeOnUI] 9 | public void ReinitializingPlatformShouldThrowException() 10 | { 11 | Assert.Throws(() => 12 | { 13 | Platform.Initialize(Platform.Instance.GetType().AssemblyQualifiedName); 14 | }); 15 | } 16 | 17 | [Test, InvokeOnUI] 18 | public void ReinitializingPlatformWithCurrentInstanceShouldNotThrowException() 19 | { 20 | Platform.Initialize(Platform.Instance); 21 | } 22 | } 23 | } 24 | --------------------------------------------------------------------------------