Browse Source

UI Tweaks

- Save NavExpanded state to settings
- Added installed checkbox on Install page
- made more stuff [ObservableProperty]
pull/5/head
JT 2 years ago
parent
commit
a323fe40d3
  1. 1
      StabilityMatrix/Helper/ISettingsManager.cs
  2. 6
      StabilityMatrix/Helper/SettingsManager.cs
  3. 18
      StabilityMatrix/InstallPage.xaml
  4. 4
      StabilityMatrix/MainWindow.xaml
  5. 18
      StabilityMatrix/MainWindow.xaml.cs
  6. 1
      StabilityMatrix/Models/BasePackage.cs
  7. 1
      StabilityMatrix/Models/Packages/A3WebUI.cs
  8. 1
      StabilityMatrix/Models/Settings.cs
  9. 45
      StabilityMatrix/ViewModels/InstallerViewModel.cs

1
StabilityMatrix/Helper/ISettingsManager.cs

@ -10,4 +10,5 @@ public interface ISettingsManager
void SetActiveInstalledPackage(InstalledPackage? p); void SetActiveInstalledPackage(InstalledPackage? p);
void SetHasInstalledPip(bool hasInstalledPip); void SetHasInstalledPip(bool hasInstalledPip);
void SetHasInstalledVenv(bool hasInstalledVenv); void SetHasInstalledVenv(bool hasInstalledVenv);
void SetNavExpanded(bool navExpanded);
} }

6
StabilityMatrix/Helper/SettingsManager.cs

