Esempio n. 1
0
        //protected override void CreateCodeFromAction(ArcMoveAction programAction, ref StringBuilder code)
        //{

        //    code.AppendLine();

        //    SetMoveType(programAction.MoveType, ref code);

        //    var codeX = "X";
        //    var codeY = "Y";

        //    if (G112Activated)
        //    {
        //        codeY = "C";
        //    }

        //    if (programAction.X.HasValue)
        //        code.Append(codeX + FormatCoordinate(programAction.X.Value));

        //    if (programAction.Y.HasValue)
        //        code.Append(codeY + FormatCoordinate(programAction.Y.Value));

        //    if (programAction.Z.HasValue)
        //        code.Append("Z" + FormatCoordinate(programAction.Z.Value));

        //    code.Append("R" + FormatCoordinate(programAction.Radius));

        //    if (programAction.Feed != CurrentFeed)
        //        SetFeed(programAction.Feed, ref code);


        //}

        //protected override void CreateCodeFromAction(LinearMoveAction programAction, ref StringBuilder code)
        //{

        //    code.AppendLine();

        //    SetMoveType(programAction.MoveType, ref code);



        //    var codeX = "X";
        //    var codeY = "Y";

        //    if (G112Activated)
        //    {
        //        codeY = "C";
        //    }

        //    if (programAction.X.HasValue)
        //        code.Append(codeX + FormatCoordinate(programAction.X.Value));

        //    if (programAction.Y.HasValue)
        //        code.Append(codeY + FormatCoordinate(programAction.Y.Value));

        //    if (programAction.Z.HasValue)
        //        code.Append("Z" + FormatCoordinate(programAction.Z.Value));


        //    if (programAction.Feed != CurrentFeed)
        //        SetFeed(programAction.Feed, ref code);


        //}



        private void WriteToolParameter(double speed, SpindleRotation spindleRotation, ref StringBuilder code)
        {
            //var speedCode = PostProcessor.GetSpeedCode(speed);

            var speedFormated = FormatSpeed(speed);

            var speedCode = NumericControl.GetSpeedCode(speedFormated);


            string spindleRotationCode;

            switch (spindleRotation)
            {
            case SpindleRotation.Cw:
            {
                spindleRotationCode = NumericControl.CmdRotaryToolCw;
            } break;


            case SpindleRotation.Ccw:
            default:
            {
                spindleRotationCode = NumericControl.CmdRotaryToolCcw;
            } break;
            }

            code.AppendLine(speedCode + spindleRotationCode);
        }
Esempio n. 2
0
 public CylinderBrush()
 {
     _numSides = new NumericControl(this)
     {
         LabelText = "Number of sides"
     };
 }
 public Task OnInitialise()
 {
     _numSides = new NumericControl(this)
     {
         LabelText = NumberOfSides
     };
     return(Task.CompletedTask);
 }
Esempio n. 4
0
 public PipeBrush()
 {
     _numSides = new NumericControl(this)
     {
         LabelText = "Number of sides"
     };
     _wallWidth = new NumericControl(this)
     {
         LabelText = "Wall width", Minimum = 1, Maximum = 1024, Value = 32, Precision = 1
     };
 }
Esempio n. 5
0
 public async Task OnInitialise()
 {
     _numSides = new NumericControl(this)
     {
         LabelText = NumberOfSides
     };
     _wallWidth = new NumericControl(this)
     {
         LabelText = WallWidth, Minimum = 1, Maximum = 1024, Value = 32, Precision = 1
     };
 }
Esempio n. 6
0
 public TextBrush()
 {
     _fontChooser   = new FontChooserControl(this);
     _flattenFactor = new NumericControl(this)
     {
         LabelText = "Aliasing Factor", Minimum = 0.1m, Maximum = 10m, Value = 1, Precision = 1, Increment = 0.1m
     };
     _text = new TextControl(this)
     {
         EnteredText = "Enter text here"
     };
 }
Esempio n. 7
0
 public CompetitionOptionsDisplay(ControllerSkeleton red, ControllerSkeleton blue)
 {
     this.red            = red;
     this.blue           = blue;
     layout              = new VerticalLayout(VerticalLayout.VerticalAlign.Center);
     roundsNumberControl = new NumericControl(new NumericControl.NumericControlParameters("# of rounds", false, 1, 100000, 10, 1000));
     millisecondControl  = new NumericControl(new NumericControl.NumericControlParameters("Millisecond delay", false, 0, 10000, 5, 0));
     showBoards          = new CheckboxControl("Show ASCII boards");
     layout.Add(roundsNumberControl);
     //layout.Add(new CheckboxControl("Play out rounds"));
     layout.Add(millisecondControl);
     layout.Add(showBoards);
     layout.Add(new ButtonControl("Confirm", ButtonConfirmEvent));
     AddControlLayout(layout);
 }
Esempio n. 8
0
 public Task OnInitialise()
 {
     _fontChooser = new FontChooserControl(this)
     {
         LabelText = Font
     };
     _flattenFactor = new NumericControl(this)
     {
         LabelText = AliasingFactor, Minimum = 0.1m, Maximum = 10m, Value = 1, Precision = 1, Increment = 0.1m
     };
     _text = new TextControl(this)
     {
         EnteredText = EnteredText, LabelText = Text
     };
     return(Task.CompletedTask);
 }
Esempio n. 9
0
        public Task OnInitialise()
        {
            _crossSides = new NumericControl(this)
            {
                LabelText = CrossSectionSides
            };
            _crossRadius = new NumericControl(this)
            {
                LabelText = RingWidth, Minimum = 16, Maximum = 1024, Value = 32, Precision = 1
            };
            _crossStartAngle = new NumericControl(this)
            {
                LabelText = CrossSectionStart, Minimum = 0, Maximum = 359, Value = 0
            };
            _crossMakeHollow = new BooleanControl(this)
            {
                LabelText = MakeHollow, Checked = false
            };
            _crossArc = new NumericControl(this)
            {
                LabelText = CrossSectionArc, Minimum = 1, Maximum = 360, Value = 360, Enabled = false
            };
            _crossWallWidth = new NumericControl(this)
            {
                LabelText = HollowWallWidth, Minimum = 1, Maximum = 1024, Value = 16, Precision = 1, Enabled = false
            };
            _ringSides = new NumericControl(this)
            {
                LabelText = RingSides
            };
            _ringArc = new NumericControl(this)
            {
                LabelText = RingArc, Minimum = 1, Maximum = 1080, Value = 360
            };
            _ringStartAngle = new NumericControl(this)
            {
                LabelText = RingStart, Minimum = 0, Maximum = 359, Value = 0
            };
            _rotationHeight = new NumericControl(this)
            {
                LabelText = RotationHeight, Minimum = -1024, Maximum = 1024, Value = 0, Precision = 1
            };
            _crossMakeHollow.ValuesChanged += (s, b) => _crossWallWidth.Enabled = _crossArc.Enabled = _crossMakeHollow.GetValue();

            return(Task.CompletedTask);
        }
