aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Themes/Generic.xaml
blob: 6c016ae846c39e98113092805785701947a6a4e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:Tango.Scripting.IDE.Controls"
    xmlns:local="clr-namespace:Tango.Scripting.IDE">

    <Style TargetType="{x:Type controls:SolutionItemControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type controls:SolutionItemControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel Orientation="Horizontal" Background="Transparent">
                            <Image VerticalAlignment="Center" Width="16" Height="16" Source="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=SolutionItem.Image}" />
                            <TextBlock Margin="5 0 0 0" VerticalAlignment="Center" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=SolutionItem.Name}"></TextBlock>
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="{x:Type controls:TabConrolClose}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type controls:TabConrolClose}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>
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;
using static Tango.SharedUI.Controls.NavigationControl;

namespace Tango.MachineStudio.Developer.Views
{
    /// <summary>
    /// Interaction logic for JobView.xaml
    /// </summary>
    public partial class JobView : UserControl, INavigationView
    {
        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.OrderedSegments)
                {
                    segments.Add(s);

                    if (_vm.ActiveJob.EnableInterSegment && _vm.ActiveJob.OrderedSegments.IndexOf(s) != _vm.ActiveJob.OrderedSegments.Count - 1)
                    {
                        segments.Add(new Segment()
                        {
                            Length = _vm.ActiveJob.InterSegmentLength,
                            BrushStops = new SynchronizedObservableCollection<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 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();
        }

        public void OnNavigatedTo()
        {
            _vm.IsJobVisible = true;
        }

        public void OnNavigatedFrom()
        {
            _vm.IsJobVisible = false;
        }

        private void ListBoxItem_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            listBoxSegments.SelectedItem = (sender as ListBoxItem).DataContext;
        }

        private void listBoxSegments_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {

        }

        private void listBoxSegments_MouseEnter(object sender, MouseEventArgs e)
        {
            Keyboard.ClearFocus();
            listBoxSegments.Focus();
        }

        private void OnBrushStopFieldValueChanged(object sender, RoutedPropertyChangedEventArgs<double?> e)
        {
            try
            {
                BrushStop stop = null;
                var dataContext = (sender as FrameworkElement).DataContext;

                if (dataContext != null)
                {
                    if (dataContext is BrushStop)
                    {
                        stop = dataContext as BrushStop;
                    }
                    else
                    {
                        stop = (dataContext as LiquidVolume).BrushStop;
                    }

                    _vm.OnBrushStopFieldValueChanged(stop);
                }
            }
            catch { }
        }

        private void OnBrushStopMouseDown(object sender, MouseButtonEventArgs e)
        {
            listStops.SelectedItem = (sender as ListBoxItem).DataContext;
        }

        private void OnBrushStopColorSpace_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            _vm.OnBrushStopColorSpaceChanged((sender as ComboBox).DataContext as BrushStop);
        }
    }
}