using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.Integration.Observables; using Tango.DragAndDrop; using Tango.MachineStudio.Developer.Converters; using Tango.MachineStudio.Developer.ViewModels; using System.Windows.Threading; namespace Tango.MachineStudio.Developer.Views { /// /// Interaction logic for MainView.xaml /// public partial class MainView : UserControl { private MainViewVM _vm; private DispatcherTimer _jobBrushTimer; public DraggingSurface DraggingSurface { get { return (DraggingSurface)GetValue(DraggingSurfaceProperty); } set { SetValue(DraggingSurfaceProperty, value); } } public static readonly DependencyProperty DraggingSurfaceProperty = DependencyProperty.Register("DraggingSurface", typeof(DraggingSurface), typeof(MainView), new PropertyMetadata(null)); public MainView() { InitializeComponent(); DraggingSurface = draggingSurface; this.Loaded += (x, y) => { _vm = DataContext as MainViewVM; }; chkGraphs.Checked += (x, y) => { graphRowDefinition.Height = new GridLength(440, GridUnitType.Pixel); }; chkGraphs.Unchecked += (x, y) => { graphRowDefinition.Height = new GridLength(80, GridUnitType.Pixel); }; _jobBrushTimer = new DispatcherTimer(); _jobBrushTimer.Interval = TimeSpan.FromSeconds(1); _jobBrushTimer.Tick += _jobBrushTimer_Tick; _jobBrushTimer.Start(); } private void _jobBrushTimer_Tick(object sender, EventArgs e) { if (_vm != null && _vm.SelectedJob != null) { List segments = new List(); foreach (var s in _vm.SelectedJob.Segments) { segments.Add(s); if (_vm.SelectedJob.EnableInterSegment && _vm.SelectedJob.Segments.IndexOf(s) != _vm.SelectedJob.Segments.Count - 1) { segments.Add(new Segment() { Length = _vm.SelectedJob.InterSegmentLength, BrushStops = new System.Collections.ObjectModel.ObservableCollection() { new BrushStop() { Color = Colors.White, } }, }); } } jobBrushList.ItemsSource = segments; } } private void OnDropAvailableSensor(object sender, DropEventArgs e) { if (e.Draggable.DataContext is Sensor) { _vm.OnDropAvailableSensor(e.Draggable.DataContext as Sensor); } } private void ColorPickerCombo_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs e) { UpdateGradientBrushDisplay(); } private void Offset_Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { UpdateGradientBrushDisplay(); } private void UpdateGradientBrushDisplay() { if (_vm.SelectedSegment != null) { SegmentToGradientStopsConverter converter = new SegmentToGradientStopsConverter(); GradientStopCollection stops = converter.Convert(_vm.SelectedSegment, null, null, null) as GradientStopCollection; gradientBrush.GradientStops = stops; } else { gradientBrush.GradientStops = new GradientStopCollection(); } } private void OnBrushStopBorderDrop(object sender, DropEventArgs e) { if (e.Draggable.DataContext is BrushStop) { _vm.OnDropBrushStop(e.Draggable.DataContext as BrushStop, e.Droppable.DataContext as BrushStop); } } private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { UpdateGradientBrushDisplay(); } } }