Esempio n. 10
0
        //constructorul care ia ca parametrii controalele respective
        public Bridge(
            TextBox _QuestionContent,
            TextBox _AnswerContent,
            CheckBox _AnswerState,
            ListView _Answers,
            NumericControl _QuestionIndex)
        {
            this.QuestionContent = _QuestionContent;
            this.AnswerContent   = _AnswerContent;
            this.AnswerState     = _AnswerState;
            this.Answers         = _Answers;
            this.QuestionIndex   = _QuestionIndex;

            //intitializam un quiz gol la inceput
            this.Q = new Quiz();
            this.onLoad();
        }
Esempio n. 11
0
 public TorusBrush()
 {
     _crossSides = new NumericControl(this)
     {
         LabelText = "Cross sec. sides"
     };
     _crossRadius = new NumericControl(this)
     {
         LabelText = "Ring width", Minimum = 16, Maximum = 1024, Value = 32, Precision = 1
     };
     _crossStartAngle = new NumericControl(this)
     {
         LabelText = "Cross sec. start", Minimum = 0, Maximum = 359, Value = 0
     };
     _crossMakeHollow = new BooleanControl(this)
     {
         LabelText = "Make hollow", Checked = false
     };
     _crossArc = new NumericControl(this)
     {
         LabelText = "Cross sec. arc", Minimum = 1, Maximum = 360, Value = 360, Enabled = false
     };
     _crossWallWidth = new NumericControl(this)
     {
         LabelText = "Hollow wall width", Minimum = 1, Maximum = 1024, Value = 16, Precision = 1, Enabled = false
     };
     _ringSides = new NumericControl(this)
     {
         LabelText = "Ring sides"
     };
     _ringArc = new NumericControl(this)
     {
         LabelText = "Ring arc", Minimum = 1, Maximum = 1080, Value = 360
     };
     _ringStartAngle = new NumericControl(this)
     {
         LabelText = "Ring start", Minimum = 0, Maximum = 359, Value = 0
     };
     _rotationHeight = new NumericControl(this)
     {
         LabelText = "Rotation height", Minimum = -1024, Maximum = 1024, Value = 0, Precision = 1
     };
     _crossMakeHollow.ValuesChanged += (s, b) => _crossWallWidth.Enabled = _crossArc.Enabled = _crossMakeHollow.GetValue();
 }
        private void WriteToolParameter(ModalitaVelocita modalitaVelocita, double speed, SpindleRotation spindleRotation, ref StringBuilder code)
        {
            string speedTypeCode;

            switch (modalitaVelocita)
            {
            case ModalitaVelocita.VelocitaTaglio:
            {
                speedTypeCode = NumericControl.CMDG_SpeedSync;
            } break;


            case ModalitaVelocita.GiriFissi:
            default:
            {
                speedTypeCode = NumericControl.CMDG_SpeedASync;
            } break;
            }

            var formatedSpeed = FormatSpeed(speed);
            var speedCode     = NumericControl.GetSpeedCode(formatedSpeed);

            string spindleRotationCode;

            switch (spindleRotation)
            {
            case SpindleRotation.Cw:
            {
                spindleRotationCode = NumericControl.CMDM_SpindleCW;
            } break;


            case SpindleRotation.Ccw:
            default:
            {
                spindleRotationCode = NumericControl.CMDM_SpindleCCW;
            } break;
            }


            code.AppendLine(speedTypeCode + speedCode + spindleRotationCode);
        }
Esempio n. 13
0
        private static string GetMoveCode(MoveType movetype, NumericControl numericControl)
        {
            switch (movetype)
            {
            case MoveType.Rapid:
                return(numericControl.CmdMoveRapid);

            case MoveType.SecureRapidFeed:
            case MoveType.PlungeFeed:
            case MoveType.Work:
                return(numericControl.CmdMoveWork);

            case MoveType.Ccw:
                return(numericControl.CMD_MoveCCW);

            case MoveType.Cw:
                return(numericControl.CMD_MoveCW);

            default:
                throw new NotImplementedException();
                break;
            }
        }
Esempio n. 14
0
        public async Task OnInitialise()
        {
            _numSides = new NumericControl(this)
            {
                LabelText = NumberOfSides
            };
            _wallWidth = new NumericControl(this)
            {
                LabelText = WallWidth, Minimum = 1, Maximum = 1024, Value = 32, Precision = 1
            };
            _arc = new NumericControl(this)
            {
                LabelText = Arc, Minimum = 1, Maximum = 360 * 4, Value = 360
            };
            _startAngle = new NumericControl(this)
            {
                LabelText = StartAngle, Minimum = 0, Maximum = 359, Value = 0
            };
            _addHeight = new NumericControl(this)
            {
                LabelText = AddHeight, Minimum = -1024, Maximum = 1024, Value = 0, Precision = 1
            };
            _curvedRamp = new BooleanControl(this)
            {
                LabelText = CurvedRamp, Checked = false
            };
            _tiltAngle = new NumericControl(this)
            {
                LabelText = TiltAngle, Minimum = -Atan2, Maximum = Atan2, Value = 0, Enabled = false, Precision = 1
            };
            _tiltInterp = new BooleanControl(this)
            {
                LabelText = TiltInterpolation, Checked = false, Enabled = false
            };

            _curvedRamp.ValuesChanged += (s, b) => _tiltAngle.Enabled = _tiltInterp.Enabled = _curvedRamp.GetValue();
        }
