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
This commit is contained in:
Lars Brubaker 2016-01-13 15:37:03 -08:00
parent 342cc10485
commit 534b0b5e7b
5 changed files with 68 additions and 48 deletions

View file

@ -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()

View file

@ -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<EePromRepetierParameter> data = new BindingList<EePromRepetierParameter>();
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<EePromRepetierParameter> tempList = new List<EePromRepetierParameter>();
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<int, EePromRepetierParameter> 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();
}

View file

@ -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;

View file

@ -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)

View file

@ -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