mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Rework main menu UI
This commit is contained in:
parent
3cdbfe490f
commit
1222280643
@ -9,6 +9,7 @@ public static class Consts
|
|||||||
public static RelativePath MO2IniName = "ModOrganizer.ini".ToRelativePath();
|
public static RelativePath MO2IniName = "ModOrganizer.ini".ToRelativePath();
|
||||||
public static string AppName = "Wabbajack";
|
public static string AppName = "Wabbajack";
|
||||||
public static Uri WabbajackBuildServerUri => new("https://build.wabbajack.org");
|
public static Uri WabbajackBuildServerUri => new("https://build.wabbajack.org");
|
||||||
|
public static Uri WabbajackModlistWizardUri => new("https://wizard.wabbajack.org");
|
||||||
public static Version CurrentMinimumWabbajackVersion { get; set; } = Version.Parse("2.3.0.0");
|
public static Version CurrentMinimumWabbajackVersion { get; set; } = Version.Parse("2.3.0.0");
|
||||||
public static bool UseNetworkWorkaroundMode { get; set; } = false;
|
public static bool UseNetworkWorkaroundMode { get; set; } = false;
|
||||||
public static AbsolutePath CefCacheLocation { get; } = KnownFolders.WabbajackAppLocal.Combine("Cef");
|
public static AbsolutePath CefCacheLocation { get; } = KnownFolders.WabbajackAppLocal.Combine("Cef");
|
||||||
|
25
Wabbajack.App.Wpf/Converters/WidthHeightRectConverter.cs
Normal file
25
Wabbajack.App.Wpf/Converters/WidthHeightRectConverter.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
|
namespace Wabbajack
|
||||||
|
{
|
||||||
|
public class WidthHeightRectConverter : IMultiValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
double rectWidth = 0;
|
||||||
|
double rectHeight = 0;
|
||||||
|
if (values[0] is not null && double.TryParse(values[0].ToString(), out var width))
|
||||||
|
rectWidth = width;
|
||||||
|
else return null;
|
||||||
|
if (values[1] is not null && double.TryParse(values[1].ToString(), out var height))
|
||||||
|
rectHeight = height;
|
||||||
|
else return null;
|
||||||
|
return new Rect(0, 0, rectWidth, rectHeight);
|
||||||
|
}
|
||||||
|
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
|
||||||
|
=> throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -10,7 +10,7 @@
|
|||||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<FontFamily x:Key="AtkinsonHyperlegible">pack://application:,,,/Resources/Fonts/#Atkinson Hyperlegible</FontFamily>
|
<FontFamily x:Key="PrimaryFont">pack://application:,,,/Resources/Fonts/#Gabarito</FontFamily>
|
||||||
|
|
||||||
<!-- Converters -->
|
<!-- Converters -->
|
||||||
<local:BoolToVisibilityConverter x:Key="bool2VisibilityConverter" />
|
<local:BoolToVisibilityConverter x:Key="bool2VisibilityConverter" />
|
||||||
@ -21,13 +21,14 @@
|
|||||||
<local:IsTypeVisibilityConverter x:Key="IsTypeVisibilityConverter" />
|
<local:IsTypeVisibilityConverter x:Key="IsTypeVisibilityConverter" />
|
||||||
<local:AbsolutePathToStringConverter x:Key="AbsolutePathToStringConverter" />
|
<local:AbsolutePathToStringConverter x:Key="AbsolutePathToStringConverter" />
|
||||||
<local:FileSizeConverter x:Key="FileSizeConverter"/>
|
<local:FileSizeConverter x:Key="FileSizeConverter"/>
|
||||||
|
<local:WidthHeightRectConverter x:Key="WidthHeightRectConverter" />
|
||||||
|
|
||||||
<!-- Colors -->
|
<!-- Colors -->
|
||||||
<Color x:Key="WindowBackgroundColor">#121212</Color>
|
<Color x:Key="WindowBackgroundColor">#222531</Color>
|
||||||
<Color x:Key="DarkBackgroundColor">#222222</Color>
|
<Color x:Key="DarkBackgroundColor">#222531</Color>
|
||||||
<Color x:Key="DarkHoverBackgroundColor">#272727</Color>
|
<Color x:Key="DarkHoverBackgroundColor">#2A2B41</Color>
|
||||||
<Color x:Key="LightBackgroundColor">#424242</Color>
|
<Color x:Key="LightBackgroundColor">#424242</Color>
|
||||||
<Color x:Key="BackgroundColor">#323232</Color>
|
<Color x:Key="BackgroundColor">#222531</Color>
|
||||||
<Color x:Key="DisabledBackgroundColor">#424242</Color>
|
<Color x:Key="DisabledBackgroundColor">#424242</Color>
|
||||||
<Color x:Key="PressedBackgroundColor">#323232</Color>
|
<Color x:Key="PressedBackgroundColor">#323232</Color>
|
||||||
<Color x:Key="LightDisabledBackgroundColor">#666666</Color>
|
<Color x:Key="LightDisabledBackgroundColor">#666666</Color>
|
||||||
@ -46,7 +47,7 @@
|
|||||||
|
|
||||||
<Color x:Key="Primary">#D9BBF9</Color>
|
<Color x:Key="Primary">#D9BBF9</Color>
|
||||||
<Color x:Key="PrimaryTransparent">#00BB86FC</Color>
|
<Color x:Key="PrimaryTransparent">#00BB86FC</Color>
|
||||||
<Color x:Key="PrimaryVariant">#3700B3</Color>
|
<Color x:Key="PrimaryVariant">#8866ad</Color>
|
||||||
<Color x:Key="DarkPrimaryVariant">#270080</Color>
|
<Color x:Key="DarkPrimaryVariant">#270080</Color>
|
||||||
<Color x:Key="DarkerPrimaryVariant">#1b0059</Color>
|
<Color x:Key="DarkerPrimaryVariant">#1b0059</Color>
|
||||||
<Color x:Key="Secondary">#03DAC6</Color>
|
<Color x:Key="Secondary">#03DAC6</Color>
|
||||||
@ -236,21 +237,21 @@
|
|||||||
|
|
||||||
<!-- FontStyle -->
|
<!-- FontStyle -->
|
||||||
<Style TargetType="{x:Type TextBlock}">
|
<Style TargetType="{x:Type TextBlock}">
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<!--<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>-->
|
<!--<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>-->
|
||||||
</Style>
|
</Style>
|
||||||
<Style TargetType="{x:Type Control}">
|
<Style TargetType="{x:Type Control}">
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
||||||
</Style>
|
</Style>
|
||||||
<Style TargetType="{x:Type Window}">
|
<Style TargetType="{x:Type Window}">
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
||||||
<Setter Property="Background" Value="{StaticResource WindowBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource WindowBackgroundBrush}" />
|
||||||
</Style>
|
</Style>
|
||||||
<!-- Necessary for Blend designer for UserControls -->
|
<!-- Necessary for Blend designer for UserControls -->
|
||||||
<Style TargetType="{x:Type UserControl}">
|
<Style TargetType="{x:Type UserControl}">
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
@ -1176,13 +1177,13 @@
|
|||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
<Trigger Property="IsMouseOver" Value="true">
|
<Trigger Property="IsMouseOver" Value="true">
|
||||||
<Setter Property="Background" Value="{StaticResource DarkHoverBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource DarkHoverBackgroundBrush}" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource DarkComplementaryBrush}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsPressed" Value="true">
|
<Trigger Property="IsPressed" Value="true">
|
||||||
<Setter Property="Background" Value="{StaticResource PressedButtonBackground}" />
|
<Setter Property="Background" Value="{StaticResource PressedButtonBackground}" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource ComplementaryBrush}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsEnabled" Value="false">
|
<Trigger Property="IsEnabled" Value="false">
|
||||||
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
||||||
@ -1241,13 +1242,13 @@
|
|||||||
<ControlTemplate.Triggers>
|
<ControlTemplate.Triggers>
|
||||||
<Trigger Property="IsMouseOver" Value="true">
|
<Trigger Property="IsMouseOver" Value="true">
|
||||||
<Setter Property="Background" Value="{StaticResource DarkHoverBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource DarkHoverBackgroundBrush}" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource DarkComplementaryBrush}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsPressed" Value="true">
|
<Trigger Property="IsPressed" Value="true">
|
||||||
<Setter Property="Background" Value="{StaticResource PressedButtonBackground}" />
|
<Setter Property="Background" Value="{StaticResource PressedButtonBackground}" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource ComplementaryBrush}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsEnabled" Value="false">
|
<Trigger Property="IsEnabled" Value="false">
|
||||||
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
||||||
@ -1288,8 +1289,8 @@
|
|||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsMouseOver" Value="True">
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
<Setter Property="Background" Value="#333333" />
|
<Setter Property="Background" Value="#333333" />
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray7}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
@ -1319,7 +1320,7 @@
|
|||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsMouseOver" Value="True">
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray7}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray7}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsPressed" Value="True">
|
<Trigger Property="IsPressed" Value="True">
|
||||||
@ -1341,12 +1342,12 @@
|
|||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsMouseOver" Value="True">
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray7}" />
|
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Transparent}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
|
||||||
<Setter Property="Background" Value="{StaticResource DarkBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource DarkBackgroundBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
<Trigger Property="IsPressed" Value="True">
|
<Trigger Property="IsPressed" Value="True">
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource DarkComplementaryBrush}" />
|
<Setter Property="BorderBrush" Value="{StaticResource PrimaryBrush}" />
|
||||||
<Setter Property="Background" Value="{StaticResource DarkBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource DarkBackgroundBrush}" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
@ -1622,7 +1623,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
<Style TargetType="{x:Type Expander}">
|
<Style TargetType="{x:Type Expander}">
|
||||||
<Setter Property="Foreground" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}" />
|
<Setter Property="Foreground" Value="{StaticResource Expander.MouseOver.Arrow.Stroke}" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="Padding" Value="2" />
|
<Setter Property="Padding" Value="2" />
|
||||||
<Setter Property="Background" Value="{StaticResource Expander.Background}" />
|
<Setter Property="Background" Value="{StaticResource Expander.Background}" />
|
||||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||||
@ -2353,7 +2354,7 @@
|
|||||||
<Setter Property="Height" Value="18" />
|
<Setter Property="Height" Value="18" />
|
||||||
<Setter Property="Background" Value="{StaticResource WindowBackgroundBrush}" />
|
<Setter Property="Background" Value="{StaticResource WindowBackgroundBrush}" />
|
||||||
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="FontSize" Value="{DynamicResource {x:Static SystemFonts.StatusFontSizeKey}}" />
|
<Setter Property="FontSize" Value="{DynamicResource {x:Static SystemFonts.StatusFontSizeKey}}" />
|
||||||
<Setter Property="FontStyle" Value="{DynamicResource {x:Static SystemFonts.StatusFontStyleKey}}" />
|
<Setter Property="FontStyle" Value="{DynamicResource {x:Static SystemFonts.StatusFontStyleKey}}" />
|
||||||
<Setter Property="FontWeight" Value="{DynamicResource {x:Static SystemFonts.StatusFontWeightKey}}" />
|
<Setter Property="FontWeight" Value="{DynamicResource {x:Static SystemFonts.StatusFontWeightKey}}" />
|
||||||
|
@ -59,6 +59,9 @@ namespace Wabbajack
|
|||||||
public ICommand CopyVersionCommand { get; }
|
public ICommand CopyVersionCommand { get; }
|
||||||
public ICommand ShowLoginManagerVM { get; }
|
public ICommand ShowLoginManagerVM { get; }
|
||||||
public ICommand OpenSettingsCommand { get; }
|
public ICommand OpenSettingsCommand { get; }
|
||||||
|
public ICommand MinimizeCommand { get; }
|
||||||
|
public ICommand MaximizeCommand { get; }
|
||||||
|
public ICommand CloseCommand { get; }
|
||||||
|
|
||||||
public string VersionDisplay { get; }
|
public string VersionDisplay { get; }
|
||||||
|
|
||||||
@ -135,7 +138,7 @@ namespace Wabbajack
|
|||||||
var fvi = FileVersionInfo.GetVersionInfo(string.IsNullOrWhiteSpace(assemblyLocation) ? processLocation : assemblyLocation);
|
var fvi = FileVersionInfo.GetVersionInfo(string.IsNullOrWhiteSpace(assemblyLocation) ? processLocation : assemblyLocation);
|
||||||
Consts.CurrentMinimumWabbajackVersion = Version.Parse(fvi.FileVersion);
|
Consts.CurrentMinimumWabbajackVersion = Version.Parse(fvi.FileVersion);
|
||||||
VersionDisplay = $"v{fvi.FileVersion}";
|
VersionDisplay = $"v{fvi.FileVersion}";
|
||||||
AppName = "WABBAJACK " + VersionDisplay;
|
AppName = $"{Consts.AppName} {VersionDisplay}";
|
||||||
_logger.LogInformation("Wabbajack Version: {FileVersion}", fvi.FileVersion);
|
_logger.LogInformation("Wabbajack Version: {FileVersion}", fvi.FileVersion);
|
||||||
|
|
||||||
Task.Run(() => _wjClient.SendMetric("started_wabbajack", fvi.FileVersion)).FireAndForget();
|
Task.Run(() => _wjClient.SendMetric("started_wabbajack", fvi.FileVersion)).FireAndForget();
|
||||||
@ -168,6 +171,26 @@ namespace Wabbajack
|
|||||||
canExecute: this.WhenAny(x => x.ActivePane)
|
canExecute: this.WhenAny(x => x.ActivePane)
|
||||||
.Select(active => !object.ReferenceEquals(active, SettingsPane)),
|
.Select(active => !object.ReferenceEquals(active, SettingsPane)),
|
||||||
execute: () => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Settings));
|
execute: () => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Settings));
|
||||||
|
MinimizeCommand = ReactiveCommand.Create(Minimize);
|
||||||
|
MaximizeCommand = ReactiveCommand.Create(Maximize);
|
||||||
|
CloseCommand = ReactiveCommand.Create(Close);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Minimize()
|
||||||
|
{
|
||||||
|
var mainWindow = _serviceProvider.GetRequiredService<MainWindow>();
|
||||||
|
mainWindow.WindowState = WindowState.Minimized;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Maximize()
|
||||||
|
{
|
||||||
|
var mainWindow = _serviceProvider.GetRequiredService<MainWindow>();
|
||||||
|
mainWindow.WindowState = WindowState.Maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Close()
|
||||||
|
{
|
||||||
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleNavigateTo(ViewModel objViewModel)
|
private void HandleNavigateTo(ViewModel objViewModel)
|
||||||
|
@ -10,19 +10,23 @@ using Wabbajack.Common;
|
|||||||
using Wabbajack;
|
using Wabbajack;
|
||||||
using Wabbajack.Messages;
|
using Wabbajack.Messages;
|
||||||
using Wabbajack.Paths.IO;
|
using Wabbajack.Paths.IO;
|
||||||
|
using Wabbajack.Networking.WabbajackClientApi;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Wabbajack.DTOs;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Reactive.Disposables;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace Wabbajack
|
namespace Wabbajack
|
||||||
{
|
{
|
||||||
public class ModeSelectionVM : ViewModel
|
public class ModeSelectionVM : ViewModel
|
||||||
{
|
{
|
||||||
public ICommand BrowseCommand { get; }
|
private readonly ILogger<ModeSelectionVM> _logger;
|
||||||
public ICommand InstallCommand { get; }
|
private readonly Client _wjClient;
|
||||||
public ICommand CompileCommand { get; }
|
|
||||||
|
|
||||||
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
|
public ModeSelectionVM(Client wjClient)
|
||||||
|
|
||||||
public ModeSelectionVM()
|
|
||||||
{
|
{
|
||||||
|
_wjClient = wjClient;
|
||||||
InstallCommand = ReactiveCommand.Create(() =>
|
InstallCommand = ReactiveCommand.Create(() =>
|
||||||
{
|
{
|
||||||
LoadLastLoadedModlist.Send();
|
LoadLastLoadedModlist.Send();
|
||||||
@ -30,6 +34,33 @@ namespace Wabbajack
|
|||||||
});
|
});
|
||||||
CompileCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Compiler));
|
CompileCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.Compiler));
|
||||||
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
|
BrowseCommand = ReactiveCommand.Create(() => NavigateToGlobal.Send(NavigateToGlobal.ScreenType.ModListGallery));
|
||||||
}
|
VisitModlistWizardCommand = ReactiveCommand.Create(() =>
|
||||||
|
{
|
||||||
|
ProcessStartInfo processStartInfo = new(Consts.WabbajackModlistWizardUri.ToString())
|
||||||
|
{
|
||||||
|
UseShellExecute = true
|
||||||
|
};
|
||||||
|
Process.Start(processStartInfo);
|
||||||
|
});
|
||||||
|
this.WhenActivated(async disposables =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Modlists = await _wjClient.LoadLists().DisposeWith(disposables);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "While loading lists");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
public ICommand BrowseCommand { get; }
|
||||||
|
public ICommand InstallCommand { get; }
|
||||||
|
public ICommand CompileCommand { get; }
|
||||||
|
public ICommand VisitModlistWizardCommand { get; }
|
||||||
|
public ReactiveCommand<Unit, Unit> UpdateCommand { get; }
|
||||||
|
|
||||||
|
[Reactive]
|
||||||
|
public ModlistMetadata[] Modlists { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
WindowTitleBrush="{StaticResource MahApps.Brushes.Accent}"
|
WindowTitleBrush="{StaticResource MahApps.Brushes.Accent}"
|
||||||
ContentRendered="BrowserWindow_OnActivated"
|
ContentRendered="BrowserWindow_OnActivated"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Grid Background="#121212" MouseDown="UIElement_OnMouseDown">
|
<Grid Background="{StaticResource BackgroundBrush}" MouseDown="UIElement_OnMouseDown">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto"></RowDefinition>
|
<RowDefinition Height="Auto"></RowDefinition>
|
||||||
<RowDefinition Height="Auto"></RowDefinition>
|
<RowDefinition Height="Auto"></RowDefinition>
|
||||||
|
@ -75,7 +75,7 @@
|
|||||||
Padding="40,20"
|
Padding="40,20"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="65"
|
FontSize="65"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Style="{StaticResource BackgroundBlurStyle}"
|
Style="{StaticResource BackgroundBlurStyle}"
|
||||||
@ -89,7 +89,7 @@
|
|||||||
Margin="35,-10,-10,10"
|
Margin="35,-10,-10,10"
|
||||||
Padding="30,10"
|
Padding="30,10"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="30"
|
FontSize="30"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Style="{StaticResource BackgroundBlurStyle}"
|
Style="{StaticResource BackgroundBlurStyle}"
|
||||||
@ -105,7 +105,7 @@
|
|||||||
Margin="20,25,20,0"
|
Margin="20,25,20,0"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="65"
|
FontSize="65"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
TextWrapping="WrapWithOverflow">
|
TextWrapping="WrapWithOverflow">
|
||||||
@ -116,7 +116,7 @@
|
|||||||
<TextBlock Grid.Row="3" Grid.Column="0"
|
<TextBlock Grid.Row="3" Grid.Column="0"
|
||||||
x:Name="AuthorTextBlock"
|
x:Name="AuthorTextBlock"
|
||||||
Margin="55,0,20,20"
|
Margin="55,0,20,20"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="30"
|
FontSize="30"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
TextWrapping="Wrap">
|
TextWrapping="Wrap">
|
||||||
@ -132,7 +132,7 @@
|
|||||||
Padding="30,10"
|
Padding="30,10"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
Style="{StaticResource BackgroundBlurStyle}"
|
Style="{StaticResource BackgroundBlurStyle}"
|
||||||
TextAlignment="Right"
|
TextAlignment="Right"
|
||||||
@ -146,7 +146,7 @@
|
|||||||
Margin="20,25,25,25"
|
Margin="20,25,25,25"
|
||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
TextAlignment="Right"
|
TextAlignment="Right"
|
||||||
TextWrapping="Wrap">
|
TextWrapping="Wrap">
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
Width="130"
|
Width="130"
|
||||||
Margin="0,0,0,0"
|
Margin="0,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontWeight="Black"
|
FontWeight="Black"
|
||||||
Foreground="{StaticResource ComplementaryBrush}"
|
Foreground="{StaticResource ComplementaryBrush}"
|
||||||
TextAlignment="Right" />
|
TextAlignment="Right" />
|
||||||
@ -89,7 +89,7 @@
|
|||||||
x:Name="TitleText"
|
x:Name="TitleText"
|
||||||
Margin="15,0,0,0"
|
Margin="15,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="25"
|
FontSize="25"
|
||||||
FontWeight="Black" />
|
FontWeight="Black" />
|
||||||
<ContentControl Grid.Column="2" />
|
<ContentControl Grid.Column="2" />
|
||||||
|
@ -45,13 +45,13 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Grid.Row="0"
|
<TextBlock Grid.Row="0"
|
||||||
Margin="0,0,0,10"
|
Margin="0,0,0,10"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="30"
|
FontSize="30"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{StaticResource YellowBrush}"
|
Foreground="{StaticResource YellowBrush}"
|
||||||
Text="UNDER MAINTENANCE" />
|
Text="UNDER MAINTENANCE" />
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="15"
|
FontSize="15"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{StaticResource YellowBrush}"
|
Foreground="{StaticResource YellowBrush}"
|
||||||
@ -72,7 +72,7 @@
|
|||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Grid.Row="0"
|
<TextBlock Grid.Row="0"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="100"
|
FontSize="100"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{StaticResource YellowBrush}"
|
Foreground="{StaticResource YellowBrush}"
|
||||||
@ -102,7 +102,7 @@
|
|||||||
Kind="HelpCircle" />
|
Kind="HelpCircle" />
|
||||||
</Button>
|
</Button>
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="100"
|
FontSize="100"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{StaticResource YellowBrush}"
|
Foreground="{StaticResource YellowBrush}"
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
x:Name="TitleText"
|
x:Name="TitleText"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="22"
|
FontSize="22"
|
||||||
FontWeight="Black">
|
FontWeight="Black">
|
||||||
<TextBlock.Effect>
|
<TextBlock.Effect>
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
x:Name="TitleText"
|
x:Name="TitleText"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="22"
|
FontSize="22"
|
||||||
FontWeight="Black">
|
FontWeight="Black">
|
||||||
<TextBlock.Effect>
|
<TextBlock.Effect>
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
TextAlignment="Center" />
|
TextAlignment="Center" />
|
||||||
<TextBlock x:Name="errorTextBox"
|
<TextBlock x:Name="errorTextBox"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}" FontSize="10" FontWeight="ExtraBold"
|
FontFamily="{StaticResource PrimaryFont}" FontSize="10" FontWeight="ExtraBold"
|
||||||
Background="{StaticResource WindowBackgroundBrush}"
|
Background="{StaticResource WindowBackgroundBrush}"
|
||||||
Foreground="Red"
|
Foreground="Red"
|
||||||
Text=""
|
Text=""
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
Margin="4"
|
Margin="4"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="9"
|
FontSize="9"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Text="NSFW" />
|
Text="NSFW" />
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3"
|
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3"
|
||||||
x:Name="ShortDescription"
|
x:Name="ShortDescription"
|
||||||
Margin="0,0,0,5"
|
Margin="0,0,0,5"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="14"
|
FontSize="14"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
TextWrapping="WrapWithOverflow" />
|
TextWrapping="WrapWithOverflow" />
|
||||||
|
@ -14,13 +14,6 @@
|
|||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock
|
|
||||||
Text="Wabbajack is free, but supported by users like you. Please consider supporting us on Patreon to help offset the costs of hosting these modlists."
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
FontWeight="Bold"
|
|
||||||
FontSize="14"
|
|
||||||
MouseDown="Patreon_Click"
|
|
||||||
/>
|
|
||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Width="40"
|
Width="40"
|
||||||
Height="35"
|
Height="35"
|
||||||
|
@ -9,19 +9,23 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:viewModels="clr-namespace:Wabbajack.View_Models"
|
xmlns:viewModels="clr-namespace:Wabbajack.View_Models"
|
||||||
xmlns:views="clr-namespace:Wabbajack.Views"
|
xmlns:views="clr-namespace:Wabbajack.Views"
|
||||||
|
xmlns:ic="clr-namespace:FluentIcons.WPF;assembly=FluentIcons.WPF"
|
||||||
ShowTitleBar="False"
|
ShowTitleBar="False"
|
||||||
Title="WABBAJACK"
|
ShowCloseButton="False"
|
||||||
Width="1280"
|
ShowMinButton="False"
|
||||||
Height="960"
|
ShowMaxRestoreButton="False"
|
||||||
MinWidth="850"
|
Title="Wabbajack"
|
||||||
MinHeight="650"
|
Width="1424"
|
||||||
|
Height="686"
|
||||||
|
MinWidth="712"
|
||||||
|
MinHeight="343"
|
||||||
Closing="Window_Closing"
|
Closing="Window_Closing"
|
||||||
RenderOptions.BitmapScalingMode="HighQuality"
|
RenderOptions.BitmapScalingMode="HighQuality"
|
||||||
ResizeMode="CanResize"
|
ResizeMode="CanResize"
|
||||||
Style="{StaticResource {x:Type Window}}"
|
Style="{StaticResource {x:Type Window}}"
|
||||||
TitleBarHeight="25"
|
TitleBarHeight="25"
|
||||||
UseLayoutRounding="True"
|
UseLayoutRounding="True"
|
||||||
WindowTitleBrush="{StaticResource MahApps.Brushes.Accent}"
|
WindowTitleBrush="{StaticResource BackgroundBrush}"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
|
|
||||||
@ -31,17 +35,28 @@
|
|||||||
<RowDefinition Height="*"></RowDefinition>
|
<RowDefinition Height="*"></RowDefinition>
|
||||||
<RowDefinition Height="Auto"></RowDefinition>
|
<RowDefinition Height="Auto"></RowDefinition>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid Grid.Row="0" Margin="5">
|
<Grid Grid.Row="0">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||||
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
<ColumnDefinition Width="140"></ColumnDefinition>
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
|
<ColumnDefinition Width="Auto"></ColumnDefinition>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Column="0" FontSize="16" Margin="0, 0, 8, 0" Name="AppName"></TextBlock>
|
<TextBlock Grid.Column="0" FontSize="16" Padding="8, 8" Name="AppName"></TextBlock>
|
||||||
<TextBlock Grid.Column="1" FontSize="16" Margin="5, 0" Name="ResourceUsage" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
<TextBlock Grid.Column="1" FontSize="16" Padding="8, 8" Name="ResourceUsage" HorizontalAlignment="Right" VerticalAlignment="Center"></TextBlock>
|
||||||
<Button Grid.Column="2" Name="SettingsButton" ToolTip="Open Wabbajack settings">
|
<Button Grid.Column="2" Name="SettingsButton" Padding="12, 8" ToolTip="Open Wabbajack settings">
|
||||||
<icon:Material Kind="Cog"></icon:Material>
|
<ic:SymbolIcon Symbol="Settings"/>
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="3" Name="MinimizeButton" Padding="12, 8">
|
||||||
|
<ic:SymbolIcon Symbol="Subtract"/>
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="4" Name="MaximizeButton" Padding="12, 8">
|
||||||
|
<ic:SymbolIcon Symbol="Maximize"/>
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="5" Name="CloseButton" Padding="12, 8">
|
||||||
|
<ic:SymbolIcon Symbol="ArrowExit"/>
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
<ContentPresenter Grid.Row="1" Content="{Binding ActivePane}">
|
<ContentPresenter Grid.Row="1" Content="{Binding ActivePane}">
|
||||||
@ -94,6 +109,30 @@
|
|||||||
Height="17"
|
Height="17"
|
||||||
Kind="Cog" />
|
Kind="Cog" />
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Margin="5,0"
|
||||||
|
Command="{Binding MinimizeCommand}">
|
||||||
|
<icon:PackIconMaterial
|
||||||
|
Width="17"
|
||||||
|
Height="17"
|
||||||
|
Kind="WindowMinimize" />
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Margin="5,0"
|
||||||
|
Command="{Binding MaximizeCommand}">
|
||||||
|
<icon:PackIconMaterial
|
||||||
|
Width="17"
|
||||||
|
Height="17"
|
||||||
|
Kind="WindowMaximize" />
|
||||||
|
</Button>
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Margin="5,0"
|
||||||
|
Command="{Binding CloseCommand}">
|
||||||
|
<icon:PackIconMaterial
|
||||||
|
Width="17"
|
||||||
|
Height="17"
|
||||||
|
Kind="WindowClose" />
|
||||||
|
</Button>
|
||||||
</mahapps:WindowCommands>
|
</mahapps:WindowCommands>
|
||||||
</mahapps:MetroWindow.RightWindowCommands>
|
</mahapps:MetroWindow.RightWindowCommands>
|
||||||
<Window.TaskbarItemInfo>
|
<Window.TaskbarItemInfo>
|
||||||
|
@ -119,6 +119,15 @@ namespace Wabbajack
|
|||||||
((MainWindowVM) DataContext).WhenAnyValue(vm => vm.OpenSettingsCommand)
|
((MainWindowVM) DataContext).WhenAnyValue(vm => vm.OpenSettingsCommand)
|
||||||
.BindTo(this, view => view.SettingsButton.Command);
|
.BindTo(this, view => view.SettingsButton.Command);
|
||||||
|
|
||||||
|
((MainWindowVM) DataContext).WhenAnyValue(vm => vm.MinimizeCommand)
|
||||||
|
.BindTo(this, view => view.MinimizeButton.Command);
|
||||||
|
|
||||||
|
((MainWindowVM) DataContext).WhenAnyValue(vm => vm.MaximizeCommand)
|
||||||
|
.BindTo(this, view => view.MaximizeButton.Command);
|
||||||
|
|
||||||
|
((MainWindowVM) DataContext).WhenAnyValue(vm => vm.CloseCommand)
|
||||||
|
.BindTo(this, view => view.CloseButton.Command);
|
||||||
|
|
||||||
((MainWindowVM)DataContext).WhenAnyValue(vm => vm.Installer.InstallState)
|
((MainWindowVM)DataContext).WhenAnyValue(vm => vm.Installer.InstallState)
|
||||||
.ObserveOn(RxApp.MainThreadScheduler)
|
.ObserveOn(RxApp.MainThreadScheduler)
|
||||||
.Select(v => v == InstallState.Installing ? Visibility.Collapsed : Visibility.Visible)
|
.Select(v => v == InstallState.Installing ? Visibility.Collapsed : Visibility.Visible)
|
||||||
|
@ -294,7 +294,7 @@
|
|||||||
Margin="5"
|
Margin="5"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="30"
|
FontSize="30"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Style="{StaticResource BackgroundBlurStyle}"
|
Style="{StaticResource BackgroundBlurStyle}"
|
||||||
@ -308,7 +308,7 @@
|
|||||||
Margin="5"
|
Margin="5"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Bottom"
|
VerticalAlignment="Bottom"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="30"
|
FontSize="30"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
TextWrapping="Wrap">
|
TextWrapping="Wrap">
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
xmlns:local="clr-namespace:Wabbajack"
|
xmlns:local="clr-namespace:Wabbajack"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:rxui="http://reactiveui.net"
|
xmlns:rxui="http://reactiveui.net"
|
||||||
|
xmlns:ic="clr-namespace:FluentIcons.WPF;assembly=FluentIcons.WPF"
|
||||||
d:DesignHeight="700"
|
d:DesignHeight="700"
|
||||||
d:DesignWidth="1000"
|
d:DesignWidth="1000"
|
||||||
x:TypeArguments="local:ModeSelectionVM"
|
x:TypeArguments="local:ModeSelectionVM"
|
||||||
@ -15,26 +16,173 @@
|
|||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="3*" />
|
<RowDefinition Height="3*" />
|
||||||
<RowDefinition Height="1*" />
|
<RowDefinition Height="1*" />
|
||||||
<RowDefinition Height="15" />
|
<RowDefinition Height="0.05*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Rectangle Grid.Row="0" Grid.RowSpan="3">
|
<Grid Grid.Row="0" Grid.Column="0">
|
||||||
<Rectangle.Fill>
|
<Grid.RowDefinitions>
|
||||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
<RowDefinition Height="10*" />
|
||||||
<GradientStop Offset="0" Color="#121212" />
|
<RowDefinition Height="4*" />
|
||||||
<GradientStop Offset="1" Color="#121212" />
|
<RowDefinition Height="2*" />
|
||||||
</LinearGradientBrush>
|
<RowDefinition Height="22*" />
|
||||||
</Rectangle.Fill>
|
<RowDefinition Height="Auto" />
|
||||||
</Rectangle>
|
<RowDefinition Height="Auto" />
|
||||||
<!--
|
</Grid.RowDefinitions>
|
||||||
<Viewbox Grid.Row="0" Grid.RowSpan="3"
|
<Viewbox Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top">
|
||||||
Name="Banner"
|
<Label Grid.Row="0" FontSize="86.7" FontWeight="Bold" Padding="0" Margin="0">
|
||||||
HorizontalAlignment="Center"
|
<StackPanel Orientation="Horizontal">
|
||||||
VerticalAlignment="Center"
|
<TextBlock Foreground="{StaticResource ForegroundBrush}" Text="Welcome to " />
|
||||||
Stretch="UniformToFill">
|
<TextBlock Foreground="{StaticResource PrimaryBrush}" Text="Wabbajack" />
|
||||||
<Image Margin="40,20,40,240" Source="../Resources/Wabba_Mouth.png" />
|
</StackPanel>
|
||||||
|
</Label>
|
||||||
</Viewbox>
|
</Viewbox>
|
||||||
-->
|
<Viewbox Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top">
|
||||||
<Label Content="Welcome to Wabbajack" FontSize="36" FontWeight="Bold"/>
|
<Label FontSize="16" Foreground="{StaticResource ForegroundBrush}" Padding="0, 4, 0, 4" Margin="0">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Text="The home of " />
|
||||||
|
<TextBlock x:Name="ModlistAmountTextBlock" Foreground="{StaticResource PrimaryBrush}" />
|
||||||
|
<TextBlock Text=" ready-made modlists spanning " />
|
||||||
|
<TextBlock x:Name="GameAmountTextBlock" Foreground="{StaticResource PrimaryBrush}" />
|
||||||
|
<TextBlock Text=" games." />
|
||||||
|
</StackPanel>
|
||||||
|
</Label>
|
||||||
|
</Viewbox>
|
||||||
|
<Grid Grid.Row="3" Grid.RowSpan="2">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="581*" />
|
||||||
|
<ColumnDefinition Width="20*" />
|
||||||
|
<ColumnDefinition Width="581*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="81*" />
|
||||||
|
<RowDefinition Height="14*" />
|
||||||
|
<RowDefinition Height="81*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Border Grid.Row="0" Grid.Column="0" BorderBrush="{StaticResource PrimaryVariantBrush}" CornerRadius="8" BorderThickness="16">
|
||||||
|
<Grid Grid.Row="0" Grid.Column="0" Background="{StaticResource PrimaryVariantBrush}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Text="Find a modlist that suits your playstyle"
|
||||||
|
FontWeight="DemiBold"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<ic:SymbolIcon
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Symbol="Search"
|
||||||
|
IsFilled="True"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" LineHeight="24" FontSize="14" VerticalAlignment="Bottom">
|
||||||
|
Go through a series of questions to find a modlist that works for you through <Hyperlink Command="{Binding VisitModlistWizardCommand}"> our<LineBreak />
|
||||||
|
Wabbakinator quiz</Hyperlink>, or <Hyperlink Command="{Binding BrowseCommand}">navigate the gallery</Hyperlink> yourself and pick something that looks fun.
|
||||||
|
</TextBlock>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="0" Grid.Column="2" BorderBrush="{StaticResource PrimaryVariantBrush}" CornerRadius="8" BorderThickness="16">
|
||||||
|
<Grid Grid.Row="0" Grid.Column="0" Background="{StaticResource PrimaryVariantBrush}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Text="Follow the usually short documentation"
|
||||||
|
FontWeight="DemiBold"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<ic:SymbolIcon
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Symbol="DocumentOnePageMultiple"
|
||||||
|
IsFilled="True"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" LineHeight="24" FontSize="14" VerticalAlignment="Bottom">
|
||||||
|
Some modlists have steps that you need to take before you install the list, some don't.<LineBreak/>
|
||||||
|
Check your list's documentation on how to get started.
|
||||||
|
</TextBlock>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="2" Grid.Column="0" BorderBrush="{StaticResource PrimaryVariantBrush}" CornerRadius="8" BorderThickness="16">
|
||||||
|
<Grid Grid.Row="0" Grid.Column="0" Background="{StaticResource PrimaryVariantBrush}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Text="Start downloading your chosen list"
|
||||||
|
FontWeight="DemiBold"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<ic:SymbolIcon
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Symbol="DrawerArrowDownload"
|
||||||
|
IsFilled="True"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" LineHeight="24" FontSize="14" VerticalAlignment="Bottom">
|
||||||
|
Pick a destination with enough free space and click the "Start download" button. You might<LineBreak/>
|
||||||
|
have to log into Nexus first, but rest assured it will just work™.
|
||||||
|
</TextBlock>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="2" Grid.Column="2" BorderBrush="{StaticResource PrimaryVariantBrush}" CornerRadius="8" BorderThickness="16">
|
||||||
|
<Grid Grid.Row="0" Grid.Column="0" Background="{StaticResource PrimaryVariantBrush}">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<TextBlock
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Text="Ready to start playing!"
|
||||||
|
FontWeight="DemiBold"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<ic:SymbolIcon
|
||||||
|
Grid.Row="0"
|
||||||
|
Grid.Column="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
Symbol="PlayCircle"
|
||||||
|
IsFilled="True"
|
||||||
|
FontSize="28"
|
||||||
|
/>
|
||||||
|
<TextBlock Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" LineHeight="24" FontSize="14" VerticalAlignment="Bottom">
|
||||||
|
If your install completed successfully and you're done with the documentation as well, you're<LineBreak/>
|
||||||
|
now ready to launch the modlist and play!
|
||||||
|
</TextBlock>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<Grid Grid.Row="1" Margin="5,15">
|
<Grid Grid.Row="1" Margin="5,15">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@ -64,14 +212,14 @@
|
|||||||
<Viewbox Grid.Row="1">
|
<Viewbox Grid.Row="1">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid>
|
<Grid>
|
||||||
<icon:PackIconFontAwesome
|
<ic:SymbolIcon
|
||||||
Width="140"
|
Width="140"
|
||||||
Height="140"
|
Height="140"
|
||||||
Margin="0,0,0,10"
|
Margin="0,0,0,10"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
ClipToBounds="False"
|
ClipToBounds="False"
|
||||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||||
Kind="CloudDownloadAltSolid"
|
Symbol="ClockArrowDownload"
|
||||||
Opacity="0.6" />
|
Opacity="0.6" />
|
||||||
<Grid.Style>
|
<Grid.Style>
|
||||||
<Style TargetType="Grid">
|
<Style TargetType="Grid">
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reactive.Disposables;
|
using System.Reactive.Disposables;
|
||||||
using System.Reactive.Linq;
|
using System.Reactive.Linq;
|
||||||
@ -37,6 +38,14 @@ namespace Wabbajack
|
|||||||
this.WhenAny(x => x.ViewModel.CompileCommand)
|
this.WhenAny(x => x.ViewModel.CompileCommand)
|
||||||
.BindToStrict(this, x => x.CompileButton.Command)
|
.BindToStrict(this, x => x.CompileButton.Command)
|
||||||
.DisposeWith(dispose);
|
.DisposeWith(dispose);
|
||||||
|
this.WhenAnyValue(x => x.ViewModel.Modlists)
|
||||||
|
.Select(x => x?.Length.ToString() ?? "0")
|
||||||
|
.BindToStrict(this, x => x.ModlistAmountTextBlock.Text)
|
||||||
|
.DisposeWith(dispose);
|
||||||
|
this.WhenAnyValue(x => x.ViewModel.Modlists)
|
||||||
|
.Select(x => x?.GroupBy(y => y.Game).Count().ToString() ?? "0")
|
||||||
|
.BindToStrict(this, x => x.GameAmountTextBlock.Text)
|
||||||
|
.DisposeWith(dispose);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.ColumnSpan="3"
|
<TextBlock Grid.ColumnSpan="3"
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="20"
|
FontSize="20"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Text="File Uploader" />
|
Text="File Uploader" />
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
</Grid.Resources>
|
</Grid.Resources>
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="5,0"
|
Margin="5,0"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="20"
|
FontSize="20"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Text="Logins" />
|
Text="Logins" />
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.ColumnSpan="2"
|
Grid.ColumnSpan="2"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="20"
|
FontSize="20"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Text="Misc Settings" />
|
Text="Misc Settings" />
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
<TextBlock
|
<TextBlock
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.ColumnSpan="3"
|
Grid.ColumnSpan="3"
|
||||||
FontFamily="{StaticResource AtkinsonHyperlegible}"
|
FontFamily="{StaticResource PrimaryFont}"
|
||||||
FontSize="20"
|
FontSize="20"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Text="Performance" />
|
Text="Performance" />
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<Style TargetType="TextBlock">
|
<Style TargetType="TextBlock">
|
||||||
<Setter Property="FontFamily" Value="{StaticResource AtkinsonHyperlegible}" />
|
<Setter Property="FontFamily" Value="{StaticResource PrimaryFont}" />
|
||||||
<Setter Property="FontWeight" Value="Bold" />
|
<Setter Property="FontWeight" Value="Bold" />
|
||||||
<Setter Property="FontSize" Value="12" />
|
<Setter Property="FontSize" Value="12" />
|
||||||
</Style>
|
</Style>
|
||||||
|
@ -53,10 +53,11 @@
|
|||||||
<None Remove="Readme.md" />
|
<None Remove="Readme.md" />
|
||||||
<None Remove="Resources\Fonts\Atkinson-Hyperlegible-Italic-102.ttf" />
|
<None Remove="Resources\Fonts\Atkinson-Hyperlegible-Italic-102.ttf" />
|
||||||
<None Remove="Resources\Fonts\Atkinson-Hyperlegible-Regular-102.ttf" />
|
<None Remove="Resources\Fonts\Atkinson-Hyperlegible-Regular-102.ttf" />
|
||||||
<None Remove="Resources\Fonts\AtkinsonHyperlegible-Bold.ttf" />
|
<None Remove="Resources\Fonts\Gabarito-VariableFont_wght-BF651cdf1f55e6c.ttf" />
|
||||||
<None Remove="Resources\Fonts\AtkinsonHyperlegible-BoldItalic.ttf" />
|
<None Remove="Resources\Fonts\PrimaryFont-Bold.ttf" />
|
||||||
<None Remove="Resources\Fonts\AtkinsonHyperlegible-Italic.ttf" />
|
<None Remove="Resources\Fonts\PrimaryFont-BoldItalic.ttf" />
|
||||||
<None Remove="Resources\Fonts\AtkinsonHyperlegible-Regular.ttf" />
|
<None Remove="Resources\Fonts\PrimaryFont-Italic.ttf" />
|
||||||
|
<None Remove="Resources\Fonts\PrimaryFont-Regular.ttf" />
|
||||||
<None Remove="Resources\GameGridIcons\Fallout4.png" />
|
<None Remove="Resources\GameGridIcons\Fallout4.png" />
|
||||||
<None Remove="Resources\GameGridIcons\SkyrimSpecialEdition.png" />
|
<None Remove="Resources\GameGridIcons\SkyrimSpecialEdition.png" />
|
||||||
<None Remove="Resources\Icons\middle_mouse_button.png" />
|
<None Remove="Resources\Icons\middle_mouse_button.png" />
|
||||||
@ -85,6 +86,7 @@
|
|||||||
<NoWarn>NU1701</NoWarn>
|
<NoWarn>NU1701</NoWarn>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Fizzler.Systems.HtmlAgilityPack" Version="1.2.1" />
|
<PackageReference Include="Fizzler.Systems.HtmlAgilityPack" Version="1.2.1" />
|
||||||
|
<PackageReference Include="FluentIcons.WPF" Version="1.1.223" />
|
||||||
<PackageReference Include="Fody" Version="6.8.0">
|
<PackageReference Include="Fody" Version="6.8.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
@ -117,16 +119,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Resource Include="Resources\Fonts\AtkinsonHyperlegible-Bold.ttf">
|
<Resource Include="Resources\Fonts\Gabarito-VariableFont_wght-BF651cdf1f55e6c.ttf">
|
||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
|
||||||
</Resource>
|
|
||||||
<Resource Include="Resources\Fonts\AtkinsonHyperlegible-BoldItalic.ttf">
|
|
||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
|
||||||
</Resource>
|
|
||||||
<Resource Include="Resources\Fonts\AtkinsonHyperlegible-Italic.ttf">
|
|
||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
|
||||||
</Resource>
|
|
||||||
<Resource Include="Resources\Fonts\AtkinsonHyperlegible-Regular.ttf">
|
|
||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
|
||||||
</Resource>
|
</Resource>
|
||||||
<Resource Include="Resources\middle_mouse_button.png" />
|
<Resource Include="Resources\middle_mouse_button.png" />
|
||||||
|
Loading…
Reference in New Issue
Block a user