Esempio n. 15
0
        public ArchBrush()
        {
            _numSides = new NumericControl(this)
            {
                LabelText = "Number of sides"
            };
            _wallWidth = new NumericControl(this)
            {
                LabelText = "Wall width", Minimum = 1, Maximum = 1024, Value = 32, Precision = 1
            };
            _arc = new NumericControl(this)
            {
                LabelText = "Arc", Minimum = 1, Maximum = 360 * 4, Value = 360
            };
            _startAngle = new NumericControl(this)
            {
                LabelText = "Start angle", Minimum = 0, Maximum = 359, Value = 0
            };
            _addHeight = new NumericControl(this)
            {
                LabelText = "Add height", Minimum = -1024, Maximum = 1024, Value = 0, Precision = 1
            };
            _curvedRamp = new BooleanControl(this)
            {
                LabelText = "Curved ramp", Checked = false
            };
            _tiltAngle = new NumericControl(this)
            {
                LabelText = "Tilt angle", Minimum = -Atan2, Maximum = Atan2, Value = 0, Enabled = false, Precision = 1
            };
            _tiltInterp = new BooleanControl(this)
            {
                LabelText = "Tilt interpolation", Checked = false, Enabled = false
            };

            _curvedRamp.ValuesChanged += (s, b) => _tiltAngle.Enabled = _tiltInterp.Enabled = _curvedRamp.GetValue();
        }
