2017-12-12 20:51:48 -08:00
|
|
|
using System;
|
|
|
|
|
|
|
|
public class Example
|
|
|
|
{
|
|
|
|
|
|
|
|
private static double KMS_PER_MILE = 1.609344;
|
|
|
|
|
|
|
|
private static double KmsToMiles(double kms)
|
|
|
|
{
|
|
|
|
return kms / KMS_PER_MILE;
|
|
|
|
}
|
|
|
|
private static double MilesToKms(double miles)
|
|
|
|
{
|
|
|
|
return miles * KMS_PER_MILE;
|
|
|
|
}
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
private static void ShowErrorPopup(Efl.Ui.Win win, string message)
|
2017-12-12 20:51:48 -08:00
|
|
|
{
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Popup_Alert popup = new Efl.Ui.Popup_Alert(win);
|
|
|
|
Efl.Ui.Text popup_text = new Efl.Ui.Text(popup);
|
2017-12-12 20:51:48 -08:00
|
|
|
popup_text.SetText($"Error: {message}");
|
|
|
|
popup.SetContent(popup_text);
|
|
|
|
popup.SetVisible(true);
|
2018-11-06 01:39:14 -08:00
|
|
|
popup.SetButton(Efl.Ui.Popup_Alert_Button.Positive, "Ok");
|
|
|
|
popup.SetSize(new Eina.Size2D(150, 30));
|
|
|
|
popup.ButtonClickedEvt += (object sender, Efl.Ui.Popup_Alert.ButtonClickedEvt_Args e) => {
|
2017-12-12 20:51:48 -08:00
|
|
|
popup.SetParent(null);
|
2018-05-07 13:26:39 -07:00
|
|
|
popup.Invalidate();
|
2017-12-12 20:51:48 -08:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#if WIN32 // Passed to the C# compiler with -define:WIN32
|
|
|
|
// Mono on Windows by default uses multi-thread apartments for COM stuff while
|
|
|
|
// OLE - used by ecore win32 DnD requires single threading for COM.
|
|
|
|
[STAThreadAttribute()]
|
|
|
|
#endif
|
|
|
|
public static void Main() {
|
2018-03-08 15:43:50 -08:00
|
|
|
int W = 120;
|
|
|
|
int H = 30;
|
2018-11-06 01:39:14 -08:00
|
|
|
Eina.Size2D size = new Eina.Size2D(W, H);
|
2018-03-08 15:43:50 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.All.Init(Efl.Components.Ui);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Win win = new Efl.Ui.Win(null);
|
2017-12-12 20:51:48 -08:00
|
|
|
win.SetText("C# Unit Converter");
|
|
|
|
win.SetAutohide(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Box_Flow box = new Efl.Ui.Box_Flow(win);
|
|
|
|
box.SetDirection(Efl.Ui.Dir.Horizontal);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Box_Flow miles_box = new Efl.Ui.Box_Flow(box);
|
|
|
|
miles_box.SetDirection(Efl.Ui.Dir.Down);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-05-02 21:02:11 -07:00
|
|
|
box.DoPack(miles_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Text miles_label = new Efl.Ui.Text(miles_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_label.SetText("Miles:");
|
2018-03-08 15:43:50 -08:00
|
|
|
miles_label.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_label.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Text_Editable miles_input = new Efl.Ui.Text_Editable(miles_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_input.SetText("");
|
|
|
|
miles_input.SetScrollable(true);
|
2018-03-08 15:43:50 -08:00
|
|
|
miles_input.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_input.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Button miles_button = new Efl.Ui.Button(miles_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_button.SetText("To Km");
|
2018-03-08 15:43:50 -08:00
|
|
|
miles_button.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
miles_button.SetVisible(true);
|
|
|
|
|
2018-05-02 21:02:11 -07:00
|
|
|
miles_box.DoPack(miles_label);
|
|
|
|
miles_box.DoPack(miles_input);
|
|
|
|
miles_box.DoPack(miles_button);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Box_Flow kms_box = new Efl.Ui.Box_Flow(box);
|
|
|
|
kms_box.SetDirection(Efl.Ui.Dir.Down);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-05-02 21:02:11 -07:00
|
|
|
box.DoPack(kms_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Text kms_label = new Efl.Ui.Text(kms_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_label.SetText("Kilometers:");
|
2018-03-08 15:43:50 -08:00
|
|
|
kms_label.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_label.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Text_Editable kms_input = new Efl.Ui.Text_Editable(kms_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_input.SetText("");
|
|
|
|
kms_input.SetScrollable(true);
|
2018-03-08 15:43:50 -08:00
|
|
|
kms_input.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_input.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Button kms_button = new Efl.Ui.Button(kms_box);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_button.SetText("To Miles");
|
2018-03-08 15:43:50 -08:00
|
|
|
kms_button.SetSize(size);
|
2017-12-12 20:51:48 -08:00
|
|
|
kms_button.SetVisible(true);
|
|
|
|
|
2018-05-02 21:02:11 -07:00
|
|
|
kms_box.DoPack(kms_label);
|
|
|
|
kms_box.DoPack(kms_input);
|
|
|
|
kms_box.DoPack(kms_button);
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-04-16 08:36:51 -07:00
|
|
|
kms_button.ClickedEvt += (object sender, EventArgs e) => {
|
2017-12-12 20:51:48 -08:00
|
|
|
try
|
|
|
|
{
|
|
|
|
string text = kms_input.GetText();
|
|
|
|
Console.WriteLine("Text is [{0}]", text);
|
|
|
|
double val = double.Parse(text);
|
|
|
|
miles_input.SetText(String.Format("{0:f3}", KmsToMiles(val)));
|
|
|
|
kms_input.SetFocus(true);
|
|
|
|
}
|
|
|
|
catch (FormatException ex)
|
|
|
|
{
|
|
|
|
Console.WriteLine("Exception {0} caught", ex);
|
|
|
|
ShowErrorPopup(win, "Invalid number");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2018-04-16 08:36:51 -07:00
|
|
|
miles_button.ClickedEvt += (object sender, EventArgs e) => {
|
2017-12-12 20:51:48 -08:00
|
|
|
try
|
|
|
|
{
|
|
|
|
string text = miles_input.GetText();
|
|
|
|
Console.WriteLine("Text is [{0}]", text);
|
|
|
|
double val = double.Parse(text);
|
|
|
|
kms_input.SetText(String.Format("{0:f3}", MilesToKms(val)));
|
|
|
|
miles_input.SetFocus(true);
|
|
|
|
}
|
|
|
|
catch (FormatException ex)
|
|
|
|
{
|
|
|
|
Console.WriteLine("Exception {0} cautght", ex);
|
|
|
|
ShowErrorPopup(win, "Invalid number");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
kms_box.SetVisible(true);
|
|
|
|
miles_box.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
box.SetPosition(new Eina.Position2D(20, 30));
|
2017-12-12 20:51:48 -08:00
|
|
|
box.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
win.SetPosition(new Eina.Position2D(200, 200));
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
win.SetSize(new Eina.Size2D(400, 120));
|
2017-12-12 20:51:48 -08:00
|
|
|
win.SetVisible(true);
|
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.Ui.Config.Run();
|
2017-12-12 20:51:48 -08:00
|
|
|
|
2018-11-06 01:39:14 -08:00
|
|
|
Efl.All.Shutdown();
|
2017-12-12 20:51:48 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|