public static AbsMov Setup(PtzAxis ax, PtzView view) {
				AbsMov res = null;
				var posSlider = GetPosSliders(view)[ax];
				var speedSlider = GetSpeedSliders(view)[ax];
				do {
					var range = GetPosRanges(view)[ax];
					if (range == null) {
						break;
					}
					var min = range.min;
					var max = range.max;
					if (float.IsNaN(min) || float.IsNaN(max) || min > max) {
						break;
					}
					if (float.IsNegativeInfinity(min)) {
						min = float.MinValue;
					}
					if (float.IsPositiveInfinity(max)) {
						max = float.MaxValue;
					}
					if (posSlider == null) {
						res = new AbsMov(min, max, AbsRelSpeed.Create(ax, view, null));
						break;
					}
					res = new AbsMov(min, max, AbsRelSpeed.Create(ax, view, speedSlider));
					posSlider.Minimum = min;
					posSlider.Maximum = max;
					posSlider.SmallChange = (max-min)/100f;
					posSlider.LargeChange = (max-min)/10f;
					posSlider.Value = res.pos;
					posSlider.Visibility = Visibility.Visible;
					if (min != max) {
						posSlider.IsEnabled = true;
						posSlider.ValueChanged += (s, a) => {
							res.pos = res.rng.Coerce((float)a.NewValue);
						};
					} else {
						posSlider.IsEnabled = false;
					}
					return res;
				} while (false);

				if (posSlider != null) {
					posSlider.Visibility = Visibility.Collapsed;
				}
				if (speedSlider != null) {
					speedSlider.Visibility = Visibility.Collapsed;
				}

				return res;
			}
Esempio n. 2
0
        void BindData()
        {
            //CommonData
            //valuePresetName.CreateBinding(TextBox.TextProperty, this, x => x.PresetName, (m, v) => { m.PresetName = v; });
            //valuePresetsList.ItemsSource = Presets;
            //valuePresetsList.CreateBinding(ListBox.SelectedItemProperty, this, x => x.SelectedPreset, (m, v) => m.SelectedPreset = v);
            //ReloadPresets();

            captionErrorMessage.CreateBinding(TextBlock.TextProperty, this, x => x.ErrorMessage);

            // setup controls for absolute movements

            //var absPanTiltPositon = model.status.IfNotNull(s => s.position.IfNotNull(p => p.panTilt));
            //var absZoomPositon = model.status.IfNotNull(s => s.position.IfNotNull(p => p.zoom));

            relMov  = Ptz.Vec(ax => RelMov.Setup(ax, this));
            contMov = Ptz.Vec(ax => ContMov.Setup(ax, this));
            absMov  = Ptz.Vec(ax => AbsMov.Setup(ax, this));
            var hasRelativeMovements   = relMov.ToSeq().Any(x => x.value != null);
            var hasContinuousMovements = contMov.ToSeq().Any(x => x.value != null);
            var hasAbsoluteMovements   = absMov.ToSeq().Any(x => x.value != null);

            tglbtnAbsoluteMove.Visibility   = hasAbsoluteMovements ? Visibility.Visible : Visibility.Collapsed;
            tglbtnRelativeMove.Visibility   = hasRelativeMovements ? Visibility.Visible : Visibility.Collapsed;
            tglbtnContinuousMove.Visibility = hasContinuousMovements ? Visibility.Visible : Visibility.Collapsed;

            if (hasContinuousMovements)
            {
                SetMoveMode(PTZMoveModes.Continuous);
            }
            else if (hasRelativeMovements)
            {
                SetMoveMode(PTZMoveModes.Relative);
            }
            else if (hasAbsoluteMovements)
            {
                SetMoveMode(PTZMoveModes.Absolute);
            }


            //Buttons
            tglbtnAbsoluteMove.Checked   += (s, e) => this.SetMoveMode(PTZMoveModes.Absolute, tglbtnAbsoluteMove.IsChecked == true);
            tglbtnRelativeMove.Checked   += (s, e) => this.SetMoveMode(PTZMoveModes.Relative, tglbtnRelativeMove.IsChecked == true);
            tglbtnContinuousMove.Checked += (s, e) => this.SetMoveMode(PTZMoveModes.Continuous, tglbtnContinuousMove.IsChecked == true);


            btnContUp.PreviewMouseDown        += ContinuousUp_MouseDown;
            btnContUp.PreviewMouseUp          += ContinuousUp_MouseUp;
            btnContDown.PreviewMouseDown      += ContinuousDown_MouseDown;
            btnContDown.PreviewMouseUp        += ContinuousDown_MouseUp;
            btnContLeft.PreviewMouseDown      += ContinuousLeft_MouseDown;
            btnContLeft.PreviewMouseUp        += ContinuousLeft_MouseUp;
            btnContRight.PreviewMouseDown     += ContinuousRight_MouseDown;
            btnContRight.PreviewMouseUp       += ContinuousRight_MouseUp;
            btnContZoomMinus.PreviewMouseDown += ContinuousZoomMinus_MouseDown;
            btnContZoomMinus.PreviewMouseUp   += ContinuousZoomMinus_MouseUp;
            btnContZoomPlus.PreviewMouseDown  += ContinuousZoomPlus_MouseDown;
            btnContZoomPlus.PreviewMouseUp    += ContinuousZoomPlus_MouseUp;


            btnRelUp.Click        += RelUp_Click;
            btnRelRight.Click     += RelRight_Click;
            btnRelDown.Click      += RelDown_Click;
            btnRelLeft.Click      += RelLeft_Click;
            btnRelZoomMinus.Click += RelZoomMinus_Click;
            btnRelZoomPlus.Click  += RelZoomPlus_Click;

            btnAbsMove.Click += AbsoluteMove_Click;

            btnApplySettings.Click += new RoutedEventHandler(ApplySettings);
            btnDelete.Click        += new RoutedEventHandler(Delete);
            btnGoHome.Click        += new RoutedEventHandler(GoHome);
            btnGoTo.Click          += new RoutedEventHandler(GoTo);
            btnSetHome.Click       += new RoutedEventHandler(SetHome);
            btnSetPreset.Click     += new RoutedEventHandler(SetPreset);
        }
