mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 09:31:15 +10:00
5ebb24b107
* refactor: simplify Win11 Creator ISO workflow Keep no-driver ISO generation on the fast copy-only path. Inject exported drivers with one selected-index WIM mount, one Add-Driver pass, and one commit. Limit WinPE staging to boot-storage drivers and improve workflow validation coverage. * refactor: stage Win11 setup script fallback Copy the prepared setup script payloads into sources/$//Setup/Scripts so setup media does not depend solely on answer-file extension extraction. Keep the existing autounattend execution path unchanged and cover the fallback files in the Win11 Creator tests. * refactor: address codex feedback * refactor: run ISO verification in runspace Rename the ISO logger to Write-WinUtilISOLog so the shared runspace pool imports it automatically. Run Mount & Verify off the WPF thread with dispatcher-safe UI updates, and add Pester coverage for the runspace and logger contract. * refactor: address ISO review feedback Keep the selected ISO stable during background verification. Apply ContentDeliveryManager settings to both the first account and the default profile. Block FAT32 USB creation when install.esd exceeds the supported file size. * refactor: address ISO setup edge cases Set BypassNRO before OOBE so local account setup is available during Windows Setup. Detect registered DISM mounts during driver-injection cleanup so partial mount failures are discarded. * refactor: address ISO review edge cases Use the actual FAT32 file limit for install.esd USB checks. Disable ISO modification while mount verification is running. Apply unsupported-hardware notice suppression to the first user profile. * refactor: stage ISO setup safeguards earlier Set device encryption and reserved-storage registry guards before OOBE. Enable the OEM configuration-set fallback when setup scripts are staged there. * Update functions/private/Invoke-WinUtilISOUSB.ps1 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Chris Titus <contact@christitus.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1924 lines
126 KiB
XML
1924 lines
126 KiB
XML
<Window
|
|
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:local="clr-namespace:WinUtility"
|
|
WindowStartupLocation="CenterScreen"
|
|
UseLayoutRounding="True"
|
|
WindowStyle="SingleBorderWindow"
|
|
Width="Auto"
|
|
Height="Auto"
|
|
MinWidth="800"
|
|
MinHeight="600"
|
|
Title="WinUtil">
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome CaptionHeight="0" CornerRadius="10"/>
|
|
</WindowChrome.WindowChrome>
|
|
<Window.Resources>
|
|
<Style TargetType="ToolTip">
|
|
<Setter Property="Background" Value="{DynamicResource ToolTipBackgroundColor}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
|
<Setter Property="MaxWidth" Value="{DynamicResource ToolTipWidth}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="2"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<!-- This ContentTemplate ensures that the content of the ToolTip wraps text properly for better readability -->
|
|
<Setter Property="ContentTemplate">
|
|
<Setter.Value>
|
|
<DataTemplate>
|
|
<ContentPresenter Content="{TemplateBinding Content}">
|
|
<ContentPresenter.Resources>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
|
</Style>
|
|
</ContentPresenter.Resources>
|
|
</ContentPresenter>
|
|
</DataTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="{x:Type MenuItem}">
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Padding" Value="5,2,5,2"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
</Style>
|
|
|
|
<!--Scrollbar Thumbs-->
|
|
<Style x:Key="ScrollThumbs" TargetType="{x:Type Thumb}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Thumb}">
|
|
<Grid Name="Grid">
|
|
<Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Fill="Transparent" />
|
|
<Border Name="Rectangle1" CornerRadius="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Background="{TemplateBinding Background}" />
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Tag" Value="Horizontal">
|
|
<Setter TargetName="Rectangle1" Property="Width" Value="Auto" />
|
|
<Setter TargetName="Rectangle1" Property="Height" Value="7" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBlock" x:Key="HoverTextBlockStyle">
|
|
<Setter Property="Foreground" Value="{DynamicResource LinkForegroundColor}" />
|
|
<Setter Property="TextDecorations" Value="Underline" />
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="{DynamicResource LinkHoverForegroundColor}" />
|
|
<Setter Property="TextDecorations" Value="Underline" />
|
|
<Setter Property="Cursor" Value="Hand" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style x:Key="AppEntryBorderStyle" TargetType="Border">
|
|
<Setter Property="BorderBrush" Value="Gray"/>
|
|
<Setter Property="BorderThickness" Value="{DynamicResource AppEntryBorderThickness}"/>
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
<Setter Property="Padding" Value="6,4"/>
|
|
<Setter Property="Width" Value="{DynamicResource AppEntryWidth}"/>
|
|
<Setter Property="VerticalAlignment" Value="Top"/>
|
|
<Setter Property="Margin" Value="{DynamicResource AppEntryMargin}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Background" Value="{DynamicResource AppInstallUnselectedColor}"/>
|
|
</Style>
|
|
<Style x:Key="AppEntryCheckboxStyle" TargetType="CheckBox">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Margin" Value="{DynamicResource AppEntryMargin}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<ContentPresenter Content="{TemplateBinding Content}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left"/>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="AppEntryNameStyle" TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="{DynamicResource AppEntryFontSize}"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Margin" Value="{DynamicResource AppEntryMargin}"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
</Style>
|
|
<Style x:Key="AppEntryButtonStyle" TargetType="Button">
|
|
<Setter Property="Width" Value="{DynamicResource IconButtonSize}"/>
|
|
<Setter Property="Height" Value="{DynamicResource IconButtonSize}"/>
|
|
<Setter Property="Margin" Value="{DynamicResource AppEntryMargin}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundColor}"/>
|
|
<Setter Property="HorizontalAlignment" Value="Center"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="ContentTemplate">
|
|
<Setter.Value>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding}"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="{DynamicResource IconFontSize}"
|
|
Background="Transparent"/>
|
|
</DataTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Grid>
|
|
<Border Name="BackgroundBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundPressedColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Foreground" Value="DimGray"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
|
|
|
|
</Style>
|
|
<Style TargetType="Button" x:Key="HoverButtonStyle">
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}" />
|
|
<Setter Property="FontWeight" Value="Normal" />
|
|
<Setter Property="FontSize" Value="{DynamicResource ButtonFontSize}" />
|
|
<Setter Property="TextElement.FontFamily" Value="{DynamicResource ButtonFontFamily}"/>
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="{TemplateBinding Background}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="FontWeight" Value="Bold" />
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}" />
|
|
<Setter Property="Cursor" Value="Hand" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!--ScrollBars-->
|
|
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
|
|
<Setter Property="Stylus.IsFlicksEnabled" Value="false" />
|
|
<Setter Property="Foreground" Value="{DynamicResource ScrollBarBackgroundColor}" />
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}" />
|
|
<Setter Property="Width" Value="6" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ScrollBar}">
|
|
<Grid Name="GridRoot" Width="7" Background="{TemplateBinding Background}" >
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="0.00001*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Track Name="PART_Track" Grid.Row="0" IsDirectionReversed="true" Focusable="false">
|
|
<Track.Thumb>
|
|
<Thumb Name="Thumb" Background="{TemplateBinding Foreground}" Style="{DynamicResource ScrollThumbs}" />
|
|
</Track.Thumb>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Name="PageUp" Command="ScrollBar.PageDownCommand" Opacity="0" Focusable="false" />
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Name="PageDown" Command="ScrollBar.PageUpCommand" Opacity="0" Focusable="false" />
|
|
</Track.DecreaseRepeatButton>
|
|
</Track>
|
|
</Grid>
|
|
|
|
<ControlTemplate.Triggers>
|
|
<Trigger SourceName="Thumb" Property="IsMouseOver" Value="true">
|
|
<Setter Value="{DynamicResource ScrollBarHoverColor}" TargetName="Thumb" Property="Background" />
|
|
</Trigger>
|
|
<Trigger SourceName="Thumb" Property="IsDragging" Value="true">
|
|
<Setter Value="{DynamicResource ScrollBarDraggingColor}" TargetName="Thumb" Property="Background" />
|
|
</Trigger>
|
|
|
|
<Trigger Property="IsEnabled" Value="false">
|
|
<Setter TargetName="Thumb" Property="Visibility" Value="Collapsed" />
|
|
</Trigger>
|
|
<Trigger Property="Orientation" Value="Horizontal">
|
|
<Setter TargetName="GridRoot" Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-90" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter TargetName="PART_Track" Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-90" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Width" Value="Auto" />
|
|
<Setter Property="Height" Value="8" />
|
|
<Setter TargetName="Thumb" Property="Tag" Value="Horizontal" />
|
|
<Setter TargetName="PageDown" Property="Command" Value="ScrollBar.PageLeftCommand" />
|
|
<Setter TargetName="PageUp" Property="Command" Value="ScrollBar.PageRightCommand" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ComboBoxToggleButtonStyle" TargetType="ToggleButton">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border Background="{TemplateBinding Background}" BorderThickness="0">
|
|
<ContentPresenter/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style TargetType="ComboBox">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundColor}" />
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundColor}" />
|
|
<Setter Property="MinWidth" Value="{DynamicResource ButtonWidth}" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ComboBox">
|
|
<Grid>
|
|
<Border Name="OuterBorder"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}"
|
|
Background="{TemplateBinding Background}">
|
|
<ToggleButton Name="ToggleButton"
|
|
Style="{StaticResource ComboBoxToggleButtonStyle}"
|
|
Background="Transparent"
|
|
BorderThickness="0"
|
|
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
|
|
ClickMode="Press">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
Text="{TemplateBinding SelectionBoxItem}"
|
|
Foreground="{TemplateBinding Foreground}"
|
|
Background="Transparent"
|
|
HorizontalAlignment="Left" VerticalAlignment="Center"
|
|
Margin="6,3,2,3"/>
|
|
<Path Grid.Column="1"
|
|
Data="M 0,0 L 8,0 L 4,5 Z"
|
|
Fill="{TemplateBinding Foreground}"
|
|
Width="8" Height="5"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Center"
|
|
Stretch="Uniform"
|
|
Margin="4,0,6,0"/>
|
|
</Grid>
|
|
</ToggleButton>
|
|
</Border>
|
|
<Popup Name="Popup"
|
|
IsOpen="{TemplateBinding IsDropDownOpen}"
|
|
Placement="Bottom"
|
|
Focusable="False"
|
|
AllowsTransparency="True"
|
|
PopupAnimation="Slide">
|
|
<Border Name="DropDownBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="4">
|
|
<ScrollViewer>
|
|
<ItemsPresenter HorizontalAlignment="Left" VerticalAlignment="Center" Margin="4,2"/>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style TargetType="ComboBoxItem">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundColor}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundColor}"/>
|
|
<Setter Property="Padding" Value="6,3"/>
|
|
<Setter Property="ContentTemplate">
|
|
<Setter.Value>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding}" Background="Transparent"
|
|
Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType=ComboBoxItem}}"/>
|
|
</DataTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsHighlighted" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style TargetType="Label">
|
|
<Setter Property="Foreground" Value="{DynamicResource LabelboxForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource LabelBackgroundColor}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
</Style>
|
|
|
|
<!-- TextBlock template -->
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource LabelboxForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource LabelBackgroundColor}"/>
|
|
</Style>
|
|
<Style x:Key="TabToggleButton" TargetType="{x:Type ToggleButton}">
|
|
<Setter Property="Margin" Value="{DynamicResource ButtonMargin}"/>
|
|
<Setter Property="Content" Value=""/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Grid>
|
|
<Border Name="ButtonGlow"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{DynamicResource ButtonForegroundColor}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
|
<Grid>
|
|
<Border Name="BackgroundBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{DynamicResource ButtonBackgroundColor}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
|
<ContentPresenter
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Margin="10,2,10,2"/>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect Opacity="1" ShadowDepth="5" Color="{DynamicResource CButtonBackgroundMouseoverColor}" Direction="-100" BlurRadius="15"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Panel.ZIndex" Value="2000"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter Property="BorderBrush" Value="Pink"/>
|
|
<Setter Property="BorderThickness" Value="2"/>
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect Opacity="1" ShadowDepth="2" Color="{DynamicResource CButtonBackgroundMouseoverColor}" Direction="-111" BlurRadius="10"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="False">
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="{DynamicResource ButtonBorderThickness}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- Button Template -->
|
|
<Style TargetType="Button">
|
|
<Setter Property="Margin" Value="{DynamicResource ButtonMargin}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundColor}"/>
|
|
<Setter Property="Height" Value="{DynamicResource ButtonHeight}"/>
|
|
<Setter Property="Width" Value="{DynamicResource ButtonWidth}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource ButtonFontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Grid>
|
|
<Border Name="BackgroundBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,2,10,2"/>
|
|
</Border>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundPressedColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Foreground" Value="DimGray"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="ToggleButtonStyle" TargetType="ToggleButton">
|
|
<Setter Property="Margin" Value="{DynamicResource ButtonMargin}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundColor}"/>
|
|
<Setter Property="Height" Value="{DynamicResource ButtonHeight}"/>
|
|
<Setter Property="Width" Value="{DynamicResource ButtonWidth}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource ButtonFontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Grid>
|
|
<Border Name="BackgroundBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
|
<Grid>
|
|
<!-- Toggle Dot Background -->
|
|
<Ellipse Width="8" Height="16"
|
|
Fill="{DynamicResource ToggleButtonOnColor}"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Top"
|
|
Margin="0,3,5,0" />
|
|
|
|
<!-- Toggle Dot with hover grow effect -->
|
|
<Ellipse Name="ToggleDot"
|
|
Width="8" Height="8"
|
|
Fill="{DynamicResource ButtonForegroundColor}"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Top"
|
|
Margin="0,3,5,0"
|
|
RenderTransformOrigin="0.5,0.5">
|
|
<Ellipse.RenderTransform>
|
|
<ScaleTransform ScaleX="1" ScaleY="1"/>
|
|
</Ellipse.RenderTransform>
|
|
</Ellipse>
|
|
|
|
<!-- Content Presenter -->
|
|
<ContentPresenter HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Margin="10,2,10,2"/>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Triggers for ToggleButton states -->
|
|
<ControlTemplate.Triggers>
|
|
<!-- Hover effect -->
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<!-- Animation to grow the dot when hovered -->
|
|
<DoubleAnimation Storyboard.TargetName="ToggleDot"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
|
|
To="1.2" Duration="0:0:0.1"/>
|
|
<DoubleAnimation Storyboard.TargetName="ToggleDot"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
|
|
To="1.2" Duration="0:0:0.1"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
<Trigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<!-- Animation to shrink the dot back to original size when not hovered -->
|
|
<DoubleAnimation Storyboard.TargetName="ToggleDot"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
|
|
To="1.0" Duration="0:0:0.1"/>
|
|
<DoubleAnimation Storyboard.TargetName="ToggleDot"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
|
|
To="1.0" Duration="0:0:0.1"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
</Trigger>
|
|
|
|
<!-- IsChecked state -->
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="ToggleDot" Property="VerticalAlignment" Value="Bottom"/>
|
|
<Setter TargetName="ToggleDot" Property="Margin" Value="0,0,5,3"/>
|
|
</Trigger>
|
|
|
|
<!-- IsEnabled state -->
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Foreground" Value="DimGray"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="SearchBarClearButtonStyle" TargetType="Button">
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource SearchBarClearButtonFontSize}"/>
|
|
<Setter Property="Content" Value="X"/>
|
|
<Setter Property="Height" Value="{DynamicResource SearchBarClearButtonFontSize}"/>
|
|
<Setter Property="Width" Value="{DynamicResource SearchBarClearButtonFontSize}"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="Red"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="10"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<!-- Checkbox template -->
|
|
<Style TargetType="CheckBox">
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}" />
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="TextElement.FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<Grid Background="{TemplateBinding Background}" Margin="{DynamicResource CheckBoxMargin}">
|
|
<BulletDecorator Background="Transparent">
|
|
<BulletDecorator.Bullet>
|
|
<Grid Width="{DynamicResource CheckBoxBulletDecoratorSize}" Height="{DynamicResource CheckBoxBulletDecoratorSize}">
|
|
<Border Name="Border"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
Background="{DynamicResource ButtonBackgroundColor}"
|
|
BorderThickness="1"
|
|
Width="{DynamicResource CheckBoxBulletDecoratorSize *0.85}"
|
|
Height="{DynamicResource CheckBoxBulletDecoratorSize *0.85}"
|
|
Margin="1"
|
|
SnapsToDevicePixels="True"/>
|
|
<Viewbox Name="CheckMarkContainer"
|
|
Width="{DynamicResource CheckBoxBulletDecoratorSize}"
|
|
Height="{DynamicResource CheckBoxBulletDecoratorSize}"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Visibility="Collapsed">
|
|
<Path Name="CheckMark"
|
|
Stroke="{DynamicResource ToggleButtonOnColor}"
|
|
StrokeThickness="1.5"
|
|
Data="M 0 5 L 5 10 L 12 0"
|
|
Stretch="Uniform"/>
|
|
</Viewbox>
|
|
</Grid>
|
|
</BulletDecorator.Bullet>
|
|
<ContentPresenter Margin="4,0,0,0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Center"
|
|
RecognizesAccessKey="True"/>
|
|
</BulletDecorator>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="CheckMarkContainer" Property="Visibility" Value="Visible"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<!--Setter TargetName="Border" Property="Background" Value="{DynamicResource ButtonBackgroundPressedColor}"/-->
|
|
<Setter Property="Foreground" Value="{DynamicResource ButtonBackgroundPressedColor}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style TargetType="RadioButton">
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}" />
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="RadioButton">
|
|
<StackPanel Orientation="Horizontal" Margin="{DynamicResource CheckBoxMargin}">
|
|
<Viewbox Width="{DynamicResource CheckBoxBulletDecoratorSize}" Height="{DynamicResource CheckBoxBulletDecoratorSize}">
|
|
<Grid Width="14" Height="14">
|
|
<Ellipse Name="OuterCircle"
|
|
Stroke="{DynamicResource ToggleButtonOffColor}"
|
|
Fill="{DynamicResource ButtonBackgroundColor}"
|
|
StrokeThickness="1"
|
|
Width="14"
|
|
Height="14"
|
|
SnapsToDevicePixels="True"/>
|
|
<Ellipse Name="InnerCircle"
|
|
Fill="{DynamicResource ToggleButtonOnColor}"
|
|
Width="8"
|
|
Height="8"
|
|
Visibility="Collapsed"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Viewbox>
|
|
<ContentPresenter Margin="4,0,0,0"
|
|
VerticalAlignment="Center"
|
|
RecognizesAccessKey="True"/>
|
|
</StackPanel>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="InnerCircle" Property="Visibility" Value="Visible"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="OuterCircle" Property="Stroke" Value="{DynamicResource ToggleButtonOnColor}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ToggleSwitchStyle" TargetType="CheckBox">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<StackPanel>
|
|
<Grid>
|
|
<Border Width="45"
|
|
Height="20"
|
|
Background="#555555"
|
|
CornerRadius="10"
|
|
Margin="5,0"
|
|
/>
|
|
<Border Name="WPFToggleSwitchButton"
|
|
Width="25"
|
|
Height="25"
|
|
Background="Black"
|
|
CornerRadius="12.5"
|
|
HorizontalAlignment="Left"
|
|
/>
|
|
<ContentPresenter Name="WPFToggleSwitchContent"
|
|
Margin="10,0,0,0"
|
|
Content="{TemplateBinding Content}"
|
|
VerticalAlignment="Center"
|
|
/>
|
|
</Grid>
|
|
</StackPanel>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="false">
|
|
<Trigger.ExitActions>
|
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchLeft" />
|
|
<BeginStoryboard Name="WPFToggleSwitchRight">
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
|
Duration="0:0:0:0"
|
|
From="0,0,0,0"
|
|
To="28,0,0,0">
|
|
</ThicknessAnimation>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
<Setter TargetName="WPFToggleSwitchButton"
|
|
Property="Background"
|
|
Value="#fff9f4f4"
|
|
/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="true">
|
|
<Trigger.ExitActions>
|
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchRight" />
|
|
<BeginStoryboard Name="WPFToggleSwitchLeft">
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
|
Duration="0:0:0:0"
|
|
From="28,0,0,0"
|
|
To="0,0,0,0">
|
|
</ThicknessAnimation>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
<Setter TargetName="WPFToggleSwitchButton"
|
|
Property="Background"
|
|
Value="#ff060600"
|
|
/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="ColorfulToggleSwitchStyle" TargetType="{x:Type CheckBox}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ToggleButton}">
|
|
<Grid Name="toggleSwitch">
|
|
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Border Grid.Column="1" Name="Border" CornerRadius="8"
|
|
BorderThickness="1"
|
|
Width="34" Height="17">
|
|
<Ellipse Name="Ellipse" Fill="{DynamicResource MainForegroundColor}" Stretch="Uniform"
|
|
Margin="2,2,2,1"
|
|
HorizontalAlignment="Left" Width="10.8"
|
|
RenderTransformOrigin="0.5, 0.5">
|
|
<Ellipse.RenderTransform>
|
|
<ScaleTransform ScaleX="1" ScaleY="1" />
|
|
</Ellipse.RenderTransform>
|
|
</Ellipse>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource MainForegroundColor}" />
|
|
<Setter TargetName="Border" Property="Background" Value="{DynamicResource LinkHoverForegroundColor}"/>
|
|
<Setter Property="Cursor" Value="Hand" />
|
|
<Setter Property="Panel.ZIndex" Value="1000"/>
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
|
|
To="1.1" Duration="0:0:0.1" />
|
|
<DoubleAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
|
|
To="1.1" Duration="0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
<Trigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
|
|
To="1.0" Duration="0:0:0.1" />
|
|
<DoubleAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
|
|
To="1.0" Duration="0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
</Trigger>
|
|
<Trigger Property="ToggleButton.IsChecked" Value="False">
|
|
<Setter TargetName="Border" Property="Background" Value="{DynamicResource MainBackgroundColor}" />
|
|
<Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource ToggleButtonOffColor}" />
|
|
<Setter TargetName="Ellipse" Property="Fill" Value="{DynamicResource ToggleButtonOffColor}" />
|
|
</Trigger>
|
|
|
|
<Trigger Property="ToggleButton.IsChecked" Value="True">
|
|
<Setter TargetName="Border" Property="Background" Value="{DynamicResource ToggleButtonOnColor}" />
|
|
<Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource ToggleButtonOnColor}" />
|
|
<Setter TargetName="Ellipse" Property="Fill" Value="White" />
|
|
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="Margin"
|
|
To="18,2,2,2" Duration="0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
<Trigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="Margin"
|
|
To="2,2,2,1" Duration="0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
|
</Style>
|
|
|
|
<Style x:Key="labelfortweaks" TargetType="{x:Type Label}">
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}" />
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}" />
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="White" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<Style x:Key="BorderStyle" TargetType="Border">
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="Margin" Value="5"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect ShadowDepth="5" BlurRadius="5" Opacity="{DynamicResource BorderOpacity}" Color="{DynamicResource CBorderColor}"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="CaretBrush" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="ContextMenu">
|
|
<Setter.Value>
|
|
<ContextMenu>
|
|
<ContextMenu.Style>
|
|
<Style TargetType="ContextMenu">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ContextMenu">
|
|
<Border Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="5" Padding="5">
|
|
<StackPanel>
|
|
<MenuItem Command="Cut" Header="Cut"/>
|
|
<MenuItem Command="Copy" Header="Copy"/>
|
|
<MenuItem Command="Paste" Header="Paste"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</ContextMenu.Style>
|
|
</ContextMenu>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TextBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="5">
|
|
<Grid>
|
|
<ScrollViewer Name="PART_ContentHost" />
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect ShadowDepth="5" BlurRadius="5" Opacity="{DynamicResource BorderOpacity}" Color="{DynamicResource CBorderColor}"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style TargetType="PasswordBox">
|
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="FontSize" Value="{DynamicResource FontSize}"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="CaretBrush" Value="{DynamicResource MainForegroundColor}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="PasswordBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="5">
|
|
<Grid>
|
|
<ScrollViewer Name="PART_ContentHost" />
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect ShadowDepth="5" BlurRadius="5" Opacity="{DynamicResource BorderOpacity}" Color="{DynamicResource CBorderColor}"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ScrollVisibilityRectangle" TargetType="Rectangle">
|
|
<Setter Property="Visibility" Value="Collapsed"/>
|
|
<Style.Triggers>
|
|
<MultiDataTrigger>
|
|
<MultiDataTrigger.Conditions>
|
|
<Condition Binding="{Binding Path=ComputedHorizontalScrollBarVisibility, ElementName=scrollViewer}" Value="Visible"/>
|
|
<Condition Binding="{Binding Path=ComputedVerticalScrollBarVisibility, ElementName=scrollViewer}" Value="Visible"/>
|
|
</MultiDataTrigger.Conditions>
|
|
<Setter Property="Visibility" Value="Visible"/>
|
|
</MultiDataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style x:Key="RoundedProgressBarStyle" TargetType="ProgressBar">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ProgressBar">
|
|
<Border CornerRadius="4" Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource MainForegroundColor}" BorderThickness="1">
|
|
<Grid ClipToBounds="True">
|
|
<Border Name="PART_Track" CornerRadius="4" Background="Transparent"/>
|
|
<Border Name="PART_Indicator" CornerRadius="4" Background="{DynamicResource ProgressBarForegroundColor}" HorizontalAlignment="Left"/>
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- Filter Chip Style — used by the Install tab category filter buttons -->
|
|
<Style x:Key="FilterChipStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Margin" Value="2"/>
|
|
<Setter Property="Padding" Value="12,0,12,0"/>
|
|
<Setter Property="Width" Value="Auto"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Name="ChipBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
|
CornerRadius="{DynamicResource ButtonCornerRadius}"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="ChipBorder" Property="Background" Value="{DynamicResource ButtonBackgroundPressedColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="ChipBorder" Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="ChipBorder" Property="Background" Value="{DynamicResource ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Foreground" Value="DimGray"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Window.Resources>
|
|
<Grid Background="{DynamicResource MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<!-- Offline banner -->
|
|
<Border Name="WPFOfflineBanner" Grid.Row="0" Background="#8B0000" Visibility="Collapsed" Padding="6,4">
|
|
<TextBlock Text="⚠ Offline Mode - No Internet Connection" Foreground="White" FontWeight="Bold"
|
|
HorizontalAlignment="Center" FontSize="13" Background="Transparent"/>
|
|
</Border>
|
|
<Grid Grid.Row="1" Background="{DynamicResource MainBackgroundColor}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/> <!-- Navigation buttons -->
|
|
<ColumnDefinition Width="*"/> <!-- Search bar and buttons -->
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Navigation Buttons Panel -->
|
|
<StackPanel Name="NavDockPanel" Orientation="Horizontal" Grid.Column="0" VerticalAlignment="Center" Margin="5,5,10,5">
|
|
<StackPanel Name="NavLogoPanel" Orientation="Horizontal" HorizontalAlignment="Left" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Margin="10,0,20,0">
|
|
</StackPanel>
|
|
<ToggleButton Style="{StaticResource TabToggleButton}" Margin="0,0,5,0" Height="{DynamicResource TabButtonHeight}" Width="{DynamicResource TabButtonWidth}"
|
|
Background="{DynamicResource ButtonInstallBackgroundColor}" Foreground="white" FontWeight="Bold" Name="WPFTab1BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock FontSize="{DynamicResource TabButtonFontSize}" Background="Transparent" Foreground="{DynamicResource ButtonInstallForegroundColor}" >
|
|
<Underline>I</Underline>nstall
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton Style="{StaticResource TabToggleButton}" Margin="0,0,5,0" Height="{DynamicResource TabButtonHeight}" Width="{DynamicResource TabButtonWidth}"
|
|
Background="{DynamicResource ButtonTweaksBackgroundColor}" Foreground="{DynamicResource ButtonTweaksForegroundColor}" FontWeight="Bold" Name="WPFTab2BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock FontSize="{DynamicResource TabButtonFontSize}" Background="Transparent" Foreground="{DynamicResource ButtonTweaksForegroundColor}">
|
|
<Underline>T</Underline>weaks
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton Style="{StaticResource TabToggleButton}" Margin="0,0,5,0" Height="{DynamicResource TabButtonHeight}" Width="{DynamicResource TabButtonWidth}"
|
|
Background="{DynamicResource ButtonConfigBackgroundColor}" Foreground="{DynamicResource ButtonConfigForegroundColor}" FontWeight="Bold" Name="WPFTab3BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock FontSize="{DynamicResource TabButtonFontSize}" Background="Transparent" Foreground="{DynamicResource ButtonConfigForegroundColor}">
|
|
<Underline>C</Underline>onfig
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton Style="{StaticResource TabToggleButton}" Margin="0,0,5,0" Height="{DynamicResource TabButtonHeight}" Width="{DynamicResource TabButtonWidth}"
|
|
Background="{DynamicResource ButtonUpdatesBackgroundColor}" Foreground="{DynamicResource ButtonUpdatesForegroundColor}" FontWeight="Bold" Name="WPFTab4BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock FontSize="{DynamicResource TabButtonFontSize}" Background="Transparent" Foreground="{DynamicResource ButtonUpdatesForegroundColor}">
|
|
<Underline>U</Underline>pdates
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton Style="{StaticResource TabToggleButton}" Margin="0,0,5,0" Height="{DynamicResource TabButtonHeight}" Width="Auto" MinWidth="{DynamicResource TabButtonWidth}"
|
|
Background="{DynamicResource ButtonWin11ISOBackgroundColor}" Foreground="{DynamicResource ButtonWin11ISOForegroundColor}" FontWeight="Bold" Name="WPFTab5BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock FontSize="{DynamicResource TabButtonFontSize}" Background="Transparent" Foreground="{DynamicResource ButtonWin11ISOForegroundColor}">
|
|
<Underline>W</Underline>in11 Creator
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
</StackPanel>
|
|
|
|
<!-- Search Bar and Action Buttons -->
|
|
<Grid Name="GridBesideNavDockPanel" Grid.Column="1" Background="{DynamicResource MainBackgroundColor}" ShowGridLines="False" Height="Auto">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="2*"/> <!-- Search bar area - priority space -->
|
|
<ColumnDefinition Width="Auto"/><!-- Buttons area -->
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Border Grid.Column="0" Margin="5,0,10,0" MinWidth="120" Height="{DynamicResource SearchBarHeight}" VerticalAlignment="Center" HorizontalAlignment="Stretch">
|
|
<Grid>
|
|
<TextBox
|
|
Height="{DynamicResource SearchBarHeight}"
|
|
FontSize="{DynamicResource SearchBarTextBoxFontSize}"
|
|
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
|
BorderThickness="1"
|
|
Name="SearchBar"
|
|
Foreground="{DynamicResource MainForegroundColor}" Background="{DynamicResource MainBackgroundColor}"
|
|
Padding="3,3,30,0"
|
|
ToolTip="Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter">
|
|
</TextBox>
|
|
<TextBlock
|
|
Name="SearchBarIcon"
|
|
VerticalAlignment="Center" HorizontalAlignment="Right"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Foreground="{DynamicResource ButtonBackgroundSelectedColor}"
|
|
FontSize="{DynamicResource IconFontSize}"
|
|
Margin="0,0,8,0" Width="Auto" Height="Auto">
|
|
</TextBlock>
|
|
</Grid>
|
|
</Border>
|
|
<Button Grid.Column="0"
|
|
VerticalAlignment="Center" HorizontalAlignment="Right"
|
|
Name="SearchBarClearButton"
|
|
Style="{StaticResource SearchBarClearButtonStyle}"
|
|
Margin="0,0,20,0" Visibility="Collapsed">
|
|
</Button>
|
|
|
|
<!-- Buttons Container -->
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,5,5">
|
|
<Button Name="ThemeButton"
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource SettingsIconFontSize}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0,0,2,0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Content="N/A"
|
|
ToolTip="Change the WinUtil UI Theme"
|
|
/>
|
|
<Popup Name="ThemePopup"
|
|
IsOpen="False"
|
|
PlacementTarget="{Binding ElementName=ThemeButton}" Placement="Bottom"
|
|
HorizontalAlignment="Right" VerticalAlignment="Top">
|
|
<Border Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource MainForegroundColor}" BorderThickness="1" CornerRadius="0" Margin="0">
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Auto" Name="AutoThemeMenuItem" Foreground="{DynamicResource MainForegroundColor}">
|
|
<MenuItem.ToolTip>
|
|
<ToolTip Content="Follow the Windows Theme"/>
|
|
</MenuItem.ToolTip>
|
|
</MenuItem>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Dark" Name="DarkThemeMenuItem" Foreground="{DynamicResource MainForegroundColor}">
|
|
<MenuItem.ToolTip>
|
|
<ToolTip Content="Use Dark Theme"/>
|
|
</MenuItem.ToolTip>
|
|
</MenuItem>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Light" Name="LightThemeMenuItem" Foreground="{DynamicResource MainForegroundColor}">
|
|
<MenuItem.ToolTip>
|
|
<ToolTip Content="Use Light Theme"/>
|
|
</MenuItem.ToolTip>
|
|
</MenuItem>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<Button Name="FontScalingButton"
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource SettingsIconFontSize}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0,0,2,0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Content=""
|
|
ToolTip="Adjust Font Scaling for Accessibility"
|
|
/>
|
|
<Popup Name="FontScalingPopup"
|
|
IsOpen="False"
|
|
PlacementTarget="{Binding ElementName=FontScalingButton}" Placement="Bottom"
|
|
HorizontalAlignment="Right" VerticalAlignment="Top">
|
|
<Border Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource MainForegroundColor}" BorderThickness="1" CornerRadius="0" Margin="0">
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="200">
|
|
<TextBlock Text="Font Scaling"
|
|
FontSize="{DynamicResource ButtonFontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
HorizontalAlignment="Center"
|
|
Margin="10,5,10,5"
|
|
FontWeight="Bold"/>
|
|
<Separator Margin="5,0,5,5"/>
|
|
<StackPanel Orientation="Horizontal" Margin="10,5,10,10">
|
|
<TextBlock Text="Small"
|
|
FontSize="{DynamicResource ButtonFontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
VerticalAlignment="Center"
|
|
Margin="0,0,10,0"/>
|
|
<Slider Name="FontScalingSlider"
|
|
Minimum="0.75" Maximum="2.0"
|
|
Value="1.0"
|
|
TickFrequency="0.25"
|
|
TickPlacement="BottomRight"
|
|
IsSnapToTickEnabled="True"
|
|
Width="120"
|
|
VerticalAlignment="Center"/>
|
|
<TextBlock Text="Large"
|
|
FontSize="{DynamicResource ButtonFontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
VerticalAlignment="Center"
|
|
Margin="10,0,0,0"/>
|
|
</StackPanel>
|
|
<TextBlock Name="FontScalingValue"
|
|
Text="100%"
|
|
FontSize="{DynamicResource ButtonFontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
HorizontalAlignment="Center"
|
|
Margin="10,0,10,5"/>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="10,0,10,10">
|
|
<Button Name="FontScalingResetButton"
|
|
Content="Reset"
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
Width="60" Height="25"
|
|
Margin="5,0,5,0"/>
|
|
<Button Name="FontScalingApplyButton"
|
|
Content="Apply"
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
Width="60" Height="25"
|
|
Margin="5,0,5,0"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<Button Name="SettingsButton"
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource SettingsIconFontSize}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0,0,2,0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Content=""/>
|
|
<Popup Name="SettingsPopup"
|
|
IsOpen="False"
|
|
PlacementTarget="{Binding ElementName=SettingsButton}" Placement="Bottom"
|
|
HorizontalAlignment="Right" VerticalAlignment="Top">
|
|
<Border Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource MainForegroundColor}" BorderThickness="1" CornerRadius="0" Margin="0">
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Import" Name="ImportMenuItem" Foreground="{DynamicResource MainForegroundColor}">
|
|
<MenuItem.ToolTip>
|
|
<ToolTip Content="Import Configuration from exported file."/>
|
|
</MenuItem.ToolTip>
|
|
</MenuItem>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Export" Name="ExportMenuItem" Foreground="{DynamicResource MainForegroundColor}">
|
|
<MenuItem.ToolTip>
|
|
<ToolTip Content="Export Selected Elements and copy execution command to clipboard."/>
|
|
</MenuItem.ToolTip>
|
|
</MenuItem>
|
|
<Separator/>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="About" Name="AboutMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Documentation" Name="DocumentationMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<MenuItem FontSize="{DynamicResource ButtonFontSize}" Header="Sponsors" Name="SponsorMenuItem" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<Button
|
|
Content=""
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
BorderThickness="0"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource CloseIconFontSize}"
|
|
ToolTip="Minimize"
|
|
AutomationProperties.Name="Minimize"
|
|
Name="WPFMinimizeButton" />
|
|
<Button
|
|
BorderThickness="0"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0,0,0,0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource CloseIconFontSize}"
|
|
Name="WPFMaximizeButton">
|
|
<Button.Style>
|
|
<Style TargetType="Button" BasedOn="{StaticResource HoverButtonStyle}">
|
|
<Setter Property="Content" Value=""/>
|
|
<Setter Property="ToolTip" Value="Maximize"/>
|
|
<Setter Property="AutomationProperties.Name" Value="Maximize"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Maximized">
|
|
<Setter Property="Content" Value=""/>
|
|
<Setter Property="ToolTip" Value="Restore"/>
|
|
<Setter Property="AutomationProperties.Name" Value="Restore"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Button.Style>
|
|
</Button>
|
|
|
|
<Button
|
|
Content=""
|
|
Style="{StaticResource HoverButtonStyle}"
|
|
BorderThickness="0"
|
|
BorderBrush="Transparent"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Width="{DynamicResource IconButtonSize}" Height="{DynamicResource IconButtonSize}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Margin="0"
|
|
FontFamily="Segoe MDL2 Assets"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
FontSize="{DynamicResource CloseIconFontSize}"
|
|
ToolTip="Close"
|
|
AutomationProperties.Name="Close"
|
|
Name="WPFCloseButton" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="2" Grid.Column="0" Padding="-1">
|
|
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
|
|
<Grid Background="Transparent" >
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Quick Category Search Chips -->
|
|
<WrapPanel Grid.Row="0" Orientation="Horizontal" Margin="5,5,5,5" Name="WPFSearchChips">
|
|
<TextBlock Text="Filters"
|
|
FontSize="{DynamicResource HeaderFontSize}"
|
|
FontFamily="{DynamicResource HeaderFontFamily}"
|
|
Foreground="{DynamicResource LabelboxForegroundColor}"
|
|
Background="Transparent"
|
|
VerticalAlignment="Center"
|
|
Margin="15,0,8,0"/>
|
|
<Button Name="WPFSearchChipAll" Content="All" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipBrowsers" Content="Browsers" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipCommunications" Content="Communications" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipDevelopment" Content="Development" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipGames" Content="Games" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipMicrosoftTools" Content="Microsoft Tools" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipMultimediaTools" Content="Multimedia Tools" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipProTools" Content="Pro Tools" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipSelfhostedTools" Content="Selfhosted Tools" Style="{StaticResource FilterChipStyle}"/>
|
|
<Button Name="WPFSearchChipUtilities" Content="Utilities" Style="{StaticResource FilterChipStyle}"/>
|
|
</WrapPanel>
|
|
|
|
<Grid Grid.Row="1" Margin="{DynamicResource TabContentMargin}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Grid Name="appscategory" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
</Grid>
|
|
|
|
<Grid Name="appspanel" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
|
|
<Grid>
|
|
<!-- Main content area with a ScrollViewer -->
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Grid.Row="0" Margin="{DynamicResource TabContentMargin}">
|
|
<Grid Background="Transparent">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" Orientation="Vertical" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="5">
|
|
<Label Content="Recommended Selections:" FontSize="{DynamicResource FontSize}" VerticalAlignment="Center" Margin="2"/>
|
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,2,0,0">
|
|
<Button Name="WPFstandard" Content=" Standard " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFminimal" Content=" Minimal " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFAdvanced" Content=" Advanced " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFClearTweaksSelection" Content=" Clear " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed Tweaks " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFAppxRemoval" Content=" AppX Removal " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
</WrapPanel>
|
|
</StackPanel>
|
|
|
|
<Grid Name="tweakspanel" Grid.Row="1">
|
|
<!-- Your tweakspanel content goes here -->
|
|
</Grid>
|
|
|
|
<Border Grid.ColumnSpan="2" Grid.Row="2" Grid.Column="0" Style="{StaticResource BorderStyle}">
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left">
|
|
<TextBlock Padding="10">
|
|
Note: Hover over items to get a better description. Please be careful as many of these tweaks will heavily modify your system.
|
|
<LineBreak/>Recommended selections are for normal users and if you are unsure do NOT check anything else!
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
<Border Grid.Row="1" Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="5" HorizontalAlignment="Stretch" Padding="10">
|
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="0">
|
|
<Button Name="WPFTweaksbutton" Content="Run Tweaks" Margin="5" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFUndoall" Content="Undo Selected Tweaks" Margin="5" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
</WrapPanel>
|
|
</Border>
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem Header="Config" Visibility="Collapsed" Name="WPFTab3">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Margin="{DynamicResource TabContentMargin}">
|
|
<Grid Name="featurespanel" Grid.Row="1" Background="Transparent">
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
<TabItem Header="Updates" Visibility="Collapsed" Name="WPFTab4">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Margin="{DynamicResource TabContentMargin}">
|
|
<Grid Background="Transparent" MaxWidth="1250" HorizontalAlignment="Center">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Grid.Row="0" Margin="10,10,10,14">
|
|
<TextBlock Text="Windows Update Profiles"
|
|
FontSize="24"
|
|
FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Choose how Windows receives updates. Each profile replaces the Windows Update settings managed by WinUtil."
|
|
Margin="0,6,0,0"
|
|
FontSize="13"
|
|
TextWrapping="Wrap"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
|
|
<UniformGrid Grid.Row="1" Columns="3">
|
|
<Border Style="{StaticResource BorderStyle}"
|
|
BorderBrush="{DynamicResource ProgressBarForegroundColor}"
|
|
BorderThickness="2"
|
|
Padding="16"
|
|
MinHeight="300">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<StackPanel Grid.Row="0" Margin="0,0,0,14">
|
|
<TextBlock Text="Recommended"
|
|
FontSize="20"
|
|
FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Balanced security and stability"
|
|
Margin="0,4,0,0"
|
|
FontSize="13"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1">
|
|
<TextBlock Text="- Defers feature updates for 365 days" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Defers quality updates for 4 days" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Excludes drivers from quality updates" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Prevents automatic restarts while a user is signed in" TextWrapping="Wrap" Margin="0,0,0,12" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Available on Windows Pro, Enterprise, and Education editions."
|
|
FontSize="11"
|
|
FontStyle="Italic"
|
|
TextWrapping="Wrap"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
<Button Name="WPFUpdatessecurity"
|
|
Grid.Row="2"
|
|
Content="Apply Recommended"
|
|
FontSize="{DynamicResource ConfigTabButtonFontSize}"
|
|
Margin="0,16,0,0"
|
|
Padding="10"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Border Style="{StaticResource BorderStyle}" Padding="16" MinHeight="300">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<StackPanel Grid.Row="0" Margin="0,0,0,14">
|
|
<TextBlock Text="Windows Default"
|
|
FontSize="20"
|
|
FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Return control to Windows"
|
|
Margin="0,4,0,0"
|
|
FontSize="13"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1">
|
|
<TextBlock Text="- Removes Windows Update policies applied by WinUtil" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Restores update service startup settings" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Re-enables update scheduled tasks" TextWrapping="Wrap" Margin="0,0,0,12" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Use this to undo the Recommended or Disable profile."
|
|
FontSize="11"
|
|
FontStyle="Italic"
|
|
TextWrapping="Wrap"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</StackPanel>
|
|
<Button Name="WPFUpdatesdefault"
|
|
Grid.Row="2"
|
|
Content="Restore Defaults"
|
|
FontSize="{DynamicResource ConfigTabButtonFontSize}"
|
|
Margin="0,16,0,0"
|
|
Padding="10"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Border Style="{StaticResource BorderStyle}" Padding="16" MinHeight="300">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<StackPanel Grid.Row="0" Margin="0,0,0,14">
|
|
<TextBlock Text="Disable Updates"
|
|
FontSize="20"
|
|
FontWeight="Bold"
|
|
Foreground="Red"/>
|
|
<TextBlock Text="Advanced use only"
|
|
Margin="0,4,0,0"
|
|
FontSize="13"
|
|
FontWeight="SemiBold"
|
|
Foreground="Red"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1">
|
|
<TextBlock Text="- Disables automatic update policy" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Stops update services and scheduled tasks" TextWrapping="Wrap" Margin="0,0,0,7" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="- Clears downloaded update files" TextWrapping="Wrap" Margin="0,0,0,12" Foreground="{DynamicResource MainForegroundColor}"/>
|
|
<TextBlock Text="Security updates will not be installed while this profile is active."
|
|
FontSize="11"
|
|
FontStyle="Italic"
|
|
TextWrapping="Wrap"
|
|
Foreground="Red"/>
|
|
</StackPanel>
|
|
<Button Name="WPFUpdatesdisable"
|
|
Grid.Row="2"
|
|
Content="Disable Updates"
|
|
FontSize="{DynamicResource ConfigTabButtonFontSize}"
|
|
Foreground="Red"
|
|
Margin="0,16,0,0"
|
|
Padding="10"/>
|
|
</Grid>
|
|
</Border>
|
|
</UniformGrid>
|
|
|
|
<Border Grid.Row="2" Style="{StaticResource BorderStyle}" Margin="8,14,8,8" Padding="12">
|
|
<TextBlock Text="Changes apply system-wide. Restart Windows after switching profiles. Use Restore Defaults to undo WinUtil update policies."
|
|
TextWrapping="Wrap"
|
|
HorizontalAlignment="Center"
|
|
Foreground="{DynamicResource MainForegroundColor}"/>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
<TabItem Header="Win11ISO" Visibility="Collapsed" Name="WPFTab5">
|
|
<Grid Name="Win11ISOPanel" Margin="{DynamicResource TabContentMargin}" Background="Transparent">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/> <!-- Steps 1-4 -->
|
|
<RowDefinition Height="*"/> <!-- Log / Status -->
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Steps 1-4 -->
|
|
<StackPanel Grid.Row="0">
|
|
|
|
<!-- ─── STEP 1 : Select Windows 11 ISO ─────────────── -->
|
|
<Grid Name="WPFWin11ISOSelectSection" Margin="5" HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Left: File Selector -->
|
|
<StackPanel Grid.Column="0" Margin="5,5,15,5">
|
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
|
Step 1 - Select Windows 11 ISO
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}" Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,6">
|
|
Browse to your locally saved Windows 11 ISO file. Only official ISOs
|
|
downloaded from Microsoft are supported.
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}" Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,12" FontStyle="Italic">
|
|
<Run FontWeight="Bold">NOTE:</Run> This is only meant for Fresh and New Windows installs.
|
|
</TextBlock>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBox Grid.Column="0"
|
|
Name="WPFWin11ISOPath"
|
|
IsReadOnly="True"
|
|
VerticalAlignment="Center"
|
|
Padding="6,4"
|
|
Margin="0,0,6,0"
|
|
Text="No ISO selected..."
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Background="{DynamicResource MainBackgroundColor}"/>
|
|
<Button Grid.Column="1"
|
|
Name="WPFWin11ISOBrowseButton"
|
|
Content="Browse"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
</Grid>
|
|
<TextBlock Name="WPFWin11ISOFileInfo"
|
|
FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Margin="0,8,0,0"
|
|
TextWrapping="Wrap"
|
|
Visibility="Collapsed"/>
|
|
</StackPanel>
|
|
|
|
<!-- Right: Download guidance -->
|
|
<Border Grid.Column="1"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="5"
|
|
Margin="5" Padding="15">
|
|
<StackPanel>
|
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="OrangeRed" Margin="0,0,0,10">
|
|
!!WARNING!! You must use an official Microsoft ISO
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,8">
|
|
Download the Windows 11 ISO directly from Microsoft.com.
|
|
Third-party, pre-modified, or unofficial images are not supported
|
|
and may produce broken results.
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,6">
|
|
On the Microsoft download page, choose:
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="12,0,0,12">
|
|
- Edition : Windows 11
|
|
<LineBreak/>- Language : your preferred language
|
|
<LineBreak/>- Architecture : 64-bit (x64)
|
|
</TextBlock>
|
|
<Button Name="WPFWin11ISODownloadLink"
|
|
Content="Open Microsoft Download Page"
|
|
HorizontalAlignment="Left"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- ─── STEP 2 : Mount & Verify ISO ──────────────────── -->
|
|
<Grid Name="WPFWin11ISOMountSection"
|
|
Margin="5"
|
|
Visibility="Collapsed"
|
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel Grid.Column="0" Margin="0,0,20,0" VerticalAlignment="Top">
|
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
|
Step 2 - Mount & Verify ISO
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,12" MaxWidth="320">
|
|
Mount the ISO and confirm it contains a valid Windows 11
|
|
install.wim before any modifications are made.
|
|
</TextBlock>
|
|
<Button Name="WPFWin11ISOMountButton"
|
|
Content="Mount & Verify ISO"
|
|
HorizontalAlignment="Left"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
<CheckBox Name="WPFWin11ISOInjectDrivers"
|
|
Content="Inject current system drivers"
|
|
FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
IsChecked="False"
|
|
Margin="0,8,0,0"
|
|
ToolTip="Stages boot-storage drivers for Setup and adds all exported drivers to the selected install.wim edition in one DISM pass."/>
|
|
</StackPanel>
|
|
|
|
<!-- Verification results panel -->
|
|
<Border Grid.Column="1"
|
|
Name="WPFWin11ISOVerifyResultPanel"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="5"
|
|
Padding="12" Margin="0,0,0,0"
|
|
Visibility="Collapsed">
|
|
<StackPanel>
|
|
<TextBlock Name="WPFWin11ISOMountDriveLetter"
|
|
FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Margin="0,0,0,4"/>
|
|
<TextBlock Name="WPFWin11ISOArchLabel"
|
|
FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Margin="0,0,0,4"/>
|
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Margin="0,6,0,4">
|
|
Select Edition:
|
|
</TextBlock>
|
|
<ComboBox Name="WPFWin11ISOEditionComboBox"
|
|
FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
HorizontalAlignment="Left"
|
|
Margin="0,0,0,0"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- ─── STEP 3 : Modify install.wim ───────────────────── -->
|
|
<StackPanel Name="WPFWin11ISOModifySection"
|
|
Margin="5"
|
|
Visibility="Collapsed"
|
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
|
Step 3 - Modify install.wim
|
|
</TextBlock>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,12">
|
|
The ISO contents will be extracted to a temporary working directory,
|
|
install.wim will be modified (components removed, tweaks applied),
|
|
and the result will be repackaged. This process may take several minutes
|
|
depending on your hardware.
|
|
</TextBlock>
|
|
<Button Name="WPFWin11ISOModifyButton"
|
|
Content="Run Windows ISO Modification and Creator"
|
|
HorizontalAlignment="Left"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
</StackPanel>
|
|
|
|
<!-- ─── STEP 4 : Output Options ───────────────────────── -->
|
|
<StackPanel Name="WPFWin11ISOOutputSection"
|
|
Margin="5"
|
|
Visibility="Collapsed"
|
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
|
<!-- Header row: title + Clean & Reset button -->
|
|
<Grid Margin="0,0,0,12">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
VerticalAlignment="Center">
|
|
Step 4 - Output: What would you like to do with the modified image?
|
|
</TextBlock>
|
|
<Button Grid.Column="1"
|
|
Name="WPFWin11ISOCleanResetButton"
|
|
Content="Clean & Reset"
|
|
Foreground="OrangeRed"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"
|
|
ToolTip="Delete the temporary working directory and reset the interface back to Step 1"
|
|
Margin="12,0,0,0"/>
|
|
</Grid>
|
|
|
|
<!-- ── Choice prompt buttons ── -->
|
|
<Grid Margin="0,0,0,12">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="16"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Button Grid.Column="0"
|
|
Name="WPFWin11ISOChooseISOButton"
|
|
Content="Save as an ISO File"
|
|
HorizontalAlignment="Stretch"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Grid.Column="2"
|
|
Name="WPFWin11ISOChooseUSBButton"
|
|
Content="Write Directly to a USB Drive (ERASES DRIVE)"
|
|
Foreground="OrangeRed"
|
|
HorizontalAlignment="Stretch"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
</Grid>
|
|
|
|
<!-- ── USB write sub-panel (revealed on USB choice) ── -->
|
|
<Border Name="WPFWin11ISOOptionUSB"
|
|
Style="{StaticResource BorderStyle}"
|
|
Visibility="Collapsed"
|
|
Margin="0,8,0,0">
|
|
<StackPanel>
|
|
<TextBlock FontSize="{DynamicResource FontSize}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
TextWrapping="Wrap" Margin="0,0,0,8">
|
|
<Run FontWeight="Bold" Foreground="OrangeRed">!! All data on the selected USB drive will be permanently erased !!</Run>
|
|
<LineBreak/>
|
|
Select a removable USB drive below, then click Erase & Write.
|
|
</TextBlock>
|
|
<!-- USB drive selector row -->
|
|
<Grid Margin="0,0,0,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ComboBox Grid.Column="0"
|
|
Name="WPFWin11ISOUSBDriveComboBox"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
VerticalAlignment="Center"
|
|
Margin="0,0,6,0"/>
|
|
<Button Grid.Column="1"
|
|
Name="WPFWin11ISORefreshUSBButton"
|
|
Content="Refresh"
|
|
Width="Auto" Padding="8,0"
|
|
Height="{DynamicResource ButtonHeight}"/>
|
|
</Grid>
|
|
<Button Name="WPFWin11ISOWriteUSBButton"
|
|
Content="Erase & Write to USB"
|
|
Foreground="OrangeRed"
|
|
HorizontalAlignment="Stretch"
|
|
Width="Auto" Padding="12,0"
|
|
Height="{DynamicResource ButtonHeight}"
|
|
Margin="0,0,0,10"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
|
|
</StackPanel>
|
|
|
|
<!-- Status Log (fills remaining height) -->
|
|
<Grid Grid.Row="1" Margin="5">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<TextBlock Grid.Row="0"
|
|
FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
Margin="0,0,0,4">
|
|
Status Log
|
|
</TextBlock>
|
|
<TextBox Grid.Row="1"
|
|
Name="WPFWin11ISOStatusLog"
|
|
IsReadOnly="True"
|
|
TextWrapping="Wrap"
|
|
VerticalScrollBarVisibility="Visible"
|
|
VerticalAlignment="Stretch"
|
|
Padding="6"
|
|
Background="{DynamicResource MainBackgroundColor}"
|
|
Foreground="{DynamicResource MainForegroundColor}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
Text="Ready. Please select a Windows 11 ISO to begin."/>
|
|
</Grid>
|
|
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem Header="AppX" Visibility="Collapsed" Name="WPFTab6">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Grid.Row="0" Margin="{DynamicResource TabContentMargin}">
|
|
<Grid Background="Transparent">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="5">
|
|
<Label Content="Selections:" FontSize="{DynamicResource FontSize}" VerticalAlignment="Center" Margin="2"/>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,2,0,0">
|
|
<Button Name="WPFDefaultAppxSelection" Content=" Default " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFGetInstalledAppx" Content=" Get Installed " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFSelectAllAppx" Content=" Select All " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFClearAppxSelection" Content=" Clear Selection " Margin="2" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
|
|
<Grid Name="appxpanel" Grid.Row="1">
|
|
</Grid>
|
|
|
|
<Border Grid.Row="2" Style="{StaticResource BorderStyle}" Margin="5,15,5,5">
|
|
<StackPanel Background="{DynamicResource MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left">
|
|
<TextBlock Padding="10" TextWrapping="Wrap" Foreground="{DynamicResource MainForegroundColor}">
|
|
Note: Select the Windows AppX packages you wish to install or remove.
|
|
<LineBreak/>Install Selected registers a local manifest when available, then falls back to the Microsoft Store.
|
|
<LineBreak/>Remove Selected removes packages for the current user and all new user profiles.
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
|
|
<Border Grid.Row="1" Background="{DynamicResource MainBackgroundColor}" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" CornerRadius="5" HorizontalAlignment="Stretch" Padding="10">
|
|
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
|
|
<Button Name="WPFBackToTweaks" Content="Back to Tweaks" Margin="5" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFInstallSelectedAppx" Content="Install Selected" Margin="5" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
<Button Name="WPFRemoveSelectedAppx" Content="Remove Selected" Margin="5" Width="{DynamicResource ButtonWidth}" Height="{DynamicResource ButtonHeight}"/>
|
|
</WrapPanel>
|
|
</Border>
|
|
</Grid>
|
|
</TabItem>
|
|
</TabControl>
|
|
|
|
<!-- Window-level progress indicator - visible regardless of active tab -->
|
|
<Border Name="WPFTweaksProgressBar" Grid.Row="3" Background="{DynamicResource MainBackgroundColor}" Visibility="Collapsed" Padding="10,6">
|
|
<StackPanel Orientation="Vertical">
|
|
<TextBlock Name="WPFTweaksProgressLabel" Text="" Foreground="{DynamicResource MainForegroundColor}" FontSize="13" Background="Transparent" Margin="0,0,0,4"/>
|
|
<ProgressBar Name="WPFTweaksProgressValue" Height="6" Minimum="0" Maximum="100" Value="0" Style="{StaticResource RoundedProgressBarStyle}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</Window>
|