aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/generated by cgit v1.3.1 (git 2.54.0) at 2026-07-16 10:38:48 +0000
181'>181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
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;
using Tango.Settings;
using Tango.Core;
using Tango.SharedUI.Editors;
using static Tango.MachineStudio.Developer.DeveloperModuleSettings;

namespace Tango.MachineStudio.Developer.Views
{
    /// <summary>
    /// Interaction logic for JobView.xaml
    /// </summary>
    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<Segment> segments = new List<Segment>();
                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<BrushStop>()
                            {
                                new BrushStop()
                                {
                                     ColorSpace = new ColorSpace(),
                                     Color = Colors.White,
                                }
                            },
                        });
                    }
                }

                jobBrushList.ItemsSource = segments;
                UpdateGradientBrushDisplay();
            }
        }

        private void Offset_Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> 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 color)
        {
            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;
        }

        private void ParameterizedEditor_GeneratingItems(object sender, SharedUI.Editors.ParameterizedEditor.GeneratingItemsEventArgs e)
        {
            var settings = SettingsManager.Default.GetOrCreate<DeveloperModuleSettings>();

            List<ParameterItem> items = e.Result.ToList();

            if (settings.ProcessParametersIndices.Count > 0)
            {
                items.Clear();

                foreach (var item in settings.ProcessParametersIndices.OrderBy(x => x.Index))
                {
                    var p = e.Source.SingleOrDefault(x => x.Name == item.Name);

                    if (p != null)
                    {
                        items.Add(p);
                    }
                }
            }
            else
            {
                ProcessParametersTable p = new ProcessParametersTable();
                var pp = p.CreateParametersCollection(Core.ParameterItemMode.Binding);

                foreach (var item in pp)
                {
                    settings.ProcessParametersIndices.Add(new ParameterIndex()
                    {
                        Index = pp.IndexOf(item),
                        Name = item.Name
                    });
                }

                settings.Save();
            }

            e.Result = items;
        }

        private void OnProcessParameterDropped(object sender, DropEventArgs e)
        {
            ParameterItem draggedItem = e.Draggable.DataContext as ParameterItem;
            ParameterItem droppedItem = e.Droppable.DataContext as ParameterItem;

            if (draggedItem != null && droppedItem != null && draggedItem.ParameterizedObject == droppedItem.ParameterizedObject)
            {
                var settings = SettingsManager.Default.GetOrCreate<DeveloperModuleSettings>();

                var parameters = draggedItem.ParameterizedObject.Parameters;

                var draggedSettingItem = settings.ProcessParametersIndices.FirstOrDefault(x => x.Name == draggedItem.Name);
                var droppedSettingItem = settings.ProcessParametersIndices.FirstOrDefault(x => x.Name == droppedItem.Name);

                if (draggedSettingItem != null && droppedSettingItem != null)
                {
                    if (draggedSettingItem.Index > droppedSettingItem.Index)
                    {
                        draggedSettingItem.Index = droppedSettingItem.Index - 1;
                    }
                    else
                    {
                        draggedSettingItem.Index = droppedSettingItem.Index + 1;
                    }

                    int index = 1;

                    foreach (var settingItem in settings.ProcessParametersIndices.OrderBy(x => x.Index))
                    {
                        settingItem.Index = index++;
                    }
                }

                settings.Save();
            }

            var editor = e.Draggable.FindAncestor<ParameterizedEditor>();

            if (editor != null)
            {
                editor.ParameterizedObject = null;
                editor.ParameterizedObject = draggedItem.ParameterizedObject;
            }
        }

        private void PopupButton_Checked(object sender, RoutedEventArgs e)
        {
            _vm.OnHivePopupOpened();
        }

        private void BrushPicker_ColorChanged(object sender, BrushPicker.ColorChangedEventArgs e)
        {
           
        }

        private void ColorCanvas_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e)
        {
            if (e.NewValue.HasValue)
            {
                _vm.OnSelectedBrushColorChanged((Color)e.NewValue);
            }
        }

        private void PopupButton_Unchecked(object sender, RoutedEventArgs e)
        {
            _vm.OnHivePopupClosed();
        }
    }
}