diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj index a74e89b886..082b9bd929 100644 --- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj +++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj @@ -445,6 +445,7 @@ temp.cs + ProgressReporterDialogue.cs diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs index 2ce3b57beb..2a10e2a59e 100644 --- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs +++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs @@ -173,26 +173,20 @@ namespace ArdupilotMega.GCSViews CultureInfo ci = null; foreach (string name in new string[] { "en-US", "zh-Hans", "zh-TW", "ru-RU", "Fr", "Pl", "it-IT", "es-ES" }) { - ci = MainV2.getcultureinfo(name); + ci = CultureInfoEx.GetCultureInfo(name); if (ci != null) languages.Add(ci); } CMB_language.DisplayMember = "DisplayName"; CMB_language.DataSource = languages; - bool match = false; - for (int i = 0; i < languages.Count && !match; i++) + ci = Thread.CurrentThread.CurrentUICulture; + for (int i = 0; i < languages.Count; i++) { - ci = Thread.CurrentThread.CurrentUICulture; - while (!ci.Equals(CultureInfo.InvariantCulture)) + if (ci.IsChildOf(languages[i])) { - if (ci.Equals(languages[i])) - { - CMB_language.SelectedIndex = i; - match = true; - break; - } - ci = ci.Parent; + CMB_language.SelectedIndex = i; + break; } } CMB_language.SelectedIndexChanged += CMB_language_SelectedIndexChanged; @@ -555,23 +549,23 @@ namespace ArdupilotMega.GCSViews if (text.Length > 0) { if (text[0].GetType() == typeof(NumericUpDown)) - { - decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((NumericUpDown)text[0]).Value = option; - ((NumericUpDown)text[0]).BackColor = Color.Green; - } + { + decimal option = (decimal)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((NumericUpDown)text[0]).Value = option; + ((NumericUpDown)text[0]).BackColor = Color.Green; + } else if (text[0].GetType() == typeof(ComboBox)) - { - int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); - ((ComboBox)text[0]).SelectedIndex = option; - ((ComboBox)text[0]).BackColor = Color.Green; - } + { + int option = (int)(float.Parse(Params[e.ColumnIndex, e.RowIndex].Value.ToString())); + ((ComboBox)text[0]).SelectedIndex = option; + ((ComboBox)text[0]).BackColor = Color.Green; + } } } catch { ((Control)text[0]).BackColor = Color.Red; } Params.Focus(); - } + } private void BUT_load_Click(object sender, EventArgs e) { @@ -599,12 +593,12 @@ namespace ArdupilotMega.GCSViews continue; if (index2 != -1) - line = line.Replace(',','.'); + line = line.Replace(',', '.'); string name = line.Substring(0, index); float value = float.Parse(line.Substring(index + 1), new System.Globalization.CultureInfo("en-US")); - MAVLink.modifyParamForDisplay(true,name,ref value); + MAVLink.modifyParamForDisplay(true, name, ref value); // set param table as well foreach (DataGridViewRow row in Params.Rows) @@ -813,9 +807,10 @@ namespace ArdupilotMega.GCSViews { DsError.ThrowExceptionForHR(hr); } - catch (Exception ex) { - MessageBox.Show("Can not add video source\n" + ex.ToString()); - return; + catch (Exception ex) + { + MessageBox.Show("Can not add video source\n" + ex.ToString()); + return; } // Find the stream config interface @@ -940,7 +935,7 @@ namespace ArdupilotMega.GCSViews - + } catch { MessageBox.Show("Error: getting param list"); } diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs index 97252906cc..7d23d49e9c 100644 --- a/Tools/ArdupilotMegaPlanner/MainV2.cs +++ b/Tools/ArdupilotMegaPlanner/MainV2.cs @@ -138,7 +138,7 @@ namespace ArdupilotMega xmlconfig(false); if (config.ContainsKey("language") && !string.IsNullOrEmpty((string)config["language"])) - changelanguage(getcultureinfo((string)config["language"])); + changelanguage(CultureInfoEx.GetCultureInfo((string)config["language"])); if (!MONO) // windows only { @@ -2011,51 +2011,13 @@ namespace ArdupilotMega { ComponentResourceManager rm = new ComponentResourceManager(view.GetType()); foreach (Control ctrl in view.Controls) - applyresource(rm, ctrl); + rm.ApplyResource(ctrl); rm.ApplyResources(view, "$this"); } } } } - private void applyresource(ComponentResourceManager rm, Control ctrl) - { - rm.ApplyResources(ctrl, ctrl.Name); - foreach (Control subctrl in ctrl.Controls) - applyresource(rm, subctrl); - - if (ctrl.ContextMenu != null) - applyresource(rm, ctrl.ContextMenu); - - - if (ctrl is DataGridView) - { - foreach (DataGridViewColumn col in (ctrl as DataGridView).Columns) - rm.ApplyResources(col, col.Name); - } - - - } - - private void applyresource(ComponentResourceManager rm, Menu menu) - { - rm.ApplyResources(menu, menu.Name); - foreach (MenuItem submenu in menu.MenuItems) - applyresource(rm, submenu); - } - - public static CultureInfo getcultureinfo(string name) - { - try - { - return new CultureInfo(name); - } - catch (Exception) - { - return null; - } - } - private void MainV2_FormClosing(object sender, FormClosingEventArgs e) { config["MainHeight"] = this.Height; diff --git a/Tools/ArdupilotMegaPlanner/Utility.cs b/Tools/ArdupilotMegaPlanner/Utility.cs new file mode 100644 index 0000000000..4c807daf90 --- /dev/null +++ b/Tools/ArdupilotMegaPlanner/Utility.cs @@ -0,0 +1,64 @@ +//this file contains some simple extension methods + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Globalization; +using System.ComponentModel; +using System.Windows.Forms; + +namespace ArdupilotMega +{ + static class CultureInfoEx + { + public static CultureInfo GetCultureInfo(string name) + { + try { return new CultureInfo(name); } + catch (Exception) { return null; } + } + + public static bool IsChildOf(this CultureInfo cX, CultureInfo cY) + { + + if (cX == null || cY == null) + return false; + + CultureInfo c = cX; + while (!c.Equals(CultureInfo.InvariantCulture)) + { + if (c.Equals(cY)) + return true; + c = c.Parent; + } + return false; + } + } + + static class ComponentResourceManagerEx + { + public static void ApplyResource(this ComponentResourceManager rm, Control ctrl) + { + rm.ApplyResources(ctrl, ctrl.Name); + foreach (Control subctrl in ctrl.Controls) + ApplyResource(rm, subctrl); + + if (ctrl.ContextMenu != null) + ApplyResource(rm, ctrl.ContextMenu); + + + if (ctrl is DataGridView) + { + foreach (DataGridViewColumn col in (ctrl as DataGridView).Columns) + rm.ApplyResources(col, col.Name); + } + } + + public static void ApplyResource(this ComponentResourceManager rm, Menu menu) + { + rm.ApplyResources(menu, menu.Name); + foreach (MenuItem submenu in menu.MenuItems) + ApplyResource(rm, submenu); + } + } +}