Exemple #1
0
        public IScrollbar GetScrollbar(string idPrefix, SliderDirection direction,
                                       IObject parent = null, float width = 15f, float height = 15f, float step = 10f, float buttonBorderWidth = 1f)
        {
            var slider = GetSlider($"{idPrefix}_{direction}Slider", null, null, 0f, 0f, 0f, parent);

            slider.ShouldClampValuesWhenChangingMinMax = false;
            slider.Direction             = direction;
            slider.HandleGraphics.Pivot  = slider.IsHorizontal() ? new PointF(1f, 0f) : new PointF(0f, 1f);
            slider.Graphics.Pivot        = new PointF(0f, 0f);
            slider.Graphics.Border       = _borders.SolidColor(Colors.DarkGray, 0.5f, true);
            slider.HandleGraphics.Border = _borders.SolidColor(Colors.White, 0.5f, true);
            float gutterSize = slider.IsHorizontal() ? height : width;

            HoverEffect.Add(slider.Graphics, Colors.Gray, Colors.LightGray);
            HoverEffect.Add(slider.HandleGraphics, Colors.DarkGray, Colors.WhiteSmoke);

            (var up, var down) = slider.IsHorizontal() ? (ArrowDirection.Left, ArrowDirection.Right) : (ArrowDirection.Up, ArrowDirection.Down);
            PointF pivot = slider.IsHorizontal() ? (1f, 0f) : (0f, 1f);

            (var upX, var upY) = slider.IsHorizontal() ? (0f, buttonBorderWidth / 2f) : (buttonBorderWidth / 2f, height - gutterSize * 2f);
            (var idle, var hovered, var pushed) = getArrowButtonAnimations(up, buttonBorderWidth);
            var upButton = GetButton($"{idPrefix}_Scroll{up}Button", idle, hovered, pushed, upX, upY, slider, width: gutterSize - buttonBorderWidth, height: gutterSize - buttonBorderWidth);

            upButton.Pivot = pivot;
            upButton.MouseClicked.Subscribe(args =>
            {
                if (direction == SliderDirection.TopToBottom || direction == SliderDirection.LeftToRight)
                {
                    slider.Decrease(step);
                }
                else
                {
                    slider.Increase(step);
                }
                _focus.HasKeyboardFocus = slider;
            });

            (var downX, var downY)  = slider.IsHorizontal() ? (width - gutterSize * 2f, buttonBorderWidth / 2f) : (buttonBorderWidth / 2f, 0f);
            (idle, hovered, pushed) = getArrowButtonAnimations(down, buttonBorderWidth);
            var downButton = GetButton($"{idPrefix}_Scroll{down}Button", idle, hovered, pushed, downX, downY, slider, width: gutterSize - buttonBorderWidth, height: gutterSize - buttonBorderWidth);

            downButton.Pivot = pivot;
            downButton.MouseClicked.Subscribe(args =>
            {
                if (direction == SliderDirection.TopToBottom || direction == SliderDirection.LeftToRight)
                {
                    slider.Increase(step);
                }
                else
                {
                    slider.Decrease(step);
                }
                _focus.HasKeyboardFocus = slider;
            });

            var scrollbar = new AGSScrollbar(upButton, downButton, slider);

            scrollbar.Step = step;
            return(scrollbar);
        }
 public Scroller(float lowValue, float highValue, Action <float> valueChanged, SliderDirection direction = SliderDirection.Vertical)
 {
     base.AddToClassList(Scroller.ussClassName);
     this.slider = new Slider(lowValue, highValue, direction, 20f)
     {
         name        = "unity-slider",
         viewDataKey = "Slider"
     };
     this.slider.AddToClassList(Scroller.sliderUssClassName);
     this.slider.RegisterValueChangedCallback(new EventCallback <ChangeEvent <float> >(this.OnSliderValueChange));
     this.lowButton = new RepeatButton(new Action(this.ScrollPageUp), 250L, 30L)
     {
         name = "unity-low-button"
     };
     this.lowButton.AddToClassList(Scroller.lowButtonUssClassName);
     base.Add(this.lowButton);
     this.highButton = new RepeatButton(new Action(this.ScrollPageDown), 250L, 30L)
     {
         name = "unity-high-button"
     };
     this.highButton.AddToClassList(Scroller.highButtonUssClassName);
     base.Add(this.highButton);
     base.Add(this.slider);
     this.direction    = direction;
     this.valueChanged = valueChanged;
 }
