mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
424 lines
19 KiB
XML
424 lines
19 KiB
XML
<rxui:ReactiveUserControl
|
|
x:Class="Wabbajack.InstallationView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:common="clr-namespace:Wabbajack.Common;assembly=Wabbajack.Common"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:icon="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
|
xmlns:lib="clr-namespace:Wabbajack.Lib;assembly=Wabbajack.Lib"
|
|
xmlns:local="clr-namespace:Wabbajack"
|
|
xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:rxui="http://reactiveui.net"
|
|
d:DataContext="{d:DesignInstance local:InstallerVM}"
|
|
d:DesignHeight="500"
|
|
d:DesignWidth="800"
|
|
x:TypeArguments="local:InstallerVM"
|
|
mc:Ignorable="d">
|
|
<UserControl.Resources>
|
|
<Style
|
|
x:Key="SlideshowButton"
|
|
BasedOn="{StaticResource CircleButtonStyle}"
|
|
TargetType="ButtonBase">
|
|
<Setter Property="Width" Value="40" />
|
|
<Setter Property="Height" Value="40" />
|
|
<Setter Property="Margin" Value="4" />
|
|
</Style>
|
|
</UserControl.Resources>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="47" />
|
|
<RowDefinition Height="4*" />
|
|
<RowDefinition Height="*" MinHeight="175" />
|
|
</Grid.RowDefinitions>
|
|
<Rectangle
|
|
x:Name="BorderEdgeFadeDown"
|
|
Grid.Row="1"
|
|
Grid.RowSpan="2">
|
|
<Rectangle.Fill>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
|
<GradientStop Offset="0" Color="#191919" />
|
|
<GradientStop Offset="0.4" Color="#00191919" />
|
|
</LinearGradientBrush>
|
|
</Rectangle.Fill>
|
|
</Rectangle>
|
|
<local:HeatedBackgroundView
|
|
x:Name="HeatedBackground"
|
|
Grid.Row="0"
|
|
Grid.RowSpan="3" />
|
|
<Grid
|
|
x:Name="Slideshow"
|
|
Grid.Row="1"
|
|
Margin="5,0,5,5">
|
|
<Border BorderBrush="{StaticResource BorderInterestBrush}" BorderThickness="1,0,1,1">
|
|
<Grid>
|
|
<local:DetailImageView x:Name="DetailImage" />
|
|
<mahapps:ProgressRing x:Name="ModlistLoadingRing" />
|
|
</Grid>
|
|
</Border>
|
|
<Grid
|
|
Margin="0,20,25,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Top">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.Effect>
|
|
<DropShadowEffect
|
|
BlurRadius="25"
|
|
Opacity="1"
|
|
Color="Black" />
|
|
</Grid.Effect>
|
|
<Grid.Style>
|
|
<Style TargetType="Grid">
|
|
<Setter Property="Opacity" Value="0" />
|
|
<Style.Triggers>
|
|
<MultiDataTrigger>
|
|
<MultiDataTrigger.Conditions>
|
|
<Condition Binding="{Binding IsMouseOver, ElementName=Slideshow}" Value="True" />
|
|
<Condition Binding="{Binding Installing}" Value="True" />
|
|
</MultiDataTrigger.Conditions>
|
|
<MultiDataTrigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation
|
|
Storyboard.TargetProperty="Opacity"
|
|
To="1"
|
|
Duration="0:0:0.12" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</MultiDataTrigger.EnterActions>
|
|
<MultiDataTrigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
|
|
<LinearDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
|
|
<LinearDoubleKeyFrame KeyTime="0:0:0.42" Value="0" />
|
|
</DoubleAnimationUsingKeyFrames>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</MultiDataTrigger.ExitActions>
|
|
</MultiDataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Grid.Style>
|
|
<Button
|
|
x:Name="SkipSlideButton"
|
|
Grid.Column="3"
|
|
Width="60"
|
|
Height="60"
|
|
Margin="6"
|
|
Background="{StaticResource BackgroundBrush}"
|
|
Style="{StaticResource CircleButtonStyle}"
|
|
ToolTip="Skip to the next mod">
|
|
<icon:PackIconFontAwesome
|
|
Width="28"
|
|
Height="28"
|
|
Kind="ChevronRightSolid" />
|
|
</Button>
|
|
<ToggleButton
|
|
x:Name="PlayPauseButton"
|
|
Grid.Column="2"
|
|
Margin="6"
|
|
Background="{StaticResource BackgroundBrush}"
|
|
Style="{StaticResource SlideshowButton}">
|
|
<icon:PackIconMaterial>
|
|
<icon:PackIconMaterial.Style>
|
|
<Style TargetType="icon:PackIconMaterial">
|
|
<Setter Property="Kind" Value="Play" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Slideshow.Enable}" Value="True">
|
|
<Setter Property="Kind" Value="Pause" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</icon:PackIconMaterial.Style>
|
|
</icon:PackIconMaterial>
|
|
</ToggleButton>
|
|
<Button
|
|
x:Name="OpenWebsite"
|
|
Grid.Column="1"
|
|
Margin="6"
|
|
Background="{StaticResource BackgroundBrush}"
|
|
Style="{StaticResource SlideshowButton}"
|
|
ToolTip="Open mod's website">
|
|
<icon:PackIconMaterial
|
|
Width="28"
|
|
Height="28"
|
|
Kind="Web" />
|
|
</Button>
|
|
<ToggleButton
|
|
x:Name="ShowNSFWButton"
|
|
Grid.Column="0"
|
|
Background="{StaticResource BackgroundBrush}"
|
|
Style="{StaticResource SlideshowButton}">
|
|
<Grid>
|
|
<TextBlock
|
|
Margin="4"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
FontFamily="Lucida Sans"
|
|
FontSize="9"
|
|
FontWeight="Bold"
|
|
Text="NSFW" />
|
|
<icon:PackIconOcticons
|
|
x:Name="NSFWSlashIcon"
|
|
Width="40"
|
|
Height="40"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Foreground="#88FFFFFF"
|
|
Kind="CircleSlash" />
|
|
</Grid>
|
|
</ToggleButton>
|
|
</Grid>
|
|
</Grid>
|
|
<!-- Comes after slideshow control, so that any effects/overlap goes on top -->
|
|
<local:TopProgressView
|
|
x:Name="TopProgressBar"
|
|
Grid.Row="0"
|
|
Grid.RowSpan="2">
|
|
<!-- Readd when Pause/Stop implementations added -->
|
|
<!--<Button Grid.Column="2"
|
|
ToolTip="Pause Installation"
|
|
Margin="0,0,0,5"
|
|
Width="50"
|
|
Visibility="{Binding StartedInstallation, Converter={StaticResource bool2VisibilityConverter}}">
|
|
<icon:PackIconMaterial
|
|
Kind="Pause" />
|
|
</Button>
|
|
<Button Grid.Column="3"
|
|
ToolTip="Stop Installation"
|
|
Margin="0,0,0,5"
|
|
Width="50"
|
|
Visibility="{Binding StartedInstallation, Converter={StaticResource bool2VisibilityConverter}}" >
|
|
<icon:PackIconFontAwesome
|
|
Width="25"
|
|
Height="25"
|
|
Kind="TimesCircleSolid" />
|
|
</Button>-->
|
|
</local:TopProgressView>
|
|
<Button
|
|
x:Name="BackButton"
|
|
Grid.Row="0"
|
|
Grid.RowSpan="2"
|
|
Width="30"
|
|
Height="30"
|
|
Margin="7,5,0,0"
|
|
HorizontalAlignment="Left"
|
|
VerticalAlignment="Top"
|
|
Style="{StaticResource IconCircleButtonStyle}"
|
|
ToolTip="Back to main menu">
|
|
<icon:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" />
|
|
</Button>
|
|
<!-- Bottom Area -->
|
|
<Grid
|
|
x:Name="BottomButtonInputGrid"
|
|
Grid.Row="2"
|
|
Margin="5,0,5,5"
|
|
ClipToBounds="True">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="4" />
|
|
<ColumnDefinition Width="2*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid Grid.Column="0" Margin="10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Button
|
|
x:Name="OpenReadmePreInstallButton"
|
|
Grid.Row="0"
|
|
Margin="30,5"
|
|
FontSize="20"
|
|
Style="{StaticResource LargeButtonStyle}"
|
|
ToolTip="Open the readme for the modlist">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="30" />
|
|
<ColumnDefinition Width="82" />
|
|
</Grid.ColumnDefinitions>
|
|
<icon:PackIconFontAwesome
|
|
Grid.Column="0"
|
|
Width="30"
|
|
Height="30"
|
|
VerticalAlignment="Center"
|
|
Kind="ReadmeBrands" />
|
|
<TextBlock
|
|
Grid.Column="1"
|
|
Margin="10,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Text="Readme" />
|
|
</Grid>
|
|
</Button>
|
|
<Button
|
|
x:Name="VisitWebsitePreInstallButton"
|
|
Grid.Row="1"
|
|
Margin="30,5"
|
|
FontSize="20"
|
|
Style="{StaticResource LargeButtonStyle}"
|
|
ToolTip="Open the webpage for the modlist">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="30" />
|
|
<ColumnDefinition Width="82" />
|
|
</Grid.ColumnDefinitions>
|
|
<icon:PackIconMaterial
|
|
Grid.Column="0"
|
|
Width="30"
|
|
Height="30"
|
|
VerticalAlignment="Center"
|
|
Kind="Web" />
|
|
<TextBlock
|
|
Grid.Column="1"
|
|
Margin="10,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Text="Website" />
|
|
</Grid>
|
|
</Button>
|
|
<Button
|
|
x:Name="ShowManifestPreInstallButton"
|
|
Grid.Row="2"
|
|
Margin="30,5"
|
|
FontSize="20"
|
|
Style="{StaticResource LargeButtonStyle}"
|
|
ToolTip="Open an explicit listing of all actions this modlist will take">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="30" />
|
|
<ColumnDefinition Width="82" />
|
|
</Grid.ColumnDefinitions>
|
|
<icon:PackIconOcticons
|
|
Grid.Column="0"
|
|
Width="30"
|
|
Height="30"
|
|
VerticalAlignment="Center"
|
|
Kind="Checklist" />
|
|
<TextBlock
|
|
Grid.Column="1"
|
|
Margin="10,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Text="Manifest" />
|
|
</Grid>
|
|
</Button>
|
|
</Grid>
|
|
<Grid
|
|
x:Name="InstallationConfigurationView"
|
|
Grid.Column="2"
|
|
Background="{StaticResource WindowBackgroundBrush}">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="20" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid
|
|
Grid.Column="0"
|
|
Margin="5"
|
|
VerticalAlignment="Center"
|
|
Background="Transparent">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="5" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" MinWidth="120" />
|
|
<ColumnDefinition Width="20" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Rectangle x:Name="InstallConfigSpacer" Grid.Row="0" />
|
|
<TextBlock
|
|
Grid.Row="1"
|
|
Grid.Column="0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
FontSize="14"
|
|
Text="Target Modlist"
|
|
TextAlignment="Center" />
|
|
<local:FilePicker
|
|
x:Name="ModListLocationPicker"
|
|
Grid.Row="1"
|
|
Grid.Column="2"
|
|
Height="30"
|
|
VerticalAlignment="Center"
|
|
FontSize="14" />
|
|
<ContentPresenter
|
|
x:Name="InstallerCustomizationContent"
|
|
Grid.Row="3"
|
|
Grid.Column="0"
|
|
Grid.ColumnSpan="3"
|
|
VerticalAlignment="Top">
|
|
<ContentPresenter.Resources>
|
|
<DataTemplate DataType="{x:Type local:MO2InstallerVM}">
|
|
<local:MO2InstallerConfigView />
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type local:VortexInstallerVM}">
|
|
<local:VortexInstallerConfigView />
|
|
</DataTemplate>
|
|
</ContentPresenter.Resources>
|
|
<ContentPresenter.Style>
|
|
<Style TargetType="ContentPresenter">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content}" Value="{x:Null}">
|
|
<Setter Property="ContentPresenter.ContentTemplate">
|
|
<Setter.Value>
|
|
<DataTemplate>
|
|
<Rectangle Height="74" />
|
|
</DataTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ContentPresenter.Style>
|
|
</ContentPresenter>
|
|
</Grid>
|
|
<local:BeginButton
|
|
x:Name="BeginButton"
|
|
Grid.Column="2"
|
|
Margin="0,0,25,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center" />
|
|
</Grid>
|
|
</Grid>
|
|
<Grid
|
|
x:Name="MidInstallDisplayGrid"
|
|
Grid.Row="2"
|
|
Margin="5,0,5,5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="4*" />
|
|
<ColumnDefinition Width="5" />
|
|
<ColumnDefinition Width="3*" />
|
|
</Grid.ColumnDefinitions>
|
|
<local:LogView x:Name="LogView" Grid.Column="0" />
|
|
<local:CpuView
|
|
x:Name="CpuView"
|
|
Grid.Column="2"
|
|
ViewModel="{Binding}" />
|
|
<local:AttentionBorder
|
|
x:Name="UserInterventionsControl"
|
|
Grid.Column="2"
|
|
Content="{Binding ActiveGlobalUserIntervention}">
|
|
<local:AttentionBorder.Resources>
|
|
<DataTemplate DataType="{x:Type common:ConfirmationIntervention}">
|
|
<local:ConfirmationInterventionView ViewModel="{Binding}" />
|
|
</DataTemplate>
|
|
<DataTemplate DataType="{x:Type local:ConfirmUpdateOfExistingInstallVM}">
|
|
<local:ConfirmUpdateOfExistingInstallView ViewModel="{Binding}" />
|
|
</DataTemplate>
|
|
</local:AttentionBorder.Resources>
|
|
</local:AttentionBorder>
|
|
<local:InstallationCompleteView
|
|
x:Name="InstallComplete"
|
|
Grid.Column="2"
|
|
ViewModel="{Binding}" />
|
|
</Grid>
|
|
</Grid>
|
|
</rxui:ReactiveUserControl>
|