aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/Views/PlayingBarView.xaml
blob: ee423e67697ed9d6cee4cbc6c3e20ff3c8e6a5a6 (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
53
54
55
56
57
58
59
60
61
62
63
<UserControl x:Class="Tango.MachineStudio.DataCapture.Views.PlayingBarView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
             xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
             xmlns:vm="clr-namespace:Tango.MachineStudio.DataCapture.ViewModels"
             xmlns:video="clr-namespace:Tango.Video.DirectCapture;assembly=Tango.Video"
             xmlns:global="clr-namespace:Tango.MachineStudio.DataCapture"
             xmlns:local="clr-namespace:Tango.MachineStudio.DataCapture.Views"
             mc:Ignorable="d" 
             Width="350" Height="30" Background="{StaticResource AccentColorBrush}" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}">
    <Grid>
        <DockPanel>

            <StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
                <TextBlock VerticalAlignment="Center" FontFamily="{StaticResource digital-7}" Foreground="#F6F6F6" FontSize="20">
                     <Run Text="{Binding Player.CurrentTime,Mode=OneWay,StringFormat=hh\\:mm\\:ss,FallbackValue='00:00:00'}"/>
                     <Run>/</Run>
                     <Run Text="{Binding Player.TotalTime,Mode=OneWay,StringFormat=hh\\:mm\\:ss,FallbackValue='00:00:00'}"/>
                </TextBlock>
            </StackPanel>

            <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
                <Button Command="{Binding MediaPlayPauseCommand}" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" Width="30" Height="30" Foreground="White">
                    <materialDesign:PackIcon Width="30" Height="30">
                        <materialDesign:PackIcon.Style>
                            <Style TargetType="materialDesign:PackIcon">
                                <Setter Property="Kind" Value="Play"></Setter>
                                <Style.Triggers>
                                    <MultiDataTrigger>
                                        <MultiDataTrigger.Conditions>
                                            <Condition Binding="{Binding Player.IsPlaying}" Value="True" />
                                            <Condition Binding="{Binding Player.IsPaused}" Value="False" />
                                        </MultiDataTrigger.Conditions>
                                        <Setter Property="Kind" Value="Pause"></Setter>
                                    </MultiDataTrigger>
                                </Style.Triggers>
                            </Style>
                        </materialDesign:PackIcon.Style>
                    </materialDesign:PackIcon>
                </Button>
                <Button Command="{Binding MediaStopCommand}" Style="{StaticResource MaterialDesignFlatButton}" Padding="0" Width="30" Height="30" Foreground="White">
                    <materialDesign:PackIcon Kind="Stop" Width="30" Height="30" />
                </Button>
            </StackPanel>

            <Slider x:Name="slider" VerticalAlignment="Center" Margin="10 0 10 0" Foreground="White" Maximum="{Binding Player.TotalFrames}" Value="{Binding Player.CurrentFrame,Mode=OneWay}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="PreviewMouseDown">
                        <i:InvokeCommandAction Command="{Binding MediaSeekHoldCommand}"></i:InvokeCommandAction>
                    </i:EventTrigger>
                    <i:EventTrigger EventName="PreviewMouseUp">
                        <i:InvokeCommandAction Command="{Binding MediaSeekCommand}" CommandParameter="{Binding ElementName=slider,Path=Value}"></i:InvokeCommandAction>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Slider>
        </DockPanel>
    </Grid>
