Extensions page

This commit is contained in:
Niels Laute
2026-05-21 16:10:39 +02:00
parent d89ad22f43
commit a69c6195c9
2 changed files with 352 additions and 344 deletions

View File

@@ -2,16 +2,17 @@
Copyright (c) Microsoft Corporation. All rights reserved. Licensed under
the MIT License. See LICENSE in the project root for license information.
-->
<Page x:Class="Microsoft.Terminal.Settings.Editor.Extensions"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:Microsoft.Terminal.Settings.Model"
xmlns:mtu="using:Microsoft.Terminal.UI"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
mc:Ignorable="d">
<Page
x:Class="Microsoft.Terminal.Settings.Editor.Extensions"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:Microsoft.Terminal.Settings.Model"
xmlns:mtu="using:Microsoft.Terminal.UI"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
mc:Ignorable="d">
<Page.Resources>
<ResourceDictionary>
@@ -19,14 +20,14 @@
<ResourceDictionary Source="CommonResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="CodeBlockStyle"
TargetType="TextBlock">
<Style x:Key="CodeBlockStyle" TargetType="TextBlock">
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="{ThemeResource TextFillColorSecondaryBrush}" />
<Setter Property="FontFamily" Value="Cascadia Mono, Consolas" />
<Setter Property="IsTextSelectionEnabled" Value="True" />
</Style>
<Style x:Key="CodeBlockScrollViewerStyle"
TargetType="ScrollViewer">
<Style x:Key="CodeBlockScrollViewerStyle" TargetType="ScrollViewer">
<Setter Property="AutomationProperties.AccessibilityView" Value="Raw" />
<Setter Property="HorizontalScrollMode" Value="Auto" />
<Setter Property="HorizontalScrollBarVisibility" Value="Auto" />
@@ -34,31 +35,32 @@
<Setter Property="VerticalScrollBarVisibility" Value="Disabled" />
</Style>
<local:ExtensionPackageTemplateSelector x:Key="ExtensionPackageIdentifierTemplateSelector"
ComplexTemplate="{StaticResource ComplexExtensionIdentifierTemplate}"
ComplexTemplateWithFontIcon="{StaticResource ComplexExtensionIdentifierTemplateWithFontIcon}"
DefaultTemplate="{StaticResource DefaultExtensionIdentifierTemplate}" />
<local:ExtensionPackageTemplateSelector
x:Key="ExtensionPackageIdentifierTemplateSelector"
ComplexTemplate="{StaticResource ComplexExtensionIdentifierTemplate}"
ComplexTemplateWithFontIcon="{StaticResource ComplexExtensionIdentifierTemplateWithFontIcon}"
DefaultTemplate="{StaticResource DefaultExtensionIdentifierTemplate}" />
<DataTemplate x:Key="DefaultExtensionIdentifierTemplate"
x:DataType="local:ExtensionPackageViewModel">
<DataTemplate x:Key="DefaultExtensionIdentifierTemplate" x:DataType="local:ExtensionPackageViewModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<FontIcon Grid.Column="0"
Margin="0,0,8,0"
FontSize="32"
Glyph="&#xE74C;" />
<TextBlock Grid.Column="1"
VerticalAlignment="Center"
Text="{x:Bind Package.Source}" />
<FontIcon
Grid.Column="0"
Margin="0,0,8,0"
FontSize="32"
Glyph="&#xE74C;" />
<TextBlock
Grid.Column="1"
VerticalAlignment="Center"
Text="{x:Bind Package.Source}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="ComplexExtensionIdentifierTemplate"
x:DataType="local:ExtensionPackageViewModel">
<DataTemplate x:Key="ComplexExtensionIdentifierTemplate" x:DataType="local:ExtensionPackageViewModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -69,25 +71,27 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<IconSourceElement Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Width="32"
Height="32"
Margin="0,0,8,0"
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Package.Icon)}" />
<TextBlock Grid.Row="0"
Grid.Column="1"
Text="{x:Bind Package.DisplayName}" />
<TextBlock Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SettingsPageItemDescriptionStyle}"
Text="{x:Bind Package.Source}" />
<IconSourceElement
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Width="32"
Height="32"
Margin="0,0,8,0"
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Package.Icon)}" />
<TextBlock
Grid.Row="0"
Grid.Column="1"
Text="{x:Bind Package.DisplayName}" />
<TextBlock
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SettingsPageItemDescriptionStyle}"
Text="{x:Bind Package.Source}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="ComplexExtensionIdentifierTemplateWithFontIcon"
x:DataType="local:ExtensionPackageViewModel">
<DataTemplate x:Key="ComplexExtensionIdentifierTemplateWithFontIcon" x:DataType="local:ExtensionPackageViewModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@@ -98,149 +102,146 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<FontIcon Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Margin="0,0,8,0"
FontSize="32"
Glyph="{x:Bind Package.Icon}" />
<TextBlock Grid.Row="0"
Grid.Column="1"
Text="{x:Bind Package.DisplayName}" />
<TextBlock Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SettingsPageItemDescriptionStyle}"
Text="{x:Bind Package.Source}" />
<FontIcon
Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
Margin="0,0,8,0"
FontSize="32"
Glyph="{x:Bind Package.Icon}" />
<TextBlock
Grid.Row="0"
Grid.Column="1"
Text="{x:Bind Package.DisplayName}" />
<TextBlock
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource SettingsPageItemDescriptionStyle}"
Text="{x:Bind Package.Source}" />
</Grid>
</DataTemplate>
<local:ExtensionPackageTemplateSelector x:Key="ExtensionPackageNavigatorTemplateSelector"
ComplexTemplate="{StaticResource ComplexExtensionNavigatorTemplate}"
ComplexTemplateWithFontIcon="{StaticResource ComplexExtensionNavigatorTemplateWithFontIcon}"
DefaultTemplate="{StaticResource DefaultExtensionNavigatorTemplate}" />
<local:ExtensionPackageTemplateSelector
x:Key="ExtensionPackageNavigatorTemplateSelector"
ComplexTemplate="{StaticResource ComplexExtensionNavigatorTemplate}"
ComplexTemplateWithFontIcon="{StaticResource ComplexExtensionNavigatorTemplateWithFontIcon}"
DefaultTemplate="{StaticResource DefaultExtensionNavigatorTemplate}" />
<DataTemplate x:Key="DefaultExtensionNavigatorTemplate"
x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Header="{x:Bind Package.Source}"
IsClickEnabled="True"
Tag="{x:Bind}">
<DataTemplate x:Key="DefaultExtensionNavigatorTemplate" x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard
Margin="0,0,0,4"
AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Header="{x:Bind Package.Source}"
IsClickEnabled="True"
Tag="{x:Bind}">
<local:SettingsCard.HeaderIcon>
<FontIcon Glyph="&#xE74C;" />
</local:SettingsCard.HeaderIcon>
<ToggleSwitch HorizontalAlignment="Right"
VerticalAlignment="Center"
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
<ToggleSwitch
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
</local:SettingsCard>
</DataTemplate>
<DataTemplate x:Key="ComplexExtensionNavigatorTemplate"
x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Description="{x:Bind Package.Source}"
Header="{x:Bind Package.DisplayName}"
IsClickEnabled="True"
Tag="{x:Bind}">
<DataTemplate x:Key="ComplexExtensionNavigatorTemplate" x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard
Margin="0,0,0,4"
AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Description="{x:Bind Package.Source}"
Header="{x:Bind Package.DisplayName}"
IsClickEnabled="True"
Tag="{x:Bind}">
<local:SettingsCard.HeaderIcon>
<IconSourceElement IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Package.Icon)}" />
</local:SettingsCard.HeaderIcon>
<ToggleSwitch HorizontalAlignment="Right"
VerticalAlignment="Center"
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
<ToggleSwitch
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
</local:SettingsCard>
</DataTemplate>
<DataTemplate x:Key="ComplexExtensionNavigatorTemplateWithFontIcon"
x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Description="{x:Bind Package.Source}"
Header="{x:Bind Package.DisplayName}"
IsClickEnabled="True"
Tag="{x:Bind}">
<DataTemplate x:Key="ComplexExtensionNavigatorTemplateWithFontIcon" x:DataType="local:ExtensionPackageViewModel">
<local:SettingsCard
Margin="0,0,0,4"
AutomationProperties.Name="{x:Bind AccessibleName}"
Click="ExtensionNavigator_Click"
Description="{x:Bind Package.Source}"
Header="{x:Bind Package.DisplayName}"
IsClickEnabled="True"
Tag="{x:Bind}">
<local:SettingsCard.HeaderIcon>
<FontIcon Glyph="{x:Bind Package.Icon}" />
</local:SettingsCard.HeaderIcon>
<ToggleSwitch HorizontalAlignment="Right"
VerticalAlignment="Center"
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
<ToggleSwitch
AutomationProperties.Name="{x:Bind AccessibleName}"
IsOn="{x:Bind Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
</local:SettingsCard>
</DataTemplate>
<DataTemplate x:Key="FragmentProfileViewModelTemplate"
x:DataType="local:FragmentProfileViewModel">
<local:SettingsCard AutomationProperties.Name="{x:Bind AccessibleName}"
Click="NavigateToProfile_Click"
IsClickEnabled="True"
Tag="{x:Bind Profile.Guid}">
<DataTemplate x:Key="FragmentProfileViewModelTemplate" x:DataType="local:FragmentProfileViewModel">
<local:SettingsCard
Margin="0,0,0,4"
AutomationProperties.Name="{x:Bind AccessibleName}"
Click="NavigateToProfile_Click"
IsClickEnabled="True"
Tag="{x:Bind Profile.Guid}">
<local:SettingsCard.Header>
<StackPanel Orientation="Horizontal">
<IconSourceElement Width="16"
Height="16"
Margin="0,0,12,0"
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Profile.Icon.Resolved), Mode=OneWay}" />
<IconSourceElement
Width="20"
Height="20"
Margin="2,0,20,0"
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Profile.Icon.Resolved), Mode=OneWay}" />
<TextBlock Text="{x:Bind Profile.Name, Mode=OneWay}" />
</StackPanel>
</local:SettingsCard.Header>
<TextBlock Style="{StaticResource SettingContainerCurrentValueTextBlockStyle}"
Text="{x:Bind SourceName}" />
<TextBlock Style="{StaticResource SettingContainerCurrentValueTextBlockStyle}" Text="{x:Bind SourceName}" />
</local:SettingsCard>
</DataTemplate>
<!-- This styling matches that of ExpanderSettingContainerStyle for consistency -->
<Style x:Key="ExpanderStyle"
TargetType="muxc:Expander">
<Setter Property="MinHeight" Value="64" />
<Setter Property="Margin" Value="0,4,0,0" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
<DataTemplate x:Key="JsonTemplate"
x:DataType="local:FragmentExtensionViewModel">
<muxc:Expander Header="{x:Bind Fragment.Filename}"
Style="{StaticResource ExpanderStyle}">
<ScrollViewer Style="{StaticResource CodeBlockScrollViewerStyle}">
<TextBlock Style="{StaticResource CodeBlockStyle}"
Text="{x:Bind Fragment.Json}" />
</ScrollViewer>
</muxc:Expander>
<DataTemplate x:Key="JsonTemplate" x:DataType="local:FragmentExtensionViewModel">
<local:SettingsExpander Header="{x:Bind Fragment.Filename}" Margin="0,0,0,4">
<local:SettingsExpander.Items>
<local:SettingsCard HorizontalContentAlignment="Stretch" ContentAlignment="Vertical">
<ScrollViewer Style="{StaticResource CodeBlockScrollViewerStyle}">
<TextBlock Style="{StaticResource CodeBlockStyle}" Text="{x:Bind Fragment.Json}" />
</ScrollViewer>
</local:SettingsCard>
</local:SettingsExpander.Items>
</local:SettingsExpander>
</DataTemplate>
<!--
Copied over from Appearances.xaml. We're unable to add the DataTemplate to CommonResources.xaml
because it needs a code-behind class to use {x:Bind}
-->
<DataTemplate x:Key="ColorChipTemplate"
x:DataType="local:ColorTableEntry">
<Border Width="8"
Height="8"
Background="{x:Bind mtu:Converters.ColorToBrush(Color)}"
CornerRadius="1" />
<DataTemplate x:Key="ColorChipTemplate" x:DataType="local:ColorTableEntry">
<Border
Width="8"
Height="8"
Background="{x:Bind mtu:Converters.ColorToBrush(Color)}"
CornerRadius="1" />
</DataTemplate>
<!--
Copied over from Appearances.xaml. We're unable to add the DataTemplate to CommonResources.xaml
because it needs a code-behind class to use {x:Bind}
-->
<DataTemplate x:Key="ColorSchemeVMTemplate"
x:DataType="local:ColorSchemeViewModel">
<DataTemplate x:Key="ColorSchemeVMTemplate" x:DataType="local:ColorSchemeViewModel">
<StackPanel Orientation="Horizontal">
<Grid Grid.Column="0"
Padding="8"
VerticalAlignment="Center"
Background="{x:Bind mtu:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
ColumnSpacing="2"
CornerRadius="{StaticResource ControlCornerRadius}"
RowSpacing="1">
<Grid
Grid.Column="0"
Padding="8"
VerticalAlignment="Center"
Background="{x:Bind mtu:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
ColumnSpacing="2"
CornerRadius="{StaticResource ControlCornerRadius}"
RowSpacing="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
@@ -256,113 +257,126 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentControl Grid.Row="0"
Grid.Column="0"
Content="{x:Bind ColorEntryAt(0), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="1"
Content="{x:Bind ColorEntryAt(1), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="2"
Content="{x:Bind ColorEntryAt(2), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="3"
Content="{x:Bind ColorEntryAt(3), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="4"
Content="{x:Bind ColorEntryAt(4), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="5"
Content="{x:Bind ColorEntryAt(5), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="6"
Content="{x:Bind ColorEntryAt(6), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="0"
Grid.Column="7"
Content="{x:Bind ColorEntryAt(7), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="0"
Content="{x:Bind ColorEntryAt(8), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="1"
Content="{x:Bind ColorEntryAt(9), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="2"
Content="{x:Bind ColorEntryAt(10), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="3"
Content="{x:Bind ColorEntryAt(11), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="4"
Content="{x:Bind ColorEntryAt(12), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="5"
Content="{x:Bind ColorEntryAt(13), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="6"
Content="{x:Bind ColorEntryAt(14), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl Grid.Row="1"
Grid.Column="7"
Content="{x:Bind ColorEntryAt(15), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<TextBlock Grid.RowSpan="2"
Grid.Column="8"
MaxWidth="192"
Margin="4,0,4,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
FontFamily="Cascadia Code"
Foreground="{x:Bind mtu:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
Text="{x:Bind Name, Mode=OneWay}"
TextTrimming="WordEllipsis" />
<ContentControl
Grid.Row="0"
Grid.Column="0"
Content="{x:Bind ColorEntryAt(0), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="1"
Content="{x:Bind ColorEntryAt(1), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="2"
Content="{x:Bind ColorEntryAt(2), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="3"
Content="{x:Bind ColorEntryAt(3), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="4"
Content="{x:Bind ColorEntryAt(4), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="5"
Content="{x:Bind ColorEntryAt(5), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="6"
Content="{x:Bind ColorEntryAt(6), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="0"
Grid.Column="7"
Content="{x:Bind ColorEntryAt(7), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="0"
Content="{x:Bind ColorEntryAt(8), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="1"
Content="{x:Bind ColorEntryAt(9), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="2"
Content="{x:Bind ColorEntryAt(10), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="3"
Content="{x:Bind ColorEntryAt(11), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="4"
Content="{x:Bind ColorEntryAt(12), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="5"
Content="{x:Bind ColorEntryAt(13), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="6"
Content="{x:Bind ColorEntryAt(14), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<ContentControl
Grid.Row="1"
Grid.Column="7"
Content="{x:Bind ColorEntryAt(15), Mode=OneWay}"
ContentTemplate="{StaticResource ColorChipTemplate}"
IsTabStop="False" />
<TextBlock
Grid.RowSpan="2"
Grid.Column="8"
MaxWidth="192"
Margin="4,0,4,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
FontFamily="Cascadia Code"
Foreground="{x:Bind mtu:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
Text="{x:Bind Name, Mode=OneWay}"
TextTrimming="WordEllipsis" />
</Grid>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="FragmentColorSchemeViewModelTemplate"
x:DataType="local:FragmentColorSchemeViewModel">
<local:SettingsCard AutomationProperties.Name="{x:Bind AccessibleName}"
Click="NavigateToColorScheme_Click"
IsClickEnabled="True"
Tag="{x:Bind ColorSchemeVM}">
<local:SettingsCard.Header>
<ContentPresenter Content="{x:Bind ColorSchemeVM, Mode=OneWay}"
ContentTemplate="{StaticResource ColorSchemeVMTemplate}" />
</local:SettingsCard.Header>
<TextBlock Style="{StaticResource SettingContainerCurrentValueTextBlockStyle}"
Text="{x:Bind SourceName}" />
<DataTemplate x:Key="FragmentColorSchemeViewModelTemplate" x:DataType="local:FragmentColorSchemeViewModel">
<local:SettingsCard
AutomationProperties.Name="{x:Bind AccessibleName}"
Click="NavigateToColorScheme_Click"
Header="{x:Bind SourceName}"
IsClickEnabled="True"
Tag="{x:Bind ColorSchemeVM}">
<ContentPresenter Content="{x:Bind ColorSchemeVM, Mode=OneWay}" ContentTemplate="{StaticResource ColorSchemeVMTemplate}" />
</local:SettingsCard>
</DataTemplate>
</ResourceDictionary>
@@ -371,117 +385,111 @@
<StackPanel Style="{StaticResource SettingsStackStyle}">
<!-- [Root View Only] -->
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.IsExtensionView), Mode=OneWay}">
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}" Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.IsExtensionView), Mode=OneWay}">
<!-- Learn more about fragment extensions -->
<HyperlinkButton x:Uid="Extensions_DisclaimerHyperlink"
Margin="-12,0,0,0"
NavigateUri="https://go.microsoft.com/fwlink/?linkid=2321753" />
<HyperlinkButton
x:Uid="Extensions_DisclaimerHyperlink"
Margin="-12,0,0,0"
NavigateUri="https://go.microsoft.com/fwlink/?linkid=2321753" />
<!-- Grouping: Active Extensions -->
<TextBlock x:Uid="Extensions_ActiveExtensionsHeader"
Margin="0,12,0,8"
Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl x:Name="ActiveExtensionsList"
IsTabStop="False"
ItemTemplateSelector="{StaticResource ExtensionPackageNavigatorTemplateSelector}"
ItemsSource="{x:Bind ViewModel.ExtensionPackages}"
XYFocusKeyboardNavigation="Enabled" />
<TextBlock
x:Uid="Extensions_ActiveExtensionsHeader"
Margin="0,12,0,8"
Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl
x:Name="ActiveExtensionsList"
IsTabStop="False"
ItemTemplateSelector="{StaticResource ExtensionPackageNavigatorTemplateSelector}"
ItemsSource="{x:Bind ViewModel.ExtensionPackages}"
XYFocusKeyboardNavigation="Enabled" />
</StackPanel>
<!-- [Extension View Only] -->
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}"
Visibility="{x:Bind ViewModel.IsExtensionView, Mode=OneWay}">
<StackPanel Style="{StaticResource SettingsStackStyle}" Visibility="{x:Bind ViewModel.IsExtensionView, Mode=OneWay}">
<!-- Extension Status -->
<muxc:Expander AutomationProperties.Name="{x:Bind ViewModel.CurrentExtensionPackage.AccessibleName, Mode=OneWay}"
IsExpanded="True"
Style="{StaticResource ExpanderStyle}">
<muxc:Expander.Header>
<Grid MinHeight="64">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!--
BODGY
Theoretically, you could use a ContentTemplateSelector directly. However, that doesn't work.
For some reason, we just get the object type's ToString called and the selector gets nullptr as a parameter.
Adding the template as a view model property is a workaround.
-->
<ContentPresenter Grid.Column="0"
VerticalAlignment="Center"
Content="{x:Bind ViewModel.CurrentExtensionPackage, Mode=OneWay}"
ContentTemplate="{x:Bind ViewModel.CurrentExtensionPackageIdentifierTemplate, Mode=OneWay}" />
<local:SettingsCard AutomationProperties.Name="{x:Bind ViewModel.CurrentExtensionPackage.AccessibleName, Mode=OneWay}">
<local:SettingsCard.Header>
<!--
BODGY
Theoretically, you could use a ContentTemplateSelector directly. However, that doesn't work.
For some reason, we just get the object type's ToString called and the selector gets nullptr as a parameter.
Adding the template as a view model property is a workaround.
-->
<ContentPresenter
Grid.Column="0"
VerticalAlignment="Center"
Content="{x:Bind ViewModel.CurrentExtensionPackage, Mode=OneWay}"
ContentTemplate="{x:Bind ViewModel.CurrentExtensionPackageIdentifierTemplate, Mode=OneWay}" />
</local:SettingsCard.Header>
<ToggleSwitch
Grid.Column="1"
Margin="0"
AutomationProperties.Name="{x:Bind ViewModel.CurrentExtensionPackage.AccessibleName, Mode=OneWay}"
IsOn="{x:Bind ViewModel.CurrentExtensionPackage.Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}"
Tag="{x:Bind ViewModel.CurrentExtensionPackage.Package.Source, Mode=OneWay}" />
</local:SettingsCard>
<ToggleSwitch Grid.Column="1"
Margin="0"
AutomationProperties.Name="{x:Bind ViewModel.CurrentExtensionPackage.AccessibleName, Mode=OneWay}"
IsOn="{x:Bind ViewModel.CurrentExtensionPackage.Enabled, Mode=TwoWay}"
Style="{StaticResource ToggleSwitchInExpanderStyle}"
Tag="{x:Bind ViewModel.CurrentExtensionPackage.Package.Source, Mode=OneWay}" />
</Grid>
</muxc:Expander.Header>
<muxc:Expander.Content>
<StackPanel>
<!-- Scope -->
<local:SettingsCard x:Name="Scope"
x:Uid="Extensions_Scope"
IsTabStop="False">
<TextBlock VerticalAlignment="Center"
Style="{ThemeResource SecondaryTextBlockStyle}"
Text="{x:Bind ViewModel.CurrentExtensionPackage.Scope, Mode=OneWay}" />
</local:SettingsCard>
<!-- JSON -->
<ItemsControl IsTabStop="False"
ItemTemplate="{StaticResource JsonTemplate}"
ItemsSource="{x:Bind ViewModel.CurrentExtensionPackage.FragmentExtensions, Mode=OneWay}" />
</StackPanel>
</muxc:Expander.Content>
</muxc:Expander>
<local:SettingsCard
x:Name="Scope"
x:Uid="Extensions_Scope"
IsTabStop="False">
<TextBlock
VerticalAlignment="Center"
Style="{ThemeResource SecondaryTextBlockStyle}"
Text="{x:Bind ViewModel.CurrentExtensionPackage.Scope, Mode=OneWay}" />
</local:SettingsCard>
<!-- JSON -->
<ItemsControl
IsTabStop="False"
ItemTemplate="{StaticResource JsonTemplate}"
ItemsSource="{x:Bind ViewModel.CurrentExtensionPackage.FragmentExtensions, Mode=OneWay}" />
</StackPanel>
<!-- Grouping: Modified Profiles -->
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}"
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesModified), Mode=OneWay}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoProfilesModified), Mode=OneWay}">
<TextBlock x:Uid="Extensions_ModifiedProfilesHeader"
Margin="0,0,0,8"
Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl x:Name="ModifiedProfilesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentProfileViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ProfilesModified, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
<StackPanel
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesModified), Mode=OneWay}"
Style="{StaticResource SettingsStackStyle}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoProfilesModified), Mode=OneWay}">
<TextBlock x:Uid="Extensions_ModifiedProfilesHeader" Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl
x:Name="ModifiedProfilesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentProfileViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ProfilesModified, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
</StackPanel>
<!-- Grouping: Added Profiles -->
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}"
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesAdded), Mode=OneWay}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoProfilesAdded), Mode=OneWay}">
<TextBlock x:Uid="Extensions_AddedProfilesHeader"
Margin="0,0,0,8"
Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl x:Name="AddedProfilesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentProfileViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ProfilesAdded, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
<StackPanel
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesAdded), Mode=OneWay}"
Style="{StaticResource SettingsStackStyle}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoProfilesAdded), Mode=OneWay}">
<TextBlock x:Uid="Extensions_AddedProfilesHeader" Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl
x:Name="AddedProfilesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentProfileViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ProfilesAdded, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
</StackPanel>
<!-- Grouping: Added Color Schemes -->
<StackPanel MaxWidth="{StaticResource StandardControlMaxWidth}"
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesAdded), Mode=OneWay}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoSchemesAdded), Mode=OneWay}">
<TextBlock x:Uid="Extensions_AddedColorSchemesHeader"
Margin="0,0,0,8"
Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl x:Name="AddedColorSchemesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentColorSchemeViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ColorSchemesAdded, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
<StackPanel
Margin="{x:Bind CalculateMargin(ViewModel.NoProfilesAdded), Mode=OneWay}"
Style="{StaticResource SettingsStackStyle}"
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.NoSchemesAdded), Mode=OneWay}">
<TextBlock x:Uid="Extensions_AddedColorSchemesHeader" Style="{StaticResource TextBlockSubHeaderStyle}" />
<ItemsControl
x:Name="AddedColorSchemesList"
IsTabStop="False"
ItemTemplate="{StaticResource FragmentColorSchemeViewModelTemplate}"
ItemsSource="{x:Bind ViewModel.ColorSchemesAdded, Mode=OneWay}"
XYFocusKeyboardNavigation="Enabled" />
</StackPanel>
</StackPanel>
</Page>

View File

@@ -2770,16 +2770,16 @@
<comment>This is displayed in concordance with Globals_StartOnUserLogin if the enterprise administrator has taken control of this setting.</comment>
</data>
<data name="Extensions_ActiveExtensionsHeader.Text" xml:space="preserve">
<value>Active Extensions</value>
<value>Active extensions</value>
</data>
<data name="Extensions_ModifiedProfilesHeader.Text" xml:space="preserve">
<value>Modified Profiles</value>
<value>Modified profiles</value>
</data>
<data name="Extensions_AddedProfilesHeader.Text" xml:space="preserve">
<value>Added Profiles</value>
<value>Added profiles</value>
</data>
<data name="Extensions_AddedColorSchemesHeader.Text" xml:space="preserve">
<value>Added Color Schemes</value>
<value>Added color schemes</value>
</data>
<data name="Extensions_DisclaimerHyperlink.Content" xml:space="preserve">
<value>Learn more about extensions</value>