Exemple #3
0
        public Scroller(float lowValue, float highValue, System.Action <float> valueChanged, SliderDirection direction = SliderDirection.Vertical)
        {
            AddToClassList(ussClassName);

            // Add children in correct order
            slider = new Slider(lowValue, highValue, direction, kDefaultPageSize)
            {
                name = "unity-slider", viewDataKey = "Slider"
            };
            slider.AddToClassList(sliderUssClassName);
            slider.RegisterValueChangedCallback(OnSliderValueChange);

            lowButton = new RepeatButton(ScrollPageUp, ScrollWaitDefinitions.firstWait, ScrollWaitDefinitions.regularWait)
            {
                name = "unity-low-button"
            };
            lowButton.AddToClassList(lowButtonUssClassName);
            Add(lowButton);
            highButton = new RepeatButton(ScrollPageDown, ScrollWaitDefinitions.firstWait, ScrollWaitDefinitions.regularWait)
            {
                name = "unity-high-button"
            };
            highButton.AddToClassList(highButtonUssClassName);
            Add(highButton);
            Add(slider);

            this.direction    = direction;
            this.valueChanged = valueChanged;
        }
Exemple #4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public Slider(string label, float start = 0, float end = kDefaultHighValue, SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize)
     : base(label, start, end, direction, pageSize)
 {
     AddToClassList(ussClassName);
     labelElement.AddToClassList(labelUssClassName);
     visualInput.AddToClassList(inputUssClassName);
 }
Exemple #5
0
 public Slider(float start, float end, System.Action <float> valueChanged,
               SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize) :
     this(start, end, direction, pageSize)
 {
     // We set this event last, so that the construction does not call it.
     this.valueChanged = valueChanged;
 }
Exemple #6
0
        internal BaseSlider(string label, TValueType start, TValueType end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize)
            : base(label, null)
        {
            AddToClassList(ussClassName);
            labelElement.AddToClassList(labelUssClassName);
            visualInput.AddToClassList(inputUssClassName);

            this.direction = direction;
            this.pageSize  = pageSize;
            lowValue       = start;
            highValue      = end;
            pickingMode    = PickingMode.Ignore;

            visualInput.pickingMode = PickingMode.Position;
            var trackElement = new VisualElement()
            {
                name = "unity-tracker"
            };

            trackElement.AddToClassList(trackerUssClassName);
            visualInput.Add(trackElement);

            dragElement = new VisualElement()
            {
                name = "unity-dragger"
            };
            dragElement.RegisterCallback <GeometryChangedEvent>(UpdateDragElementPosition);
            dragElement.AddToClassList(draggerUssClassName);

            visualInput.Add(dragElement);

            clampedDragger = new ClampedDragger <TValueType>(this, SetSliderValueFromClick, SetSliderValueFromDrag);
            visualInput.AddManipulator(clampedDragger);
        }
Exemple #7
0
        // Update is called once per frame
        void Update()
        {
            if (isOpen)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    x = Input.mousePosition.x;
                }

                if (Input.GetMouseButtonUp(0))
                {
                    float xOffset = Input.mousePosition.x - x;

                    if (Mathf.Abs(xOffset) > CHECK_DISTANCE)
                    {
                        SliderDirection dir = xOffset > 0 ? SliderDirection.LEFT_TO_RIGHT : SliderDirection.RIGHT_TO_LEFT;

                        SuperEvent ev = new SuperEvent(SCREEN_SLIDER_EVENT);

                        ev.data = new object[] { dir };

                        SuperFunction.Instance.DispatchEvent(gameObject, ev);
                    }
                }
            }
        }
