xartigas pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=b2c7e2c2dde65d72309d3e075dfa598dae8be37e
commit b2c7e2c2dde65d72309d3e075dfa598dae8be37e Author: Xavi Artigas <xavierarti...@yahoo.es> Date: Fri Jun 14 12:27:40 2019 +0200 efl-mono: Add custom widget example --- reference/csharp/ui/src/meson.build | 7 ++++ reference/csharp/ui/src/ui_custom_widget.cs | 62 +++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/reference/csharp/ui/src/meson.build b/reference/csharp/ui/src/meson.build index 12a5ef33..bfe5e9a9 100644 --- a/reference/csharp/ui/src/meson.build +++ b/reference/csharp/ui/src/meson.build @@ -20,3 +20,10 @@ executable('efl_reference_ui_focus', cs_args : efl_mono_libs, install : true ) + +executable('efl_reference_ui_custom_widget', + files(['ui_custom_widget.cs']), + dependencies : deps, + cs_args : efl_mono_libs, + install : true +) diff --git a/reference/csharp/ui/src/ui_custom_widget.cs b/reference/csharp/ui/src/ui_custom_widget.cs new file mode 100644 index 00000000..c486be6a --- /dev/null +++ b/reference/csharp/ui/src/ui_custom_widget.cs @@ -0,0 +1,62 @@ +/* + * Efl.UI custom widget examples. + * + * Inherit from an EFL C# class and customize it + */ + +using System; + +// This is our own button with customized text functions +public class MyButton : Efl.Ui.Button +{ + // This id shows how our data is preserved when overriden methods + // are called from native code + private int button_id; + + // Constructor sets an initial text + public MyButton(Efl.Object parent, int id = 0) : + base(parent) + { + button_id = id; + base.SetText("Base text for button id " + id); + } + + // This calls the parent's SetText() method with a modified string + public override void SetText(System.String text) + { + base.SetText("Overriden text for button id " + button_id + ": " + text); + } +} + +public class Example : Efl.Csharp.Application +{ + protected override void OnInitialize(Eina.Array<System.String> args) + { + // Create a window and initialize it + Efl.Ui.Win win = new Efl.Ui.Win(null, winType: Efl.Ui.WinType.Basic); + win.SetText("Custom widget demo"); + win.SetAutohide(true); + win.VisibilityChangedEvt += (object sender, Efl.Gfx.IEntityVisibilityChangedEvt_Args e) => { + // Exit the EFL main loop when the window is closed + if (e.arg == false) + Efl.Ui.Config.Exit(); + }; + // Give the window an initial size + win.SetSize(new Eina.Size2D(350,250)); + + // Instantiate our custom button widget + MyButton btn = new MyButton(win, 99); + btn.ClickedEvt += (object sender, Efl.Ui.IClickableClickedEvt_Args e) => { + // When the button is clicked, change its text + MyButton b = (MyButton)sender; + b.SetText("Hello!"); + }; + + win.SetContent(btn); + } + public static void Main() + { + var example = new Example(); + example.Launch(); + } +} --