</UserControl>
<controls:View x:Class="Tango.MachineStudio.UI.Views.MainView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
             xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
             xmlns:dockablz="clr-namespace:Dragablz.Dockablz;assembly=Dragablz"
             xmlns:dragablz="clr-namespace:Dragablz;assembly=Dragablz"
             xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL"
             xmlns:enumerations="clr-namespace:Tango.BL.Enumerations;assembly=Tango.BL"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:db="clr-namespace:Tango.MachineStudio.DB.Views;assembly=Tango.MachineStudio.DB"
             xmlns:local="clr-namespace:Tango.MachineStudio.UI.Views"
             xmlns:commonConverters="clr-namespace:Tango.MachineStudio.Common.Converters;assembly=Tango.MachineStudio.Common"
             mc:Ignorable="d" 
             d:DesignHeight="720" d:DesignWidth="1270" Background="Transparent" DataContext="{Binding MainViewVM, Source={StaticResource Locator}}">

    <UserControl.Resources>
        <converters:StringEllipsisConverter x:Key="StringEllipsisConverter" />
        <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" />
        <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" />
        <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
        <converters:StringToWordsConverter x:Key="StringToWordsConverter" />
        <commonConverters:PermissionToVisibilityConverter x:Key="PermissionToVisibilityConverter" />
    </UserControl.Resources>

    <Grid>
        <Grid.Style>
            <Style TargetType="Grid">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding NotificationProvider.HasTaskItems}" Value="True">
                        <Setter Property="Cursor" Value="AppStarting"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding NotificationProvider.HasTaskItems}" Value="False">
                        <Setter Property="Cursor" Value="Arrow"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>

        <materialDesign:DrawerHost IsLeftDrawerOpen="{Binding Source={x:Reference MenuToggleButton}, Path=IsChecked}">
            <materialDesign:DrawerHost.LeftDrawerContent>
                <DockPanel LastChildFill="False">
                    <StackPanel MinWidth="300" DockPanel.Dock="Top">
                        <Grid>
                            <ToggleButton Style="{StaticResource MaterialDesignHamburgerToggleButton}" 
                                    HorizontalAlignment="Right" Margin="16"
                                    IsChecked="{Binding Source={x:Reference MenuToggleButton}, Path=IsChecked, Mode=TwoWay}" />

                            <StackPanel Margin="5 0 0 0" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
                                <Image Source="/Images/account.png" RenderOptions.BitmapScalingMode="Fant" VerticalAlignment="Center" Width="50" Height="50"></Image>
                                <StackPanel Margin="0 5 0 0">
                                    <TextBlock FontSize="16" TextTrimming="CharacterEllipsis" MaxWidth="170" FontStyle="Italic" FontWeight="Bold" Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding AuthenticationProvider.CurrentUser.Contact.FullName}"></TextBlock>
                                    <TextBlock FontSize="12" TextTrimming="CharacterEllipsis" MaxWidth="170" FontStyle="Italic" Margin="10 5 0 0" VerticalAlignment="Center">
                                        <Run Text="{Binding AuthenticationProvider.CurrentUser.Organization.Name}"></Run>
                                        ,
                                        <Run Text="{Binding AuthenticationProvider.CurrentUser.Roles[0].Name}">
                                            <Run.ToolTip>
                                                <ItemsControl ItemsSource="{Binding AuthenticationProvider.CurrentUser.Roles}">
                                                    <ItemsControl.ItemTemplate>
                                                        <DataTemplate>
                                                            <StackPanel Orientation="Horizontal" Margin="2">
                                                                <materialDesign:PackIcon Kind="AccountKey" Width="16" Height="16" />
                                                                <TextBlock Margin="5 0 0 0" Text="{Binding Name}"></TextBlock>
                                                             </StackPanel>
                                                        </DataTemplate>
                                                    </ItemsControl.ItemTemplate>
                                                </ItemsControl>
                                            </Run.ToolTip>
                                        </Run>
                                        <Run>...</Run>
                                    </TextBlock>
                                </StackPanel>
                            </StackPanel>
                        </Grid>
                        <StackPanel Margin="0 16 0 0">
                            <ListBoxItem>
                                <i:Interaction.Triggers>
                                    <i:EventTrigger EventName="PreviewMouseUp">
                                        <i:InvokeCommandAction Command="{Binding HomeCommand}"></i:InvokeCommandAction>
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
                                <StackPanel Orientation="Horizontal">
                                    <materialDesign:PackIcon VerticalAlignment="Center" Kind="Home" Width="32" Height="32"></materialDesign:PackIcon>
                                    <TextBlock FontSize="16" VerticalAlignment="Center" Margin="10 0 0 0">Home</TextBlock>
                                </StackPanel>
                            </ListBoxItem>
                        </StackPanel>
                        <StackPanel Margin="10 10 0 0">
                            <TextBlock Foreground="Silver" FontSize="16" FontWeight="Bold" FontStyle="Italic">MODULES</TextBlock>
                            <Separator Background="Gainsboro" />
                        </StackPanel>
                        <ListBox ItemsSource="{Binding StudioModuleLoader.UserModules}" HorizontalContentAlignment="Stretch" FontSize="14">
                            <ListBox.ItemContainerStyle>
                                <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                                    <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                                    <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter>
                                    <Setter Property="Visibility" Value="{Binding InNewWindow,Converter={StaticResource BooleanToVisibilityInverseConverter}}"></Setter>
                                </Style>
                            </ListBox.ItemContainerStyle>
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Grid Background="Transparent">
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger EventName="PreviewMouseUp">
                                                <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.StartModuleCommand}" CommandParameter="{Binding}"></i:InvokeCommandAction>
                                            </i:EventTrigger>
                                        </i:Interaction.Triggers>

                                        <StackPanel Orientation="Horizontal" Margin="0 0 0 0" ToolTip="{Binding Description}">
                                            <Ellipse Height="35" Width="35" VerticalAlignment="Center">
                                                <Ellipse.Fill>
                                                    <ImageBrush ImageSource="{Binding Image}" RenderOptions.BitmapScalingMode="Fant" />
                                                </Ellipse.Fill>
                                            </Ellipse>
                                            <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding Name}"></TextBlock>
                                        </StackPanel>
                                    </Grid>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </StackPanel>

                    <StackPanel DockPanel.Dock="Bottom">
                        <Separator Margin="0 10 0 0" Background="Gainsboro" />
                        <ListBoxItem>
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="PreviewMouseUp">
                                    <i:InvokeCommandAction Command="{Binding SignoutCommand}"></i:InvokeCommandAction>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                            <StackPanel Orientation="Horizontal">
                                <materialDesign:PackIcon VerticalAlignment="Center" Kind="Logout" Width="32" Height="32"></materialDesign:PackIcon>
                                <TextBlock FontSize="16" VerticalAlignment="Center" Margin="10 0 0 0">Sign out</TextBlock>
                            </StackPanel>
                        </ListBoxItem>
                    </StackPanel>
                </DockPanel>
            </materialDesign:DrawerHost.LeftDrawerContent>
            <DockPanel>
                <materialDesign:ColorZone Padding="16" materialDesign:ShadowAssist.ShadowDepth="Depth2"
                                            Mode="PrimaryMid" DockPanel.Dock="Top">
                    <DockPanel>
                        <ToggleButton Style="{StaticResource MaterialDesignHamburgerToggleButton}" IsChecked="{Binding IsMenuOpened}"
                                        x:Name="MenuToggleButton"/>
                        <materialDesign:PopupBox DockPanel.Dock="Right" PlacementMode="BottomAndAlignRightEdges" StaysOpen="False">
                            <StackPanel>
                                <Button Command="{Binding ConnectCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="LanConnect" Width="24" Height="24" />
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Machine Connection</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Button Command="{Binding DisconnectCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="LanDisconnect" Width="24" Height="24" />
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Disconnect Machine</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Separator/>
                                <Button IsEnabled="{Binding IsModuleLoaded}" Command="{Binding OpenModuleInWindowCommand}" CommandParameter="{Binding CurrentModule}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="ArrowTopRight" Width="24" Height="24" />
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Open Module In New Window</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Separator/>
                                <Button Command="{Binding UpdateCenterCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="Download" Width="24" Height="24" />
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Update Center</TextBlock>
                                    </StackPanel>
                                </Button>
                                <Separator/>
                                <Button Command="{Binding ToggleSpeechCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Width="24" Height="24">
                                            <materialDesign:PackIcon.Style>
                                                <Style TargetType="materialDesign:PackIcon">
                                                    <Setter Property="Kind" Value="VolumeHigh"></Setter>
                                                    <Style.Triggers>
                                                        <DataTrigger Binding="{Binding SpeechProvider.Mute}" Value="True">
                                                            <Setter Property="Kind" Value="VolumeOff"></Setter>
                                                        </DataTrigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </materialDesign:PackIcon.Style>
                                        </materialDesign:PackIcon>
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Speech</TextBlock>
                                    </StackPanel>
                                </Button>
                                <StackPanel Visibility="{Binding AuthenticationProvider.CurrentUser,Converter={StaticResource PermissionToVisibilityConverter},ConverterParameter={x:Static enumerations:Permissions.RunDeveloperConsole}}">
                                    <Separator/>
                                    <Button Command="{Binding OpenDeveloperConsoleCommand}">
                                        <StackPanel Orientation="Horizontal">
                                            <materialDesign:PackIcon Kind="Console" Width="24" Height="24" />
                                            <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Developer Console</TextBlock>
                                        </StackPanel>
                                    </Button>
                                    <Separator/>
                                </StackPanel>
                                <Button Command="{Binding ExitCommand}">
                                    <StackPanel Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="CloseCircleOutline" Width="24" Height="24" />
                                        <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Exit</TextBlock>
                                    </StackPanel>
                                </Button>
                            </StackPanel>
                        </materialDesign:PopupBox>
                        <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 HorizontalAlignment="Right">
                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                    <Grid Margin="0 0 20 0">
                                        <ItemsControl ItemsSource="{Binding NotificationProvider.BarItems}">
                                            <ItemsControl.ItemsPanel>
                                                <ItemsPanelTemplate>
                                                    <StackPanel Orientation="Horizontal" IsItemsHost="True" VerticalAlignment="Center"></StackPanel>
                                                </ItemsPanelTemplate>
                                            </ItemsControl.ItemsPanel>
                                            <ItemsControl.ItemTemplate>
                                                <DataTemplate>
                                                    <ContentControl Margin="0 0 10 0" Content="{Binding Element}" VerticalAlignment="Center"></ContentControl>
                                                </DataTemplate>
                                            </ItemsControl.ItemTemplate>
                                        </ItemsControl>
                                    </Grid>

                                    <Button VerticalAlignment="Center" Margin="10 0 0 0" Style="{StaticResource MaterialDesignFlatButton}" FontSize="12" ToolTip="Connect to machine on the local network" BorderThickness="0" Command="{Binding ConnectCommand}">
                                        <StackPanel Orientation="Horizontal">
                                            <Grid>
                                                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                                    <TextBlock Text="Machine Connection" VerticalAlignment="Center" Foreground="White"></TextBlock>
                                                    <materialDesign:PackIcon Margin="10 0 0 0" Width="24" Height="24">
                                                        <materialDesign:PackIcon.Style>
                                                            <Style TargetType="materialDesign:PackIcon">
                                                                <Setter Property="Foreground" Value="#333333"></Setter>
                                                                <Setter Property="Kind" Value="LanDisconnect"></Setter>
                                                                <Style.Triggers>
                                                                    <DataTrigger Binding="{Binding ApplicationManager.IsMachineConnected,Mode=OneWay}" Value="True">
                                                                        <Setter Property="Foreground" Value="#03FF8E"></Setter>
                                                                        <Setter Property="Kind" Value="LanConnect"></Setter>
                                                                    </DataTrigger>
                                                                </Style.Triggers>
                                                            </Style>
                                                        </materialDesign:PackIcon.Style>
                                                    </materialDesign:PackIcon>
                                                </StackPanel>
                                            </Grid>
                                        </StackPanel>
                                    </Button>

                                    <ToggleButton Visibility="{Binding ApplicationManager.ConnectedMachine.MachineEventsStateProvider.HasEvents,Converter={StaticResource BooleanToVisibilityConverter},FallbackValue=Collapsed,TargetNullValue=Collapsed,Mode=OneWay}" IsChecked="{Binding IsMachineErrorsOpened}" Style="{StaticResource emptyToggleButton}" Margin="0 0 10 0" Cursor="Hand">
                                        <ToggleButton.ToolTip>
                                            <TextBlock>
                                                <Run>Press to view</Run>
                                                <Run Text="{Binding ApplicationManager.ConnectedMachine.MachineEventsStateProvider.Events.Count,Mode=OneWay}"></Run>
                                                <Run>hardware messages</Run>
                                            </TextBlock>
                                        </ToggleButton.ToolTip>
                                        <Grid RenderTransformOrigin="0.5,0.5">
                                            <Grid.Style>
                                                <Style TargetType="Grid">
                                                    <Setter Property="Opacity" Value="1"></Setter>
                                                    <Style.Triggers>
                                                        <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.MachineEventsStateProvider.HasEvents}" Value="True">
                                                            <DataTrigger.EnterActions>
                                                                <BeginStoryboard>
                                                                    <Storyboard>
                                                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Duration="00:00:01" RepeatBehavior="Forever">
                                                                            <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
                                                                            <DiscreteDoubleKeyFrame KeyTime="00:00:0.5" Value="0" />
                                                                        </DoubleAnimationUsingKeyFrames>
                                                                    </Storyboard>
                                                                </BeginStoryboard>
                                                            </DataTrigger.EnterActions>
                                                            <DataTrigger.ExitActions>
                                                                <BeginStoryboard>
                                                                    <Storyboard>
                                                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Duration="00:00:00">
                                                                            <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
                                                                        </DoubleAnimationUsingKeyFrames>
                                                                    </Storyboard>
                                                                </BeginStoryboard>
                                                            </DataTrigger.ExitActions>
                                                        </DataTrigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Grid.Style>
                                            <Image Source="/Images/warning.png" Width="50" />
                                        </Grid>
                                    </ToggleButton>

                                    <Button Style="{StaticResource emptyButton}" Cursor="Hand" Command="{Binding UpdateCenterCommand}" Visibility="{Binding IsUpdateAvailable,Converter={StaticResource BooleanToVisibilityConverter}}">
                                        <Button.ToolTip>
                                            <TextBlock>
                                                <Run>Version</Run>
                                                <Run Text="{Binding LatestVersion}"></Run>
                                                <Run>is available !</Run>
                                            </TextBlock>
                                        </Button.ToolTip>
                                        <Image Source="/Images/update.png" Width="32" RenderTransformOrigin="0.5,0.5" RenderOptions.BitmapScalingMode="Fant">
                                            <Image.RenderTransform>
                                                <ScaleTransform ScaleX="1" ScaleY="1" />
                                            </Image.RenderTransform>
                                            <Image.Style>
                                                <Style TargetType="Image">
                                                    <Style.Triggers>
                                                        <EventTrigger RoutedEvent="Loaded">
                                                            <EventTrigger.Actions>
                                                                <BeginStoryboard>
                                                                    <Storyboard>
                                                                        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="0.9" To="1.1" Duration="00:00:0.5" RepeatBehavior="Forever" AutoReverse="True"></DoubleAnimation>
                                                                        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="0.9" To="1.1" Duration="00:00:0.5" RepeatBehavior="Forever" AutoReverse="True"></DoubleAnimation>
                                                                    </Storyboard>
                                                                </BeginStoryboard>
                                                            </EventTrigger.Actions>
                                                        </EventTrigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Image.Style>
                                        </Image>
                                    </Button>

                                    <Button Cursor="Hand" Command="{Binding ReportIssueCommand}" IsEnabled="{Binding TFSClient.IsInitialized}">
                                        <Button.Style>
                                            <Style TargetType="Button" BasedOn="{StaticResource emptyButton}">
                                                <Setter Property="ToolTip" Value="Report issue"></Setter>
                                                <Setter Property="Opacity" Value="1"></Setter>
                                                <Style.Triggers>
                                                    <Trigger Property="IsEnabled" Value="False">
                                                        <Setter Property="ToolTip" Value="The team foundation service is not available."></Setter>
                                                        <Setter Property="Opacity" Value="0.5"></Setter>
                                                    </Trigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Button.Style>
                                        <Image Margin="10 0 0 0" Source="/Images/bug.png" Width="24" RenderOptions.BitmapScalingMode="Fant" />
                                    </Button>
                                    <Button Cursor="Hand" Command="{Binding OpenResolvedBugsCommand}">
                                        <Button.Style>
                                            <Style TargetType="Button" BasedOn="{StaticResource emptyButton}">
                                                <Setter Property="Visibility"  Value="Visible"></Setter>
                                                <Style.Triggers>
                                                    <EventTrigger RoutedEvent="Loaded">
                                                        <EventTrigger.Actions>
                                                            <BeginStoryboard>
                                                                <Storyboard>
                                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Duration="00:00:01" RepeatBehavior="Forever">
                                                                        <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
                                                                        <DiscreteDoubleKeyFrame KeyTime="00:00:0.5" Value="0" />
                                                                    </DoubleAnimationUsingKeyFrames>
                                                                </Storyboard>
                                                            </BeginStoryboard>
                                                        </EventTrigger.Actions>
                                                    </EventTrigger>
                                                    <DataTrigger Binding="{Binding TFSClient.ResolvedWorkItems.Count}" Value="0">
                                                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Button.Style>
                                        <Button.ToolTip>
                                            <TextBlock>
                                                <Run>There are</Run>
                                                <Run Text="{Binding TFSClient.ResolvedWorkItems.Count,Mode=OneWay}"></Run>
                                                <Run>issues waiting for your approval</Run>
                                            </TextBlock>
                                        </Button.ToolTip>
                                        <Image Margin="10 0 0 0" Source="/Images/bug-resolved.png" Width="24" RenderOptions.BitmapScalingMode="Fant" />
                                    </Button>
                                </StackPanel>
                            </Grid>
                        </Grid>
                    </DockPanel>
                </materialDesign:ColorZone>

                <Grid>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="1*"/>
                        </Grid.RowDefinitions>

                        <Grid Grid.Row="1">
                            <controls:NavigationControl x:Name="TransitionControl" TransitionAlwaysFades="True" TransitionType="Zoom">
                                <Grid controls:NavigationControl.NavigationName="Home">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="150"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
                                    <Grid>
                                        <StackPanel Margin="30 20" HorizontalAlignment="Left">
                                            <TextBlock FontSize="35">Welcome to Machine Studio</TextBlock>
                                            <TextBlock HorizontalAlignment="Left" Margin="350 5 0 0" FontStyle="Italic" FontSize="16">The below modules are displayed according to your user roles and permissions.</TextBlock>
                                        </StackPanel>
                                    </Grid>

                                    <Grid Grid.Row="2">
                                        <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
                                            <ItemsControl ItemsSource="{Binding StudioModuleLoader.UserModules}" Margin="10">
                                                <ItemsControl.ItemsPanel>
                                                    <ItemsPanelTemplate>
                                                        <WrapPanel IsItemsHost="True"></WrapPanel>
                                                    </ItemsPanelTemplate>
                                                </ItemsControl.ItemsPanel>

                                                <ItemsControl.ItemTemplate>
                                                    <DataTemplate>
                                                        <materialDesign:Card Width="300" Margin="10" Height="400" Visibility="{Binding InNewWindow,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
                                                            <Grid>
                                                                <Grid.RowDefinitions>
                                                                    <RowDefinition Height="180" />
                                                                    <RowDefinition Height="*" />
                                                                    <RowDefinition Height="Auto" />
                                                                </Grid.RowDefinitions>
                                                                <Image Source="{Binding Image,Mode=OneWay}" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant" />
                                                                <Rectangle VerticalAlignment="Bottom" Stroke="Silver"></Rectangle>
                                                                <Button Tag="{Binding}" AutomationProperties.AutomationId="{Binding Name}" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.StartModuleCommand}" CommandParameter="{Binding}" Grid.Row="0" Margin="0,0,20,-35" HorizontalAlignment="Right" Width="70" Height="70" VerticalAlignment="Bottom" Style="{StaticResource MaterialDesignFloatingActionMiniButton}" ToolTip="Start this module">
                                                                    <materialDesign:PackIcon Kind="Play" Width="30" Height="30" />
                                                                </Button>
                                                                <StackPanel Grid.Row="1" Margin="8,24,8,0">
                                                                    <TextBlock FontWeight="Bold" FontSize="20" Text="{Binding Name,Mode=OneWay}"></TextBlock>
                                                                    <TextBlock VerticalAlignment="Center" Margin="0 5 0 0" FontSize="14" TextWrapping="Wrap" Text="{Binding Description,Mode=OneWay}"></TextBlock>
                                                                </StackPanel>
                                                                <StackPanel Grid.Row="2" Margin="8" HorizontalAlignment="Right" Orientation="Horizontal">
                                                                    <materialDesign:PopupBox Padding="2,0,2,0" Style="{StaticResource MaterialDesignToolPopupBox}">
                                                                        <StackPanel>
                                                                            <Button Command="{Binding RelativeSource={RelativeSource AncestorType=local:MainView},Path=DataContext.OpenModuleInWindowCommand}" CommandParameter="{Binding}">
                                                                                <StackPanel Orientation="Horizontal">
                                                                                    <materialDesign:PackIcon Kind="ArrowTopRight" Width="24" Height="24" />
                                                                                    <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Start in new window</TextBlock>
                                                                                </StackPanel>
                                                                            </Button>
                                                                            <Button>
                                                                                <StackPanel Orientation="Horizontal">
                                                                                    <materialDesign:PackIcon Kind="Settings" Width="24" Height="24" />
                                                                                    <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">Settings</TextBlock>
                                                                                </StackPanel>
                                                                            </Button>
                                                                        </StackPanel>
                                                                    </materialDesign:PopupBox>
                                                                </StackPanel>
                                                            </Grid>
                                                        </materialDesign:Card>
                                                    </DataTemplate>
                                                </ItemsControl.ItemTemplate>
                                            </ItemsControl>
                                        </ScrollViewer>
                                    </Grid>
                                </Grid>
                            </controls:NavigationControl>
                        </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 HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" Visibility="{Binding IsMachineErrorsOpened,Converter={StaticResource BooleanToVisibilityConverter}}">
                        <Border Width="350" Background="#FFF1F1F1" BorderBrush="White" CornerRadius="5" Padding="5">
                            <Border.Effect>
                                <DropShadowEffect ShadowDepth="0" BlurRadius="10" />
                            </Border.Effect>

                            <ItemsControl ItemsSource="{Binding ApplicationManager.ConnectedMachine.MachineEventsStateProvider.Events}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate DataType="{x:Type entities:MachinesEvent}">
                                        <Border BorderThickness="0 0 0 1" BorderBrush="#E1E1E1" Padding="5">
                                            <DockPanel>
                                                <Grid DockPanel.Dock="Right" HorizontalAlignment="Right" VerticalAlignment="Center">
                                                    <ContentControl>
                                                        <ContentControl.Style>
                                                            <Style TargetType="ContentControl">
                                                                <Setter Property="Content" Value="{x:Null}"></Setter>
                                                                <Style.Triggers>
                                                                    <DataTrigger Binding="{Binding EventType.RequiresUserIntervention}" Value="True">
                                                                        <Setter Property="Content">
                                                                            <Setter.Value>
                                                                                <Button ToolTip="Resolve issue" Style="{StaticResource emptyButton}" Cursor="Hand" Margin="5" Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.ResolveMachineEventCommand}" CommandParameter="{Binding}">
                                                                                    <Image Source="/Images/settings.png" Width="24">
                                                                                        <Image.Style>
                                                                                            <Style TargetType="Image">
                                                                                                <Style.Triggers>
                                                                                                    <EventTrigger RoutedEvent="Loaded">
                                                                                                        <EventTrigger.Actions>
                                                                                                            <BeginStoryboard>
                                                                                                                <Storyboard>
                                                                                                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Duration="00:00:01" RepeatBehavior="Forever">
                                                                                                                        <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
                                                                                                                        <DiscreteDoubleKeyFrame KeyTime="00:00:0.5" Value="0" />
                                                                                                                    </DoubleAnimationUsingKeyFrames>
                                                                                                                </Storyboard>
                                                                                                            </BeginStoryboard>
                                                                                                        </EventTrigger.Actions>
                                                                                                    </EventTrigger>
                                                                                                </Style.Triggers>
                                                                                            </Style>
                                                                                        </Image.Style>
                                                                                    </Image>
                                                                                </Button>
                                                                            </Setter.Value>
                                                                        </Setter>
                                                                    </DataTrigger>
                                                                </Style.Triggers>
                                                            </Style>
                                                        </ContentControl.Style>
                                                    </ContentControl>
                                                </Grid>
                                                <StackPanel>
                                                    <StackPanel Orientation="Horizontal">
                                                        <materialDesign:PackIcon Width="24" Height="24">
                                                            <materialDesign:PackIcon.Style>
                                                                <Style TargetType="materialDesign:PackIcon">
                                                                    <Setter Property="Kind" Value="AlertCircle"></Setter>
                                                                    <Setter Property="Foreground" Value="#464646"></Setter>
                                                                    <Style.Triggers>
                                                                        <DataTrigger Binding="{Binding Category}" Value="Warning">
                                                                            <Setter Property="Kind" Value="Alert"></Setter>
                                                                            <Setter Property="Foreground" Value="#FFA300"></Setter>
                                                                        </DataTrigger>
                                                                        <DataTrigger Binding="{Binding Category}" Value="Error">
                                                                            <Setter Property="Kind" Value="AlertOctagon"></Setter>
                                                                            <Setter Property="Foreground" Value="#FF5C5C"></Setter>
                                                                        </DataTrigger>
                                                                        <DataTrigger Binding="{Binding Category}" Value="Critical">
                                                                            <Setter Property="Kind" Value="BellPlus"></Setter>
                                                                            <Setter Property="Foreground" Value="Red"></Setter>
                                                                        </DataTrigger>
                                                                    </Style.Triggers>
                                                                </Style>
                                                            </materialDesign:PackIcon.Style>
                                                        </materialDesign:PackIcon>

                                                        <StackPanel Margin="10 0 0 0" VerticalAlignment="Top">
                                                            <TextBlock Text="{Binding EventType.Name}"></TextBlock>
                                                            <TextBlock Margin="0 5 0 0" Text="{Binding Description}" FontSize="10" Foreground="DimGray" TextWrapping="Wrap"></TextBlock>
                                                        </StackPanel>
                                                    </StackPanel>
                                                </StackPanel>
                                            </DockPanel>
                                        </Border>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </Border>

                        <Canvas HorizontalAlignment="Center">
                            <Polygon Points="12,0 0,31 24,31" Fill="#FFF1F1F1" Canvas.Top="-30" Canvas.Left="90"></Polygon>
                        </Canvas>
                    </Grid>
                </Grid>
            </DockPanel>
        </materialDesign:DrawerHost>
    </Grid>
</controls:View>