Esempio n. 16
0
        private async Task LoadCommandsAsync()
        {
            PropertiesStkPnl.Children.Clear();

            var scene = await Context.Scenes
                        .Include(o => o.SettingValues)
                        .FirstOrDefaultAsync(sc => sc.Id == SceneId);

            if (scene == null)
            {
                return;
            }

            #region Scene Properties
            foreach (var sp in await Context.SceneSettings.ToListAsync())
            {
                var sceneSetting      = sp;
                var sceneSettingValue = await Context.SceneSettingValues
                                        .FirstOrDefaultAsync(v => v.SceneSetting.Id == sceneSetting.Id &&
                                                             v.SceneId == scene.Id);

                var _default = sceneSettingValue == null ? sceneSetting.Value : sceneSettingValue.Value;

                switch (sceneSetting.ValueType)
                {
                case DataType.BOOL:
                {
                    //get the current value from the value table list
                    bool defaultValue;
                    bool.TryParse(_default, out defaultValue);

                    var control = new CheckboxControl(async isChecked =>
                        {
                            if (sceneSettingValue != null)
                            {
                                sceneSettingValue.Value = isChecked.ToString();
                            }
                            else
                            {
                                sceneSettingValue = new SceneSettingValue()
                                {
                                    SceneSetting = sceneSetting,
                                    Value        = isChecked.ToString()
                                };
                                scene.SettingValues.Add(sceneSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving scene. {0}", result.Message);
                            }
                        }, icon)
                    {
                        Header      = sceneSetting.Name,
                        Description = string.Empty,
                        Value       = defaultValue
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                }

                case DataType.DECIMAL:
                case DataType.INTEGER:
                case DataType.BYTE:
                case DataType.SHORT:
                {
                    var control = new NumericControl(async value =>
                        {
                            if (sceneSettingValue != null)
                            {
                                sceneSettingValue.Value = value;
                            }
                            else
                            {
                                sceneSettingValue = new SceneSettingValue()
                                {
                                    SceneSetting = sceneSetting,
                                    Value        = value
                                };
                                scene.SettingValues.Add(sceneSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving scene. {0}", result.Message);
                            }
                        },
                                                     icon, sceneSetting.ValueType)
                    {
                        Header      = sceneSetting.Name,
                        Description = string.Empty,
                        Value       = _default
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                }

                case DataType.STRING:
                {
                    var control = new StringControl(
                        async value =>
                        {
                            if (sceneSettingValue != null)
                            {
                                sceneSettingValue.Value = value;
                            }
                            else
                            {
                                sceneSettingValue = new SceneSettingValue
                                {
                                    SceneSetting = sceneSetting,
                                    Value        = value
                                };
                                scene.SettingValues.Add(sceneSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving scene. {0}", result.Message);
                            }
                        },
                        icon)
                    {
                        Header      = sceneSetting.Name,
                        Description = string.Empty,
                        Value       = _default
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                }

                case DataType.LIST:
                {
                    var control = new ComboboxControl(async value =>
                        {
                            if (sceneSettingValue != null)
                            {
                                sceneSettingValue.Value = value.ToString();
                            }
                            else
                            {
                                //assign sceneSettingValue so above null check is ran in the case this is called 2 times before the save changes hits.
                                sceneSettingValue = new SceneSettingValue
                                {
                                    SceneSetting = sceneSetting,
                                    Value        = value.ToString()
                                };
                                scene.SettingValues.Add(sceneSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving scene. {0}", result.Message);
                            }
                        },
                                                      icon,
                                                      sceneSetting.Options.Select(o => o.Name).ToList())
                    {
                        Header       = sceneSetting.Name,
                        Description  = string.Empty,
                        SelectedItem = _default
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                }
                }
            }
            #endregion
        }
Esempio n. 17
0
        private async Task LoadCommandsAsync()
        {
            DeviceCommandsStkPnl.Children.Clear();
            TypeCommandsStkPnl.Children.Clear();

            var d = await _context.Devices
                    .Include(o => o.Values)
                    .Include(o => o.Type.Commands)
                    .FirstOrDefaultAsync(dv => dv.Id == _deviceId);

            if (d != null)
            {
                #region Device Commands
                foreach (var dc in d.Commands.OrderByDescending(c => c.SortOrder))
                {
                    var deviceCommand = dc;
                    switch (deviceCommand.ArgumentType)
                    {
                    case DataType.NONE:
                    {
                        var bc = new ButtonControl(async() =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceCommand.Id, string.Empty, string.Empty, CancellationToken.None);
                            }, _icon)
                        {
                            Header        = deviceCommand.Name,
                            ButtonContent = deviceCommand.Name,
                            Description   = deviceCommand.Description
                        };
                        DeviceCommandsStkPnl.Children.Add(bc);
                        break;
                    }

                    case DataType.BOOL:
                    {
                        //get the current value from the value table list
                        var defaultValue = false;
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceCommand.CustomData2);
                        if (dv != null)
                        {
                            bool.TryParse(dv.Value, out defaultValue);
                        }

                        var control = new CheckboxControl(async isChecked =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceCommand.Id, isChecked.ToString(), string.Empty, CancellationToken.None);
                            },
                                                          _icon)
                        {
                            Header      = deviceCommand.Name,
                            Description = deviceCommand.Description,
                            Value       = defaultValue
                        };
                        DeviceCommandsStkPnl.Children.Add(control);

                        break;
                    }

                    case DataType.INTEGER:
                    case DataType.DECIMAL:
                    case DataType.BYTE:
                    case DataType.SHORT:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                        var control = new NumericControl(async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceCommand.Id, value, string.Empty, CancellationToken.None);
                            },
                                                         _icon, deviceCommand.ArgumentType)
                        {
                            Header      = deviceCommand.Name,
                            Description = deviceCommand.Description,
                            Value       = defaultValue
                        };
                        DeviceCommandsStkPnl.Children.Add(control);
                        break;
                    }

                    case DataType.STRING:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }

                        var control = new StringControl(
                            async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceCommand.Id, value, string.Empty, CancellationToken.None);
                            },
                            _icon)
                        {
                            Header      = deviceCommand.Name,
                            Description = deviceCommand.Description,
                            Value       = defaultValue
                        };
                        DeviceCommandsStkPnl.Children.Add(control);

                        break;
                    }

                    case DataType.LIST:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }

                        var control = new ComboboxControl(async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceCommand.Id, value.ToString(), string.Empty, CancellationToken.None);
                            },
                                                          _icon,
                                                          deviceCommand.Options.Select(o => o.Name).ToList())
                        {
                            Header       = deviceCommand.Name,
                            Description  = deviceCommand.Description,
                            SelectedItem = defaultValue
                        };
                        DeviceCommandsStkPnl.Children.Add(control);

                        break;
                    }
                    }
                }
                #endregion

                #region Device Type Commands
                foreach (var dtc in d.Type.Commands.OrderByDescending(c => c.SortOrder))
                {
                    var deviceTypeCommand = dtc;
                    switch (deviceTypeCommand.ArgumentType)
                    {
                    case DataType.NONE:
                    {
                        var bc = new ButtonControl(async() =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceTypeCommand.Id, string.Empty, d.Id.ToString(CultureInfo.InvariantCulture), CancellationToken.None);
                            }, _icon)
                        {
                            Header        = deviceTypeCommand.Name,
                            ButtonContent = deviceTypeCommand.Name,
                            Description   = deviceTypeCommand.Description
                        };
                        TypeCommandsStkPnl.Children.Add(bc);
                        break;
                    }

                    case DataType.BOOL:
                    {
                        //get the current value from the value table list
                        var defaultValue = false;
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceTypeCommand.CustomData2);
                        if (dv != null)
                        {
                            bool.TryParse(dv.Value, out defaultValue);
                        }

                        var control = new CheckboxControl(async isChecked =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceTypeCommand.Id, isChecked.ToString(), d.Id.ToString(CultureInfo.InvariantCulture), CancellationToken.None);
                            },
                                                          _icon)
                        {
                            Header      = deviceTypeCommand.Name,
                            Description = deviceTypeCommand.Description,
                            Value       = defaultValue
                        };
                        TypeCommandsStkPnl.Children.Add(control);

                        break;
                    }

                    case DataType.DECIMAL:
                    case DataType.INTEGER:
                    case DataType.SHORT:
                    case DataType.BYTE:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceTypeCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }

                        var control = new NumericControl(async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceTypeCommand.Id, value, d.Id.ToString(CultureInfo.InvariantCulture), CancellationToken.None);
                            },
                                                         _icon, deviceTypeCommand.ArgumentType)
                        {
                            Header      = deviceTypeCommand.Name,
                            Description = deviceTypeCommand.Description,
                            Value       = defaultValue
                        };
                        TypeCommandsStkPnl.Children.Add(control);

                        break;
                    }

                    case DataType.STRING:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceTypeCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }

                        var control = new StringControl(
                            async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceTypeCommand.Id, value, d.Id.ToString(CultureInfo.InvariantCulture), CancellationToken.None);
                            },
                            _icon)
                        {
                            Header      = deviceTypeCommand.Name,
                            Description = deviceTypeCommand.Description,
                            Value       = defaultValue
                        };
                        TypeCommandsStkPnl.Children.Add(control);

                        break;
                    }

                    case DataType.LIST:
                    {
                        //get the current value from the value table list
                        var defaultValue = "0";
                        var dv           = d.Values.FirstOrDefault(v => v.UniqueIdentifier == deviceTypeCommand.CustomData2);
                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }

                        var control = new ComboboxControl(async value =>
                            {
                                await _app.ZvsEngine.RunCommandAsync(deviceTypeCommand.Id, value.ToString(), d.Id.ToString(CultureInfo.InvariantCulture), CancellationToken.None);
                            },
                                                          _icon,
                                                          deviceTypeCommand.Options.Select(o => o.Name).ToList())
                        {
                            Header       = deviceTypeCommand.Name,
                            Description  = deviceTypeCommand.Description,
                            SelectedItem = defaultValue
                        };
                        TypeCommandsStkPnl.Children.Add(control);

                        break;
                    }
                    }
                }
                #endregion
            }
        }
