Multi-Platform Package Manager for Stable Diffusion
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

273 lines
13 KiB

<ui:FluentWindow
ExtendsContentIntoTitleBar="True"
Height="700"
Icon="pack://application:,,,/Assets/Icon.ico"
Loaded="InstallPage_OnLoaded"
Title="Stability Matrix - Installer"
Width="1100"
WindowBackdropType="Mica"
WindowStartupLocation="CenterOwner"
d:DataContext="{d:DesignInstance Type=viewModels:InstallerViewModel,
IsDesignTimeCreatable=True}"
d:DesignHeight="700"
d:DesignWidth="800"
mc:Ignorable="d"
ui:Design.Background="{DynamicResource ApplicationBackgroundBrush}"
ui:Design.Foreground="{DynamicResource TextFillColorPrimaryBrush}"
x:Class="StabilityMatrix.InstallerWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:controls="clr-namespace:StabilityMatrix.Controls"
xmlns:converters="clr-namespace:StabilityMatrix.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:models="clr-namespace:StabilityMatrix.Core.Models;assembly=StabilityMatrix.Core"
xmlns:octokit="clr-namespace:Octokit;assembly=Octokit"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:viewModels="clr-namespace:StabilityMatrix.ViewModels"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xaml="clr-namespace:MdXaml;assembly=MdXaml"
xmlns:packages="clr-namespace:StabilityMatrix.Core.Models.Packages;assembly=StabilityMatrix.Core">
<ui:FluentWindow.Resources>
<converters:ValueConverterGroup x:Key="InvertAndVisibilitate">
<converters:BoolNegationConverter />
<BooleanToVisibilityConverter />
</converters:ValueConverterGroup>
<converters:BoolNegationConverter x:Key="BoolNegationConverter" />
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
<converters:UriToBitmapConverter x:Key="UriToBitmapConverter" />
<xaml:Markdown
AssetPathRoot="{x:Static system:Environment.CurrentDirectory}"
DocumentStyle="{StaticResource DocumentStyle}"
Heading1Style="{StaticResource H1Style}"
Heading2Style="{StaticResource H2Style}"
Heading3Style="{StaticResource H3Style}"
Heading4Style="{StaticResource H4Style}"
ImageStyle="{StaticResource ImageStyle}"
LinkStyle="{StaticResource LinkStyle}"
SeparatorStyle="{StaticResource SeparatorStyle}"
x:Key="Markdown" />
<xaml:TextToFlowDocumentConverter Markdown="{StaticResource Markdown}" x:Key="TextToFlowDocumentConverter" />
</ui:FluentWindow.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ui:TitleBar Background="{ui:ThemeResource ApplicationBackgroundBrush}">
<ui:TitleBar.Header>
<TextBlock Margin="16,8" Text="Stability Matrix" />
</ui:TitleBar.Header>
</ui:TitleBar>
<StackPanel
Grid.Row="1"
Margin="16,8,16,0"
Orientation="Vertical"
Visibility="{Binding ProgressBarVisibility, FallbackValue=Visible}">
<TextBlock
HorizontalAlignment="Center"
Padding="8"
Text="{Binding ProgressText, FallbackValue=Installing...}" />
<ProgressBar
IsIndeterminate="{Binding IsIndeterminate, FallbackValue=False}"
Maximum="100"
Width="500"
controls:ProgressBarSmoother.SmoothValue="{Binding ProgressValue, FallbackValue=20}" />
<TextBlock
FontSize="10"
HorizontalAlignment="Center"
Padding="4"
Text="{Binding SecondaryProgressText, FallbackValue=Installing...}"
TextWrapping="Wrap" />
</StackPanel>
<Grid Grid.Row="2" HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListView
ItemsSource="{Binding AvailablePackages}"
Margin="16"
SelectedItem="{Binding SelectedPackage, Mode=TwoWay}">
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="Background" Value="#191919" />
</Style>
</ListView.Style>
<ListView.Template>
<ControlTemplate>
<Border
BorderBrush="{ui:ThemeResource KeyboardFocusBorderColorBrush}"
BorderThickness="1"
CornerRadius="5">
<ItemsPresenter />
</Border>
</ControlTemplate>
</ListView.Template>
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type packages:BasePackage}">
<StackPanel Margin="8" VerticalAlignment="Top">
<TextBlock Margin="0,5,0,5" Text="{Binding DisplayName}" />
<TextBlock Margin="0,0,0,5" Text="{Binding ByAuthor}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackPanel
Grid.Column="1"
Margin="16,16,0,16"
Orientation="Vertical">
<TextBlock
FontSize="24"
FontWeight="Bold"
Text="{Binding SelectedPackage.DisplayName, FallbackValue=Stable Diffusion Web UI}" />
<TextBlock FontSize="12" Text="{Binding SelectedPackage.ByAuthor, FallbackValue=by Automatic111}" />
<ui:Button
Appearance="Transparent"
BorderBrush="Transparent"
Command="{Binding ShowPreviewCommand}"
Content="UI Preview"
Margin="0,8,0,0">
<ui:Button.Style>
<Style BasedOn="{StaticResource {x:Type ui:Button}}" TargetType="{x:Type ui:Button}">
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource SystemAccentColorSecondary}" />
</Setter.Value>
</Setter>
</Style>
</ui:Button.Style>
</ui:Button>
<ui:Hyperlink Margin="0,0,0,8" NavigateUri="{Binding SelectedPackage.GithubUrl}">
<TextBlock TextWrapping="Wrap">
<Run Text="GitHub Page:" />
<Run Text="{Binding SelectedPackage.GithubUrl, Mode=OneWay}" TextDecorations="Underline" />
</TextBlock>
</ui:Hyperlink>
<StackPanel Orientation="Horizontal">
<ToggleButton
Content="Releases"
IsChecked="{Binding IsReleaseMode}"
IsEnabled="{Binding IsReleaseModeEnabled, FallbackValue=true}" />
<ToggleButton
Content="Branches"
IsChecked="{Binding IsReleaseMode, Converter={StaticResource BoolNegationConverter}}"
Margin="8,0,0,0" />
</StackPanel>
<StackPanel Margin="0,16,0,0" Orientation="Horizontal">
<StackPanel Orientation="Vertical">
<Label Content="{Binding ReleaseLabelText, FallbackValue=Version}" />
<ComboBox
ItemsSource="{Binding AvailableVersions}"
MinWidth="200"
SelectedItem="{Binding SelectedVersion}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type models:PackageVersion}">
<StackPanel Margin="8,0,0,0" VerticalAlignment="Top">
<TextBlock
Margin="0,4,0,4"
Name="NameTextBlock"
Text="{Binding TagName}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<StackPanel
Margin="8,0,0,0"
Orientation="Vertical"
Visibility="{Binding IsReleaseMode, Converter={StaticResource InvertAndVisibilitate}}">
<Label Content="Commit" />
<ComboBox
ItemsSource="{Binding AvailableCommits}"
MinWidth="100"
SelectedItem="{Binding SelectedCommit}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="{x:Type octokit:GitHubCommit}">
<StackPanel Margin="8,0,0,0" VerticalAlignment="Top">
<TextBlock
Margin="0,4,0,4"
Name="NameTextBlock"
Text="{Binding Sha}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</StackPanel>
<Label Content="Display Name" Margin="0,16,0,0" />
<StackPanel Orientation="Horizontal" Visibility="{Binding ShowDuplicateWarning, Converter={StaticResource BoolToVisConverter}}">
<ui:SymbolIcon
Foreground="{ui:ThemeResource SystemFillColorCriticalBrush}"
Margin="8"
Symbol="ErrorCircle24" />
<TextBlock
Foreground="{ui:ThemeResource SystemFillColorCriticalBrush}"
Margin="0,8,8,8"
TextAlignment="Left"
TextWrapping="Wrap">
<Run Text="An installation with this name already exists." />
<LineBreak />
<Run Text="Please choose a different name or select a different Install Location." />
</TextBlock>
</StackPanel>
<ui:TextBox Margin="0,0,0,8" Text="{Binding InstallName, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel Orientation="Horizontal">
<ui:Button
Appearance="Primary"
Command="{Binding InstallCommand}"
Content="{Binding InstallButtonText, FallbackValue=Install}"
Height="50"
IsEnabled="{Binding ShowDuplicateWarning, Converter={StaticResource BoolNegationConverter}}"
Margin="0,16,0,0"
VerticalAlignment="Top"
Width="100" />
<ui:ProgressRing
Height="25"
IsIndeterminate="True"
Margin="8,16,0,0"
VerticalAlignment="Center"
Visibility="{Binding ProgressBarVisibility}"
Width="25" />
<TextBlock
Margin="8,16,0,0"
Text="Installing..."
VerticalAlignment="Center"
Visibility="{Binding ProgressBarVisibility}" />
</StackPanel>
</StackPanel>
<FlowDocumentScrollViewer
Document="{Binding ReleaseNotes, Converter={StaticResource TextToFlowDocumentConverter}}"
Grid.Column="2"
HorizontalAlignment="Stretch"
Margin="16"
VerticalAlignment="Stretch" />
<ContentPresenter
Grid.Column="0"
Grid.ColumnSpan="3"
x:Name="InstallerContentDialog" />
</Grid>
</Grid>
</ui:FluentWindow>