From cc7e61ee3b303fa9e9181f403c68d9201ef33601 Mon Sep 17 00:00:00 2001 From: Matt Moening Date: Fri, 22 Dec 2017 11:28:34 -0800 Subject: [PATCH] Fill IP Address dropdown on idle - Add refresh button that is disabled when reloading menu --- SlicerConfiguration/UIFields/IpAddessField.cs | 34 +++++++++++++----- StaticData/Icons/fa-refresh_14.png | Bin 0 -> 314 bytes 2 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 StaticData/Icons/fa-refresh_14.png diff --git a/SlicerConfiguration/UIFields/IpAddessField.cs b/SlicerConfiguration/UIFields/IpAddessField.cs index d54875a75..03a6398ed 100644 --- a/SlicerConfiguration/UIFields/IpAddessField.cs +++ b/SlicerConfiguration/UIFields/IpAddessField.cs @@ -9,12 +9,15 @@ using System.Text; using System.Threading.Tasks; using MatterHackers.SerialPortCommunication.FrostedSerial; using Zeroconf; +using MatterHackers.MatterControl.CustomWidgets; +using MatterHackers.Agg.Platform; namespace MatterHackers.MatterControl.SlicerConfiguration { class IpAddessField : UIField { private DropDownList dropdownList; + private IconButton refreshButton; private PrinterConfig printer; @@ -42,13 +45,13 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; - dropdownList.Click += (s, e) => + //Create default option + MenuItem defaultOption = dropdownList.AddItem("Manual", "127.0.0.1:23"); + defaultOption.Selected += (sender, e) => { - //this blows up without runonidle - //RebuildMenuItems(); + printer.Settings.SetValue(SettingsKey.selector_ip_address, defaultOption.Text); }; - - RebuildMenuItems(); + UiThread.RunOnIdle(RebuildMenuItems); // Prevent droplist interaction when connected printer.Connection.CommunicationStateChanged.RegisterEvent((s, e) => @@ -65,7 +68,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration unregisterEvents?.Invoke(null, null); }; - this.Content = dropdownList; + var widget = new FlowLayoutWidget(); + widget.AddChild(dropdownList); + refreshButton = new IconButton(AggContext.StaticData.LoadIcon("fa-refresh_14.png", IconColor.Theme), ApplicationController.Instance.Theme) + { + Margin = new BorderDouble(left: 5) + }; + + refreshButton.Click += (s, e) => RebuildMenuItems(); + widget.AddChild(refreshButton); + + this.Content = widget; } protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs) @@ -74,15 +87,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration base.OnValueChanged(fieldChangedEventArgs); } - private void RebuildMenuItems() + private async void RebuildMenuItems() { - IReadOnlyList possibleHosts = ProbeForNetworkedTelenetConnections().Result; + refreshButton.Enabled = false; + IReadOnlyList possibleHosts = await ProbeForNetworkedTelenetConnections(); dropdownList.MenuItems.Clear(); + MenuItem defaultOption = dropdownList.AddItem("Manual", "127.0.0.1:23"); defaultOption.Selected += (sender, e) => { printer.Settings.SetValue(SettingsKey.selector_ip_address,defaultOption.Text); }; + foreach (Zeroconf.IZeroconfHost host in possibleHosts) { // Add each found telnet host to the dropdown list @@ -105,7 +121,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } }; } - + refreshButton.Enabled = true; } private void DefaultOption_Selected(object sender, EventArgs e) diff --git a/StaticData/Icons/fa-refresh_14.png b/StaticData/Icons/fa-refresh_14.png new file mode 100644 index 0000000000000000000000000000000000000000..f6482456b978c15830cefeba9e5ed2868417bad6 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Sc;uILpV4%IBGajIv5xj zK6<)1hFJ6-y|h=)B~XO*K|YVxRu?z(UY~`NG^WZquAHoKMb1g};w7KuGtCbO_ssHI zINPbQz~CrzHSX7BY|_Rl{YpK(wxF2MAhaoGh&{&e4uI(khBO~Nt{ z)jlNKJo_!uHnZlC+d2`$6U#QP_W#0sQ@`gr_tgE8GAWNXD7@R!p5 z!6CzGOV69C+rHH}!tVQ=Yx#{V!|vyDt8>?`{Sozo>Dv<4tB1UElJ^mdKI;Vst0I}4CY5)KL literal 0 HcmV?d00001