mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
157 lines
8.2 KiB
Plaintext
157 lines
8.2 KiB
Plaintext
|
<UserControl
|
||
|
x:Class="Wabbajack.FilePicker"
|
||
|
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:icon="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||
|
xmlns:local="clr-namespace:Wabbajack"
|
||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||
|
d:DesignHeight="35"
|
||
|
d:DesignWidth="400"
|
||
|
BorderBrush="{StaticResource DarkBackgroundBrush}"
|
||
|
mc:Ignorable="d">
|
||
|
<Grid>
|
||
|
<Grid.ColumnDefinitions>
|
||
|
<ColumnDefinition Width="*" />
|
||
|
<ColumnDefinition Width="36" />
|
||
|
</Grid.ColumnDefinitions>
|
||
|
<Rectangle Grid.Column="0" Grid.ColumnSpan="2"
|
||
|
x:Name="ErrorGlow"
|
||
|
Fill="{StaticResource WarningBrush}"
|
||
|
Opacity="0.3"
|
||
|
Visibility="{Binding PickerVM.InError, Converter={StaticResource bool2VisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||
|
<Rectangle.Effect>
|
||
|
<BlurEffect Radius="15" />
|
||
|
</Rectangle.Effect>
|
||
|
<Rectangle.Style>
|
||
|
<Style TargetType="Rectangle">
|
||
|
<Style.Triggers>
|
||
|
<DataTrigger Binding="{Binding PickerVM.InError, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
|
||
|
<DataTrigger.EnterActions>
|
||
|
<BeginStoryboard>
|
||
|
<Storyboard>
|
||
|
<ColorAnimation
|
||
|
AutoReverse="True"
|
||
|
RepeatBehavior="Forever"
|
||
|
Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)"
|
||
|
To="{StaticResource YellowDark}"
|
||
|
Duration="0:0:0.8" />
|
||
|
</Storyboard>
|
||
|
</BeginStoryboard>
|
||
|
</DataTrigger.EnterActions>
|
||
|
</DataTrigger>
|
||
|
</Style.Triggers>
|
||
|
</Style>
|
||
|
</Rectangle.Style>
|
||
|
</Rectangle>
|
||
|
<Border Grid.Column="0" Grid.ColumnSpan="2"
|
||
|
x:Name="BackgroundCornerFillIn"
|
||
|
Margin="0,0,5,0"
|
||
|
Background="{StaticResource TextBoxBackground}"
|
||
|
CornerRadius="3" />
|
||
|
<TextBox Grid.Column="0"
|
||
|
Margin="5,1,-2,1"
|
||
|
VerticalContentAlignment="Center"
|
||
|
Background="{StaticResource DarkBackgroundBrush}"
|
||
|
Text="{Binding PickerVM.TargetPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource AbsolutePathToStringConverter}}"
|
||
|
Visibility="{Binding PickerVM.ShowTextBoxInput, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||
|
<Grid Grid.Column="1"
|
||
|
HorizontalAlignment="Right"
|
||
|
ClipToBounds="True">
|
||
|
<Border
|
||
|
Margin="3,1,0,1"
|
||
|
HorizontalAlignment="Right"
|
||
|
Background="{StaticResource WarningBrush}"
|
||
|
CornerRadius="3"
|
||
|
ToolTip="{Binding PickerVM.ErrorTooltip, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||
|
<Border.Style>
|
||
|
<Style TargetType="Border">
|
||
|
<Setter Property="Width" Value="25" />
|
||
|
<Style.Triggers>
|
||
|
<DataTrigger Binding="{Binding PickerVM.InError, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
|
||
|
<DataTrigger.EnterActions>
|
||
|
<BeginStoryboard>
|
||
|
<Storyboard>
|
||
|
<DoubleAnimation
|
||
|
Storyboard.TargetProperty="Width"
|
||
|
To="33"
|
||
|
Duration="0:0:0.1">
|
||
|
<DoubleAnimation.EasingFunction>
|
||
|
<ExponentialEase EasingMode="EaseOut" />
|
||
|
</DoubleAnimation.EasingFunction>
|
||
|
</DoubleAnimation>
|
||
|
</Storyboard>
|
||
|
</BeginStoryboard>
|
||
|
</DataTrigger.EnterActions>
|
||
|
<DataTrigger.ExitActions>
|
||
|
<BeginStoryboard>
|
||
|
<Storyboard>
|
||
|
<DoubleAnimation
|
||
|
Storyboard.TargetProperty="Width"
|
||
|
To="25"
|
||
|
Duration="0:0:0.1">
|
||
|
<DoubleAnimation.EasingFunction>
|
||
|
<ExponentialEase EasingMode="EaseOut" />
|
||
|
</DoubleAnimation.EasingFunction>
|
||
|
</DoubleAnimation>
|
||
|
</Storyboard>
|
||
|
</BeginStoryboard>
|
||
|
</DataTrigger.ExitActions>
|
||
|
</DataTrigger>
|
||
|
</Style.Triggers>
|
||
|
</Style>
|
||
|
</Border.Style>
|
||
|
</Border>
|
||
|
<Border
|
||
|
Width="30"
|
||
|
HorizontalAlignment="Left"
|
||
|
Background="{StaticResource TextBoxBackground}"
|
||
|
CornerRadius="3">
|
||
|
<Button Command="{Binding PickerVM.SetTargetPathCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" ToolTip="Set target path">
|
||
|
<icon:PackIconMaterial
|
||
|
Width="16"
|
||
|
Height="12"
|
||
|
Margin="4"
|
||
|
Kind="DotsHorizontal" />
|
||
|
</Button>
|
||
|
<Border.Effect>
|
||
|
<DropShadowEffect
|
||
|
BlurRadius="3"
|
||
|
Direction="0"
|
||
|
Opacity="0.5"
|
||
|
ShadowDepth="2" />
|
||
|
</Border.Effect>
|
||
|
</Border>
|
||
|
</Grid>
|
||
|
<Border Grid.Column="0" Grid.ColumnSpan="2"
|
||
|
x:Name="ErrorBorder"
|
||
|
Background="Transparent"
|
||
|
BorderBrush="{StaticResource WarningBrush}"
|
||
|
BorderThickness="1"
|
||
|
CornerRadius="3"
|
||
|
IsHitTestVisible="False"
|
||
|
Visibility="{Binding PickerVM.InError, Converter={StaticResource bool2VisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||
|
<Border.Style>
|
||
|
<Style TargetType="Border">
|
||
|
<Style.Triggers>
|
||
|
<DataTrigger Binding="{Binding PickerVM.InError, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
|
||
|
<DataTrigger.EnterActions>
|
||
|
<BeginStoryboard>
|
||
|
<Storyboard>
|
||
|
<ColorAnimation
|
||
|
AutoReverse="True"
|
||
|
RepeatBehavior="Forever"
|
||
|
Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
|
||
|
To="{StaticResource YellowDark}"
|
||
|
Duration="0:0:0.8" />
|
||
|
</Storyboard>
|
||
|
</BeginStoryboard>
|
||
|
</DataTrigger.EnterActions>
|
||
|
</DataTrigger>
|
||
|
</Style.Triggers>
|
||
|
</Style>
|
||
|
</Border.Style>
|
||
|
</Border>
|
||
|
</Grid>
|
||
|
</UserControl>
|