예제 #1
0
        private void HandleIncreaseMaximum(IParameterViewModel parameterViewModel)
        {
            var maximum = parameterViewModel.Maximum;
            var nextOOM = maximum.GetNextOrderOfMagnitude();

            parameterViewModel.Maximum = nextOOM;
        }
예제 #2
0
        private void HandleDecreaseMinimum(IParameterViewModel parameterViewModel)
        {
            var minimum     = parameterViewModel.Minimum;
            var previousOOM = minimum.GetPreviousOrderOfMagnitude();

            parameterViewModel.Minimum = previousOOM;
        }
예제 #3
0
        private void HandleDecreaseMaximum(IParameterViewModel parameterViewModel)
        {
            var maximum     = parameterViewModel.Maximum;
            var previousOOM = maximum.GetPreviousOrderOfMagnitude();

            if (!parameterViewModel.NValue.HasValue || previousOOM > parameterViewModel.NValue)
            {
                parameterViewModel.Maximum = previousOOM;
            }
        }
예제 #4
0
        private void HandleIncreaseMinimum(IParameterViewModel parameterViewModel)
        {
            var minimum = parameterViewModel.Minimum;
            var nextOOM = minimum.GetNextOrderOfMagnitude();

            if (!parameterViewModel.NValue.HasValue || nextOOM < parameterViewModel.NValue)
            {
                parameterViewModel.Minimum = nextOOM;
            }
        }
예제 #5
0
        private void HandleResetValue(IParameterViewModel parameterViewModel)
        {
            RequireTrue(parameterViewModel.IsSelected);

            if (parameterViewModel.NValue.HasValue)
            {
                // have value so request is for slider reset
                var value   = parameterViewModel.NValue.Value;
                var minimum = value.GetPreviousOrderOfMagnitude();
                var maximum = value.GetNextOrderOfMagnitude();
                parameterViewModel.Set(value, minimum, maximum);
            }
            else
            {
                // non-numerical text, or no text at all...

                var currentTValue = parameterViewModel.TValue;
                if (currentTValue.IsAString())
                {
                    // handle one specific non-numeric case
                    var valid = false; // want "min < val < max"

                    var parts = currentTValue.Split('<');

                    if (parts.Length == 3)
                    {
                        var validMinimum = TryParse(parts[0], out double minimum);
                        var validValue   = TryParse(parts[1], out double value);
                        var validMaximum = TryParse(parts[2], out double maximum);
                        valid = validMinimum && validValue && validMaximum && minimum < value && value < maximum;
                        if (valid)
                        {
                            parameterViewModel.Set(value, minimum, maximum);
                        }
                    }

                    if (!valid)
                    {
                        _appService.Notify(
                            NotificationType.Error,
                            nameof(ParameterViewModel),
                            nameof(HandleResetValue),
                            "Invalid interval. Format is min < val < max."
                            );
                    }
                }
                else
                {
                    // no entry so user wants original back
                    parameterViewModel.TValue = parameterViewModel.DefaultValue;
                }
            }
        }
예제 #6
0
 private void HandleToggleSelect(IParameterViewModel parameterViewModel)
 {
     parameterViewModel.IsSelected = !parameterViewModel.IsSelected;
 }