From 534b0b5e7bce87bbd2b891a20470ef3ccd5a9adc Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 13 Jan 2016 15:37:03 -0800 Subject: [PATCH] Removed redundant list of eeprom settings Made the view only get refreshed one time reduced the overhead of creating row items in eeprom window locked the lists to make sure they are consistent when used Made fan an movement controls not save "Controls" redundant --- EeProm/EePromRepetierStorage.cs | 27 ++++--- EeProm/EePromRepetierWindow.cs | 79 ++++++++++--------- PrinterControls/ControlWidgets/FanControls.cs | 2 +- .../ControlWidgets/MovementControls.cs | 2 +- StaticData/Translations/Master.txt | 6 ++ 5 files changed, 68 insertions(+), 48 deletions(-) diff --git a/EeProm/EePromRepetierStorage.cs b/EeProm/EePromRepetierStorage.cs index a90001290..c54dc2427 100644 --- a/EeProm/EePromRepetierStorage.cs +++ b/EeProm/EePromRepetierStorage.cs @@ -49,14 +49,20 @@ namespace MatterHackers.MatterControl.EeProm public void Clear() { - eePromSettingsList.Clear(); + lock (eePromSettingsList) + { + eePromSettingsList.Clear(); + } } public void Save() { - foreach (EePromRepetierParameter p in eePromSettingsList.Values) + lock (eePromSettingsList) { - p.save(); + foreach (EePromRepetierParameter p in eePromSettingsList.Values) + { + p.save(); + } } } @@ -77,16 +83,17 @@ namespace MatterHackers.MatterControl.EeProm } EePromRepetierParameter parameter = new EePromRepetierParameter(line); - if (eePromSettingsList.ContainsKey(parameter.position)) + lock (eePromSettingsList) { - eePromSettingsList.Remove(parameter.position); + if (eePromSettingsList.ContainsKey(parameter.position)) + { + eePromSettingsList.Remove(parameter.position); + } + + eePromSettingsList.Add(parameter.position, parameter); } - eePromSettingsList.Add(parameter.position, parameter); - if (eventAdded != null) - { - eventAdded(this, parameter); - } + eventAdded(this, parameter); } public void AskPrinterForSettings() diff --git a/EeProm/EePromRepetierWindow.cs b/EeProm/EePromRepetierWindow.cs index 69ae1a95f..fe462ab51 100644 --- a/EeProm/EePromRepetierWindow.cs +++ b/EeProm/EePromRepetierWindow.cs @@ -33,7 +33,7 @@ using MatterHackers.Agg.UI; using MatterHackers.Localizations; using MatterHackers.MatterControl.PrinterCommunication; using System; -using System.ComponentModel; +using System.Collections.Generic; namespace MatterHackers.MatterControl.EeProm { @@ -42,7 +42,6 @@ namespace MatterHackers.MatterControl.EeProm protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory(); private EePromRepetierStorage currentEePromSettings; - private BindingList data = new BindingList(); private FlowLayoutWidget settingsColmun; private event EventHandler unregisterEvents; @@ -169,55 +168,64 @@ namespace MatterHackers.MatterControl.EeProm buttonSave.Click += buttonSave_Click; } + bool waitingForUiUpdate = false; private void NewSettingReadFromPrinter(object sender, EventArgs e) { EePromRepetierParameter newSetting = e as EePromRepetierParameter; if (newSetting != null) { - data.Add(newSetting); - - UiThread.RunOnIdle(AddItemToUi, newSetting); + if (!waitingForUiUpdate) + { + waitingForUiUpdate = true; + UiThread.RunOnIdle(AddItemToUi, 1); + } } } private int currentTabIndex = 0; - private void AddItemToUi(object state) + private void AddItemToUi() { - EePromRepetierParameter newSetting = state as EePromRepetierParameter; - if (newSetting != null) + List tempList = new List(); + lock (currentEePromSettings.eePromSettingsList) { - FlowLayoutWidget row = new FlowLayoutWidget(); - row.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth; - row.AddChild(AddDescription(newSetting.Description)); - row.Padding = new BorderDouble(5, 0); - if ((settingsColmun.Children.Count % 2) == 1) + foreach (KeyValuePair keyValue in currentEePromSettings.eePromSettingsList) { - row.BackgroundColor = new RGBA_Bytes(0, 0, 0, 50); + tempList.Add(keyValue.Value); } - - CreateSpacer(row); - - double currentValue; - double.TryParse(newSetting.Value, out currentValue); - MHNumberEdit valueEdit = new MHNumberEdit(currentValue, pixelWidth: 80, allowNegatives: true, allowDecimals: true); - valueEdit.SelectAllOnFocus = true; - valueEdit.TabIndex = currentTabIndex++; - valueEdit.VAnchor = Agg.UI.VAnchor.ParentCenter; - valueEdit.ActuallNumberEdit.EditComplete += (sender, e) => - { - newSetting.Value = valueEdit.ActuallNumberEdit.Value.ToString(); - }; - row.AddChild(valueEdit); - - settingsColmun.AddChild(row); } - // TODO: fix the flow layout so we don't need this. - // This is correcting a bug in flow layout widgets not setting sizes correctly. - double oldWidth = Width; - Width = Width + 1; - Width = oldWidth; + foreach (EePromRepetierParameter newSetting in tempList) + { + if (newSetting != null) + { + FlowLayoutWidget row = new FlowLayoutWidget(); + row.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth; + row.AddChild(AddDescription(newSetting.Description)); + row.Padding = new BorderDouble(5, 0); + if ((settingsColmun.Children.Count % 2) == 1) + { + row.BackgroundColor = new RGBA_Bytes(0, 0, 0, 30); + } + + CreateSpacer(row); + + double currentValue; + double.TryParse(newSetting.Value, out currentValue); + MHNumberEdit valueEdit = new MHNumberEdit(currentValue, pixelWidth: 80 * TextWidget.GlobalPointSizeScaleRatio, allowNegatives: true, allowDecimals: true); + valueEdit.SelectAllOnFocus = true; + valueEdit.TabIndex = currentTabIndex++; + valueEdit.VAnchor = Agg.UI.VAnchor.ParentCenter; + valueEdit.ActuallNumberEdit.EditComplete += (sender, e) => + { + newSetting.Value = valueEdit.ActuallNumberEdit.Value.ToString(); + }; + row.AddChild(valueEdit); + + settingsColmun.AddChild(row); + } + } + waitingForUiUpdate = false; } private GuiWidget AddDescription(string description) @@ -251,7 +259,6 @@ namespace MatterHackers.MatterControl.EeProm private void DoButtonAbort_Click() { currentEePromSettings.Clear(); - data.Clear(); currentEePromSettings.eventAdded -= NewSettingReadFromPrinter; Close(); } diff --git a/PrinterControls/ControlWidgets/FanControls.cs b/PrinterControls/ControlWidgets/FanControls.cs index 99c9179d1..7aac1d2ef 100644 --- a/PrinterControls/ControlWidgets/FanControls.cs +++ b/PrinterControls/ControlWidgets/FanControls.cs @@ -45,7 +45,7 @@ namespace MatterHackers.MatterControl.PrinterControls protected override void AddChildElements() { - AltGroupBox fanControlsGroupBox = new AltGroupBox(new TextWidget("Fan Controls".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor)); + AltGroupBox fanControlsGroupBox = new AltGroupBox(new TextWidget("Fan".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor)); fanControlsGroupBox.Margin = new BorderDouble(0); fanControlsGroupBox.BorderColor = ActiveTheme.Instance.PrimaryTextColor; diff --git a/PrinterControls/ControlWidgets/MovementControls.cs b/PrinterControls/ControlWidgets/MovementControls.cs index bac659c49..5a8d22b7d 100644 --- a/PrinterControls/ControlWidgets/MovementControls.cs +++ b/PrinterControls/ControlWidgets/MovementControls.cs @@ -112,7 +112,7 @@ namespace MatterHackers.MatterControl.PrinterControls protected override void AddChildElements() { Button editButton; - movementControlsGroupBox = new AltGroupBox(textImageButtonFactory.GenerateGroupBoxLabelWithEdit(new TextWidget("Movement Controls".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor), out editButton)); + movementControlsGroupBox = new AltGroupBox(textImageButtonFactory.GenerateGroupBoxLabelWithEdit(new TextWidget("Movement".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor), out editButton)); editButton.Click += (sender, e) => { if (editManualMovementSettingsWindow == null) diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index c955b7ece..57d61670b 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -4345,3 +4345,9 @@ Translated:The distance to move the nozzle along the Z axis to ensure that it is English:Retract When \nChanging Islands Translated:Retract When \nChanging Islands +English:Movement +Translated:Movement + +English:Fan +Translated:Fan +