Esempio n. 18
0
        private async Task LoadCommandsAsync()
        {
            PropertiesStkPnl.Children.Clear();

            var device = await Context.Devices
                         .Include(o => o.DeviceSettingValues)
                         .Include(o => o.Type.Settings)
                         .FirstOrDefaultAsync(dv => dv.Id == _deviceId);

            if (device == null)
            {
                return;
            }

            #region Device Type Settings
            foreach (var deviceTypeSetting in device.Type.Settings)
            {
                //default
                var value = deviceTypeSetting.Value;

                //check if this settings has already been set
                var setting = deviceTypeSetting;
                var deviceTypeSettingValue = await Context.DeviceTypeSettingValues
                                             .Where(o => o.DeviceId == device.Id)
                                             .FirstOrDefaultAsync(o => o.DeviceTypeSettingId == setting.Id);

                if (deviceTypeSettingValue != null)
                {
                    value = deviceTypeSettingValue.Value;
                }

                switch (deviceTypeSetting.ValueType)
                {
                case DataType.BOOL:
                {
                    #region CheckboxControl
                    //get the current value from the value table list
                    bool defaultValue;
                    bool.TryParse(value, out defaultValue);

                    var control = new CheckboxControl(async isChecked =>
                        {
                            if (deviceTypeSettingValue != null)
                            {
                                deviceTypeSettingValue.Value = isChecked.ToString();
                            }
                            else
                            {
                                deviceTypeSettingValue = new DeviceTypeSettingValue
                                {
                                    DeviceId            = device.Id,
                                    DeviceTypeSettingId = setting.Id,
                                    Value = isChecked.ToString()
                                };

                                Context.DeviceTypeSettingValues.Add(deviceTypeSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device type setting. {0}", result.Message);
                            }
                        },
                                                      _icon)
                    {
                        Header      = deviceTypeSetting.Name,
                        Description = deviceTypeSetting.Description,
                        Value       = defaultValue
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.INTEGER:
                case DataType.DECIMAL:
                case DataType.SHORT:
                case DataType.BYTE:
                {
                    #region NumericControl
                    var control = new NumericControl(
                        async v =>
                        {
                            if (deviceTypeSettingValue != null)
                            {
                                deviceTypeSettingValue.Value = v;
                            }
                            else
                            {
                                deviceTypeSettingValue = new DeviceTypeSettingValue()
                                {
                                    DeviceId            = device.Id,
                                    DeviceTypeSettingId = setting.Id,
                                    Value = v
                                };
                                Context.DeviceTypeSettingValues.Add(deviceTypeSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device type setting. {0}", result.Message);
                            }
                        },
                        _icon, deviceTypeSetting.ValueType)
                    {
                        Header      = deviceTypeSetting.Name,
                        Description = deviceTypeSetting.Description,
                        Value       = value
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.STRING:
                {
                    #region StringControl
                    var control = new StringControl(async v =>
                        {
                            if (deviceTypeSettingValue != null)
                            {
                                deviceTypeSettingValue.Value = v;
                            }
                            else
                            {
                                deviceTypeSettingValue = new DeviceTypeSettingValue()
                                {
                                    DeviceId            = device.Id,
                                    DeviceTypeSettingId = setting.Id,
                                    Value = v
                                };
                                Context.DeviceTypeSettingValues.Add(deviceTypeSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device type setting. {0}", result.Message);
                            }
                        },
                                                    _icon)
                    {
                        Header      = deviceTypeSetting.Name,
                        Description = deviceTypeSetting.Description,
                        Value       = value,
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.LIST:
                {
                    #region ComboboxControl
                    var control = new ComboboxControl(async v =>
                        {
                            if (deviceTypeSettingValue != null)
                            {
                                deviceTypeSettingValue.Value = v.ToString();
                            }
                            else
                            {
                                deviceTypeSettingValue = new DeviceTypeSettingValue
                                {
                                    DeviceId            = device.Id,
                                    DeviceTypeSettingId = setting.Id,
                                    Value = v.ToString()
                                };
                                Context.DeviceTypeSettingValues.Add(deviceTypeSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device type setting. {0}", result.Message);
                            }
                        },
                                                      _icon,
                                                      deviceTypeSetting.Options.Select(o => o.Name).ToList())
                    {
                        Header       = deviceTypeSetting.Name,
                        Description  = deviceTypeSetting.Description,
                        SelectedItem = value
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }
                }
            }


            #endregion
            #region Device Settings
            foreach (var s in await Context.DeviceSettings.ToListAsync())
            {
                var deviceSetting = s;

                //See if the device has a value stored for it for this property
                var deviceSettingValue = await Context.DeviceSettingValues.FirstOrDefaultAsync(v => v.DeviceSetting.Id == deviceSetting.Id &&
                                                                                               v.DeviceId == device.Id);

                var _default = deviceSettingValue == null ? deviceSetting.Value : deviceSettingValue.Value;

                switch (deviceSetting.ValueType)
                {
                case DataType.BOOL:
                {
                    #region CheckboxControl
                    //get the current value from the value table list
                    bool defaultValue;
                    bool.TryParse(_default, out defaultValue);

                    var control = new CheckboxControl(async isChecked =>
                        {
                            if (deviceSettingValue != null)
                            {
                                deviceSettingValue.Value = isChecked.ToString();
                            }
                            else
                            {
                                deviceSettingValue = new DeviceSettingValue()
                                {
                                    DeviceSetting = deviceSetting,
                                    Value         = isChecked.ToString()
                                };
                                device.DeviceSettingValues.Add(deviceSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device setting. {0}", result.Message);
                            }
                        },
                                                      _icon)
                    {
                        Header      = deviceSetting.Name,
                        Description = deviceSetting.Description,
                        Value       = defaultValue
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.INTEGER:
                case DataType.DECIMAL:
                case DataType.SHORT:
                case DataType.BYTE:
                {
                    #region NumericControl
                    var control = new NumericControl(async value =>
                        {
                            if (deviceSettingValue != null)
                            {
                                deviceSettingValue.Value = value;
                            }
                            else
                            {
                                deviceSettingValue = new DeviceSettingValue()
                                {
                                    DeviceSetting = deviceSetting,
                                    Value         = value
                                };
                                device.DeviceSettingValues.Add(deviceSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device setting. {0}", result.Message);
                            }
                        }, _icon, deviceSetting.ValueType)
                    {
                        Header      = deviceSetting.Name,
                        Description = deviceSetting.Description,
                        Value       = _default
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.STRING:
                {
                    #region StringControl
                    var control = new StringControl(
                        async value =>
                        {
                            if (deviceSettingValue != null)
                            {
                                deviceSettingValue.Value = value;
                            }
                            else
                            {
                                deviceSettingValue = new DeviceSettingValue()
                                {
                                    DeviceSetting = deviceSetting,
                                    Value         = value
                                };
                                device.DeviceSettingValues.Add(deviceSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device setting. {0}", result.Message);
                            }
                        },
                        _icon)
                    {
                        Header      = deviceSetting.Name,
                        Description = deviceSetting.Description,
                        Value       = _default,
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }

                case DataType.LIST:
                {
                    #region ComboboxControl
                    var control = new ComboboxControl(async value =>
                        {
                            if (deviceSettingValue != null)
                            {
                                deviceSettingValue.Value = value.ToString();
                            }
                            else
                            {
                                deviceSettingValue = new DeviceSettingValue
                                {
                                    DeviceSetting = deviceSetting,
                                    Value         = value.ToString()
                                };
                                device.DeviceSettingValues.Add(deviceSettingValue);
                            }

                            var result = await Context.TrySaveChangesAsync(_app.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(_app.Cts.Token, "Error saving device setting. {0}", result.Message);
                            }
                        },
                                                      _icon,
                                                      deviceSetting.Options.Select(o => o.Name).ToList())
                    {
                        Header       = deviceSetting.Name,
                        Description  = deviceSetting.Description,
                        SelectedItem = _default
                    };
                    PropertiesStkPnl.Children.Add(control);

                    break;
                    #endregion
                }
                }
            }
            #endregion
        }
Esempio n. 19
0
        protected NumericControl NumericControl = new NumericControl(); // per adesso ok cosi . poi fare proprieta cosi da poter modificare..

        /// <summary>
        /// Metodo per cambiare codice numerico alla macchina
        /// </summary>
        /// <param name="numericControl"></param>
        internal void SetController(NumericControl numericControl)
        {
            NumericControl = numericControl;
        }
        private void AdapterListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ControlsStkPnl.Children.Clear();

            var adapter = (Adapter)AdapterListView.SelectedItem;

            if (adapter == null)
            {
                return;
            }
            //ADD THE ENABLED BUTTON
            var c = new CheckboxControl(
                async isChecked =>
            {
                //Save to the database
                adapter.IsEnabled = isChecked;

                var result = await Context.TrySaveChangesAsync(App.Cts.Token);
                if (result.HasError)
                {
                    await Log.ReportErrorFormatAsync(App.Cts.Token, "Error enabling adapter. {0}", result.Message);
                }

                //STOP OR START
                if (isChecked)
                {
                    await App.ZvsEngine.AdapterManager.EnableAdapterAsync(adapter.AdapterGuid, App.Cts.Token);
                }
                else
                {
                    await App.ZvsEngine.AdapterManager.DisableAdapterAsync(adapter.AdapterGuid, App.Cts.Token);
                }
            },
                _icon)
            {
                Header      = $"{adapter.Name} is enabled",
                Description = "Starts and stops the selected adapter",
                Value       = adapter.IsEnabled
            };

            ControlsStkPnl.Children.Add(c);


            //Add all the settings
            foreach (var a in adapter.Settings)
            {
                var adapterSetting = a;

                switch (adapterSetting.ValueType)
                {
                case DataType.BOOL:
                {
                    bool defaultValue;
                    bool.TryParse(adapterSetting.Value, out defaultValue);

                    var control = new CheckboxControl(async isChecked =>
                        {
                            adapterSetting.Value = isChecked.ToString();
                            var result           = await Context.TrySaveChangesAsync(App.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(App.Cts.Token, "Error saving adapter setting. {0}", result.Message);
                            }
                        },
                                                      _icon)
                    {
                        Header      = adapterSetting.Name,
                        Description = adapterSetting.Description,
                        Value       = defaultValue
                    };
                    ControlsStkPnl.Children.Add(control);
                    break;
                }

                case DataType.BYTE:
                case DataType.DECIMAL:
                case DataType.SHORT:
                case DataType.INTEGER:
                case DataType.COMPORT:
                {
                    var control = new NumericControl(async value =>
                        {
                            adapterSetting.Value = value;
                            var result           = await Context.TrySaveChangesAsync(App.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(App.Cts.Token, "Error saving adapter setting. {0}", result.Message);
                            }
                        },
                                                     _icon, adapterSetting.ValueType)
                    {
                        Header      = adapterSetting.Name,
                        Description = adapterSetting.Description,
                        Value       = adapterSetting.Value
                    };
                    ControlsStkPnl.Children.Add(control);
                    break;
                }

                case DataType.STRING:
                {
                    var control = new StringControl(
                        async value =>
                        {
                            adapterSetting.Value = value;
                            var result           = await Context.TrySaveChangesAsync(App.Cts.Token);
                            if (result.HasError)
                            {
                                await
                                Log.ReportErrorFormatAsync(App.Cts.Token,
                                                           "Error saving adapter setting. {0}", result.Message);
                            }
                        },
                        _icon)
                    {
                        Header      = adapterSetting.Name,
                        Description = adapterSetting.Description,
                        Value       = adapterSetting.Value
                    };


                    ControlsStkPnl.Children.Add(control);
                    break;
                }

                case DataType.LIST:
                {
                    var control = new ComboboxControl(async value =>
                        {
                            adapterSetting.Value = value.ToString();
                            var result           = await Context.TrySaveChangesAsync(App.Cts.Token);
                            if (result.HasError)
                            {
                                await Log.ReportErrorFormatAsync(App.Cts.Token, "Error saving adapter setting. {0}", result.Message);
                            }
                        },
                                                      _icon,
                                                      adapterSetting.Options.Select(o => o.Name).ToList())
                    {
                        Header       = adapterSetting.Name,
                        Description  = adapterSetting.Description,
                        SelectedItem = adapterSetting.Value
                    };
                    ControlsStkPnl.Children.Add(control);
                    break;
                }
                }
            }
        }
Esempio n. 21
0
        private async void BuiltinCmdsCmboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            BuiltinArgSckPnl.Children.Clear();
            var selectedCmd = (BuiltinCommand)BuiltinCmdsCmboBox.SelectedItem;

            switch (selectedCmd.UniqueIdentifier)
            {
                #region Do Custom things for some Builtin Commands
            case "REPOLL_ME":
            {
                Device selectedDevice = null;

                //Lookup the device involved in the command
                int deviceId = int.TryParse(StoredCommand.Argument, out deviceId) ? deviceId : 0;
                var device   = await Context.Devices.FirstOrDefaultAsync(o => o.Id == deviceId) ??
                               await Context.Devices.FirstOrDefaultAsync();

                if (device != null)
                {
                    selectedDevice      = device;
                    _selectedBuiltinArg = device.Id.ToString(CultureInfo.InvariantCulture);
                }
                var control = new ComboboxControl(obj =>
                    {
                        var d = obj as Device;
                        if (d != null)
                        {
                            _selectedBuiltinArg = d.Id.ToString(CultureInfo.InvariantCulture);
                        }

                        return(Task.FromResult(0));
                    },
                                                  _icon,
                                                  await Context.Devices.ToListAsync())
                {
                    Header       = selectedCmd.Name,
                    Description  = selectedCmd.Description,
                    SelectedItem = selectedDevice
                };
                BuiltinArgSckPnl.Children.Add(control);
                break;
            }

            case "GROUP_ON":
            case "GROUP_OFF":
            {
                Group selectedGroup = null;

                //Lookup the group involved in the command
                int groupId = int.TryParse(StoredCommand.Argument, out groupId) ? groupId : 0;
                var group   = await Context.Groups.FirstOrDefaultAsync(o => o.Id == groupId) ??
                              await Context.Groups.FirstOrDefaultAsync();

                if (group != null)
                {
                    selectedGroup       = group;
                    _selectedBuiltinArg = group.Id.ToString(CultureInfo.InvariantCulture);
                }

                var control = new ComboboxControl(arg =>
                    {
                        var g = arg as Group;
                        if (g != null)
                        {
                            _selectedBuiltinArg = g.Id.ToString(CultureInfo.InvariantCulture);
                        }

                        return(Task.FromResult(0));
                    },
                                                  _icon,
                                                  await Context.Groups.ToListAsync())
                {
                    Header       = selectedCmd.Name,
                    Description  = selectedCmd.Description,
                    SelectedItem = selectedGroup,
                };
                control.ComboBox.DisplayMemberPath = "Name";
                BuiltinArgSckPnl.Children.Add(control);
            }
            break;

            case "RUN_SCENE":
            {
                Scene selectedScene = null;

                //Try to match supplied arg (sceneID) with a scene
                int sceneId = int.TryParse(StoredCommand.Argument, out sceneId) ? sceneId : 0;
                var scene   = await Context.Scenes.FirstOrDefaultAsync(o => o.Id == sceneId) ??
                              await Context.Scenes.FirstOrDefaultAsync();

                //If this is a new command or we cannot find the old scene,
                //just preselect the first scene.

                if (scene != null)
                {
                    selectedScene       = scene;
                    _selectedBuiltinArg = scene.Id.ToString(CultureInfo.InvariantCulture);
                }

                var control = new ComboboxControl(arg =>
                    {
                        var s = arg as Scene;
                        if (s != null)
                        {
                            _selectedBuiltinArg = s.Id.ToString(CultureInfo.InvariantCulture);
                        }

                        return(Task.FromResult(0));
                    },
                                                  _icon,
                                                  await Context.Scenes.ToListAsync())
                {
                    Header       = selectedCmd.Name,
                    Description  = selectedCmd.Description,
                    SelectedItem = selectedScene
                };

                control.ComboBox.DisplayMemberPath = "Name";
                BuiltinArgSckPnl.Children.Add(control);
                break;
            }

                #endregion
            default:
            {
                #region Built-in Commands
                switch (selectedCmd.ArgumentType)
                {
                case DataType.NONE:
                {
                    _selectedBuiltinArg = string.Empty;
                    BuiltinArgSckPnl.Children.Add(new TextBlock
                            {
                                Text   = "None",
                                Margin = new Thickness(30, 0, 0, 0)
                            });
                    break;
                }

                case DataType.BOOL:
                {
                    //get the current value from the value table list
                    bool defaultValue;
                    bool.TryParse(StoredCommand.Argument, out defaultValue);
                    _selectedBuiltinArg = defaultValue.ToString();

                    var control = new CheckboxControl(isChecked =>
                            {
                                _selectedBuiltinArg = isChecked.ToString();
                                return(Task.FromResult(0));
                            },
                                                      _icon)
                    {
                        Header      = selectedCmd.Name,
                        Description = selectedCmd.Description,
                        Value       = defaultValue
                    };
                    BuiltinArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.INTEGER:
                case DataType.DECIMAL:
                case DataType.BYTE:
                case DataType.SHORT:
                {
                    var defaultValue = "0";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    _selectedBuiltinArg = defaultValue;

                    var control = new NumericControl(value =>
                            {
                                _selectedBuiltinArg = value;
                                return(Task.FromResult(0));
                            },
                                                     _icon, selectedCmd.ArgumentType)
                    {
                        Header      = selectedCmd.Name,
                        Description = selectedCmd.Description,
                        Value       = defaultValue
                    };
                    BuiltinArgSckPnl.Children.Add(control);
                    break;
                }

                case DataType.STRING:
                {
                    //get the current value from the value table list
                    var defaultValue = "0";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    _selectedBuiltinArg = defaultValue;

                    var control = new StringControl(value =>
                            {
                                _selectedBuiltinArg = value;
                                return(Task.FromResult(0));
                            },
                                                    _icon)
                    {
                        Header      = selectedCmd.Name,
                        Description = selectedCmd.Description,
                        Value       = defaultValue
                    };
                    BuiltinArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.LIST:
                {
                    var defaultValue   = "";
                    var firstOrDefault = selectedCmd.Options.FirstOrDefault();
                    if (firstOrDefault != null)
                    {
                        var option = firstOrDefault.Name;

                        if (option != null)
                        {
                            defaultValue = option;
                        }
                    }

                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    _selectedBuiltinArg = defaultValue;

                    var control = new ComboboxControl(value =>
                            {
                                _selectedBuiltinArg = value.ToString();
                                return(Task.FromResult(0));
                            },
                                                      _icon,
                                                      selectedCmd.Options.Select(o => o.Name).ToList())
                    {
                        Header       = selectedCmd.Name,
                        Description  = selectedCmd.Description,
                        SelectedItem = defaultValue
                    };
                    BuiltinArgSckPnl.Children.Add(control);

                    break;
                }
                }
                #endregion
                break;
            }
            }
        }
Esempio n. 22
0
        private async void DeviceCmdsCmboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            var selectedDevice = (Device)DevicesCmboBox.SelectedItem;

            DeviceArgSckPnl.Children.Clear();

            var deviceTypeCommand = DeviceCmdsCmboBox.SelectedItem as DeviceTypeCommand;

            if (deviceTypeCommand != null)
            {
                #region Device Type Commands
                switch (deviceTypeCommand.ArgumentType)
                {
                case DataType.NONE:
                {
                    DeviceArgSckPnl.Children.Add(new TextBlock
                        {
                            Text   = "None",
                            Margin = new Thickness(30, 0, 0, 0)
                        });
                    break;
                }

                case DataType.BOOL:
                {
                    //get the current value from the value table list
                    bool defaultValue;
                    if (!bool.TryParse(StoredCommand.Argument, out defaultValue))
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == deviceTypeCommand.CustomData2);

                        if (dv != null)
                        {
                            bool.TryParse(dv.Value, out defaultValue);
                        }
                    }
                    _selectedDeviceArg = defaultValue.ToString();

                    var control = new CheckboxControl(isChecked =>
                        {
                            _selectedDeviceArg = isChecked.ToString();
                            return(Task.FromResult(0));
                        }, _icon)
                    {
                        Header      = deviceTypeCommand.Name,
                        Description = deviceTypeCommand.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.DECIMAL:
                case DataType.INTEGER:
                case DataType.BYTE:
                case DataType.SHORT:
                {
                    //get the current value from the value table list
                    var defaultValue = "0";
                    var dv           = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == deviceTypeCommand.CustomData2);

                    if (dv != null)
                    {
                        defaultValue = dv.Value;
                    }
                    _selectedDeviceArg = defaultValue;
                    var control = new NumericControl(value =>
                        {
                            _selectedDeviceArg = value;
                            return(Task.FromResult(0));
                        },
                                                     _icon, deviceTypeCommand.ArgumentType)
                    {
                        Header      = deviceTypeCommand.Name,
                        Description = deviceTypeCommand.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.STRING:
                {
                    //get the current value from the value table list
                    var defaultValue = "0";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    else
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == deviceTypeCommand.CustomData2);

                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                    }
                    _selectedDeviceArg = defaultValue;
                    var control = new StringControl(
                        value =>
                        {
                            _selectedDeviceArg = value;
                            return(Task.FromResult(0));
                        },
                        _icon)
                    {
                        Header      = deviceTypeCommand.Name,
                        Description = deviceTypeCommand.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.LIST:
                {
                    //get the current value from the value table list
                    var defaultValue = "0";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    else
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == deviceTypeCommand.CustomData2);

                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                    }
                    _selectedDeviceArg = defaultValue;
                    var control = new ComboboxControl(value =>
                        {
                            _selectedDeviceArg = value.ToString();
                            return(Task.FromResult(0));
                        },
                                                      _icon,
                                                      deviceTypeCommand.Options.Select(o => o.Name).ToList())
                    {
                        Header       = deviceTypeCommand.Name,
                        Description  = deviceTypeCommand.Description,
                        SelectedItem = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }
                }
                #endregion
            }

            var item = DeviceCmdsCmboBox.SelectedItem as DeviceCommand;
            if (item != null)
            {
                var dCmd = item;
                #region Device Commands

                switch (dCmd.ArgumentType)
                {
                case DataType.NONE:
                {
                    DeviceArgSckPnl.Children.Add(new TextBlock
                        {
                            Text   = "None",
                            Margin = new Thickness(30, 0, 0, 0)
                        });
                    break;
                }

                case DataType.BOOL:
                {
                    //get the current value from the value table list
                    bool defaultValue;
                    if (!bool.TryParse(StoredCommand.Argument, out defaultValue))
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == dCmd.CustomData2);

                        if (dv != null)
                        {
                            bool.TryParse(dv.Value, out defaultValue);
                        }
                    }
                    _selectedDeviceArg = defaultValue.ToString();

                    var control = new CheckboxControl(isChecked =>
                        {
                            _selectedDeviceArg = isChecked.ToString();
                            return(Task.FromResult(0));
                        }, _icon)
                    {
                        Header      = dCmd.Name,
                        Description = dCmd.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.DECIMAL:
                case DataType.INTEGER:
                case DataType.BYTE:
                case DataType.SHORT:
                {
                    //get the current value from the value table list
                    var defaultValue = StoredCommand.Argument;
                    if (defaultValue == "0")
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == dCmd.CustomData2);

                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                    }

                    _selectedDeviceArg = defaultValue;

                    var control = new NumericControl(value =>
                        {
                            _selectedDeviceArg = value;
                            return(Task.FromResult(0));
                        },
                                                     _icon, dCmd.ArgumentType)
                    {
                        Header      = dCmd.Name,
                        Description = dCmd.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);
                    break;
                }

                case DataType.STRING:
                {
                    //get the current value from the value table list
                    var defaultValue = "";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    else
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == dCmd.CustomData2);

                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                    }
                    _selectedDeviceArg = defaultValue;
                    var control = new StringControl(
                        value =>
                        {
                            _selectedDeviceArg = value;
                            return(Task.FromResult(0));
                        },
                        _icon)
                    {
                        Header      = dCmd.Name,
                        Description = dCmd.Description,
                        Value       = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }

                case DataType.LIST:
                {
                    //get the current value from the value table list
                    var defaultValue = "0";
                    if (!string.IsNullOrEmpty(StoredCommand.Argument))
                    {
                        defaultValue = StoredCommand.Argument;
                    }
                    else
                    {
                        var dv = await Context.DeviceValues.FirstOrDefaultAsync(o => o.DeviceId == selectedDevice.Id && o.UniqueIdentifier == dCmd.CustomData2);

                        if (dv != null)
                        {
                            defaultValue = dv.Value;
                        }
                    }
                    _selectedDeviceArg = defaultValue;
                    var control = new ComboboxControl(value =>
                        {
                            _selectedDeviceArg = value.ToString();
                            return(Task.FromResult(0));
                        },
                                                      _icon,
                                                      dCmd.Options.Select(o => o.Name).ToList())
                    {
                        Header       = dCmd.Name,
                        Description  = dCmd.Description,
                        SelectedItem = defaultValue
                    };
                    DeviceArgSckPnl.Children.Add(control);

                    break;
                }
                }
                #endregion
            }
        }