Exemple #8
0
        public void RightButtonShouldChangeTheSliderImage(SliderDirection sliderButton)
        {
            this.homePage.Open();
            var initialSliderStyle = this.homePage.Slider.SliderStyle;

            this.homePage.Slider.ChangeImage(sliderButton);

            Assert.AreNotEqual(initialSliderStyle, this.homePage.Slider.SliderStyle, "Slider buttons didn't change the image");
        }
        internal BaseSlider(string label, TValueType start, TValueType end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize)
            : base(label, null)
        {
            AddToClassList(ussClassName);
            labelElement.AddToClassList(labelUssClassName);
            visualInput.AddToClassList(inputUssClassName);

            this.direction = direction;
            this.pageSize  = pageSize;
            lowValue       = start;
            highValue      = end;
            pickingMode    = PickingMode.Ignore;

            dragContainer = new VisualElement()
            {
                name = "unity-drag-container"
            };
            dragContainer.AddToClassList(dragContainerUssClassName);
            visualInput.Add(dragContainer);

            trackElement = new VisualElement()
            {
                name = "unity-tracker", usageHints = UsageHints.DynamicColor
            };
            trackElement.AddToClassList(trackerUssClassName);
            dragContainer.Add(trackElement);

            dragBorderElement = new VisualElement()
            {
                name = "unity-dragger-border"
            };
            dragBorderElement.AddToClassList(draggerBorderUssClassName);
            dragContainer.Add(dragBorderElement);

            dragElement = new VisualElement()
            {
                name = "unity-dragger", usageHints = UsageHints.DynamicTransform
            };
            dragElement.RegisterCallback <GeometryChangedEvent>(UpdateDragElementPosition);
            dragElement.AddToClassList(draggerUssClassName);
            dragContainer.Add(dragElement);

            clampedDragger            = new ClampedDragger <TValueType>(this, SetSliderValueFromClick, SetSliderValueFromDrag);
            dragContainer.pickingMode = PickingMode.Position;
            dragContainer.AddManipulator(clampedDragger);

            RegisterCallback <KeyDownEvent>(OnKeyDown);
            RegisterCallback <NavigationMoveEvent>(OnNavigationMove);

            UpdateTextFieldVisibility();

            var mouseDragger = new FieldMouseDragger <TValueType>(this);

            mouseDragger.SetDragZone(labelElement);
            labelElement.AddToClassList(labelDraggerVariantUssClassName);
        }