Esempio n. 3
0
            public static AbsMov Setup(PtzAxis ax, PtzView view)
            {
                AbsMov res         = null;
                var    posSlider   = GetPosSliders(view)[ax];
                var    speedSlider = GetSpeedSliders(view)[ax];

                do
                {
                    var range = GetPosRanges(view)[ax];
                    if (range == null)
                    {
                        break;
                    }
                    var min = range.min;
                    var max = range.max;
                    if (float.IsNaN(min) || float.IsNaN(max) || min > max)
                    {
                        break;
                    }
                    if (float.IsNegativeInfinity(min))
                    {
                        min = float.MinValue;
                    }
                    if (float.IsPositiveInfinity(max))
                    {
                        max = float.MaxValue;
                    }
                    if (posSlider == null)
                    {
                        res = new AbsMov(min, max, AbsRelSpeed.Create(ax, view, null));
                        break;
                    }
                    res = new AbsMov(min, max, AbsRelSpeed.Create(ax, view, speedSlider));
                    posSlider.Minimum     = min;
                    posSlider.Maximum     = max;
                    posSlider.SmallChange = (max - min) / 100f;
                    posSlider.LargeChange = (max - min) / 10f;
                    posSlider.Value       = res.pos;
                    posSlider.Visibility  = Visibility.Visible;
                    if (min != max)
                    {
                        posSlider.IsEnabled     = true;
                        posSlider.ValueChanged += (s, a) => {
                            res.pos = res.rng.Coerce((float)a.NewValue);
                        };
                    }
                    else
                    {
                        posSlider.IsEnabled = false;
                    }
                    return(res);
                } while (false);

                if (posSlider != null)
                {
                    posSlider.Visibility = Visibility.Collapsed;
                }
                if (speedSlider != null)
                {
                    speedSlider.Visibility = Visibility.Collapsed;
                }

                return(res);
            }