public void Add(object sender, EventArgs e)
        {
            StringEventArgs lineString = e as StringEventArgs;

            if (e == null)
            {
                return;
            }

            string line = lineString.Data;

            if (!line.StartsWith("EPR:"))
            {
                return;
            }

            EePromRepetierParameter parameter = new EePromRepetierParameter(line);

            if (eePromSettingsList.ContainsKey(parameter.position))
            {
                eePromSettingsList.Remove(parameter.position);
            }

            eePromSettingsList.Add(parameter.position, parameter);
            if (eventAdded != null)
            {
                eventAdded(this, parameter);
            }
        }
        public void Add(object sender, EventArgs e)
        {
            StringEventArgs lineString = e as StringEventArgs;

            if (e == null)
            {
                return;
            }

            string line = lineString.Data;

            if (!line.StartsWith("EPR:"))
            {
                return;
            }

            EePromRepetierParameter parameter = new EePromRepetierParameter(line);
            if (eePromSettingsList.ContainsKey(parameter.position))
            {
                eePromSettingsList.Remove(parameter.position);
            }

            eePromSettingsList.Add(parameter.position, parameter);
            if (eventAdded != null)
            {
                eventAdded(this, parameter);
            }
        }
        private void NewSettingReadFromPrinter(object sender, EventArgs e)
        {
            EePromRepetierParameter newSetting = e as EePromRepetierParameter;

            if (newSetting != null)
            {
                data.Add(newSetting);

                UiThread.RunOnIdle(AddItemToUi, newSetting);
            }
        }
        private void NewSettingReadFromPrinter(object sender, EventArgs e)
        {
            EePromRepetierParameter newSetting = e as EePromRepetierParameter;

            if (newSetting != null)
            {
                if (!waitingForUiUpdate)
                {
                    waitingForUiUpdate = true;
                    UiThread.RunOnIdle(AddItemToUi, 1);
                }
            }
        }
        private void AddItemToUi(object state)
        {
            EePromRepetierParameter newSetting = state as EePromRepetierParameter;

            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, 50);
                }

                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;
        }
        public void Add(object sender, string line)
        {
            if (line == null ||
                !line.StartsWith("EPR:"))
            {
                return;
            }

            var parameter = new EePromRepetierParameter(line);

            lock (eePromSettingsList)
            {
                if (eePromSettingsList.ContainsKey(parameter.position))
                {
                    eePromSettingsList.Remove(parameter.position);
                }

                eePromSettingsList.Add(parameter.position, parameter);
            }

            this.SettingAdded?.Invoke(this, parameter);
        }