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; }
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); }
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); }