aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Logging/Converters/MachineEventToXConverter.cs
blob: 193a63ffc395069330b3e1043d4deadf581af39f (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using Tango.BL.Entities;
using Tango.MachineStudio.Logging.Helpers;
using Tango.MachineStudio.Logging.ViewModels;

namespace Tango.MachineStudio.Logging.Converters
{
    public class MachineEventToXConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Length == 3)
            {
                MachinesEvent ev = values[0] as MachinesEvent;

                if (ev != null)
                {
                    ObservableCollection<TimelineEventGroup> groups = values[1] as ObservableCollection<TimelineEventGroup>;

                    if (groups.Count > 0)
                    {
                        double scale = (double)values[2];

                        DateTime maxTime = groups.SelectMany(x => x.Events).Max(x => x.DateTime);
                        DateTime minTime = groups.SelectMany(x => x.Events).Min(x => x.DateTime);

                        TimeSpan range = maxTime - minTime;
                        TimeSpan time = maxTime - ev.DateTime;

                        time = range - time;

                        return TimelineHelper.ConvertTimeToPixels(time, scale);
                    }
                }
            }

            return 0.0;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
<MenuItem Header="Edit"> <MenuItem Header="Cut" MinWidth="150" Command="Cut"> <MenuItem.Icon> <fa:ImageAwesome Icon="Cut" Width="12" Foreground="Gainsboro" Margin="2" /> </MenuItem.Icon> </MenuItem> <Separator/> <MenuItem Header="Copy" Command="Copy"> <MenuItem.Icon> <fa:ImageAwesome Icon="Copy" Width="12" Foreground="Gainsboro" Margin="2" /> </MenuItem.Icon> </MenuItem> <MenuItem Header="Paste" Command="Paste"> <MenuItem.Icon> <fa:ImageAwesome Icon="Paste" Width="12" Foreground="Gainsboro" Margin="2" /> </MenuItem.Icon> </MenuItem> <Separator/> <MenuItem Header="Undo" Command="Undo"> <MenuItem.Icon> <fa:ImageAwesome Icon="Undo" Width="12" Foreground="Gainsboro" Margin="2" /> </MenuItem.Icon> </MenuItem> <MenuItem Header="Redo" Command="Redo"> <MenuItem.Icon> <fa:ImageAwesome Icon="Repeat" Width="12" Foreground="Gainsboro" Margin="2" /> </MenuItem.Icon> </MenuItem> </MenuItem> <MenuItem Header="Debug"> <MenuItem Header="Run (F5)" MinWidth="150" Command="{Binding RunCommand}" > <MenuItem.Icon> <fa:ImageAwesome Icon="Play" Width="12" Margin="2"> <fa:ImageAwesome.Style> <Style TargetType="fa:ImageAwesome"> <Setter Property="Foreground" Value="#8DD28A"></Setter> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="Gray"></Setter> </Trigger> </Style.Triggers> </Style> </fa:ImageAwesome.Style> </fa:ImageAwesome> </MenuItem.Icon> </MenuItem> <MenuItem Header="Stop" Command="{Binding StopCommand}" IsEnabled="False"> <MenuItem.Icon> <fa:ImageAwesome Icon="Stop" Width="12" Margin="2"> <fa:ImageAwesome.Style> <Style TargetType="fa:ImageAwesome"> <Setter Property="Foreground" Value="#F38B76"></Setter> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="Gray"></Setter> </Trigger> </Style.Triggers> </Style> </fa:ImageAwesome.Style> </fa:ImageAwesome> </MenuItem.Icon> </MenuItem> </MenuItem> </Menu> <DockPanel Grid.Row="1"> <materialDesign:ColorZone Background="#2E2E2E" Padding="16" materialDesign:ShadowAssist.ShadowDepth="Depth2" Mode="PrimaryMid" DockPanel.Dock="Top"> <DockPanel> <Grid> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Height="60" HorizontalAlignment="Center"> <Image Source="/Images/machine-trans.png" RenderOptions.BitmapScalingMode="Fant"></Image> <TextBlock Text="Machine Studio" VerticalAlignment="Center" Margin="20 0 0 0" FontSize="36"/> </StackPanel> </Grid> </DockPanel> </materialDesign:ColorZone> <Grid> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <Grid Grid.Row="1" x:Name="grid"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="467*"/> <RowDefinition Height="5"/> <RowDefinition Height="200*"/> </Grid.RowDefinitions> <controls:ScriptEditorControl BorderThickness="0 1 0 0" BorderBrush="#616161" Text="{Binding Code,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" RunCommand="{Binding RunCommand}" StopCommand="{Binding StopCommand}" HighlightTypes="{Binding HighlightTypes}" IntellisenseTypes="{Binding IntellisenseTypes}"></controls:ScriptEditorControl> <GridSplitter Grid.Row="1" Background="#101010" Foreground="#202020" BorderBrush="#202020" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Center" /> <Grid Grid.Row="2" Background="#1B1B1B"> <Grid.RowDefinitions> <RowDefinition Height="20"/> <RowDefinition Height="57*"/> </Grid.RowDefinitions> <Border BorderThickness="0 0 0 1" BorderBrush="#595959"> <TextBlock Margin="2" HorizontalAlignment="Center">LOG</TextBlock> </Border> <TextBox x:Name="txtLog" TextChanged="TextBox_TextChanged" FontFamily="Lucida Console" Background="#202020" BorderThickness="0" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" Padding="5" IsReadOnly="True" TextWrapping="Wrap" FontSize="11" Foreground="Gainsboro" Grid.Row="2"></TextBox> </Grid> </Grid> </Grid> </Grid> <Border HorizontalAlignment="Right" Margin="0 -1 10 0" VerticalAlignment="Top" Width="300" Height="40" Padding="5" CornerRadius="0 0 30 30" BorderThickness="1 0 1 1" BorderBrush="DimGray"> <Border.Style> <Style TargetType="Border"> <Setter Property="RenderTransform"> <Setter.Value> <ScaleTransform ScaleX="1" ScaleY="0"></ScaleTransform> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger Binding="{Binding NotificationProvider.HasTaskItems}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard HandoffBehavior="Compose"> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" FillBehavior="HoldEnd" To="1" Duration="00:00:0.2"></DoubleAnimation> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <BeginStoryboard HandoffBehavior="Compose"> <Storyboard> <DoubleAnimation BeginTime="00:00:02" FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.ScaleY" To="0" From="1" Duration="00:00:0.5"></DoubleAnimation> </Storyboard> </BeginStoryboard> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> </Border.Style> <Border.Background> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Color="#03A9F4"/> <GradientStop Color="#0081BB" Offset="1"/> </LinearGradientBrush> </Border.Background> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="20 0 0 0"> <mahapps:ProgressRing Width="24" Height="24" Foreground="White"></mahapps:ProgressRing> <TextBlock Text="{Binding NotificationProvider.CurrentTaskItem.Message,Converter={StaticResource StringEllipsisConverter},ConverterParameter=35}" Foreground="White" VerticalAlignment="Center" Margin="10 0 0 0" TextWrapping="Wrap"></TextBlock> </StackPanel> </Border> </Grid> </DockPanel> </Grid> </mahapps:MetroWindow>