aboutsummaryrefslogtreecommitdiffstats
path: root/reference
diff options
context:
space:
mode:
authorXavi Artigas <xavierartigas@yahoo.es>2018-09-18 12:48:36 -0300
committerVitor Sousa <vitorsousa@expertisesolutions.com.br>2018-09-18 13:29:31 -0300
commit4c35b0f8c1a47aa7a0cdfca8d0f684f0c0730d14 (patch)
tree492f97e69d6ef7898f99557488ada66c9d2d085a /reference
parentMoved focus example to proper place (diff)
downloadexamples-4c35b0f8c1a47aa7a0cdfca8d0f684f0c0730d14.tar.gz
csharp: revamp focus example
Summary: It was a very poor example, the focus highlight did not show on startup, and the Text widget has a weird management of the focus. Replaced it by some check boxes, and the About button now moves the focus. Reviewers: lauromoura, vitor.sousa, felipealmeida, bu5hm4n Reviewed By: vitor.sousa Differential Revision: https://phab.enlightenment.org/D7056
Diffstat (limited to 'reference')
-rw-r--r--reference/csharp/ui/src/focus_main.cs98
1 files changed, 57 insertions, 41 deletions
diff --git a/reference/csharp/ui/src/focus_main.cs b/reference/csharp/ui/src/focus_main.cs
index 741acb45..354f7959 100644
--- a/reference/csharp/ui/src/focus_main.cs
+++ b/reference/csharp/ui/src/focus_main.cs
@@ -2,67 +2,83 @@ using System;
public class Example
{
- public static void QuitCb(object sender, EventArgs e)
- {
- Console.WriteLine("Clicked Quit");
- efl.ui.Config.Exit();
- }
-
- public static void AboutCb(object sender, EventArgs e)
- {
- Console.WriteLine("Clicked About");
- }
-
public static void FocusChangedCb(object sender, EventArgs e)
{
Console.WriteLine($"Focus for object {((efl.IText)sender).GetText()} changed to {((efl.ui.IWidget)sender).GetFocus()}");
}
+#if WIN32
+ [STAThreadAttribute()]
+#endif
public static void Main()
{
+ // Initialize EFL and all UI components
efl.All.Init(efl.Components.Ui);
- efl.ui.IWin win = new efl.ui.Win(null, (efl.ui.IWin ewin) => {
+ // Create a window and initialize it
+ var win = new efl.ui.Win(null, (efl.ui.IWin ewin) => {
ewin.SetWinType(efl.ui.Win_Type.Basic);
- ewin.SetText("Hello World");
+ ewin.SetText("Focus example");
ewin.SetAutohide(true);
+ ewin.HideEvt += (object sender, EventArgs e) => {
+ // Exit the EFL main loop
+ efl.ui.Config.Exit();
+ };
});
- win.HideEvt += QuitCb;
- efl.ui.IBox box = new efl.ui.Box(win);
- eina.Size2D sz;
- sz.W = 360;
- sz.H = 240;
- box.SetHintMin(sz);
- win.SetContent(box);
-
- efl.ui.IText text = new efl.ui.Text(box);
- text.SetText("Label");
- text.SetEditable(false);
- text.FocusChangedEvt += FocusChangedCb;
- box.DoPack(text);
+ // Create the main box container
+ var vbox = new efl.ui.Box(win, (efl.ui.IBox ebox) => {
+ ebox.SetHintMin(new eina.Size2D(360, 240));
+ win.SetContent(ebox);
+ });
- efl.ui.IBox hbox = new efl.ui.Box(box);
- hbox.SetDirection(efl.ui.Dir.Horizontal);
- hbox.SetHintWeight(1.0, 0.1);
- box.DoPack(hbox);
+ // Create some check boxes
+ efl.ui.ICheck first_checkbox = null;
+ for (int i = 0; i< 5; i++) {
+ var checkbox = new efl.ui.Check(vbox, (efl.ui.ICheck echeck) => {
+ echeck.SetText("Check " + i);
+ echeck.SetHintAlign(0.5, 0.5);
+ echeck.FocusChangedEvt += FocusChangedCb;
+ vbox.DoPack(echeck);
+ });
+ if (i == 0) first_checkbox = checkbox;
+ };
- efl.ui.IButton about = new efl.ui.Button(hbox);
- about.SetText("About");
- about.FocusChangedEvt += FocusChangedCb;
- about.ClickedEvt += AboutCb;
- hbox.DoPack(about);
+ // Create an horizontal box to contain the two buttons
+ var hbox = new efl.ui.Box(vbox, (efl.ui.IBox ebox) => {
+ ebox.SetDirection(efl.ui.Dir.Horizontal);
+ vbox.DoPack(ebox);
+ });
- efl.ui.IButton quit = new efl.ui.Button(hbox);
- quit.SetText("Quit");
- quit.FocusChangedEvt += FocusChangedCb;
- quit.ClickedEvt += QuitCb;
- hbox.DoPack(quit);
+ // Create a "Focus Mover" button
+ new efl.ui.Button(hbox, (efl.ui.IButton ebutton) => {
+ ebutton.SetText("Focus mover");
+ ebutton.FocusChangedEvt += FocusChangedCb;
+ ebutton.ClickedEvt += (object sender, EventArgs e) => {
+ Console.WriteLine("Clicked Focus Mover");
+ // Manually transfer focus to the first check box
+ efl.ui.focus.Util.Focus(first_checkbox);
+ };
+ hbox.DoPack(ebutton);
+ });
- efl.ui.focus.Util.Focus(about);
+ // Create a Quit button
+ new efl.ui.Button(hbox, (efl.ui.IButton ebutton) => {
+ ebutton.SetText("Quit");
+ ebutton.FocusChangedEvt += FocusChangedCb;
+ ebutton.ClickedEvt += (object sender, EventArgs e) => {
+ Console.WriteLine("Clicked Quit");
+ efl.ui.Config.Exit();
+ };
+ hbox.DoPack(ebutton);
+ // Set focus on this widget and show the focus highlight
+ ebutton.SetFocusHighlightEnabled(true);
+ });
+ // Start the EFL main loop
efl.ui.Config.Run();
+ // Shutdown EFL
efl.All.Shutdown();
}
}