Exemple #10
0
        public ValueSlider(string label, float start, float end, SliderDirection direction, int pageSize,
                           float defaultValue = 0f) : base(label, start, end, direction, pageSize)
        {
            var newFloatField = new FloatField();

            value = defaultValue;
            this.RegisterValueChangedCallback(evt => { newFloatField.SetValueWithoutNotify(evt.newValue); });
            newFloatField.RegisterValueChangedCallback(evt => { value = evt.newValue; });
            Add(newFloatField);
            newFloatField.SetValueWithoutNotify(value);
        }
        async Task StartSliderMovement(SliderDirection direction)
        {
            // Direction
            var directionCommand = direction == SliderDirection.Right ? "dr#" : "dl#";
            await bluetoothLeService.WriteToServiceCharacteristicAsync(directionCommand, serviceUuid, characteristicUuid);

            // Speed
            var speedValue = 2500 - (int)SpeedSlider.Value;
            await bluetoothLeService.WriteToServiceCharacteristicAsync($"sp{speedValue}#", serviceUuid, characteristicUuid);

            // Start
            await bluetoothLeService.WriteToServiceCharacteristicAsync("on#", serviceUuid, characteristicUuid);
        }
        public ConfigurationViewModel(IDialogService dialogService, IBluetoothLeService bluetoothLeService)
        {
            this.dialogService      = dialogService;
            this.bluetoothLeService = bluetoothLeService;

            exposureTimeOptions = new ObservableCollection <ExposureTime>(ExposureTime.Times);
            directionOptions    = new ObservableCollection <SliderDirection>(Enum.GetValues(typeof(SliderDirection)).Cast <SliderDirection>());

            // Set defaults
            exposureTime  = exposureTimeOptions.FirstOrDefault(e => e.Milliseconds == 8);
            direction     = directionOptions.FirstOrDefault();
            totalSteps    = 10000;
            numberOfShots = 10;
            Interval      = 5;
        }
        internal BaseSlider(string label, TValueType start, TValueType end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = 0f)
        {
            this.< clamped > k__BackingField = true;
            base..ctor(label, null);
            base.AddToClassList(BaseSlider <TValueType> .ussClassName);
            base.labelElement.AddToClassList(BaseSlider <TValueType> .labelUssClassName);
            base.visualInput.AddToClassList(BaseSlider <TValueType> .inputUssClassName);
            this.direction               = direction;
            this.pageSize                = pageSize;
            this.lowValue                = start;
            this.highValue               = end;
            base.pickingMode             = PickingMode.Ignore;
            base.visualInput.pickingMode = PickingMode.Position;
            this.dragContainer           = new VisualElement
            {
                name = "unity-drag-container"
            };
            this.dragContainer.AddToClassList(BaseSlider <TValueType> .dragContainerUssClassName);
            base.visualInput.Add(this.dragContainer);
            VisualElement visualElement = new VisualElement
            {
                name = "unity-tracker"
            };

            visualElement.AddToClassList(BaseSlider <TValueType> .trackerUssClassName);
            this.dragContainer.Add(visualElement);
            this.dragBorderElement = new VisualElement
            {
                name = "unity-dragger-border"
            };
            this.dragBorderElement.AddToClassList(BaseSlider <TValueType> .draggerBorderUssClassName);
            this.dragContainer.Add(this.dragBorderElement);
            this.dragElement = new VisualElement
            {
                name = "unity-dragger"
            };
            this.dragElement.RegisterCallback <GeometryChangedEvent>(new EventCallback <GeometryChangedEvent>(this.UpdateDragElementPosition), TrickleDown.NoTrickleDown);
            this.dragElement.AddToClassList(BaseSlider <TValueType> .draggerUssClassName);
            this.dragContainer.Add(this.dragElement);
            this.clampedDragger = new ClampedDragger <TValueType>(this, new Action(this.SetSliderValueFromClick), new Action(this.SetSliderValueFromDrag));
            base.visualInput.AddManipulator(this.clampedDragger);
            base.RegisterCallback <KeyDownEvent>(new EventCallback <KeyDownEvent>(this.OnKeyDown), TrickleDown.NoTrickleDown);
            this.UpdateTextFieldVisibility();
        }
Exemple #14
0
        public void ChangeImage(SliderDirection direction)
        {
            switch (direction)
            {
            case SliderDirection.Left:
                this.LeftButton.Click();
                Reporter.LogPassingTestStepForBuglLogger($"Slide to the {direction}");
                break;

            case SliderDirection.Right:
                this.RightButton.Click();
                Reporter.LogPassingTestStepForBuglLogger($"Slide to the {direction}");
                break;

            default:
                Reporter.LogTestStepForBugLogger(Status.Fail, "Unable to change the slide. Invalid direction.");
                throw new InvalidOperationException("Invalid slider change direction");
            }
        }
        public BaseSlider(T start, T end, SliderDirection direction, float pageSize = kDefaultPageSize)
        {
            this.direction = direction;
            this.pageSize  = pageSize;
            lowValue       = start;
            highValue      = end;

            Add(new VisualElement()
            {
                name = "TrackElement"
            });

            dragElement = new VisualElement()
            {
                name = "DragElement"
            };
            dragElement.RegisterCallback <GeometryChangedEvent>(UpdateDragElementPosition);

            Add(dragElement);

            clampedDragger = new ClampedDragger <T>(this, SetSliderValueFromClick, SetSliderValueFromDrag);
            this.AddManipulator(clampedDragger);
        }
