protected override bool OnSave(object sender)
        {
            var groupSettings = new TemperatureGroupSettings();

            groupSettings.name = (string)settings["Name"].setting;
            if (groupSettings.name == "Enter name")
            {
                MessageBox.Show("Invalid probe name");
                return(false);
            }
            groupSettings.highTemperatureAlarmSetpoint = Convert.ToSingle(settings["High Alarm"].setting);
            groupSettings.lowTemperatureAlarmSetpoint  = Convert.ToSingle(settings["Low Alarm"].setting);
            groupSettings.temperatureSetpoint          = Convert.ToSingle(settings["Setpoint"].setting);
            groupSettings.temperatureDeadband          = Convert.ToSingle(settings["Deadband"].setting);

            Temperature.UpdateTemperatureGroup(groupName, groupSettings);
            groupName = groupSettings.name;

            return(true);
        }
        public TemperatureGroupSettingsDialog(TemperatureGroupSettings settings, Window parent)
            : base(settings.name + " Temperature", settings.name.IsNotEmpty(), parent)
        {
            groupName = settings.name;

            var t = new SettingsTextBox("Name");

            if (groupName.IsNotEmpty())
            {
                t.textBox.text              = groupName;
                t.textBox.enableTouch       = false;
                t.textBox.TextChangedEvent += (sender, args) => {
                    MessageBox.Show("Can not change temperature group name during runtime");
                    args.keepText = false;
                };
            }
            else
            {
                t.textBox.text              = "Enter name";
                t.textBox.TextChangedEvent += (sender, args) => {
                    if (args.text.IsNotEmpty())
                    {
                        args.keepText = false;
                    }
                    else if (Temperature.TemperatureGroupNameExists(args.text))
                    {
                        MessageBox.Show("Temperature group name already exists");
                        args.keepText = false;
                    }
                };
            }
            AddSetting(t);

            t = new SettingsTextBox("Setpoint");
            if (groupName.IsNotEmpty())
            {
                t.textBox.text = Temperature.GetTemperatureGroupTemperatureSetpoint(groupName).ToString();
            }
            else
            {
                t.textBox.text = "0.0";
            }
            t.textBox.TextChangedEvent += (sender, args) => {
                try {
                    Convert.ToSingle(args.text);
                } catch {
                    MessageBox.Show("Improper floating point number format");
                    args.keepText = false;
                }
            };
            AddSetting(t);

            t = new SettingsTextBox("Deadband");
            if (groupName.IsNotEmpty())
            {
                t.textBox.text = Temperature.GetTemperatureGroupTemperatureDeadband(groupName).ToString();
            }
            else
            {
                t.textBox.text = "0.5";
            }
            t.textBox.TextChangedEvent += (sender, args) => {
                try {
                    Convert.ToSingle(args.text);
                } catch {
                    MessageBox.Show("Improper floating point number format");
                    args.keepText = false;
                }
            };
            AddSetting(t);

            t = new SettingsTextBox("High Alarm");
            if (groupName.IsNotEmpty())
            {
                t.textBox.text = Temperature.GetTemperatureGroupHighTemperatureAlarmSetpoint(groupName).ToString();
            }
            else
            {
                t.textBox.text = "100.0";
            }
            t.textBox.TextChangedEvent += (sender, args) => {
                try {
                    Convert.ToSingle(args.text);
                } catch {
                    MessageBox.Show("Improper floating point number format");
                    args.keepText = false;
                }
            };
            AddSetting(t);

            t = new SettingsTextBox("Low Alarm");
            if (groupName.IsNotEmpty())
            {
                t.textBox.text = Temperature.GetTemperatureGroupLowTemperatureAlarmSetpoint(groupName).ToString();
            }
            else
            {
                t.textBox.text = "0.0";
            }
            t.textBox.TextChangedEvent += (sender, args) => {
                try {
                    Convert.ToSingle(args.text);
                } catch {
                    MessageBox.Show("Improper floating point number format");
                    args.keepText = false;
                }
            };
            AddSetting(t);

            DrawSettings();
        }
Пример #3
0
        protected void CallTemperatureGroupSettingsDialog(bool forceNew = false)
        {
            TemperatureGroupSettings settings;

            if (groupName.IsNotEmpty() && !forceNew)
            {
                settings = Temperature.GetTemperatureGroupSettings(groupName);
            }
            else
            {
                settings = new TemperatureGroupSettings();
            }
            var parent = Toplevel as Window;
            var s      = new TemperatureGroupSettingsDialog(settings, parent);

            s.Run();
            var newGroupName = s.groupName;
            var outcome      = s.outcome;

            if ((outcome == TouchSettingsOutcome.Modified) && (newGroupName != groupName))
            {
                var index = groupCombo.comboList.IndexOf(groupName);
                groupCombo.comboList[index] = newGroupName;
                groupName = newGroupName;
            }
            else if (outcome == TouchSettingsOutcome.Added)
            {
                groupCombo.comboList.Insert(groupCombo.comboList.Count - 1, newGroupName);
                groupCombo.activeText = newGroupName;
                groupName             = newGroupName;

                probeWidget.sensorCombo.comboList.Clear();
                probeWidget.sensorCombo.comboList.Add("New level sensor...");
                probeWidget.sensorCombo.activeIndex = 0;
                probeWidget.sensorCombo.QueueDraw();
                probeWidget.sensorName = string.Empty;

                heaterCombo.comboList.Clear();
                heaterCombo.comboList.Add("New heater...");
                heaterCombo.activeIndex = 0;
                heaterCombo.QueueDraw();
                heaterName = string.Empty;
            }
            else if (outcome == TouchSettingsOutcome.Deleted)
            {
                groupCombo.comboList.Remove(groupName);
                groupName = Temperature.defaultTemperatureGroup;
                if (groupName.IsNotEmpty())
                {
                    groupCombo.activeText = groupName;
                }
                else
                {
                    groupCombo.activeIndex = 0;
                }

                probeWidget.sensorCombo.comboList.Clear();
                if (groupName.IsNotEmpty())
                {
                    var groupsTemperatureProbes = Temperature.GetAllTemperatureProbesForTemperatureGroup(groupName);
                    if (groupsTemperatureProbes.Length > 0)
                    {
                        probeWidget.sensorCombo.comboList.AddRange(groupsTemperatureProbes);
                        probeWidget.sensorName = groupsTemperatureProbes[0];
                    }
                    else
                    {
                        probeWidget.sensorName = string.Empty;
                    }
                }
                probeWidget.sensorCombo.comboList.Add("New level sensor...");
                probeWidget.sensorCombo.activeIndex = 0;
                probeWidget.sensorCombo.QueueDraw();

                heaterCombo.comboList.Clear();
                if (groupName.IsNotEmpty())
                {
                    var heaterNames = Devices.Heater.GetAllHeatersForTemperatureGroup(groupName);
                    if (heaterNames.Length > 0)
                    {
                        heaterCombo.comboList.AddRange(heaterNames);
                        heaterName = heaterNames[0];
                    }
                    else
                    {
                        heaterName = string.Empty;
                    }
                }
                heaterCombo.comboList.Add("New heater...");
                heaterCombo.activeIndex = 0;
                heaterCombo.QueueDraw();
            }

            groupCombo.QueueDraw();
            GetGroupData();
            probeWidget.GetSensorData();
            GetHeaterData();
        }