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.
319 lines
18 KiB
319 lines
18 KiB
<controls:UserControlBase xmlns="https://github.com/avaloniaui" |
|
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:vm="clr-namespace:StabilityMatrix.Avalonia.ViewModels" |
|
xmlns:ui="using:FluentAvalonia.UI.Controls" |
|
xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData" |
|
xmlns:controls="clr-namespace:StabilityMatrix.Avalonia.Controls" |
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="700" |
|
x:DataType="vm:SettingsViewModel" |
|
x:CompileBindings="True" |
|
d:DataContext="{x:Static mocks:DesignData.SettingsViewModel}" |
|
x:Class="StabilityMatrix.Avalonia.Views.SettingsPage"> |
|
|
|
<Grid> |
|
<ScrollViewer VerticalScrollBarVisibility="Auto"> |
|
<Grid> |
|
<StackPanel Spacing="2" Margin="12,16"> |
|
<!-- Theme --> |
|
<Grid RowDefinitions="auto,*"> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="Appearance" |
|
Margin="0,0,0,8" /> |
|
<StackPanel Grid.Row="1"> |
|
<ui:SettingsExpander |
|
Header="Theme" |
|
IconSource="WeatherMoon" |
|
Margin="8,0"> |
|
<ui:SettingsExpander.Footer> |
|
<ComboBox |
|
ItemsSource="{Binding AvailableThemes}" |
|
SelectedItem="{Binding SelectedTheme}" |
|
Margin="8" |
|
MinWidth="100"/> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
</StackPanel> |
|
</Grid> |
|
|
|
<!-- TODO: Text2Image host port settings --> |
|
|
|
<!-- Checkpoints Manager Options --> |
|
<Grid RowDefinitions="auto,*,Auto"> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="Checkpoint Manager" |
|
Margin="0,16,0,8" /> |
|
<ui:SettingsExpander |
|
Grid.Row="1" |
|
IconSource="Folder" |
|
Header="Remove shared checkpoints directory symbolic links on shutdown" |
|
Description="Select this option if you're having problems moving Stability Matrix to another drive" |
|
Margin="8,8"> |
|
<ui:SettingsExpander.Footer> |
|
<CheckBox Margin="4" |
|
IsChecked="{Binding RemoveSymlinksOnShutdown}"/> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
<ui:SettingsExpander |
|
Grid.Row="2" |
|
IconSource="Refresh" |
|
Header="Reset Checkpoints Cache" |
|
Description="Rebuilds the installed checkpoints cache. Use if checkpoints are incorrectly labeled in the Model Browser." |
|
Margin="8,0"> |
|
<ui:SettingsExpander.Footer> |
|
<Button Margin="8" |
|
Command="{Binding ResetCheckpointCache}" |
|
Content="Reset Checkpoints Cache"/> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
</Grid> |
|
|
|
<!-- Environment Options --> |
|
<Grid RowDefinitions="auto,*"> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="Package Environment" |
|
Margin="0,16,0,0" /> |
|
|
|
<StackPanel Grid.Row="1" Margin="0,8" Spacing="4"> |
|
<ui:SettingsExpander |
|
Header="Environment Variables" |
|
IconSource="OtherUser" |
|
Margin="8,0"> |
|
<ui:SettingsExpander.Footer> |
|
<Button Content="Edit" Command="{Binding OpenEnvVarsDialogCommand}"/> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
|
|
<ui:SettingsExpander |
|
Header="Embedded Python" |
|
Margin="8,0"> |
|
<ui:SettingsExpander.IconSource> |
|
<controls:FASymbolIconSource Symbol="fa-brands fa-python"/> |
|
</ui:SettingsExpander.IconSource> |
|
<ui:SettingsExpander.Footer> |
|
<StackPanel Orientation="Horizontal" Spacing="16"> |
|
<controls:ProgressRing |
|
IsEnabled="{Binding CheckPythonVersionCommand.IsRunning}" |
|
IsVisible="{Binding CheckPythonVersionCommand.IsRunning}" |
|
IsIndeterminate="True" |
|
BorderThickness="3"/> |
|
<Button Content="Check Version" Command="{Binding CheckPythonVersionCommand}"/> |
|
</StackPanel> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
</StackPanel> |
|
</Grid> |
|
|
|
<!-- Integrations --> |
|
<Grid RowDefinitions="auto,*"> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="Integrations" |
|
Margin="0,16,0,8" /> |
|
<StackPanel Grid.Row="1"> |
|
<ui:SettingsExpander |
|
Header="Discord Rich Presence" |
|
Margin="8,0"> |
|
<ui:SettingsExpander.IconSource> |
|
<controls:FASymbolIconSource Symbol="fa-brands fa-discord"/> |
|
</ui:SettingsExpander.IconSource> |
|
<ui:SettingsExpander.Footer> |
|
<ToggleSwitch |
|
IsChecked="{Binding IsDiscordRichPresenceEnabled}" |
|
Margin="4" /> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
</StackPanel> |
|
</Grid> |
|
|
|
<!-- System Options --> |
|
<Grid RowDefinitions="auto,*"> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="System" |
|
Margin="0,16,0,0" /> |
|
<ui:SettingsExpander |
|
Grid.Row="1" |
|
ToolTip.Tip="{OnPlatform Default='Only available on Windows', Windows={x:Null}}" |
|
Header="Add Stability Matrix to the Start Menu" |
|
Description="Uses the current app location, you can run this again if you move the app" |
|
IconSource="StarAdd" |
|
Margin="8"> |
|
<ui:SettingsExpander.Footer> |
|
<StackPanel Orientation="Horizontal" Spacing="8"> |
|
<controls:ProgressRing |
|
IsIndeterminate="True" |
|
IsEnabled="{Binding IsVisible, RelativeSource={RelativeSource Self}}" |
|
BorderThickness="3"> |
|
<controls:ProgressRing.IsVisible> |
|
<MultiBinding Converter="{x:Static BoolConverters.Or}"> |
|
<Binding Path="AddToStartMenuCommand.IsRunning"/> |
|
<Binding Path="AddToGlobalStartMenuCommand.IsRunning"/> |
|
</MultiBinding> |
|
</controls:ProgressRing.IsVisible> |
|
</controls:ProgressRing> |
|
|
|
<SplitButton |
|
Command="{Binding AddToStartMenuCommand}" |
|
IsEnabled="{OnPlatform Default=False, Windows=True}" |
|
Content="Add for Current User"> |
|
<SplitButton.Flyout> |
|
<ui:FAMenuFlyout Placement="Bottom"> |
|
<ui:MenuFlyoutItem |
|
Command="{Binding AddToGlobalStartMenuCommand}" |
|
IconSource="Admin" |
|
Text="Add for All Users"/> |
|
</ui:FAMenuFlyout> |
|
</SplitButton.Flyout> |
|
</SplitButton> |
|
</StackPanel> |
|
</ui:SettingsExpander.Footer> |
|
</ui:SettingsExpander> |
|
</Grid> |
|
|
|
<!-- Debug Options --> |
|
<Grid RowDefinitions="auto,*" |
|
Margin="0,4,0,0" |
|
IsVisible="{Binding SharedState.IsDebugMode}" > |
|
<TextBlock |
|
FontWeight="Medium" |
|
Text="Debug Options" |
|
Margin="0,16,0,0" /> |
|
<ui:SettingsExpander |
|
Grid.Row="1" |
|
IconSource="Code" |
|
Command="{Binding LoadDebugInfo}" |
|
Header="Debug Options" |
|
Margin="8"> |
|
|
|
<ui:SettingsExpanderItem Description="Paths" IconSource="Folder"> |
|
<SelectableTextBlock Text="{Binding DebugPaths}" |
|
Foreground="{DynamicResource TextControlPlaceholderForeground}" |
|
TextWrapping="WrapWithOverflow" /> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Description="Compat Info" IconSource="StarFilled"> |
|
<SelectableTextBlock Text="{Binding DebugCompatInfo}" |
|
Foreground="{DynamicResource TextControlPlaceholderForeground}" |
|
TextWrapping="WrapWithOverflow" /> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Description="GPU Info" IconSource="FullScreenMaximize"> |
|
<SelectableTextBlock Text="{Binding DebugGpuInfo}" |
|
Foreground="{DynamicResource TextControlPlaceholderForeground}" |
|
TextWrapping="WrapWithOverflow" /> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Content="Notification" IconSource="CommentAdd"> |
|
<ui:SettingsExpanderItem.Footer> |
|
<Button |
|
Command="{Binding DebugNotificationCommand}" |
|
Content="New Notification"/> |
|
</ui:SettingsExpanderItem.Footer> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Content="Content Dialog" IconSource="NewWindow"> |
|
<ui:SettingsExpanderItem.Footer> |
|
<Button |
|
Command="{Binding DebugContentDialogCommand}" |
|
Content="Show Dialog"/> |
|
</ui:SettingsExpanderItem.Footer> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Content="Exceptions" IconSource="Flag"> |
|
<ui:SettingsExpanderItem.Footer> |
|
<SplitButton |
|
Command="{Binding DebugThrowExceptionCommand}" |
|
Content="Command Exception"> |
|
|
|
<SplitButton.Flyout> |
|
<ui:FAMenuFlyout> |
|
|
|
<ui:MenuFlyoutItem |
|
Text="Async Command Exception" |
|
Command="{Binding DebugThrowAsyncExceptionCommand}"/> |
|
|
|
</ui:FAMenuFlyout> |
|
</SplitButton.Flyout> |
|
|
|
</SplitButton> |
|
</ui:SettingsExpanderItem.Footer> |
|
</ui:SettingsExpanderItem> |
|
|
|
<ui:SettingsExpanderItem Content="Image Processor Demos" IconSource="ImageCopy"> |
|
<ui:SettingsExpanderItem.Footer> |
|
<Button |
|
Command="{Binding DebugMakeImageGridCommand}" |
|
Content="Make Image Grid from Files"/> |
|
</ui:SettingsExpanderItem.Footer> |
|
</ui:SettingsExpanderItem> |
|
|
|
</ui:SettingsExpander> |
|
</Grid> |
|
|
|
<!-- TODO: Python card --> |
|
|
|
<!-- TODO: Debug card --> |
|
|
|
<!-- TODO: Directories card --> |
|
|
|
<Grid RowDefinitions="auto,*" Margin="0,4,0,0"> |
|
<StackPanel |
|
Grid.Row="1" |
|
HorizontalAlignment="Left" |
|
Orientation="Vertical"> |
|
<TextBlock |
|
FontSize="15" |
|
FontWeight="Bold" |
|
Margin="0,8" |
|
Text="About" /> |
|
<Image |
|
Height="112" |
|
HorizontalAlignment="Left" |
|
Margin="8" |
|
Source="/Assets/Icon.png" |
|
Width="112" /> |
|
<TextBlock |
|
FontWeight="Medium" |
|
Margin="8" |
|
Text="Stability Matrix" /> |
|
<Panel> |
|
<Button |
|
Name="VersionButton" |
|
Command="{Binding OnVersionClick}" |
|
Classes="transparent" |
|
BorderThickness="0" |
|
Content="{Binding AppVersion}" |
|
Margin="8,0,8,8" |
|
Padding="2,0,2,0"/> |
|
<ui:TeachingTip |
|
PreferredPlacement="RightTop" |
|
Target="{Binding #VersionButton}" |
|
IsOpen="{Binding IsVersionTapTeachingTipOpen}" |
|
Title="{Binding VersionFlyoutText}"/> |
|
</Panel> |
|
|
|
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal"> |
|
<Button |
|
Content="License and Open Source Notices" |
|
Command="{Binding ShowLicensesDialogCommand}" |
|
HorizontalAlignment="Left" |
|
Margin="8" /> |
|
</StackPanel> |
|
</StackPanel> |
|
</Grid> |
|
|
|
<!-- Extra space at the bottom --> |
|
<Panel Margin="0,0,0,16" /> |
|
|
|
</StackPanel> |
|
</Grid> |
|
</ScrollViewer> |
|
</Grid> |
|
|
|
|
|
</controls:UserControlBase>
|
|
|