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 System.Windows.Threading; using Tango.DragAndDrop; using Tango.Integration.Observables; using Tango.MachineStudio.Developer.Converters; using Tango.MachineStudio.Developer.ViewModels; namespace Tango.MachineStudio.Developer.Views { /// /// Interaction logic for JobView.xaml /// public partial class JobView : 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(JobView), new PropertyMetadata(null)); public JobView() { InitializeComponent(); DraggingSurface = draggingSurface; this.Loaded += (x, y) => { _vm = DataContext as MainViewVM; }; _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 OnDropAvailableGraph(object sender, DropEventArgs e) { if (e.Draggable.DataContext is TechMonitor) { _vm.OnDropAvailableGraph(e.Draggable.DataContext as TechMonitor); } } 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(); } private void OnJobStartClick(object sender, RoutedEventArgs e) { } private void HiveColorPickerControl_SelectedColorChanged(object sender, Color e) { UpdateGradientBrushDisplay(); } private void Popup_MouseDown(object sender, MouseButtonEventArgs e) { e.Handled = true; } } }