using MahApps.Metro.Controls; 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.BL.Entities; using Tango.MachineStudio.Developer.Converters; using Tango.MachineStudio.Developer.ViewModels; using Tango.BL; 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.ActiveJob != null) { List segments = new List(); foreach (var s in _vm.ActiveJob.Segments) { segments.Add(s); if (_vm.ActiveJob.EnableInterSegment && _vm.ActiveJob.Segments.IndexOf(s) != _vm.ActiveJob.Segments.Count - 1) { segments.Add(new Segment() { Length = _vm.ActiveJob.InterSegmentLength, BrushStops = new System.Collections.ObjectModel.ObservableCollection() { new BrushStop() { ColorSpace = new ColorSpace(), Color = Colors.White, } }, }); } } jobBrushList.ItemsSource = segments; } } private void Offset_Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { UpdateGradientBrushDisplay(); } private void UpdateGradientBrushDisplay() { if (_vm != null && _vm.SelectedSegment != null) { SegmentToGradientStopsConverter converter = new SegmentToGradientStopsConverter(); GradientStopCollection stops = converter.Convert(_vm.SelectedSegment, null, null, null) as GradientStopCollection; gradientBrush.GradientStops = stops; } else { if (gradientBrush != null) { 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; } private void OnSegmentDrop(object sender, DropEventArgs e) { _vm.OnDropSegment(e.Draggable.DataContext as Segment, e.Droppable.DataContext as Segment); } private async void TextBox_GotFocus(object sender, RoutedEventArgs e) { await Task.Delay(200); TextBox txtBox = sender as TextBox; txtBox.SelectAll(); } private void TextBox_PreviewMouseUp(object sender, MouseButtonEventArgs e) { e.Handled = true; } } }