From f173aee3f49f70c86662936d2009f054884ea301 Mon Sep 17 00:00:00 2001 From: rolanmen1 Date: Mon, 17 Sep 2012 19:55:11 +0000 Subject: [PATCH] LuaImplementation: forms.setproperty now works on int, double and bool properties. Added try catch to avoid crashes with these functions. --- BizHawk.MultiClient/LuaImplementation.cs | 60 ++++++++++++++--------- BizHawk.MultiClient/tools/LuaConsole.resx | 23 ++++----- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index ea1cd7bd47..c636ab7b01 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -513,6 +513,8 @@ namespace BizHawk.MultiClient "addclick", "clearclicks", "gettext", + "setproperty", + "getproperty", }; public static string[] BitwiseFunctions = new string[] @@ -2283,7 +2285,7 @@ namespace BizHawk.MultiClient { if (form.Handle == ptr) { - form.GetType().GetProperty(property.ToString()).SetValue(form, value, null); + form.GetType().GetProperty(property.ToString()).SetValue(form, Convert.ChangeType(value, form.GetType().GetProperty(property.ToString()).PropertyType), null); } else { @@ -2291,7 +2293,7 @@ namespace BizHawk.MultiClient { if (control.Handle == ptr) { - control.GetType().GetProperty(property.ToString()).SetValue(control, value, null); + control.GetType().GetProperty(property.ToString()).SetValue(control, Convert.ChangeType(value, form.GetType().GetProperty(property.ToString()).PropertyType), null); } } } @@ -2334,48 +2336,62 @@ namespace BizHawk.MultiClient public string forms_gettext(object handle) { - IntPtr ptr = new IntPtr(LuaInt(handle)); - foreach (LuaWinform form in LuaForms) + try { - if (form.Handle == ptr) + IntPtr ptr = new IntPtr(LuaInt(handle)); + foreach (LuaWinform form in LuaForms) { - return form.Text; - } - else - { - foreach (Control control in form.Controls) + if (form.Handle == ptr) { - if (control.Handle == ptr) + return form.Text; + } + else + { + foreach (Control control in form.Controls) { - return control.Text; + if (control.Handle == ptr) + { + return control.Text; + } } } } } + catch (Exception ex) + { + console_output(ex.Message); + } return ""; } public string forms_getproperty(object handle, object property) { - IntPtr ptr = new IntPtr(LuaInt(handle)); - foreach (LuaWinform form in LuaForms) + try { - if (form.Handle == ptr) + IntPtr ptr = new IntPtr(LuaInt(handle)); + foreach (LuaWinform form in LuaForms) { - return form.GetType().GetProperty(property.ToString()).GetValue(form, null).ToString(); - } - else - { - foreach (Control control in form.Controls) + if (form.Handle == ptr) { - if (control.Handle == ptr) + return form.GetType().GetProperty(property.ToString()).GetValue(form, null).ToString(); + } + else + { + foreach (Control control in form.Controls) { - return control.GetType().GetProperty(property.ToString()).GetValue(control, null).ToString(); + if (control.Handle == ptr) + { + return control.GetType().GetProperty(property.ToString()).GetValue(control, null).ToString(); + } } } } } + catch (Exception ex) + { + console_output(ex.Message); + } return ""; } diff --git a/BizHawk.MultiClient/tools/LuaConsole.resx b/BizHawk.MultiClient/tools/LuaConsole.resx index 501625a321..814a1793ef 100644 --- a/BizHawk.MultiClient/tools/LuaConsole.resx +++ b/BizHawk.MultiClient/tools/LuaConsole.resx @@ -133,17 +133,18 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJQSURBVDhPlZNdSNNRGMb/F110ZZEVhVBgeeHNICiiuggp - olAUyyxI0oSaH1QYC3N+tKnp5ubm1JUua5uuqdPKMgr7kApFItTUkWZqVhSVYmao5Nev/xyoQ4k88Nyc - 8z6/93nP4QjCfy6lwc4ltZVso4P/tMyXRcmMHqZ0EeY6jZQVInzuf0e1Tb9Ina3P/tkpLD6XkNg8BJe5 - u93C+HDVrP4M2ZkcMOOw5tLZ9nxJyJE4HSExBoKkBQhVpTrGhso9zNPfiph0JlB+U01ZcRbmwnRMeWlc - 08opUCV6QissGsZ+WOY6z4hmuuXglC6pRYBbJSp+fzXNxnaZ66o1s3rkyKHWruJuWRYOcwZ2kxKr8TI3 - DCkU6+QYNUnuNGWmLEY+5uOK3degoKZcx3SfEvozPfVB3OtNhi4ZvI2nrTIc23U9gtmYwa8eNXzScq8i - l6bHWnfRwhHeREJzGFONgYw/CeB9qQSZNNR9FyUGBT87lfQ3plJj1zLTq4COGDegLVo0HmeqKZjx+gOM - PNzDYPU2lLF+4jhyN6BIl8pgexK3bRpaXopJuhJEwGloiWDmVSgTLw4xWreXoZrtfK/wp/nKak4E+s6/ - hDFHTkd9GndsOdCTBq1i3NdHmWgIYvRpAMO1OxlwSPhi2YpT641CuoWzsSfnAfnZiVRZ1Tjvx9GsF+bU - pF1BvWolD9JXUZmyDnOiD1cvbCZiYXfXCPrMi+gVZ8hOiiL53DHORwdzKnw/hw/uYt9uCTskfvj7+rBp - 41rWr/Fig7fX8j/Tsn/fcgx/ARfG3ml6M3rzAAAAAElFTkSuQmCC + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlpJREFUOE+tk21I + k1EYhif0oyA0sqIQCix/+GcQFFH9CCmiUBTLLEjShJofVBgL2fxoU9Pp5ubUlS5rU9f8rCyjsA+pUCRC + TR1ppmVFUSlmhq78unrnQF1KGHTg/nEOz30993PO+7qJFrmUeiv2n+Mij+XLRLLYULdF2pxlEVIDcw0p + AsyxD5fmI/rQ94pqi26eOlsfuZj+7BgSm01QdA4ih7m73Yx9qGpavwatjPebqCzOprPt8YKQgzFagqL0 + BEjyEFWVaBkdLHMxT34uYNwWR9nVTEoL0zHlp2DMSeaSRk6eKt4VWm5WM/rVPNN5SjDTLQebZEHNA1wr + UvHjk3E6tsNcV62e1r3KLGqtKm6WplNpSsVqVFJsOM8VfSKFWjkGtcyZptSYzvC7XByx3zQoqCnTMvlG + CX1prnornPUmQJcUXsbSVhGK5bIOkcmQyveeTHiv4VZ5Nk33Nc6iuSO8CIfmECYa/bE/8ON1iRipJNh5 + F0V6Bd86lfQ1JlFj1TDVq4COKCegLVIwHmGiKRB7/V6G7+5koHozymgfYRy5E1CgTWKgXcZ1i5qWp0KS + rjgBcAJawph6FszYk/2M1O1isGYLX8p9ab6wgqP+3rMvYciS01GfzA1LFvQkQ6sQ9/khxhoCGHnox1Dt + NvorxXw0b8Km8UQh2cip6GOzgNyMeKqKM7HdjqFZJ5pRk2YJ9aql3EnxoCJxNaZ4Ly6e3UDY3O6OEXRp + 59ApTpIhiyDh9GHORAZyPHQPB/ZtZ/cOMVvFPvh6e7F+3SrWrHRnraf7Xz/xf/rJ/kvxb84I3U1y+9/W + AAAAAElFTkSuQmCC