aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Browser/RequestHandlers/ChromiumRequestHandler.cs
blob: fc6cb119c500a36fb1279729230ac1f4f2d29aba (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using CefSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tango.PPC.Browser.RequestHandlers
{
    public class ChromiumRequestHandler : IRequestHandler
    {
        public event EventHandler<String> AddressChanged;

        public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
        {
            return false;
        }

        public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect)
        {
            // You can check the Request object for the URL Here
            return false;
        }

        public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
        {
            // You can also check the URL here
            callback.Dispose();
            return CefReturnValue.Continue;
        }

        public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
        {
            callback.Dispose();
            return false;
        }

        public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
        {
            return false;
        }

        public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
        {
        }

        public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
        {
            return false;
        }

        public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
        {
            callback.Dispose();
            return false;
        }

        public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
        {
        }

        public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
        {
        }

        public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
        {
            // You can also check the request URL here
        }

        public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
        {
        }

        public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
        {
            return false;
        }


        public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
        {
            return null;
        }


        public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
        {
        }

        public bool OnSelectClientCertificate(IWebBrowser browserControl, IBrowser browser, bool isProxy, string host, int port, System.Security.Cryptography.X509Certificates.X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
        {
            callback.Dispose();
            return false;
        }

        public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
        {
            AddressChanged?.Invoke(this, request.Url);
            return false;
        }

        public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            return null;
        }

        public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
        {
            callback.Dispose();
            return false;
        }
    }
}
<materialDesign:DrawerHost.LeftDrawerContent> <DockPanel LastChildFill="False" > <DockPanel.Style> <Style TargetType="{x:Type DockPanel}"> <Setter Property="TextElement.Foreground" Value="{StaticResource MainWindow.Foreground}"/> </Style> </DockPanel.Style> <StackPanel MinWidth="300" DockPanel.Dock="Top" > <Grid> <Button Style="{StaticResource MaterialDesignFlatButton}" Command="{Binding HomeCommand}" HorizontalAlignment="Left" HorizontalContentAlignment="Left" Margin="5 10 0 0" Width="200" Height="40" Padding="5 8 8 8" Foreground="{StaticResource BlackBrush}"> <StackPanel Orientation="Horizontal"> <materialDesign:PackIcon VerticalAlignment="Center" Kind="Home" Width="32" Height="32" Foreground="{StaticResource HomePageForeground}"></materialDesign:PackIcon> <TextBlock FontSize="16" VerticalAlignment="Center" Margin="10 0 0 0" Foreground="{StaticResource HomePageForeground}">Home</TextBlock> </StackPanel> </Button> <ToggleButton Style="{StaticResource MaterialDesignHamburgerToggleButton}" HorizontalAlignment="Right" Margin="16" IsChecked="{Binding Source={x:Reference MenuToggleButton}, Path=IsChecked, Mode=TwoWay}" /> </Grid> <StackPanel Margin="0 16 0 0"> </StackPanel> <StackPanel Margin="10 10 0 0"> <TextBlock Foreground="{StaticResource borderBrush}" FontSize="16" FontWeight="Bold" FontStyle="Italic">MODULES</TextBlock> <Separator Background="{StaticResource BorderBrushGainsboro}" /> </StackPanel> <ListBox ItemsSource="{Binding StudioModuleLoader.UserModules}" HorizontalContentAlignment="Stretch" FontSize="14"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem" BasedOn="{StaticResource MaterialDesignListBoxItem}"> <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="{StaticResource BorderBrushGainsboro}" /> <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" Background="{StaticResource MainWindow.Header}"> <DockPanel> <StackPanel Orientation="Horizontal"> <ToggleButton VerticalAlignment="Center" Style="{StaticResource MaterialDesignHamburgerToggleButton}" IsChecked="{Binding IsMenuOpened}" x:Name="MenuToggleButton"/> <StackPanel Margin="10 0 0 0" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center"> <Image Source="/Images/login_white.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> </StackPanel> <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,Mode=TwoWay}" 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> <Separator/> <MenuItem x:Name="menuTheme" Header="Theme" MouseEnter="MenuItem_MouseEnter"> <MenuItem Header="Light" Command="{Binding ChangeAppThemeCommand}" CommandParameter="{x:Static common:MachineStudioTheme.Light}" Background="{StaticResource MainWindow.SubMenuItem.Background}"></MenuItem> <MenuItem Header="Dark" Command="{Binding ChangeAppThemeCommand}" CommandParameter="{x:Static common:MachineStudioTheme.Dark}" Background="{StaticResource MainWindow.SubMenuItem.Background}"></MenuItem> </MenuItem> <Separator/> <Button Command="{Binding AboutCommand}"> <StackPanel Orientation="Horizontal"> <materialDesign:PackIcon Kind="Information" Width="24" Height="24" /> <TextBlock Margin="5 0 0 0" VerticalAlignment="Center">About</TextBlock> </StackPanel> </Button> <Separator /> <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> <Grid> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Height="60" HorizontalAlignment="Center"> <StackPanel.Style> <Style TargetType="StackPanel"> <Style.Triggers> <DataTrigger Binding="{Binding IsModuleLoaded}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="00:00:0.5" /> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="00:00:0.5" /> </Storyboard> </BeginStoryboard> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> <Image Source="{StaticResource MachineSmall}" RenderOptions.BitmapScalingMode="Fant"></Image> <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="36" Text="Machine Studio"> </TextBlock> </StackPanel> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Height="60" HorizontalAlignment="Center"> <StackPanel.Style> <Style TargetType="StackPanel"> <Setter Property="Opacity" Value="0"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding IsModuleLoaded}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="00:00:0.5" /> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="00:00:0.5" /> </Storyboard> </BeginStoryboard> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> </StackPanel.Style> <Grid> <Ellipse Height="50" Width="50" VerticalAlignment="Center" StrokeThickness="1" Stroke="White"> <Ellipse.Fill> <ImageBrush ImageSource="{Binding CurrentModule.Image}" RenderOptions.BitmapScalingMode="Fant" /> </Ellipse.Fill> </Ellipse> <Image Source="{StaticResource MachineSmall}" RenderOptions.BitmapScalingMode="Fant" Width="25" Margin="-40 0 0 -30" ></Image> </Grid> <TextBlock VerticalAlignment="Center" Margin="20 0 0 0" FontSize="36" Text="{Binding CurrentModule.Name}"> </TextBlock> </StackPanel> </Grid> <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="{StaticResource GrayBrush300}"></Setter> <Setter Property="Kind" Value="LanDisconnect"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding ApplicationManager.IsMachineConnected,Mode=OneWay}" Value="True"> <Setter Property="Foreground" Value="{StaticResource GreenMConnectionBrush}"></Setter> <Setter Property="Kind" Value="LanConnect"></Setter> </DataTrigger> </Style.Triggers> </Style> </materialDesign:PackIcon.Style> </materialDesign:PackIcon> </StackPanel> </Grid> </StackPanel> </Button> <Grid Height="Auto" Width="Auto" VerticalAlignment="Center" Margin="5 0 20 0" ToolTip="{Binding ApplicationManager.ConnectedMachine.Status,Converter={StaticResource EnumToDescriptionConverter}}"> <Grid.Style> <Style TargetType="Grid"> <Setter Property="Visibility" Value="Visible"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed"></Setter> </DataTrigger> </Style.Triggers> </Style> </Grid.Style> <Ellipse Width="40" Height="40"> <Ellipse.Fill> <RadialGradientBrush> <GradientStop Offset="0" Color="White" /> <GradientStop Offset="1" Color="#6BFFFFFF" /> </RadialGradientBrush> </Ellipse.Fill> </Ellipse> <Image x:Name="Image_MachineStatus" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant" Width="23" Height="23" VerticalAlignment="Center" gif:ImageBehavior.EnableAnimation="True" gif:ImageBehavior.SpeedRatio="1"> <Image.Style> <Style TargetType="Image"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="{x:Null}"></Setter> <Style.Triggers> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.Disconnected}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/machine_off_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.PowerUp}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/getting_ready_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.Standby}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/standby_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.ReadyToDye}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/Ready_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.GettingReady}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/getting_ready_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.Printing}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/dyeing_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.ShuttingDown}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/shutdown_icon_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.Error}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/error_Anim.gif"></Setter> </DataTrigger> <DataTrigger Binding="{Binding ApplicationManager.ConnectedMachine.Status}" Value="{x:Static operations:MachineStatuses.Service}"> <Setter Property="gif:ImageBehavior.AnimatedSource" Value="/Images/Statuses/service_Anim.gif"></Setter> </DataTrigger> </Style.Triggers> </Style> </Image.Style> </Image> </Grid> <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,Converter={StaticResource VersionToShortVersionConverter},ConverterParameter='3'}"></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="NavigationControl" 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" TextElement.Foreground="#9A9A9A"> <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" IsEnabled="{Binding IsApplicationReady}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel IsItemsHost="True"></WrapPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <materialDesign:Card Background="{StaticResource WhiteBackgroundBrush}" Foreground="{StaticResource JobFieldForeground}" 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 Opacity="{StaticResource HomeImageOpacity}" Source="{Binding Image,Mode=OneWay}" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant" /> <Rectangle VerticalAlignment="Bottom" Stroke="{StaticResource borderBrush}"></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}" Foreground="{StaticResource HomePageForeground}"></TextBlock> <TextBlock VerticalAlignment="Center" Margin="0 5 0 0" FontSize="14" TextWrapping="Wrap" Text="{Binding Description,Mode=OneWay}" Foreground="{StaticResource HomePageForeground}"></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 Source={x:Reference control},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="Auto" CornerRadius="0 0 30 30" BorderThickness="1 0 1 1" BorderBrush="DimGray"> <Border.Style> <Style TargetType="Border"> <Setter Property="Background" Value="{StaticResource LoadingBorderGradientBrush}"/> <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 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>--> <ItemsControl ItemsSource="{Binding NotificationProvider.TaskItems}"> <ItemsControl.ItemTemplate> <DataTemplate> <Border Margin="5"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="20 0 0 0"> <mahapps:ProgressRing Width="24" Height="24" Foreground="White"></mahapps:ProgressRing> <TextBlock Text="{Binding Message,Converter={StaticResource StringEllipsisConverter},ConverterParameter=35}" Foreground="White" VerticalAlignment="Center" Margin="10 0 0 0" TextWrapping="Wrap"></TextBlock> </StackPanel> </Border> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Border> <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" Visibility="{Binding IsMachineErrorsOpened,Converter={StaticResource BooleanToVisibilityConverter}}"> <Border Width="350" Background="{StaticResource WhiteBrush50}" BorderBrush="{StaticResource WhiteBackgroundBrush}" 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="{StaticResource WhiteBrush100}" 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="{StaticResource OrangeBrush}"></Setter> </DataTrigger> <DataTrigger Binding="{Binding Category}" Value="Error"> <Setter Property="Kind" Value="AlertOctagon"></Setter> <Setter Property="Foreground" Value="{StaticResource RedBrush100}"></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="{StaticResource WhiteBrush50}" Canvas.Top="-30" Canvas.Left="90"></Polygon> </Canvas> </Grid> </Grid> </DockPanel> </materialDesign:DrawerHost> </Grid> </controls:View>