emby-toolbox/EmbyToolbox/MainWindow.xaml
2026-05-16 15:34:09 +05:00

1146 lines
61 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<Window x:Class="EmbyToolbox.MainWindow"
x:Name="RootWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"
xmlns:behaviors="clr-namespace:EmbyToolbox.Behaviors"
xmlns:views="clr-namespace:EmbyToolbox.Views"
xmlns:viewModels="clr-namespace:EmbyToolbox.ViewModels"
xmlns:converters="clr-namespace:EmbyToolbox.Converters"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Title="Emby Toolbox"
Icon="/Resources/AppIcon.ico"
MinWidth="800"
MinHeight="500"
Width="1100"
Height="750"
Background="{DynamicResource Ui.Brush.Window}"
WindowStartupLocation="CenterScreen">
<Window.Resources>
<converters:BooleanToVisibilityConverter x:Key="BoolToVis" />
</Window.Resources>
<Window.TaskbarItemInfo>
<shell:TaskbarItemInfo ProgressState="{Binding TaskbarProgressState, Mode=OneWay}"
ProgressValue="{Binding TaskbarProgressValue, Mode=OneWay}" />
</Window.TaskbarItemInfo>
<Grid Margin="{StaticResource Ui.PagePadding}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TabControl Grid.Row="0" Style="{StaticResource UiTabControl}" SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}">
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE8AC;" />
<TextBlock Text="Переименование сериалов" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<Grid DataContext="{Binding SeriesRenamer}">
<Grid.Resources>
<Style x:Key="SeriesTreeItemStyle" TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="Foreground" Value="{DynamicResource Ui.Brush.Text}" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox x:Name="SeriesRootPathBox"
Style="{StaticResource UiTextInput}"
Text="{Binding RootFolderPath, Mode=OneWay}"
IsReadOnly="True"
HorizontalAlignment="Stretch" />
<TextBlock Margin="8,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="Выберите корневую папку сериала...">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource UiTextCaption}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=SeriesRootPathBox}" Value="">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
<Button Grid.Column="2"
MinWidth="100"
Style="{StaticResource UiButtonSecondary}"
Command="{Binding SelectRootFolderCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE838;" />
<TextBlock Text="Выбрать" VerticalAlignment="Center" />
</StackPanel>
</Button>
</Grid>
<Grid Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Style="{StaticResource UiTextCaption}"
Text="Имя сериала:"
VerticalAlignment="Center" />
<Grid Grid.Column="2">
<TextBox x:Name="SeriesNameBox"
Style="{StaticResource UiTextInput}"
Text="{Binding SeriesName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Stretch" />
<TextBlock Margin="8,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="Введите имя сериала...">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource UiTextCaption}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=SeriesNameBox}" Value="">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Grid>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="12,0,0,0">
<Button Style="{StaticResource UiButtonSecondary}" MinWidth="108" Margin="0,0,8,0" Command="{Binding RefreshPreviewCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE72C;" />
<TextBlock Text="Обновить" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource UiButtonPrimary}" MinWidth="108" Command="{Binding RunRenameCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphOnPrimary}" Text="&#xE768;" />
<TextBlock Text="Запустить" VerticalAlignment="Center" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0"
Padding="6"
Background="{DynamicResource Ui.Brush.Surface}"
behaviors:SeriesRenamerDropTargetBehavior.IsEnabled="True">
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.BorderSubtle}" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsRootTreeDragOver}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.Accent}" />
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TreeView ItemsSource="{Binding CurrentTree}"
BorderThickness="0"
Background="Transparent"
ItemContainerStyle="{StaticResource SeriesTreeItemStyle}"
behaviors:TreeViewScrollSyncBehavior.SyncGroup="SeriesRenameTrees">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type viewModels:RenameTreeNodeViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTree}" Text="{Binding IconGlyph}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Border>
<GridSplitter Grid.Column="1" Width="6" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource Ui.Brush.BorderSubtle}" ShowsPreview="True" />
<Border Grid.Column="2" BorderBrush="{DynamicResource Ui.Brush.BorderSubtle}" BorderThickness="1" Background="{DynamicResource Ui.Brush.Surface}" Padding="6">
<Grid>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsPreviewSupported}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<TreeView ItemsSource="{Binding PreviewTree}"
BorderThickness="0"
Background="Transparent"
ItemContainerStyle="{StaticResource SeriesTreeItemStyle}"
behaviors:TreeViewScrollSyncBehavior.SyncGroup="SeriesRenameTrees">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type viewModels:RenameTreeNodeViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTree}" Text="{Binding IconGlyph}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsPreviewSupported}" Value="False">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphEmpty}" Text="&#xE946;" />
<TextBlock Style="{StaticResource UiTextH2}" Text="Невозможно построить предпросмотр" Margin="0,8,0,0" HorizontalAlignment="Center" />
<TextBlock Style="{StaticResource UiTextCaption}" Text="Проверьте структуру каталогов" HorizontalAlignment="Center" Margin="0,4,0,0" />
<TextBlock Style="{StaticResource UiTextCaption}" Text="{Binding UnsupportedReason}" HorizontalAlignment="Center" Margin="0,4,0,0" TextWrapping="Wrap" MaxWidth="320" />
</StackPanel>
</Grid>
</Grid>
</Border>
</Grid>
</Grid>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE9F5;" />
<TextBlock Text="Конвертация" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<views:ConversionView DataContext="{Binding Conversion}" />
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xEA3C;" />
<TextBlock Text="Объединение" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<views:MergeView DataContext="{Binding Merge}" />
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE8BF;" />
<TextBlock Text="Извлечение дорожек" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<views:TrackExtractionView DataContext="{Binding TrackExtraction}" />
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE946;" />
<TextBlock Text="Video info" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<Grid DataContext="{Binding VideoInfo}">
<TabControl Style="{StaticResource UiTabControl}" SelectedIndex="{Binding SelectedSubTabIndex, Mode=TwoWay}">
<TabItem Header="Краткая информация">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="0"
BorderBrush="{DynamicResource Ui.Brush.BorderSubtle}"
BorderThickness="0,0,0,1"
Padding="0,0,0,8"
Margin="0,0,0,8">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button Style="{StaticResource UiButtonSecondary}"
MinWidth="132"
Command="{Binding SelectSummaryFilesCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE8E5;" />
<TextBlock Text="Выбрать файлы" VerticalAlignment="Center" />
</StackPanel>
</Button>
</StackPanel>
</Border>
<Border Grid.Row="1"
Padding="8"
Background="{DynamicResource Ui.Brush.Surface}"
behaviors:VideoInfoDropTargetBehavior.IsEnabled="True">
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.BorderSubtle}" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsVideoInfoDropHighlight}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.Accent}" />
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding HasSummaryData}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<TextBox Text="{Binding SummaryText, Mode=OneWay}"
IsReadOnly="True"
AcceptsReturn="True"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
FontFamily="Consolas"
TextWrapping="NoWrap"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Style="{StaticResource UiLog}" />
</Grid>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding HasSummaryData}" Value="False">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphEmpty}" Text="&#xE946;" />
<TextBlock Style="{StaticResource UiTextH2}"
Margin="0,8,0,0"
HorizontalAlignment="Center"
Text="Нет данных для отображения" />
</StackPanel>
</Grid>
</Grid>
</Border>
</Grid>
</TabItem>
<TabItem Header="Подробная информация">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<TextBox x:Name="VideoInfoFilePathBox"
Style="{StaticResource UiTextInput}"
Text="{Binding SelectedFilePath, Mode=OneWay}"
IsReadOnly="True"
HorizontalAlignment="Stretch" />
<TextBlock Margin="8,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="Выберите видеофайл для анализа...">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource UiTextCaption}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=VideoInfoFilePathBox}" Value="">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
<Button Grid.Column="2"
MinWidth="100"
Style="{StaticResource UiButtonSecondary}"
Command="{Binding SelectFileCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE8E5;" />
<TextBlock Text="Выбрать" VerticalAlignment="Center" />
</StackPanel>
</Button>
</Grid>
<Border Grid.Row="1"
BorderBrush="{DynamicResource Ui.Brush.BorderSubtle}"
BorderThickness="0,0,0,1"
Padding="0,0,0,8"
Margin="0,0,0,8">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button Style="{StaticResource UiButtonSecondary}" Margin="0,0,8,0" MinWidth="126" Command="{Binding ExpandAllCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Развернуть всё" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource UiButtonSecondary}" Margin="0,0,8,0" MinWidth="126" Command="{Binding CollapseAllCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Свернуть всё" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource UiButtonSecondary}" Margin="0,0,8,0" MinWidth="132" Command="{Binding CopyJsonCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE8C8;" />
<TextBlock Text="Копировать JSON" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource UiButtonSecondary}" MinWidth="130" Command="{Binding SaveJsonCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE74E;" />
<TextBlock Text="Сохранить JSON" VerticalAlignment="Center" />
</StackPanel>
</Button>
</StackPanel>
</Border>
<Border Grid.Row="2"
Padding="8,4,8,8"
Background="{DynamicResource Ui.Brush.Surface}"
behaviors:VideoInfoDropTargetBehavior.IsEnabled="True">
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.BorderSubtle}" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsVideoInfoDropHighlight}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.Accent}" />
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.Resources>
<Style x:Key="VideoInfoTreeItemStyle" TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="Padding" Value="2,1" />
<Setter Property="Margin" Value="0,0,0,1" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{DynamicResource Ui.Brush.Text}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<EventSetter Event="PreviewMouseRightButtonDown" Handler="OnJsonTreeItemPreviewMouseRightButtonDown" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Копировать значение"
Command="{Binding DataContext.VideoInfo.CopyNodeValueCommand, Source={x:Reference RootWindow}}"
CommandParameter="{Binding}" />
<MenuItem Header="Копировать узел"
Command="{Binding DataContext.VideoInfo.CopyNodeLineCommand, Source={x:Reference RootWindow}}"
CommandParameter="{Binding}" />
<MenuItem Header="Копировать узел с дочерними элементами"
Command="{Binding DataContext.VideoInfo.CopyNodeWithChildrenCommand, Source={x:Reference RootWindow}}"
CommandParameter="{Binding}" />
<Separator />
<MenuItem Header="Копировать путь к узлу"
Command="{Binding DataContext.VideoInfo.CopyNodePathCommand, Source={x:Reference RootWindow}}"
CommandParameter="{Binding}" />
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource Ui.Brush.DataRowSelected}" />
<Setter Property="Foreground" Value="{DynamicResource Ui.Brush.Text}" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource Ui.Brush.Text}" />
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid Grid.RowSpan="2">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedFilePath}" Value="">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphEmpty}" Text="&#xE946;" />
<TextBlock Style="{StaticResource UiTextH2}"
Margin="0,8,0,0"
HorizontalAlignment="Center"
Text="Нет данных для отображения" />
<TextBlock Style="{StaticResource UiTextCaption}"
Margin="0,4,0,0"
HorizontalAlignment="Center"
Text="Выберите файл для получения информации через ffprobe" />
</StackPanel>
</Grid>
<TextBlock Grid.Row="0"
Text="{Binding ErrorMessage}"
Margin="0,0,0,8"
TextWrapping="Wrap">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource UiTextError}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<Trigger Property="Text" Value="">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TreeView Grid.Row="1" ItemsSource="{Binding JsonNodes}" Margin="0" BorderThickness="0" Background="Transparent">
<TreeView.Style>
<Style TargetType="TreeView">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedFilePath}" Value="">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TreeView.Style>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type viewModels:JsonTreeNodeViewModel}" ItemsSource="{Binding Children}">
<Border Background="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem}, Path=Background}" Padding="2,1">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=": " />
<TextBlock Text="{Binding Value}" Foreground="{DynamicResource Ui.Brush.Muted}" />
</StackPanel>
<Border.Style>
<Style TargetType="Border">
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource Ui.Brush.DataRowHover}" />
</Trigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem}, Path=IsSelected}" Value="True">
<Setter Property="Background" Value="{DynamicResource Ui.Brush.DataRowSelected}" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource Ui.Brush.Text}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</HierarchicalDataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<StaticResource ResourceKey="VideoInfoTreeItemStyle" />
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
</Border>
</Grid>
</TabItem>
</TabControl>
</Grid>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE713;" />
<TextBlock Text="Настройки" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<TabItem.Resources>
<Style x:Key="SettingsGroupBox" TargetType="GroupBox">
<Setter Property="Padding" Value="6,4,6,6" />
<Setter Property="Margin" Value="0" />
<Setter Property="BorderBrush" Value="{DynamicResource Ui.Brush.BorderSubtle}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FontSize" Value="11" />
</Style>
<Style x:Key="SettingsLabel" TargetType="TextBlock" BasedOn="{StaticResource UiTextCaption}">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="0,0,6,0" />
</Style>
<Style x:Key="SettingsTextBox" TargetType="TextBox" BasedOn="{StaticResource UiTextInput}">
<Setter Property="Height" Value="26" />
<Setter Property="MinHeight" Value="26" />
<Setter Property="Padding" Value="6,2" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<Style x:Key="SettingsComboBox" TargetType="ComboBox" BasedOn="{StaticResource UiCombo}">
<Setter Property="Height" Value="26" />
<Setter Property="MinHeight" Value="26" />
<Setter Property="Padding" Value="6,1" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<Style x:Key="SettingsButton" TargetType="Button" BasedOn="{StaticResource UiButtonSecondary}">
<Setter Property="Height" Value="28" />
<Setter Property="MinHeight" Value="28" />
<Setter Property="Padding" Value="8,1" />
<Setter Property="FontSize" Value="12" />
</Style>
<Style x:Key="SettingsPrimaryButton" TargetType="Button" BasedOn="{StaticResource UiButtonPrimary}">
<Setter Property="Height" Value="28" />
<Setter Property="MinHeight" Value="28" />
<Setter Property="Padding" Value="8,1" />
<Setter Property="FontSize" Value="12" />
</Style>
<Style x:Key="SettingsDangerButton" TargetType="Button" BasedOn="{StaticResource UiButtonDanger}">
<Setter Property="Height" Value="28" />
<Setter Property="MinHeight" Value="28" />
<Setter Property="Padding" Value="8,1" />
<Setter Property="FontSize" Value="12" />
</Style>
<Style x:Key="SettingsDataGridHeader" TargetType="DataGridColumnHeader" BasedOn="{StaticResource UiDataGridColumnHeader}">
<Setter Property="Height" Value="26" />
<Setter Property="MinHeight" Value="26" />
<Setter Property="Padding" Value="4,2" />
<Setter Property="FontSize" Value="11" />
</Style>
<Style x:Key="SettingsDataGridCell" TargetType="DataGridCell" BasedOn="{StaticResource UiDataGridCell}">
<Setter Property="Padding" Value="4,0" />
<Setter Property="FontSize" Value="11" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<Style x:Key="SettingsDataGridRow" TargetType="DataGridRow" BasedOn="{StaticResource UiDataGridRow}">
<Setter Property="Height" Value="26" />
<Setter Property="MinHeight" Value="26" />
</Style>
</TabItem.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.2*" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="1.35*" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="1.15*" />
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Header="Пути" Style="{StaticResource SettingsGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="76" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="4" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="TEMP" Style="{StaticResource SettingsLabel}" />
<Grid Grid.Column="1">
<TextBox x:Name="SettingsTempPathBox"
Style="{StaticResource SettingsTextBox}"
HorizontalAlignment="Stretch"
Text="{Binding ProcessingTempDirectory, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Margin="6,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="C:\Users\me\AppData\Local\Temp\EmbyToolbox">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource UiTextCaption}">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=SettingsTempPathBox}" Value="">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
<Button Grid.Column="3"
MinWidth="74"
Style="{StaticResource SettingsButton}"
Command="{Binding ChooseTempDirectoryCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE838;" />
<TextBlock Text="Обзор" VerticalAlignment="Center" />
</StackPanel>
</Button>
</Grid>
</GroupBox>
<GroupBox Grid.Column="2" Header="Выполнение" Style="{StaticResource SettingsGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="74" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="26" />
<RowDefinition Height="4" />
<RowDefinition Height="26" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Лог" Style="{StaticResource SettingsLabel}" />
<ComboBox Grid.Row="0"
Grid.Column="1"
Style="{StaticResource SettingsComboBox}"
ItemsSource="{Binding LogLevelOptions}"
SelectedItem="{Binding MinimumFileLogLevel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="GPU" Style="{StaticResource SettingsLabel}" />
<ComboBox Grid.Row="2"
Grid.Column="1"
Style="{StaticResource SettingsComboBox}"
ItemsSource="{Binding HardwareAccelerationOptions}"
SelectedItem="{Binding HardwareAcceleration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</GroupBox>
<GroupBox Grid.Column="4" Header="Уведомления" Style="{StaticResource SettingsGroupBox}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24" />
<RowDefinition Height="24" />
<RowDefinition Height="4" />
<RowDefinition Height="28" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0"
Margin="0"
VerticalAlignment="Center"
IsChecked="{Binding NotifyCompletionSoundAfterQueue, Mode=TwoWay}">
<TextBlock Text="Звук после очереди" VerticalAlignment="Center" />
</CheckBox>
<CheckBox Grid.Row="1"
Margin="0"
VerticalAlignment="Center"
IsChecked="{Binding NotifyWindowsToastAfterQueue, Mode=TwoWay}">
<TextBlock Text="Windows toast" VerticalAlignment="Center" />
</CheckBox>
<Button Grid.Row="3"
MinWidth="118"
HorizontalAlignment="Left"
Style="{StaticResource SettingsButton}"
Command="{Binding TestWindowsNotificationCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xEA8F;" />
<TextBlock Text="Тест" VerticalAlignment="Center" />
</StackPanel>
</Button>
</Grid>
</GroupBox>
</Grid>
<Grid Grid.Row="2" Margin="0,0,0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="Профили конвертации"
Style="{StaticResource UiTextH2}"
VerticalAlignment="Center" />
<StackPanel Grid.Column="2" Orientation="Horizontal">
<Button Style="{StaticResource SettingsButton}" Margin="0,0,6,0" MinWidth="104" Command="{Binding AddConversionProfileCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE710;" />
<TextBlock Text="Добавить" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource SettingsDangerButton}" MinWidth="96" Command="{Binding RemoveConversionProfileCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE74D;" />
<TextBlock Text="Удалить" VerticalAlignment="Center" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
<DataGrid Grid.Row="3"
ItemsSource="{Binding ConversionProfiles}"
SelectedItem="{Binding SelectedConversionProfile, Mode=TwoWay}"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="False"
Style="{StaticResource UiDataGrid}"
RowStyle="{StaticResource SettingsDataGridRow}"
ColumnHeaderStyle="{StaticResource SettingsDataGridHeader}"
CellStyle="{StaticResource SettingsDataGridCell}"
HeadersVisibility="Column"
GridLinesVisibility="All"
RowHeight="26"
ColumnHeaderHeight="26"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
MinHeight="0">
<DataGrid.Resources>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontSize" Value="11" />
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource SettingsTextBox}">
<Setter Property="Height" Value="24" />
<Setter Property="MinHeight" Value="24" />
<Setter Property="Padding" Value="4,0" />
</Style>
<Style TargetType="ComboBox" BasedOn="{StaticResource SettingsComboBox}">
<Setter Property="Height" Value="24" />
<Setter Property="MinHeight" Value="24" />
<Setter Property="Padding" Value="4,0" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Профиль" Width="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Profile, Mode=OneWay}" VerticalAlignment="Center" Foreground="{DynamicResource Ui.Brush.Text}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsBuiltIn}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBox Text="{Binding Profile, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Center">
<TextBox.Style>
<Style TargetType="TextBox" BasedOn="{StaticResource UiTextInput}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsBuiltIn}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Контейнер" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Container}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionContainerOptions, ElementName=RootWindow}"
SelectedItem="{Binding Container, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Видео" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Video}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionVideoCodecOptions, ElementName=RootWindow}"
SelectedItem="{Binding Video, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Pixel Format" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding PixelFormat}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionPixelFormatOptions, ElementName=RootWindow}"
SelectedItem="{Binding PixelFormat, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Разрешение" Width="145">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Resolution}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionResolutionOptions, ElementName=RootWindow}"
SelectedItem="{Binding Resolution, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="FPS" Width="130">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Fps}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionFpsOptions, ElementName=RootWindow}"
SelectedItem="{Binding Fps, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Аудио" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Audio}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionAudioCodecOptions, ElementName=RootWindow}"
SelectedItem="{Binding Audio, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Битрейт" Width="110">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Bitrate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionBitrateOptions, ElementName=RootWindow}"
SelectedItem="{Binding Bitrate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Видеобитрейт" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding VideoBitrateMode}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionVideoBitrateOptions, ElementName=RootWindow}"
SelectedItem="{Binding VideoBitrateMode, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Субтитры" Width="95">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Subtitles}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionYesNoOptions, ElementName=RootWindow}"
SelectedItem="{Binding Subtitles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Внешние дорожки" Width="125">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ExternalTracks}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionYesNoOptions, ElementName=RootWindow}"
SelectedItem="{Binding ExternalTracks, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Внешние субтитры" Width="135">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ExternalSubtitles}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionYesNoOptions, ElementName=RootWindow}"
SelectedItem="{Binding ExternalSubtitles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Шрифты" Width="85">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Fonts}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.ConversionYesNoOptions, ElementName=RootWindow}"
SelectedItem="{Binding Fonts, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Row="4" Margin="0,6,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0"
Style="{StaticResource SettingsButton}"
MinWidth="154"
HorizontalAlignment="Left"
Command="{Binding CheckToolsCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE895;" />
<TextBlock Text="Проверить инструменты" VerticalAlignment="Center" />
</StackPanel>
</Button>
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Style="{StaticResource SettingsButton}"
MinWidth="96"
Margin="0,0,8,0"
Command="{Binding CancelSettingsCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphButton}" Text="&#xE711;" />
<TextBlock Text="Отменить" VerticalAlignment="Center" />
</StackPanel>
</Button>
<Button Style="{StaticResource SettingsPrimaryButton}"
MinWidth="98"
Command="{Binding SaveSettingsCommand}">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Style="{StaticResource UiMdlGlyphOnPrimary}" Text="&#xE74E;" />
<TextBlock Text="Сохранить" VerticalAlignment="Center" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Grid>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource UiMdlGlyphTab}" Text="&#xE81C;" />
<TextBlock Text="Логи" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<views:LogsView DataContext="{Binding Logs}" />
</TabItem>
</TabControl>
<Border Grid.Row="1"
Margin="0,8,0,0"
Padding="8,4"
BorderBrush="{DynamicResource Ui.Brush.BorderSubtle}"
BorderThickness="1"
Background="{DynamicResource Ui.Brush.Surface}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Foreground="{DynamicResource Ui.Brush.Text}"
FontWeight="SemiBold"
Text="{Binding AppStatusText}" />
<Grid Grid.Column="1"
Margin="14,0,0,0"
VerticalAlignment="Center">
<TextBlock VerticalAlignment="Center"
Foreground="{DynamicResource Ui.Brush.Caption}"
Text="Нет задач"
Visibility="{Binding ShowLongOperationIdlePlaceholder, Converter={StaticResource BoolToVis}}" />
<Grid VerticalAlignment="Center"
Visibility="{Binding IsLongOperationRunning, Converter={StaticResource BoolToVis}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" MinWidth="24" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ProgressBar Grid.Column="0"
Width="210"
Height="10"
MinHeight="8"
MaxHeight="12"
Style="{StaticResource UiProgressBar}"
VerticalAlignment="Center"
Minimum="0"
Maximum="100"
Value="{Binding LongOperationProgressPercent, Mode=OneWay}" />
<TextBlock Grid.Column="1"
Margin="10,0,8,0"
VerticalAlignment="Center"
TextTrimming="CharacterEllipsis"
Foreground="{DynamicResource Ui.Brush.Text}"
Text="{Binding LongOperationProgressText, Mode=OneWay}" />
<TextBlock Grid.Column="2"
VerticalAlignment="Center"
MinWidth="58"
TextAlignment="Right"
Foreground="{DynamicResource Ui.Brush.Text}"
Text="{Binding LongOperationProgressPercent, Mode=OneWay, StringFormat={}{0:F2}%}" />
</Grid>
</Grid>
</Grid>
</Border>
</Grid>
</Window>