@ -68,6 +68,12 @@ public class SettingsManager : ISettingsManager
SaveSettings(); SaveSettings();
} }
public void SetNavExpanded(bool navExpanded)
{
Settings.IsNavExpanded = navExpanded;
SaveSettings();
}
private void LoadSettings() private void LoadSettings()
{ {
var settingsContent = File.ReadAllText(SettingsPath); var settingsContent = File.ReadAllText(SettingsPath);

18
StabilityMatrix/InstallPage.xaml

@ -6,8 +6,8 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:models="clr-namespace:StabilityMatrix.Models" xmlns:models="clr-namespace:StabilityMatrix.Models"
d:DesignHeight="700" d:DesignHeight="450"
d:DesignWidth="1100" d:DesignWidth="700"
Loaded="InstallPage_OnLoaded" Loaded="InstallPage_OnLoaded"
Background="{DynamicResource ApplicationBackgroundBrush}" Background="{DynamicResource ApplicationBackgroundBrush}"
Foreground="{DynamicResource TextFillColorPrimaryBrush}" Foreground="{DynamicResource TextFillColorPrimaryBrush}"
@ -47,8 +47,18 @@
</ListView.ItemTemplate> </ListView.ItemTemplate>
</ListView> </ListView>
<StackPanel Orientation="Vertical" Margin="32,0,0,0"> <StackPanel Orientation="Vertical" Margin="32,0,0,0">
<TextBlock Text="{Binding SelectedPackage.DisplayName}"/> <StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SelectedPackage.ByAuthor}"/> <TextBlock Text="{Binding SelectedPackage.DisplayName, FallbackValue=Stable Diffusion Web UI}"
FontSize="24" FontWeight="Bold" />
<Grid Visibility="{Binding PackageInstalledVisibility}">
<Ellipse Width="24" Height="24" Fill="Green" Margin="8,0,0,0"/>
<ui:SymbolIcon Symbol="Checkmark24" Foreground="White" Margin="8,0,0,0"/>
</Grid>
<TextBlock Text="Installed" VerticalAlignment="Center" Margin="8,0,0,0"
Visibility="{Binding PackageInstalledVisibility}"/>
</StackPanel>
<TextBlock Text="{Binding SelectedPackage.ByAuthor, FallbackValue=by Automatic111}"
FontSize="12" Margin="0,5, 0, 5" />
<ui:Hyperlink NavigateUri="{Binding SelectedPackage.GithubUrl}"> <ui:Hyperlink NavigateUri="{Binding SelectedPackage.GithubUrl}">
<TextBlock> <TextBlock>
<Run Text="GitHub Page:"/> <Run Text="GitHub Page:"/>

4
StabilityMatrix/MainWindow.xaml

@ -26,7 +26,9 @@
</ui:TitleBar> </ui:TitleBar>
<Grid Grid.Row="1" Visibility="{Binding AdvancedModeVisibility, FallbackValue=Visible}"> <Grid Grid.Row="1" Visibility="{Binding AdvancedModeVisibility, FallbackValue=Visible}">
<ui:NavigationView x:Name="RootNavigation" <ui:NavigationView x:Name="RootNavigation"
IsBackButtonVisible="Collapsed"> IsBackButtonVisible="Collapsed"
PaneOpened="RootNavigation_OnPaneOpened"
PaneClosed="RootNavigation_OnPaneClosed">
<ui:NavigationView.Header> <ui:NavigationView.Header>
<ui:BreadcrumbBar <ui:BreadcrumbBar
Margin="42,32,0,16" Margin="42,32,0,16"

18
StabilityMatrix/MainWindow.xaml.cs

@ -1,7 +1,9 @@
using System.Diagnostics; using System.Diagnostics;
using System.Windows; using System.Windows;
using StabilityMatrix.Helper;
using StabilityMatrix.ViewModels; using StabilityMatrix.ViewModels;
using Wpf.Ui.Contracts; using Wpf.Ui.Contracts;
using Wpf.Ui.Controls.Navigation;
using Wpf.Ui.Controls.Window; using Wpf.Ui.Controls.Window;
namespace StabilityMatrix namespace StabilityMatrix
@ -12,13 +14,15 @@ namespace StabilityMatrix
public partial class MainWindow : FluentWindow public partial class MainWindow : FluentWindow
{ {
private readonly MainWindowViewModel mainWindowViewModel; private readonly MainWindowViewModel mainWindowViewModel;
private readonly ISettingsManager settingsManager;
public MainWindow(IPageService pageService, IContentDialogService contentDialogService, public MainWindow(IPageService pageService, IContentDialogService contentDialogService,
MainWindowViewModel mainWindowViewModel) MainWindowViewModel mainWindowViewModel, ISettingsManager settingsManager)
{ {
InitializeComponent(); InitializeComponent();
this.mainWindowViewModel = mainWindowViewModel; this.mainWindowViewModel = mainWindowViewModel;
this.settingsManager = settingsManager;
DataContext = mainWindowViewModel; DataContext = mainWindowViewModel;
@ -32,7 +36,17 @@ namespace StabilityMatrix
{ {
RootNavigation.Navigate(typeof(LaunchPage)); RootNavigation.Navigate(typeof(LaunchPage));
mainWindowViewModel.OnLoaded(); mainWindowViewModel.OnLoaded();
RootNavigation.IsPaneOpen = settingsManager.Settings.IsNavExpanded;
}
private void RootNavigation_OnPaneOpened(NavigationView sender, RoutedEventArgs args)
{
settingsManager.SetNavExpanded(true);
}
private void RootNavigation_OnPaneClosed(NavigationView sender, RoutedEventArgs args)
{
settingsManager.SetNavExpanded(false);
} }
} }
} }

1
StabilityMatrix/Models/BasePackage.cs

@ -9,6 +9,7 @@ public abstract class BasePackage
public abstract string DisplayName { get; } public abstract string DisplayName { get; }
public abstract string Author { get; } public abstract string Author { get; }
public abstract string GithubUrl { get; } public abstract string GithubUrl { get; }
public abstract Task DownloadPackage(); public abstract Task DownloadPackage();
internal virtual string DownloadLocation => $"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\\StabilityMatrix\\Packages\\{Name}.zip"; internal virtual string DownloadLocation => $"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}\\StabilityMatrix\\Packages\\{Name}.zip";

1
StabilityMatrix/Models/Packages/A3WebUI.cs

@ -17,6 +17,7 @@ public class A3WebUI: BasePackage
public override string DisplayName => "Stable Diffusion WebUI"; public override string DisplayName => "Stable Diffusion WebUI";
public override string Author => "AUTOMATIC1111"; public override string Author => "AUTOMATIC1111";
public override string GithubUrl => "https://github.com/AUTOMATIC1111/stable-diffusion-webui"; public override string GithubUrl => "https://github.com/AUTOMATIC1111/stable-diffusion-webui";
public override async Task DownloadPackage() public override async Task DownloadPackage()
{ {
var githubApi = RestService.For<IGithubApi>("https://api.github.com"); var githubApi = RestService.For<IGithubApi>("https://api.github.com");

1
StabilityMatrix/Models/Settings.cs

@ -10,4 +10,5 @@ public class Settings
public Guid? ActiveInstalledPackage { get; set; } public Guid? ActiveInstalledPackage { get; set; }
public bool HasInstalledPip { get; set; } public bool HasInstalledPip { get; set; }
public bool HasInstalledVenv { get; set; } public bool HasInstalledVenv { get; set; }
public bool IsNavExpanded { get; set; }
} }

45
StabilityMatrix/ViewModels/InstallerViewModel.cs

@ -5,26 +5,29 @@ using StabilityMatrix.Helper;
using StabilityMatrix.Models; using StabilityMatrix.Models;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics; using System.Diagnostics;
using System.Dynamic;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using StabilityMatrix.Models.Packages; using StabilityMatrix.Models.Packages;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace StabilityMatrix.ViewModels; namespace StabilityMatrix.ViewModels;
public class InstallerViewModel : INotifyPropertyChanged public partial class InstallerViewModel : ObservableObject
{ {
private readonly ILogger<InstallerViewModel> logger; private readonly ILogger<InstallerViewModel> logger;
private readonly ISettingsManager settingsManager; private readonly ISettingsManager settingsManager;
private string installedText;
private int progressValue; private int progressValue;
private bool isIndeterminate;
private BasePackage selectedPackage; private BasePackage selectedPackage;
[ObservableProperty]
private string installedText;
[ObservableProperty]
private bool isIndeterminate;
public InstallerViewModel(ILogger<InstallerViewModel> logger, ISettingsManager settingsManager) public InstallerViewModel(ILogger<InstallerViewModel> logger, ISettingsManager settingsManager)
{ {
@ -47,16 +50,9 @@ public class InstallerViewModel : INotifyPropertyChanged
public ObservableCollection<BasePackage> Packages { get; } public ObservableCollection<BasePackage> Packages { get; }
public string InstalledText
{ [ObservableProperty]
get => installedText; private Visibility packageInstalledVisibility;
private set
{
if (value == installedText) return;
installedText = value;
OnPropertyChanged();
}
}
public int ProgressValue public int ProgressValue
{ {
@ -70,17 +66,6 @@ public class InstallerViewModel : INotifyPropertyChanged
} }
} }
public bool IsIndeterminate
{
get => isIndeterminate;
set
{
if (value == isIndeterminate) return;
isIndeterminate = value;
OnPropertyChanged();
}
}
public BasePackage SelectedPackage public BasePackage SelectedPackage
{ {
get => selectedPackage; get => selectedPackage;
@ -88,6 +73,11 @@ public class InstallerViewModel : INotifyPropertyChanged
{ {
selectedPackage = value; selectedPackage = value;
OnPropertyChanged(); OnPropertyChanged();
PackageInstalledVisibility =
settingsManager.Settings.InstalledPackages.Any(p => p.Name == selectedPackage.Name)
? Visibility.Visible
: Visibility.Collapsed;
} }
} }
@ -222,9 +212,4 @@ public class InstallerViewModel : INotifyPropertyChanged
} }
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
} }

Loading…
Cancel
Save