Exemple #16
0
        static float GetNormalizedValueFromCoords(SliderDirection sliderDirection, float3 inputPos, float2 lowLeft, float2 uppRight)
        {
            float inputPosSingleAxis;
            float lowerBoundSingleAxis;
            float upperBoundSingleAxis;

            switch (sliderDirection)
            {
            case SliderDirection.LeftToRight:
                inputPosSingleAxis   = inputPos.x;
                lowerBoundSingleAxis = lowLeft.x;
                upperBoundSingleAxis = uppRight.x;
                return(math.clamp((inputPosSingleAxis - lowerBoundSingleAxis) / (upperBoundSingleAxis - lowerBoundSingleAxis), 0f, 1f));

            case SliderDirection.RightToLeft:
                inputPosSingleAxis   = inputPos.x;
                lowerBoundSingleAxis = lowLeft.x;
                upperBoundSingleAxis = uppRight.x;
                return(1 - math.clamp((inputPosSingleAxis - lowerBoundSingleAxis) / (upperBoundSingleAxis - lowerBoundSingleAxis), 0f, 1f));

            case SliderDirection.BottomToTop:
                inputPosSingleAxis   = inputPos.y;
                lowerBoundSingleAxis = lowLeft.y;
                upperBoundSingleAxis = uppRight.y;
                return(math.clamp((inputPosSingleAxis - lowerBoundSingleAxis) / (upperBoundSingleAxis - lowerBoundSingleAxis), 0f, 1f));

            case SliderDirection.TopToBottom:
                inputPosSingleAxis   = inputPos.y;
                lowerBoundSingleAxis = lowLeft.y;
                upperBoundSingleAxis = uppRight.y;
                return(1 - math.clamp((inputPosSingleAxis - lowerBoundSingleAxis) / (upperBoundSingleAxis - lowerBoundSingleAxis), 0f, 1f));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public Scroller(float lowValue, float highValue, System.Action <float> valueChanged, SliderDirection direction = SliderDirection.Vertical)
        {
            this.direction    = direction;
            this.valueChanged = valueChanged;

            // Add children in correct order
            slider = new Slider(lowValue, highValue, direction, kDefaultPageSize)
            {
                name = "Slider", persistenceKey = "Slider"
            };
            slider.OnValueChanged(OnSliderValueChange);

            Add(slider);
            lowButton = new ScrollerButton(ScrollPageUp, ScrollWaitDefinitions.firstWait, ScrollWaitDefinitions.regularWait)
            {
                name = "LowButton"
            };
            Add(lowButton);
            highButton = new ScrollerButton(ScrollPageDown, ScrollWaitDefinitions.firstWait, ScrollWaitDefinitions.regularWait)
            {
                name = "HighButton"
            };
            Add(highButton);
        }
Exemple #18
0
 public SliderInt(string label, int start = 0, int end = 10, SliderDirection direction = SliderDirection.Horizontal, float pageSize = 0f) : base(label, start, end, direction, pageSize)
 {
     base.AddToClassList(SliderInt.ussClassName);
     base.labelElement.AddToClassList(SliderInt.labelUssClassName);
     base.visualInput.AddToClassList(SliderInt.inputUssClassName);
 }
Exemple #19
0
 public SliderInt(int start, int end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = 0f) : this(null, start, end, direction, pageSize)
 {
 }
 public SliderInt(int start, int end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize) :
     base(start, end, direction, pageSize)
 {
 }
Exemple #21
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public Slider(float start, float end, SliderDirection direction = SliderDirection.Horizontal, float pageSize = kDefaultPageSize)
     : this(null, start, end, direction, pageSize)
 {
 }
Exemple #22
0
        static RectTransform FillRectTransformFromSlider(RectTransform rectTransform, float anchorVal, SliderDirection direction)
        {
            switch (direction)
            {
            case SliderDirection.LeftToRight:
                rectTransform.AnchorMin = 0f;
                rectTransform.AnchorMax = new float2(anchorVal, 1f);
                break;

            case SliderDirection.RightToLeft:
                rectTransform.AnchorMin = new float2(1f - anchorVal, 0f);
                rectTransform.AnchorMax = 1f;
                break;

            case SliderDirection.BottomToTop:
                rectTransform.AnchorMin = 0f;
                rectTransform.AnchorMax = new float2(1f, anchorVal);
                break;

            case SliderDirection.TopToBottom:
                rectTransform.AnchorMin = new float2(0f, 1f - anchorVal);
                rectTransform.AnchorMax = 1f;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(rectTransform);
        }