mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge pull request #221 from Noggog/mode-selection-browser-revamp
Mode-Selection and Browser Revamp
This commit is contained in:
commit
86733dd0f5
Binary file not shown.
Before Width: | Height: | Size: 179 KiB |
BIN
Branding/PNGs/Wabba_Mouth_No_Text.png
Normal file
BIN
Branding/PNGs/Wabba_Mouth_No_Text.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 KiB |
@ -719,7 +719,7 @@ namespace Wabbajack.Common
|
||||
throw new Exception(msg);
|
||||
}
|
||||
|
||||
public static Stream GetResourceStream(string name)
|
||||
public static Stream GetEmbeddedResourceStream(string name)
|
||||
{
|
||||
return (from assembly in AppDomain.CurrentDomain.GetAssemblies()
|
||||
where !assembly.IsDynamic
|
||||
|
@ -134,7 +134,7 @@ namespace Wabbajack.Lib
|
||||
public void GenerateReport()
|
||||
{
|
||||
string css;
|
||||
using (var cssStream = Utils.GetResourceStream("Wabbajack.Lib.css-min.css"))
|
||||
using (var cssStream = Utils.GetEmbeddedResourceStream("Wabbajack.Lib.css-min.css"))
|
||||
{
|
||||
using (var reader = new StreamReader(cssStream))
|
||||
{
|
||||
|
@ -60,7 +60,7 @@ namespace Wabbajack.Lib
|
||||
return null;
|
||||
}
|
||||
|
||||
public static BitmapImage BitmapImageFromResource(string name) => BitmapImageFromStream(Utils.GetResourceStream(name));
|
||||
public static BitmapImage BitmapImageFromResource(string name) => BitmapImageFromStream(System.Windows.Application.GetResourceStream(new Uri("pack://application:,,,/Wabbajack;component/" + name)).Stream);
|
||||
|
||||
public static BitmapImage BitmapImageFromStream(Stream stream)
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
using MahApps.Metro;
|
||||
using Wabbajack.Common;
|
||||
|
||||
namespace Wabbajack
|
||||
|
@ -25,7 +25,8 @@ namespace Wabbajack
|
||||
{
|
||||
compareTo = false;
|
||||
}
|
||||
return value != null ? Visibility.Visible : Visibility.Collapsed;
|
||||
bool isNull = value != null;
|
||||
return isNull == compareTo ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
|
BIN
Wabbajack/Resources/Wabba_Mouth_No_Text.png
Normal file
BIN
Wabbajack/Resources/Wabba_Mouth_No_Text.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 KiB |
@ -1,4 +1,4 @@
|
||||
<ResourceDictionary
|
||||
<ResourceDictionary
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
@ -6,6 +6,7 @@
|
||||
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:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<!-- Converters -->
|
||||
@ -17,14 +18,16 @@
|
||||
|
||||
<!-- Colors -->
|
||||
<Color x:Key="WindowBackgroundColor">#121212</Color>
|
||||
<Color x:Key="DarkBackgroundColor">#292929</Color>
|
||||
<Color x:Key="LightBackgroundColor">#414141</Color>
|
||||
<Color x:Key="BackgroundColor">#3D3D3D</Color>
|
||||
<Color x:Key="DarkBackgroundColor">#222222</Color>
|
||||
<Color x:Key="LightBackgroundColor">#424242</Color>
|
||||
<Color x:Key="BackgroundColor">#323232</Color>
|
||||
<Color x:Key="DisabledBackgroundColor">#424242</Color>
|
||||
<Color x:Key="PressedBackgroundColor">#394140</Color>
|
||||
<Color x:Key="LightDisabledBackgroundColor">#666666</Color>
|
||||
<Color x:Key="HeatedBorderColor">#362675</Color>
|
||||
|
||||
<Color x:Key="ForegroundColor">#EFEFEF</Color>
|
||||
<Color x:Key="DimForegroundColor">#CCCCCC</Color>
|
||||
|
||||
<Color x:Key="HighlightColor">#BDBDBD</Color>
|
||||
<Color x:Key="HotColor">#525252</Color>
|
||||
@ -34,15 +37,61 @@
|
||||
<Color x:Key="Green">#52b545</Color>
|
||||
|
||||
<Color x:Key="Primary">#BB86FC</Color>
|
||||
<Color x:Key="PrimaryTransparent">#00BB86FC</Color>
|
||||
<Color x:Key="PrimaryVariant">#3700B3</Color>
|
||||
<Color x:Key="DarkPrimaryVariant">#1b0059</Color>
|
||||
<Color x:Key="Secondary">#03DAC6</Color>
|
||||
<Color x:Key="DarkSecondary">#0e8f83</Color>
|
||||
<Color x:Key="DarkerSecondary">#095952</Color>
|
||||
<Color x:Key="OffWhiteSeconday">#cef0ed</Color>
|
||||
<Color x:Key="LightSecondary">#8cede5</Color>
|
||||
<Color x:Key="IntenseSecondary">#00ffe7</Color>
|
||||
<Color x:Key="Complementary">#C7FC86</Color>
|
||||
<Color x:Key="IntenseComplementary">#abf74d</Color>
|
||||
<Color x:Key="Analogous1">#868CFC</Color>
|
||||
<Color x:Key="Analogous2">#F686FC</Color>
|
||||
<Color x:Key="Triadic1">#FC86C7</Color>
|
||||
<Color x:Key="Triadic2">#FCBB86</Color>
|
||||
|
||||
<!-- Mahapps overrides -->
|
||||
<Color x:Key="AccentBaseColor">#FF3700B3</Color>
|
||||
<!-- 80% -->
|
||||
<Color x:Key="AccentColor">#CC868CFC</Color>
|
||||
<!-- 60% -->
|
||||
<Color x:Key="AccentColor2">#99868CFC</Color>
|
||||
<!-- 40% -->
|
||||
<Color x:Key="AccentColor3">#66868CFC</Color>
|
||||
<!-- 20% -->
|
||||
<Color x:Key="AccentColor4">#33868CFC</Color>
|
||||
<SolidColorBrush
|
||||
x:Key="HighlightBrush"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource HighlightColor}" />
|
||||
<SolidColorBrush
|
||||
x:Key="AccentBaseColorBrush"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentBaseColor}" />
|
||||
<SolidColorBrush
|
||||
x:Key="AccentColorBrush"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentColor}" />
|
||||
<SolidColorBrush
|
||||
x:Key="AccentColorBrush2"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentColor2}" />
|
||||
<SolidColorBrush
|
||||
x:Key="AccentColorBrush3"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentColor3}" />
|
||||
<SolidColorBrush
|
||||
x:Key="AccentColorBrush4"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentColor4}" />
|
||||
<SolidColorBrush
|
||||
x:Key="WindowTitleColorBrush"
|
||||
options:Freeze="True"
|
||||
Color="{StaticResource AccentColor}" />
|
||||
|
||||
<!-- Brushes -->
|
||||
<SolidColorBrush x:Key="YellowBrush" Color="{StaticResource Yellow}" />
|
||||
<SolidColorBrush x:Key="GreenBrush" Color="{StaticResource Green}" />
|
||||
@ -54,14 +103,23 @@
|
||||
<SolidColorBrush x:Key="LightBackgroundBrush" Color="{StaticResource LightBackgroundColor}" />
|
||||
<SolidColorBrush x:Key="BackgroundBrush" Color="{StaticResource BackgroundColor}" />
|
||||
<SolidColorBrush x:Key="ForegroundBrush" Color="{StaticResource ForegroundColor}" />
|
||||
<SolidColorBrush x:Key="DimForegroundBrush" Color="{StaticResource DimForegroundColor}" />
|
||||
<SolidColorBrush x:Key="MouseOverForegroundBrush" Color="{StaticResource DarkBackgroundColor}" />
|
||||
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="{StaticResource WindowBackgroundColor}" />
|
||||
<SolidColorBrush x:Key="BorderInterestBrush" Color="{StaticResource HeatedBorderColor}" />
|
||||
<SolidColorBrush x:Key="HeatedBorderBrush" Color="{StaticResource HeatedBorderColor}" />
|
||||
|
||||
<SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource Primary}" />
|
||||
<SolidColorBrush x:Key="PrimaryVariantBrush" Color="{StaticResource PrimaryVariant}" />
|
||||
<SolidColorBrush x:Key="DarkPrimaryVariantBrush" Color="{StaticResource DarkPrimaryVariant}" />
|
||||
<SolidColorBrush x:Key="SecondaryBrush" Color="{StaticResource Secondary}" />
|
||||
<SolidColorBrush x:Key="DarkSecondaryBrush" Color="{StaticResource DarkSecondary}" />
|
||||
<SolidColorBrush x:Key="DarkerSecondaryBrush" Color="{StaticResource DarkerSecondary}" />
|
||||
<SolidColorBrush x:Key="OffWhiteSecondayBrush" Color="{StaticResource OffWhiteSeconday}" />
|
||||
<SolidColorBrush x:Key="LightSecondaryBrush" Color="{StaticResource LightSecondary}" />
|
||||
<SolidColorBrush x:Key="IntenseSecondaryBrush" Color="{StaticResource IntenseSecondary}" />
|
||||
<SolidColorBrush x:Key="ComplementaryBrush" Color="{StaticResource Complementary}" />
|
||||
<SolidColorBrush x:Key="IntenseComplementaryBrush" Color="{StaticResource IntenseComplementary}" />
|
||||
<SolidColorBrush x:Key="Analogous1Brush" Color="{StaticResource Analogous1}" />
|
||||
<SolidColorBrush x:Key="Analogous2Brush" Color="{StaticResource Analogous2}" />
|
||||
<SolidColorBrush x:Key="Triadic1Brush" Color="{StaticResource Triadic1}" />
|
||||
@ -1462,9 +1520,31 @@
|
||||
BasedOn="{StaticResource MahApps.Metro.Styles.MetroCircleButtonStyle}"
|
||||
TargetType="ButtonBase">
|
||||
<Setter Property="Focusable" Value="False" />
|
||||
<Setter Property="Background" Value="#333333" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
||||
<Setter Property="Background" Value="#222222" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
||||
<Style
|
||||
x:Key="IconCircleButtonStyle"
|
||||
BasedOn="{StaticResource MahApps.Metro.Styles.MetroCircleButtonStyle}"
|
||||
TargetType="ButtonBase">
|
||||
<Setter Property="Focusable" Value="False" />
|
||||
<Setter Property="BorderBrush" Value="Transparent" />
|
||||
<Setter Property="BorderThickness" Value="2" />
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Foreground" Value="{StaticResource DisabledButtonForeground}" />
|
||||
<Setter Property="Background" Value="#222222" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="#333333" />
|
||||
<Setter Property="BorderBrush" Value="{StaticResource GrayBrush7}" />
|
||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
@ -96,7 +96,7 @@ namespace Wabbajack
|
||||
.DistinctUntilChanged()
|
||||
.Select(path =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path)) return UIUtils.BitmapImageFromResource("Wabbajack.Resources.Wabba_Mouth.png");
|
||||
if (string.IsNullOrWhiteSpace(path)) return UIUtils.BitmapImageFromResource("Resources/Wabba_Mouth_No_Text.png");
|
||||
if (UIUtils.TryGetBitmapImageFromFile(path, out var image))
|
||||
{
|
||||
return image;
|
||||
|
@ -26,7 +26,7 @@ namespace Wabbajack
|
||||
|
||||
public MainWindowVM MWVM { get; }
|
||||
|
||||
public BitmapImage WabbajackLogo { get; } = UIUtils.BitmapImageFromResource("Wabbajack.Resources.Wabba_Mouth.png");
|
||||
public BitmapImage WabbajackLogo { get; } = UIUtils.BitmapImageFromStream(Application.GetResourceStream(new Uri("pack://application:,,,/Wabbajack;component/Resources/Wabba_Mouth_No_Text.png")).Stream);
|
||||
|
||||
private readonly ObservableAsPropertyHelper<ModListVM> _modList;
|
||||
public ModListVM ModList => _modList.Value;
|
||||
|
@ -28,6 +28,7 @@ namespace Wabbajack
|
||||
|
||||
public readonly Lazy<CompilerVM> Compiler;
|
||||
public readonly Lazy<InstallerVM> Installer;
|
||||
public readonly Lazy<ModListGalleryVM> Gallery;
|
||||
public readonly ModeSelectionVM ModeSelectionVM;
|
||||
|
||||
public MainWindowVM(MainWindow mainWindow, MainSettings settings)
|
||||
@ -36,6 +37,7 @@ namespace Wabbajack
|
||||
Settings = settings;
|
||||
Installer = new Lazy<InstallerVM>(() => new InstallerVM(this));
|
||||
Compiler = new Lazy<CompilerVM>(() => new CompilerVM(this));
|
||||
Gallery = new Lazy<ModListGalleryVM>(() => new ModListGalleryVM(this));
|
||||
ModeSelectionVM = new ModeSelectionVM(this);
|
||||
|
||||
// Set up logging
|
||||
@ -74,5 +76,14 @@ namespace Wabbajack
|
||||
modlistPath = args[2];
|
||||
return true;
|
||||
}
|
||||
|
||||
public void OpenInstaller(string path)
|
||||
{
|
||||
if (path == null) return;
|
||||
var installer = Installer.Value;
|
||||
Settings.Installer.LastInstalledListLocation = path;
|
||||
ActivePane = installer;
|
||||
installer.ModListPath.TargetPath = path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
52
Wabbajack/View Models/ModListGalleryVM.cs
Normal file
52
Wabbajack/View Models/ModListGalleryVM.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Disposables;
|
||||
using System.Reactive.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DynamicData;
|
||||
using DynamicData.Binding;
|
||||
using ReactiveUI;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
public class ModListGalleryVM : ViewModel
|
||||
{
|
||||
public MainWindowVM MWVM { get; }
|
||||
|
||||
public ObservableCollectionExtended<ModListMetadataVM> ModLists { get; } = new ObservableCollectionExtended<ModListMetadataVM>();
|
||||
|
||||
public IReactiveCommand BackCommand { get; }
|
||||
public IReactiveCommand RefreshCommand { get; }
|
||||
|
||||
private int missingHashFallbackCounter;
|
||||
|
||||
public ModListGalleryVM(MainWindowVM mainWindowVM)
|
||||
{
|
||||
MWVM = mainWindowVM;
|
||||
BackCommand = ReactiveCommand.Create(
|
||||
execute: () => mainWindowVM.ActivePane = mainWindowVM.ModeSelectionVM);
|
||||
RefreshCommand = ReactiveCommand.Create(() => { });
|
||||
|
||||
RefreshCommand.StartingExecution()
|
||||
.StartWith(Unit.Default)
|
||||
.ObserveOn(RxApp.TaskpoolScheduler)
|
||||
.Select(_ =>
|
||||
{
|
||||
return ModlistMetadata.LoadFromGithub()
|
||||
.AsObservableChangeSet(x => x.DownloadMetadata?.Hash ?? $"Fallback{missingHashFallbackCounter++}");
|
||||
})
|
||||
.Switch()
|
||||
.ObserveOnGuiThread()
|
||||
.Transform(m => new ModListMetadataVM(this, m))
|
||||
.Bind(ModLists)
|
||||
.Subscribe()
|
||||
.DisposeWith(CompositeDisposable);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reactive;
|
||||
using System.Reactive.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@ -9,133 +11,87 @@ using System.Windows;
|
||||
using System.Windows.Input;
|
||||
using Alphaleonis.Win32.Filesystem;
|
||||
using ReactiveUI;
|
||||
using ReactiveUI.Fody.Helpers;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.Downloaders;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
|
||||
namespace Wabbajack.View_Models
|
||||
namespace Wabbajack
|
||||
{
|
||||
public enum DownloadStatus
|
||||
{
|
||||
NotDownloaded,
|
||||
Downloading,
|
||||
Downloaded
|
||||
}
|
||||
public class ModListMetadataVM : ViewModel
|
||||
{
|
||||
|
||||
|
||||
public ModlistMetadata Metadata { get; }
|
||||
private ModeSelectionVM _parent;
|
||||
private ModListGalleryVM _parent;
|
||||
|
||||
public ICommand OpenWebsiteCommand { get; }
|
||||
public ICommand ExecuteCommand { get; }
|
||||
|
||||
public ModListMetadataVM(ModeSelectionVM parent, ModlistMetadata metadata)
|
||||
private readonly ObservableAsPropertyHelper<bool> _Exists;
|
||||
public bool Exists => _Exists.Value;
|
||||
|
||||
public string Location => Path.Combine(Consts.ModListDownloadFolder, Metadata.Links.MachineURL + ExtensionManager.Extension);
|
||||
|
||||
[Reactive]
|
||||
public double ProgressPercent { get; private set; }
|
||||
|
||||
public ModListMetadataVM(ModListGalleryVM parent, ModlistMetadata metadata)
|
||||
{
|
||||
_parent = parent;
|
||||
Metadata = metadata;
|
||||
Click = ReactiveCommand.Create(() => this.DoClick());
|
||||
OpenWebsiteCommand = ReactiveCommand.Create(() => Process.Start($"https://www.wabbajack.org/modlist/{Metadata.Links.MachineURL}"));
|
||||
ExecuteCommand = ReactiveCommand.CreateFromObservable<Unit, bool>((unit) =>
|
||||
Observable.Return(unit)
|
||||
.WithLatestFrom(
|
||||
this.WhenAny(x => x.Exists),
|
||||
(_, e) => e)
|
||||
// Do any download work on background thread
|
||||
.ObserveOn(RxApp.TaskpoolScheduler)
|
||||
.SelectTask(async (exists) =>
|
||||
{
|
||||
if (!exists)
|
||||
{
|
||||
await Download();
|
||||
// Return an updated check on exists
|
||||
return File.Exists(Location);
|
||||
}
|
||||
return exists;
|
||||
})
|
||||
// Do any install page swap over on GUI thread
|
||||
.ObserveOnGuiThread()
|
||||
.Do(exists =>
|
||||
{
|
||||
if (exists)
|
||||
{
|
||||
_parent.MWVM.OpenInstaller(Path.GetFullPath(Location));
|
||||
}
|
||||
}));
|
||||
|
||||
_Exists = Observable.Interval(TimeSpan.FromSeconds(0.5))
|
||||
.Unit()
|
||||
.StartWith(Unit.Default)
|
||||
.Select(_ => File.Exists(Location))
|
||||
.ToProperty(this, nameof(Exists));
|
||||
}
|
||||
|
||||
private void DoClick()
|
||||
private Task Download()
|
||||
{
|
||||
switch (Status)
|
||||
{
|
||||
case DownloadStatus.NotDownloaded:
|
||||
Download();
|
||||
break;
|
||||
case DownloadStatus.Downloading:
|
||||
break;
|
||||
case DownloadStatus.Downloaded:
|
||||
Install();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
private void Install()
|
||||
{
|
||||
_parent.OpenInstaller(Location);
|
||||
}
|
||||
|
||||
private void Download()
|
||||
{
|
||||
IsDownloading = true;
|
||||
|
||||
ProgressPercent = 0d;
|
||||
var queue = new WorkQueue(1);
|
||||
DownloadStatusText = "Downloading";
|
||||
var sub = queue.Status.Select(i => i.ProgressPercent).Subscribe(v => DownloadProgress = v);
|
||||
var sub = queue.Status.Select(i => i.ProgressPercent)
|
||||
.Subscribe(percent => ProgressPercent = percent);
|
||||
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
|
||||
queue.QueueTask(() =>
|
||||
{
|
||||
var downloader = DownloadDispatcher.ResolveArchive(Metadata.Links.Download);
|
||||
downloader.Download(new Archive{ Name = Metadata.Title, Size = Metadata.DownloadMetadata?.Size ?? 0}, Location);
|
||||
DownloadStatusText = "Hashing";
|
||||
Location.FileHashCached();
|
||||
IsDownloading = false;
|
||||
sub.Dispose();
|
||||
tcs.SetResult(true);
|
||||
});
|
||||
|
||||
return tcs.Task;
|
||||
}
|
||||
|
||||
private void UpdateDownloadStatuses()
|
||||
{
|
||||
this.RaisePropertyChanged("Status");
|
||||
this.RaisePropertyChanged("DownloadButtonVisibility");
|
||||
this.RaisePropertyChanged("DownloadProgressVisibility");
|
||||
this.RaisePropertyChanged("InstallButtonVisibility");
|
||||
}
|
||||
|
||||
public string Location => Path.Combine(Consts.ModListDownloadFolder, Metadata.Links.MachineURL + ExtensionManager.Extension);
|
||||
|
||||
private bool _isDownloading = false;
|
||||
public bool IsDownloading
|
||||
{
|
||||
get => _isDownloading;
|
||||
private set
|
||||
{
|
||||
RaiseAndSetIfChanged(ref _isDownloading, value);
|
||||
UpdateDownloadStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private float _downloadProgress;
|
||||
|
||||
public float DownloadProgress
|
||||
{
|
||||
get => _downloadProgress;
|
||||
private set
|
||||
{
|
||||
RaiseAndSetIfChanged(ref _downloadProgress, value);
|
||||
}
|
||||
}
|
||||
|
||||
private string _downloadStatusText;
|
||||
public string DownloadStatusText
|
||||
{
|
||||
get => _downloadStatusText;
|
||||
private set
|
||||
{
|
||||
RaiseAndSetIfChanged(ref _downloadStatusText, value);
|
||||
}
|
||||
}
|
||||
|
||||
public DownloadStatus Status
|
||||
{
|
||||
|
||||
get
|
||||
{
|
||||
if (IsDownloading) return DownloadStatus.Downloading;
|
||||
if (!File.Exists(Location)) return DownloadStatus.NotDownloaded;
|
||||
return Metadata.NeedsDownload(Location) ? DownloadStatus.NotDownloaded : DownloadStatus.Downloaded;
|
||||
}
|
||||
}
|
||||
|
||||
public Visibility DownloadButtonVisibility => Status == DownloadStatus.NotDownloaded ? Visibility.Visible : Visibility.Collapsed;
|
||||
public Visibility DownloadProgressVisibility => Status == DownloadStatus.Downloading ? Visibility.Visible : Visibility.Collapsed;
|
||||
public Visibility InstallButtonVisibility => Status == DownloadStatus.Downloaded ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
public ICommand Click { get; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,23 +1,18 @@
|
||||
using Alphaleonis.Win32.Filesystem;
|
||||
using ReactiveUI;
|
||||
using ReactiveUI.Fody.Helpers;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Reactive.Linq;
|
||||
using System.Windows.Input;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
using Wabbajack.View_Models;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
public class ModeSelectionVM : ViewModel
|
||||
{
|
||||
public ObservableCollection<ModListMetadataVM> ModLists { get; }
|
||||
|
||||
private MainWindowVM _mainVM;
|
||||
public ICommand DownloadAndInstallCommand { get; }
|
||||
public ICommand BrowseCommand { get; }
|
||||
public ICommand InstallCommand { get; }
|
||||
public ICommand CompileCommand { get; }
|
||||
|
||||
@ -25,8 +20,6 @@ namespace Wabbajack
|
||||
{
|
||||
_mainVM = mainVM;
|
||||
|
||||
ModLists = new ObservableCollection<ModListMetadataVM>(ModlistMetadata.LoadFromGithub().Select(m => new ModListMetadataVM(this, m)));
|
||||
|
||||
InstallCommand = ReactiveCommand.Create(
|
||||
execute: () =>
|
||||
{
|
||||
@ -36,23 +29,11 @@ namespace Wabbajack
|
||||
{
|
||||
path = UIUtils.OpenFileDialog($"*{ExtensionManager.Extension}|*{ExtensionManager.Extension}");
|
||||
}
|
||||
OpenInstaller(path);
|
||||
_mainVM.OpenInstaller(path);
|
||||
});
|
||||
|
||||
CompileCommand = ReactiveCommand.Create(
|
||||
execute: () =>
|
||||
{
|
||||
mainVM.ActivePane = mainVM.Compiler.Value;
|
||||
});
|
||||
}
|
||||
|
||||
internal void OpenInstaller(string path)
|
||||
{
|
||||
if (path == null) return;
|
||||
var installer = _mainVM.Installer.Value;
|
||||
_mainVM.Settings.Installer.LastInstalledListLocation = path;
|
||||
_mainVM.ActivePane = installer;
|
||||
installer.ModListPath.TargetPath = path;
|
||||
CompileCommand = ReactiveCommand.Create(() => mainVM.ActivePane = mainVM.Compiler.Value);
|
||||
BrowseCommand = ReactiveCommand.Create(() => mainVM.ActivePane = mainVM.Gallery.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@
|
||||
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True" />
|
||||
</MultiDataTrigger.Conditions>
|
||||
<MultiDataTrigger.Setters>
|
||||
<Setter Property="Foreground" Value="#00ffe7" />
|
||||
<Setter Property="Foreground" Value="{StaticResource IntenseSecondaryBrush}" />
|
||||
</MultiDataTrigger.Setters>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
@ -65,11 +65,9 @@
|
||||
</icon:PackIconMaterial>
|
||||
<Button.Style>
|
||||
<Style BasedOn="{StaticResource CircleButtonStyle}" TargetType="Button">
|
||||
<Setter Property="Background" Value="#333333" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True">
|
||||
<Setter Property="BorderBrush" Value="{StaticResource SecondaryBrush}" />
|
||||
<Setter Property="Background" Value="#222222" />
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<DropShadowEffect
|
||||
|
@ -1,19 +0,0 @@
|
||||
<UserControl
|
||||
x:Class="Wabbajack.BorderFadeDownView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="5"
|
||||
mc:Ignorable="d">
|
||||
<Rectangle>
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0" Color="#191919" />
|
||||
<GradientStop Offset="0.4" Color="#00191919" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
</UserControl>
|
@ -1,15 +0,0 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for BorderFadeDownView.xaml
|
||||
/// </summary>
|
||||
public partial class BorderFadeDownView : UserControl
|
||||
{
|
||||
public BorderFadeDownView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
29
Wabbajack/Views/Common/HeatedBackgroundView.xaml
Normal file
29
Wabbajack/Views/Common/HeatedBackgroundView.xaml
Normal file
@ -0,0 +1,29 @@
|
||||
<UserControl
|
||||
x:Class="Wabbajack.HeatedBackgroundView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Rectangle>
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0" Color="#191919" />
|
||||
<GradientStop Offset="0.4" Color="#00191919" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Rectangle Opacity="{Binding PercentCompleted, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0.2" Color="{StaticResource PrimaryVariant}" />
|
||||
<GradientStop Offset="1" Color="{StaticResource WindowBackgroundColor}" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
</Grid>
|
||||
</UserControl>
|
36
Wabbajack/Views/Common/HeatedBackgroundView.xaml.cs
Normal file
36
Wabbajack/Views/Common/HeatedBackgroundView.xaml.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for HeatedBackgroundView.xaml
|
||||
/// </summary>
|
||||
public partial class HeatedBackgroundView : UserControl
|
||||
{
|
||||
public double PercentCompleted
|
||||
{
|
||||
get => (double)GetValue(PercentCompletedProperty);
|
||||
set => SetValue(PercentCompletedProperty, value);
|
||||
}
|
||||
public static readonly DependencyProperty PercentCompletedProperty = DependencyProperty.Register(nameof(PercentCompleted), typeof(double), typeof(HeatedBackgroundView),
|
||||
new FrameworkPropertyMetadata(default(double)));
|
||||
|
||||
public HeatedBackgroundView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
@ -4,21 +4,27 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="250"
|
||||
d:DesignWidth="800"
|
||||
BorderThickness="0"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="4" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="500" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle
|
||||
Grid.Column="0"
|
||||
Fill="{StaticResource HeatedBorderBrush}"
|
||||
Opacity="{Binding ProgressPercent, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
<ListBox
|
||||
Grid.Column="0"
|
||||
Margin="0,0,2,0"
|
||||
local:AutoScrollBehavior.ScrollOnNewItem="True"
|
||||
BorderBrush="Transparent"
|
||||
BorderThickness="1"
|
||||
ItemsSource="{Binding Log}"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
|
||||
<ListBox.ItemTemplate>
|
||||
@ -27,9 +33,15 @@
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
<Rectangle
|
||||
Grid.Column="2"
|
||||
Fill="{StaticResource HeatedBorderBrush}"
|
||||
Opacity="{Binding ProgressPercent, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
<ListBox
|
||||
Grid.Column="2"
|
||||
HorizontalAlignment="Stretch"
|
||||
BorderBrush="Transparent"
|
||||
BorderThickness="1"
|
||||
ItemsSource="{Binding StatusList}">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
@ -7,6 +8,14 @@ namespace Wabbajack
|
||||
/// </summary>
|
||||
public partial class LogCpuView : UserControl
|
||||
{
|
||||
public double ProgressPercent
|
||||
{
|
||||
get => (double)GetValue(ProgressPercentProperty);
|
||||
set => SetValue(ProgressPercentProperty, value);
|
||||
}
|
||||
public static readonly DependencyProperty ProgressPercentProperty = DependencyProperty.Register(nameof(ProgressPercent), typeof(double), typeof(LogCpuView),
|
||||
new FrameworkPropertyMetadata(default(double)));
|
||||
|
||||
public LogCpuView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -26,7 +26,7 @@
|
||||
Background="{StaticResource SecondaryBrush}"
|
||||
CornerRadius="12"
|
||||
Opacity="0.3"
|
||||
Visibility="{Binding IsMouseOver, Converter={StaticResource bool2VisibilityHiddenConverter}, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
Visibility="{Binding IsChecked, Converter={StaticResource bool2VisibilityHiddenConverter}, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<Border.Effect>
|
||||
<BlurEffect Radius="10" />
|
||||
</Border.Effect>
|
||||
@ -35,27 +35,31 @@
|
||||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Click="Button_Click">
|
||||
<Image Source="{Binding Image, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<Image.Style>
|
||||
<Style TargetType="Image">
|
||||
<Style.Triggers>
|
||||
<MultiDataTrigger>
|
||||
<MultiDataTrigger.Conditions>
|
||||
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False" />
|
||||
<Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False" />
|
||||
</MultiDataTrigger.Conditions>
|
||||
<MultiDataTrigger.Setters>
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="2" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</MultiDataTrigger.Setters>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Image.Style>
|
||||
</Image>
|
||||
<Button.Template>
|
||||
<ControlTemplate>
|
||||
<Image Source="{Binding Image, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<Image.Style>
|
||||
<Style TargetType="Image">
|
||||
<Style.Triggers>
|
||||
<MultiDataTrigger>
|
||||
<MultiDataTrigger.Conditions>
|
||||
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False" />
|
||||
<Condition Binding="{Binding IsChecked, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="False" />
|
||||
</MultiDataTrigger.Conditions>
|
||||
<MultiDataTrigger.Setters>
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="2" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</MultiDataTrigger.Setters>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Image.Style>
|
||||
</Image>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
</Button>
|
||||
<Border
|
||||
BorderBrush="{StaticResource SecondaryBrush}"
|
||||
|
@ -1,4 +1,4 @@
|
||||
<UserControl
|
||||
<local:UserControlRx
|
||||
x:Class="Wabbajack.TopProgressView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
@ -8,6 +8,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
BorderThickness="0"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@ -18,7 +19,6 @@
|
||||
<Rectangle
|
||||
Grid.Row="2"
|
||||
Height="25"
|
||||
Margin="6,0"
|
||||
VerticalAlignment="Top"
|
||||
IsHitTestVisible="False"
|
||||
Visibility="{Binding OverhangShadow, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource bool2VisibilityConverter}}">
|
||||
@ -28,6 +28,15 @@
|
||||
<GradientStop Offset="1" Color="#00000000" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
<Rectangle.Style>
|
||||
<Style TargetType="Rectangle">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ShadowMargin, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="True">
|
||||
<Setter Property="Margin" Value="6,0" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Rectangle.Style>
|
||||
</Rectangle>
|
||||
<Rectangle Grid.Row="1" Fill="{StaticResource BackgroundBrush}" />
|
||||
<mahapps:MetroProgressBar
|
||||
@ -46,22 +55,6 @@
|
||||
<BlurEffect Radius="25" />
|
||||
</mahapps:MetroProgressBar.Effect>
|
||||
</mahapps:MetroProgressBar>
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="BottomProgressBarBrightGlow"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Height="6"
|
||||
Margin="-4"
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
Foreground="{StaticResource PrimaryBrush}"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<mahapps:MetroProgressBar.Effect>
|
||||
<BlurEffect Radius="20" />
|
||||
</mahapps:MetroProgressBar.Effect>
|
||||
</mahapps:MetroProgressBar>
|
||||
<Grid x:Name="TopBarGrid" Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@ -69,22 +62,36 @@
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<mahapps:MetroProgressBar
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Background="{StaticResource WindowBackgroundBrush}"
|
||||
BorderThickness="0"
|
||||
Foreground="Transparent"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="LargeProgressBar"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||
Maximum="1"
|
||||
Opacity="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
Opacity="{Binding ProgressOpacityPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<mahapps:MetroProgressBar.Foreground>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
|
||||
<GradientStop Offset="0" Color="{StaticResource DarkPrimaryVariant}" />
|
||||
<GradientStop Offset="0.5" Color="{StaticResource PrimaryVariant}" />
|
||||
</LinearGradientBrush>
|
||||
</mahapps:MetroProgressBar.Foreground>
|
||||
</mahapps:MetroProgressBar>
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="LargeProgressBarTopGlow"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<mahapps:MetroProgressBar.Foreground>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0" Color="#33000000" />
|
||||
<GradientStop Offset="0.3" Color="#00000000" />
|
||||
</LinearGradientBrush>
|
||||
</mahapps:MetroProgressBar.Foreground>
|
||||
</mahapps:MetroProgressBar>
|
||||
<TextBlock
|
||||
Grid.Column="0"
|
||||
Width="130"
|
||||
@ -92,8 +99,14 @@
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="Lucida Sans"
|
||||
FontWeight="Black"
|
||||
Foreground="{StaticResource ComplementaryBrush}"
|
||||
Text="{Binding StatePrefixTitle, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
|
||||
TextAlignment="Right" />
|
||||
TextAlignment="Right"
|
||||
Visibility="{Binding StatePrefixTitle, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource IsNotNullVisibilityConverter}}" />
|
||||
<Rectangle
|
||||
Grid.Column="0"
|
||||
Width="50"
|
||||
Visibility="{Binding StatePrefixTitle, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource IsNotNullVisibilityConverter}, ConverterParameter=False}" />
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
Margin="15,0,0,0"
|
||||
@ -104,6 +117,36 @@
|
||||
Text="{Binding Title, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
<ContentControl Grid.Column="2" />
|
||||
</Grid>
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="BottomProgressBarBrightGlow1"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Height="5"
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<mahapps:MetroProgressBar.Effect>
|
||||
<BlurEffect Radius="8" />
|
||||
</mahapps:MetroProgressBar.Effect>
|
||||
</mahapps:MetroProgressBar>
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="BottomProgressBarBrightGlow2"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Height="5"
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
|
||||
<mahapps:MetroProgressBar.Effect>
|
||||
<BlurEffect Radius="15" />
|
||||
</mahapps:MetroProgressBar.Effect>
|
||||
</mahapps:MetroProgressBar>
|
||||
<mahapps:MetroProgressBar
|
||||
x:Name="BottomProgressBar"
|
||||
Grid.Row="1"
|
||||
@ -112,7 +155,7 @@
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
Foreground="{StaticResource PrimaryBrush}"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Maximum="1"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
|
||||
<mahapps:MetroProgressBar
|
||||
@ -135,4 +178,4 @@
|
||||
</mahapps:MetroProgressBar.Foreground>
|
||||
</mahapps:MetroProgressBar>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
</local:UserControlRx>
|
||||
|
@ -1,12 +1,14 @@
|
||||
using System.Windows;
|
||||
using System.Reactive.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace Wabbajack
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for TopProgressView.xaml
|
||||
/// </summary>
|
||||
public partial class TopProgressView : UserControl
|
||||
public partial class TopProgressView : UserControlRx
|
||||
{
|
||||
public double ProgressPercent
|
||||
{
|
||||
@ -14,7 +16,7 @@ namespace Wabbajack
|
||||
set => SetValue(ProgressPercentProperty, value);
|
||||
}
|
||||
public static readonly DependencyProperty ProgressPercentProperty = DependencyProperty.Register(nameof(ProgressPercent), typeof(double), typeof(TopProgressView),
|
||||
new FrameworkPropertyMetadata(default(double)));
|
||||
new FrameworkPropertyMetadata(default(double), WireNotifyPropertyChanged));
|
||||
|
||||
public string Title
|
||||
{
|
||||
@ -40,9 +42,26 @@ namespace Wabbajack
|
||||
public static readonly DependencyProperty OverhangShadowProperty = DependencyProperty.Register(nameof(OverhangShadow), typeof(bool), typeof(TopProgressView),
|
||||
new FrameworkPropertyMetadata(true));
|
||||
|
||||
public bool ShadowMargin
|
||||
{
|
||||
get => (bool)GetValue(ShadowMarginProperty);
|
||||
set => SetValue(ShadowMarginProperty, value);
|
||||
}
|
||||
public static readonly DependencyProperty ShadowMarginProperty = DependencyProperty.Register(nameof(ShadowMargin), typeof(bool), typeof(TopProgressView),
|
||||
new FrameworkPropertyMetadata(true));
|
||||
|
||||
private readonly ObservableAsPropertyHelper<double> _ProgressOpacityPercent;
|
||||
public double ProgressOpacityPercent => _ProgressOpacityPercent.Value;
|
||||
|
||||
public TopProgressView()
|
||||
{
|
||||
InitializeComponent();
|
||||
_ProgressOpacityPercent = this.WhenAny(x => x.ProgressPercent)
|
||||
.Select(x =>
|
||||
{
|
||||
return 0.3 + x * 0.7;
|
||||
})
|
||||
.ToProperty(this, nameof(ProgressOpacityPercent));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,41 +14,59 @@
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="45" />
|
||||
<RowDefinition Height="47" />
|
||||
<RowDefinition Height="4*" />
|
||||
<RowDefinition Height="*" MinHeight="150" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="5*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<local:BorderFadeDownView
|
||||
<local:HeatedBackgroundView
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="3"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="5"
|
||||
PercentCompleted="{Binding PercentCompleted}" />
|
||||
<Border
|
||||
x:Name="ModlistDetailsBackground"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="0" />
|
||||
<local:BorderFadeDownView
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="1,1,5,0"
|
||||
Background="{StaticResource WindowBackgroundBrush}"
|
||||
BorderThickness="0,0,1,1">
|
||||
<Border.BorderBrush>
|
||||
<LinearGradientBrush StartPoint="1,0" EndPoint="0,0">
|
||||
<GradientStop Offset="0.5" Color="{StaticResource DarkBackgroundColor}" />
|
||||
<GradientStop Offset="1" Color="{StaticResource WindowBackgroundColor}" />
|
||||
</LinearGradientBrush>
|
||||
</Border.BorderBrush>
|
||||
</Border>
|
||||
<Border
|
||||
x:Name="ModlistDetailsHeatBorder"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
Grid.Column="4" />
|
||||
<local:DetailImageView
|
||||
Title="{Binding CurrentModlistSettings.ModListName}"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="1,1,5,0"
|
||||
BorderBrush="{StaticResource HeatedBorderBrush}"
|
||||
BorderThickness="1"
|
||||
Opacity="{Binding PercentCompleted}" />
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="3"
|
||||
Author="{Binding CurrentModlistSettings.AuthorText}"
|
||||
BorderThickness="0"
|
||||
Description="{Binding CurrentModlistSettings.Description}"
|
||||
Image="{Binding Image}" />
|
||||
<Rectangle
|
||||
x:Name="ControlVerticalThinSeparator"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Width="1"
|
||||
HorizontalAlignment="Center"
|
||||
Fill="{StaticResource DarkBackgroundBrush}"
|
||||
SnapsToDevicePixels="True" />
|
||||
BorderBrush="{StaticResource BorderInterestBrush}"
|
||||
BorderThickness="1,0,1,1">
|
||||
<local:DetailImageView
|
||||
Title="{Binding CurrentModlistSettings.ModListName}"
|
||||
Author="{Binding CurrentModlistSettings.AuthorText}"
|
||||
BorderThickness="0"
|
||||
Description="{Binding CurrentModlistSettings.Description}"
|
||||
Image="{Binding Image}" />
|
||||
</Border>
|
||||
<!-- Comes after image area so shadow can overlay -->
|
||||
<local:TopProgressView
|
||||
Title="{Binding CurrentModlistSettings.ModListName, Mode=OneWay}"
|
||||
@ -69,9 +87,8 @@
|
||||
Margin="12,5,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Background="{StaticResource ButtonBackground}"
|
||||
Command="{Binding BackCommand}"
|
||||
Style="{StaticResource CircleButtonStyle}"
|
||||
Style="{StaticResource IconCircleButtonStyle}"
|
||||
ToolTip="Back to main menu">
|
||||
<icon:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" />
|
||||
</Button>
|
||||
@ -140,31 +157,18 @@
|
||||
ToolTip="Path to a readme file." />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
<Rectangle
|
||||
x:Name="ControlTopThinSeparator"
|
||||
<Border
|
||||
x:Name="BottomBarBackground"
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="5"
|
||||
Height="1"
|
||||
Margin="25,0"
|
||||
VerticalAlignment="Top"
|
||||
Fill="{StaticResource DarkBackgroundBrush}"
|
||||
SnapsToDevicePixels="True" />
|
||||
Margin="5"
|
||||
Background="{StaticResource WindowBackgroundBrush}" />
|
||||
<Grid
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="5"
|
||||
MaxWidth="1000">
|
||||
<Border
|
||||
x:Name="ConfigurationBackgroundHaze"
|
||||
Height="120"
|
||||
Background="{StaticResource PrimaryVariantBrush}"
|
||||
CornerRadius="50"
|
||||
Opacity="0.10">
|
||||
<Border.Effect>
|
||||
<BlurEffect Radius="45" />
|
||||
</Border.Effect>
|
||||
</Border>
|
||||
<Grid
|
||||
Margin="35,0,35,0"
|
||||
VerticalAlignment="Center"
|
||||
@ -236,7 +240,7 @@
|
||||
Grid.ColumnSpan="5"
|
||||
Margin="5"
|
||||
Visibility="{Binding Compiling, Converter={StaticResource bool2VisibilityConverter}, FallbackValue=Hidden}">
|
||||
<local:LogCpuView />
|
||||
<local:LogCpuView ProgressPercent="{Binding PercentCompleted}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@ -5,7 +5,6 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:icon="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
d:DataContext="{d:DesignInstance local:InstallerVM}"
|
||||
d:DesignHeight="500"
|
||||
@ -23,7 +22,7 @@
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="45" />
|
||||
<RowDefinition Height="47" />
|
||||
<RowDefinition Height="4*" />
|
||||
<RowDefinition Height="*" MinHeight="150" />
|
||||
</Grid.RowDefinitions>
|
||||
@ -38,11 +37,15 @@
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<local:HeatedBackgroundView
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="2"
|
||||
PercentCompleted="{Binding PercentCompleted}" />
|
||||
<Grid
|
||||
x:Name="Slideshow"
|
||||
Grid.Row="1"
|
||||
Margin="5,0,5,5">
|
||||
<Border BorderBrush="#171717" BorderThickness="1,0,1,1">
|
||||
<Border BorderBrush="{StaticResource BorderInterestBrush}" BorderThickness="1,0,1,1">
|
||||
<local:DetailImageView
|
||||
Title="{Binding TitleText, Mode=OneWay}"
|
||||
Author="{Binding AuthorText, Mode=OneWay}"
|
||||
@ -225,9 +228,8 @@
|
||||
Margin="7,5,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Background="{StaticResource ButtonBackground}"
|
||||
Command="{Binding BackCommand}"
|
||||
Style="{StaticResource CircleButtonStyle}"
|
||||
Style="{StaticResource IconCircleButtonStyle}"
|
||||
ToolTip="Back to main menu">
|
||||
<icon:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" />
|
||||
</Button>
|
||||
@ -274,16 +276,6 @@
|
||||
x:Name="InstallationConfigurationView"
|
||||
Grid.Column="2"
|
||||
Background="{StaticResource WindowBackgroundBrush}">
|
||||
<Border
|
||||
x:Name="ConfigurationBackgroundHaze"
|
||||
Height="120"
|
||||
Background="{StaticResource PrimaryVariantBrush}"
|
||||
CornerRadius="50"
|
||||
Opacity="0.10">
|
||||
<Border.Effect>
|
||||
<BlurEffect Radius="45" />
|
||||
</Border.Effect>
|
||||
</Border>
|
||||
<ScrollViewer
|
||||
Margin="5"
|
||||
Background="Transparent"
|
||||
@ -359,21 +351,12 @@
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
<Rectangle
|
||||
x:Name="ControlTopThinSeparator"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="3"
|
||||
Height="1"
|
||||
Margin="25,0"
|
||||
VerticalAlignment="Top"
|
||||
Fill="{StaticResource DarkBackgroundBrush}"
|
||||
SnapsToDevicePixels="True" />
|
||||
</Grid>
|
||||
<Grid
|
||||
Grid.Row="2"
|
||||
Margin="5,0,5,5"
|
||||
Visibility="{Binding InstallingMode, Converter={StaticResource bool2VisibilityConverter}, FallbackValue=Hidden}">
|
||||
<local:LogCpuView />
|
||||
<local:LogCpuView ProgressPercent="{Binding PercentCompleted, Mode=OneWay}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@ -1,9 +1,10 @@
|
||||
<Window
|
||||
<mahapps:MetroWindow
|
||||
x:Class="Wabbajack.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
Title="Wabbajack"
|
||||
Width="1280"
|
||||
@ -11,10 +12,10 @@
|
||||
MinWidth="850"
|
||||
MinHeight="650"
|
||||
Closing="Window_Closing"
|
||||
Icon="../Resources/Icons/wabbajack.ico"
|
||||
RenderOptions.BitmapScalingMode="HighQuality"
|
||||
ResizeMode="CanResize"
|
||||
Style="{StaticResource {x:Type Window}}"
|
||||
TitlebarHeight="25"
|
||||
UseLayoutRounding="True"
|
||||
WindowStyle="ToolWindow"
|
||||
mc:Ignorable="d">
|
||||
@ -29,6 +30,9 @@
|
||||
<DataTemplate DataType="{x:Type local:ModeSelectionVM}">
|
||||
<local:ModeSelectionView />
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type local:ModListGalleryVM}">
|
||||
<local:ModListGalleryView />
|
||||
</DataTemplate>
|
||||
</ContentPresenter.Resources>
|
||||
</ContentPresenter>
|
||||
</Window>
|
||||
</mahapps:MetroWindow>
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
using MahApps.Metro.Controls;
|
||||
using Wabbajack.Common;
|
||||
using Application = System.Windows.Application;
|
||||
|
||||
@ -9,7 +10,7 @@ namespace Wabbajack
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
public partial class MainWindow : MetroWindow
|
||||
{
|
||||
private MainWindowVM _mwvm;
|
||||
private MainSettings _settings;
|
||||
@ -17,9 +18,17 @@ namespace Wabbajack
|
||||
public MainWindow()
|
||||
{
|
||||
_settings = MainSettings.LoadSettings();
|
||||
Left = _settings.PosX;
|
||||
Top = _settings.PosY;
|
||||
_mwvm = new MainWindowVM(this, _settings);
|
||||
DataContext = _mwvm;
|
||||
Utils.Log($"Wabbajack Build - {ThisAssembly.Git.Sha}");
|
||||
Wabbajack.Common.Utils.Log($"Wabbajack Build - {ThisAssembly.Git.Sha}");
|
||||
|
||||
this.Loaded += (sender, e) =>
|
||||
{
|
||||
Width = _settings.Width;
|
||||
Height = _settings.Height;
|
||||
};
|
||||
}
|
||||
|
||||
internal bool ExitWhenClosing = true;
|
||||
@ -27,6 +36,10 @@ namespace Wabbajack
|
||||
private void Window_Closing(object sender, CancelEventArgs e)
|
||||
{
|
||||
_mwvm.Dispose();
|
||||
_settings.PosX = Left;
|
||||
_settings.PosY = Top;
|
||||
_settings.Width = Width;
|
||||
_settings.Height = Height;
|
||||
MainSettings.SaveSettings(_settings);
|
||||
if (ExitWhenClosing)
|
||||
{
|
||||
|
@ -1,116 +1,325 @@
|
||||
<UserControl x:Class="Wabbajack.Views.ModListGalleryView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mahapps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
xmlns:system="clr-namespace:System;assembly=mscorlib"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<UserControl
|
||||
x:Class="Wabbajack.ModListGalleryView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
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:system="clr-namespace:System;assembly=mscorlib"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<Color x:Key="TextBackgroundFill">#92000000</Color>
|
||||
<SolidColorBrush x:Key="TextBackgroundFillBrush" Color="{StaticResource TextBackgroundFill}" />
|
||||
<Style x:Key="TileStyle" TargetType="{x:Type mahapps:Tile}">
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
</Style>
|
||||
<Style x:Key="BackgroundBlurStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Background" Value="{StaticResource TextBackgroundFillBrush}"/>
|
||||
<Color x:Key="TextBackgroundHoverFill">#DF000000</Color>
|
||||
<Style x:Key="BackgroundBlurStyle" TargetType="TextBlock">
|
||||
<Setter Property="Background" Value="{StaticResource TextBackgroundFillBrush}" />
|
||||
<Setter Property="Foreground" Value="Transparent" />
|
||||
<Setter Property="Visibility" Value="Visible" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)"
|
||||
To="{StaticResource TextBackgroundHoverFill}"
|
||||
Duration="0:0:0.06" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)"
|
||||
To="{StaticResource TextBackgroundFill}"
|
||||
Duration="0:0:0.06" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Disabled" Background="{x:Null}">
|
||||
<ScrollViewer.Resources>
|
||||
<system:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">8</system:Double>
|
||||
</ScrollViewer.Resources>
|
||||
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left" Margin="8,0,8,0">
|
||||
<!--<Image Name="Banner"/>
|
||||
<Button Width="60" HorizontalAlignment="Left" Command="{Binding BackCommand}"
|
||||
Margin="4,0,0,8">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<iconPacks:PackIconMaterial Width="20" Height="20" Kind="ArrowLeft" />
|
||||
<TextBlock FontSize="15" Text="Back" Margin="4,0,0,0"/>
|
||||
</StackPanel>
|
||||
</Button>-->
|
||||
<WrapPanel HorizontalAlignment="Center">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="47" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Rectangle
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="3"
|
||||
Margin="6,0">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0" Color="#123700B3" />
|
||||
<GradientStop Offset="1" Color="#00000000" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
BorderBrush="Transparent"
|
||||
BorderThickness="1,0,1,1">
|
||||
<ScrollViewer Background="Transparent" VerticalScrollBarVisibility="Auto">
|
||||
<ItemsControl
|
||||
Name="ItemsControlElement"
|
||||
Visibility="{Binding ItemsControlVisibility}"
|
||||
ItemsSource="{Binding ModLists}"
|
||||
Margin="0,10,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top">
|
||||
ItemsSource="{Binding ModLists}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<WrapPanel/>
|
||||
<WrapPanel />
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<mahapps:Tile
|
||||
Style="{StaticResource TileStyle}"
|
||||
Click="Tile_OnClick"
|
||||
Width="590"
|
||||
Height="Auto">
|
||||
<Grid
|
||||
Width="590"
|
||||
Background="#222222">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="10*"/>
|
||||
<RowDefinition Height="3*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Width="590"
|
||||
Height="Auto">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Viewbox Grid.Row="0" Stretch="Uniform">
|
||||
<Image Source="{Binding Links.ImageUri}"/>
|
||||
</Viewbox>
|
||||
<TextBlock FontSize="30" TextWrapping="Wrap" Text="{Binding Title}"
|
||||
Style="{StaticResource BackgroundBlurStyle}" Padding="4,0,4,0"
|
||||
Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Bottom"
|
||||
FontWeight="Bold"/>
|
||||
</Grid>
|
||||
<Grid Grid.Row="1" Margin="4,0,2,4">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="20"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock FontSize="15" FontStyle="Italic" Grid.Row="0" TextWrapping="Wrap" Text="{Binding Game}"/>
|
||||
<TextBlock FontSize="15" Grid.Row="1" TextWrapping="Wrap" Text="{Binding Description}"/>
|
||||
</Grid>
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,0,4,4" HorizontalAlignment="Right">
|
||||
<Button Click="Info_OnClick" Margin="0,0,4,0">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<!--<TextBlock FontSize="13" TextWrapping="Wrap" Text="More Info" Margin="4,0,4,0"/>-->
|
||||
<iconPacks:PackIconMaterial Width="16" Height="16" Kind="InformationOutline" Margin="0,0,4,0"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Click="Download_OnClick">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<!--<TextBlock FontSize="13" TextWrapping="Wrap" Text="Download" Margin="4,0,4,0"/>-->
|
||||
<iconPacks:PackIconMaterial Width="16" Height="16" Kind="Download" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</mahapps:Tile>
|
||||
</DataTemplate>
|
||||
<DataTemplate>
|
||||
<Border
|
||||
x:Name="ModListTile"
|
||||
Margin="10"
|
||||
Background="Transparent"
|
||||
BorderThickness="1">
|
||||
<Border.Effect>
|
||||
<DropShadowEffect
|
||||
BlurRadius="25"
|
||||
Opacity="0.5"
|
||||
ShadowDepth="5" />
|
||||
</Border.Effect>
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<Setter Property="BorderBrush" Value="{StaticResource ButtonBorder}" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, ElementName=ModListTile}" Value="True">
|
||||
<Setter Property="BorderBrush" Value="{StaticResource BorderInterestBrush}" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Border.Style>
|
||||
<Grid
|
||||
Width="570"
|
||||
Height="440"
|
||||
Background="{StaticResource DarkBackgroundBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
BorderBrush="{StaticResource ButtonNormalBorder}"
|
||||
BorderThickness="0,0,0,1">
|
||||
<Grid ClipToBounds="True">
|
||||
<Viewbox
|
||||
Height="340"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Stretch="UniformToFill">
|
||||
<Image Source="{Binding Metadata.Links.ImageUri}" />
|
||||
</Viewbox>
|
||||
<Ellipse
|
||||
Height="120"
|
||||
Margin="-40,0,-40,-60"
|
||||
VerticalAlignment="Bottom"
|
||||
Fill="Black"
|
||||
Opacity="0.5">
|
||||
<Ellipse.Effect>
|
||||
<BlurEffect Radius="55" />
|
||||
</Ellipse.Effect>
|
||||
<Ellipse.Style>
|
||||
<Style TargetType="Ellipse">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0.75"
|
||||
Duration="0:0:0.08" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0.5"
|
||||
Duration="0:0:0.08" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Ellipse.Style>
|
||||
</Ellipse>
|
||||
</Grid>
|
||||
</Border>
|
||||
<TextBlock
|
||||
x:Name="DescriptionTextShadow"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
FontFamily="Lucida Sans"
|
||||
FontSize="30"
|
||||
FontWeight="Bold"
|
||||
Style="{StaticResource BackgroundBlurStyle}"
|
||||
Text="{Binding Metadata.Title}"
|
||||
TextWrapping="Wrap">
|
||||
<TextBlock.Effect>
|
||||
<BlurEffect Radius="25" />
|
||||
</TextBlock.Effect>
|
||||
</TextBlock>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
FontFamily="Lucida Sans"
|
||||
FontSize="30"
|
||||
FontWeight="Bold"
|
||||
Text="{Binding Metadata.Title}"
|
||||
TextWrapping="Wrap">
|
||||
<TextBlock.Effect>
|
||||
<DropShadowEffect />
|
||||
</TextBlock.Effect>
|
||||
</TextBlock>
|
||||
<mahapps:MetroProgressBar
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Height="3"
|
||||
VerticalAlignment="Bottom"
|
||||
Background="{StaticResource BackgroundBrush}"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Maximum="1"
|
||||
Visibility="{Binding IsEnabled, ElementName=ExecuteButton, Converter={StaticResource bool2VisibilityHiddenConverter}, ConverterParameter=False}"
|
||||
Value="{Binding ProgressPercent, Mode=OneWay}" />
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="8,5"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{Binding Metadata.Description}"
|
||||
TextWrapping="Wrap" />
|
||||
<Grid Grid.Row="1" Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.Resources>
|
||||
<Style
|
||||
x:Key="ModlistButtonStyle"
|
||||
BasedOn="{StaticResource IconCircleButtonStyle}"
|
||||
TargetType="Button">
|
||||
<Style.Triggers>
|
||||
<MultiDataTrigger>
|
||||
<MultiDataTrigger.Conditions>
|
||||
<Condition Binding="{Binding IsMouseOver, ElementName=ModListTile}" Value="True" />
|
||||
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" />
|
||||
</MultiDataTrigger.Conditions>
|
||||
<MultiDataTrigger.Setters>
|
||||
<Setter Property="Foreground" Value="{StaticResource IntenseComplementaryBrush}" />
|
||||
</MultiDataTrigger.Setters>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
<Button
|
||||
Grid.Row="0"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Margin="5,0"
|
||||
VerticalAlignment="Bottom"
|
||||
Command="{Binding OpenWebsiteCommand}"
|
||||
Style="{StaticResource ModlistButtonStyle}">
|
||||
<iconPacks:Material
|
||||
Width="20"
|
||||
Height="20"
|
||||
Kind="Web" />
|
||||
</Button>
|
||||
<Button
|
||||
x:Name="ExecuteButton"
|
||||
Grid.Row="1"
|
||||
Width="40"
|
||||
Height="40"
|
||||
Margin="5,0"
|
||||
VerticalAlignment="Top"
|
||||
Command="{Binding ExecuteCommand}">
|
||||
<Button.Style>
|
||||
<Style BasedOn="{StaticResource ModlistButtonStyle}" TargetType="Button">
|
||||
<Setter Property="Content">
|
||||
<Setter.Value>
|
||||
<iconPacks:Material
|
||||
Width="20"
|
||||
Height="20"
|
||||
Kind="Download" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="ToolTip" Value="Download modlist" />
|
||||
<Style.Triggers>
|
||||
<MultiDataTrigger>
|
||||
<MultiDataTrigger.Conditions>
|
||||
<Condition Binding="{Binding Exists}" Value="True" />
|
||||
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="True" />
|
||||
</MultiDataTrigger.Conditions>
|
||||
<MultiDataTrigger.Setters>
|
||||
<Setter Property="Content">
|
||||
<Setter.Value>
|
||||
<iconPacks:Material
|
||||
Width="20"
|
||||
Height="20"
|
||||
Kind="Play" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="ToolTip" Value="Install modlist" />
|
||||
<Setter Property="Padding" Value="3,0,0,0" />
|
||||
</MultiDataTrigger.Setters>
|
||||
</MultiDataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</WrapPanel>
|
||||
<!--<Button Width="60" HorizontalAlignment="Left" Command="{Binding BackCommand}"
|
||||
Margin="4,0,12,0">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<iconPacks:PackIconMaterial Width="20" Height="20" Kind="ArrowLeft" />
|
||||
<TextBlock FontSize="15" Text="Back" Margin="4,0,0,0"/>
|
||||
</StackPanel>
|
||||
</Button>-->
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
<local:TopProgressView
|
||||
Title="Browsing Modlists"
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="2"
|
||||
ShadowMargin="False" />
|
||||
<Button
|
||||
x:Name="BackButton"
|
||||
Grid.Row="0"
|
||||
Width="30"
|
||||
Height="30"
|
||||
Margin="7,5,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Command="{Binding BackCommand}"
|
||||
Style="{StaticResource IconCircleButtonStyle}"
|
||||
ToolTip="Back to main menu">
|
||||
<iconPacks:PackIconMaterial Foreground="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Kind="ArrowLeft" />
|
||||
</Button>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@ -4,7 +4,7 @@ using System.Windows.Controls;
|
||||
using MahApps.Metro.Controls;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
|
||||
namespace Wabbajack.Views
|
||||
namespace Wabbajack
|
||||
{
|
||||
public partial class ModListGalleryView : UserControl
|
||||
{
|
||||
@ -12,41 +12,5 @@ namespace Wabbajack.Views
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void Info_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Button b)) return;
|
||||
if (!(b.DataContext is ModlistMetadata mm)) return;
|
||||
var link = mm.Links.MachineURL;
|
||||
Process.Start($"https://www.wabbajack.org/modlist/{link}");
|
||||
}
|
||||
|
||||
public void Download_OnClick(object sender, RoutedEventArgs routedEventArgs)
|
||||
{
|
||||
/* unsure about this since the downloader changed
|
||||
|
||||
|
||||
|
||||
if (!(sender is Button b)) return;
|
||||
if (!(b.DataContext is ModlistMetadata mm)) return;
|
||||
var link = mm.Links.Download;
|
||||
|
||||
if (!Directory.Exists(Consts.ModListDownloadFolder))
|
||||
Directory.CreateDirectory(Consts.ModListDownloadFolder);
|
||||
var dest = Path.Combine(Consts.ModListDownloadFolder, mm.Links.MachineURL + ExtensionManager.Extension);
|
||||
|
||||
var downloadWindow = new DownloadWindow(link, mm.Title, mm.,dest);
|
||||
downloadWindow.ShowDialog();*/
|
||||
}
|
||||
|
||||
private void Tile_OnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Tile t)) return;
|
||||
if (!t.IsFocused) return;
|
||||
if (!t.IsMouseOver) return;
|
||||
if (!(t.DataContext is ModlistMetadata mm)) return;
|
||||
var link = mm.Links.MachineURL;
|
||||
Process.Start($"https://www.wabbajack.org/modlist/{link}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,138 +3,507 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:icon="http://metro.mahapps.com/winfx/xaml/iconpacks"
|
||||
xmlns:local="clr-namespace:Wabbajack"
|
||||
xmlns:ms="clr-namespace:Wabbajack.View_Models"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
|
||||
d:DataContext="{d:DesignInstance local:ModeSelectionVM}"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800"
|
||||
d:DesignHeight="700"
|
||||
d:DesignWidth="1000"
|
||||
mc:Ignorable="d">
|
||||
<Grid Margin="20">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="150" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="70" />
|
||||
<RowDefinition Height="70" />
|
||||
<RowDefinition Height="3*" />
|
||||
<RowDefinition Height="1*" />
|
||||
<RowDefinition Height="15" />
|
||||
</Grid.RowDefinitions>
|
||||
<Image
|
||||
<Viewbox
|
||||
Name="Banner"
|
||||
Grid.Row="0"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="2,0,2,0"
|
||||
Source="../Resources/banner_small_dark.png"
|
||||
Stretch="Uniform" />
|
||||
<local:LinksView
|
||||
Grid.Row="0"
|
||||
Height="40"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top" />
|
||||
<ListBox
|
||||
Grid.Row="1"
|
||||
Grid.ColumnSpan="3"
|
||||
ItemsSource="{Binding ModLists}"
|
||||
ScrollViewer.CanContentScroll="False"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="300" />
|
||||
<ColumnDefinition Width="20" />
|
||||
<ColumnDefinition Width="200" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="200" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="20" />
|
||||
<RowDefinition Height="15" />
|
||||
<RowDefinition Height="150" />
|
||||
<RowDefinition Height="30" />
|
||||
</Grid.RowDefinitions>
|
||||
<Image
|
||||
Grid.Row="0"
|
||||
Grid.RowSpan="4"
|
||||
Grid.Column="0"
|
||||
Source="{Binding Metadata.Links.ImageUri}" />
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
Grid.Column="2"
|
||||
FontSize="20"
|
||||
Text="{Binding Metadata.Title}" />
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Text="{Binding Metadata.Author}" />
|
||||
<TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="4"
|
||||
HorizontalAlignment="Right"
|
||||
Text="{Binding Metadata.GameName}"
|
||||
TextAlignment="Right" />
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="3"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Top"
|
||||
Text="{Binding Metadata.Description}"
|
||||
TextWrapping="Wrap" />
|
||||
<Button Margin="5"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="5"
|
||||
Content="Download"
|
||||
Visibility="{Binding DownloadButtonVisibility}"
|
||||
Command="{Binding Click}" ></Button>
|
||||
|
||||
<mah:MetroProgressBar
|
||||
Margin="5"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="5"
|
||||
Background="{StaticResource WindowBackgroundBrush}"
|
||||
BorderThickness="0"
|
||||
Foreground="Transparent"
|
||||
Maximum="1"
|
||||
Value="{Binding DownloadProgress, Mode=OneWay}"
|
||||
Visibility="{Binding DownloadProgressVisibility}" />
|
||||
<mah:MetroProgressBar
|
||||
Margin="5"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="5"
|
||||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||
Maximum="1"
|
||||
Opacity="{Binding DownloadProgress, Mode=OneWay}"
|
||||
Value="{Binding DownloadProgress, Mode=OneWay}"
|
||||
Visibility="{Binding DownloadProgressVisibility}" />
|
||||
<Label Margin="5"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="5"
|
||||
Content="{Binding DownloadStatusText}"
|
||||
HorizontalContentAlignment="Center"
|
||||
Visibility="{Binding DownloadProgressVisibility}" ></Label>
|
||||
|
||||
<Button Grid.Row="3" Grid.ColumnSpan ="5" Content="Install" Visibility="{Binding InstallButtonVisibility}" Command="{Binding Click}"></Button>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
<Button
|
||||
Name="InstallFromList"
|
||||
Grid.Row="2"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="2"
|
||||
Command="{Binding InstallCommand}">
|
||||
<TextBlock FontSize="40">Install from Disk</TextBlock>
|
||||
</Button>
|
||||
<Button
|
||||
Name="CreateModlist"
|
||||
Grid.Row="3"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="2"
|
||||
Command="{Binding CompileCommand}">
|
||||
<TextBlock FontSize="40">Create a ModList</TextBlock>
|
||||
</Button>
|
||||
Grid.RowSpan="3"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Stretch="UniformToFill">
|
||||
<Image Margin="40,20,40,240" Source="../Resources/Wabba_Mouth.png" />
|
||||
</Viewbox>
|
||||
<Rectangle Grid.Row="0" Grid.RowSpan="3">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
|
||||
<GradientStop Offset="0" Color="#16BB86FC" />
|
||||
<GradientStop Offset="0.4" Color="#00000000" />
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Grid Grid.Row="1" Margin="5,15">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="15,0"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
ClipToBounds="False"
|
||||
Command="{Binding BrowseCommand}">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}">
|
||||
<ContentPresenter />
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
<Grid ClipToBounds="False">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Viewbox Grid.Row="1">
|
||||
<Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||
Kind="CloudDownloadAltSolid"
|
||||
Opacity="0.6" />
|
||||
<Grid.Style>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="50" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="75" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Style>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Kind="CloudDownloadAltSolid" />
|
||||
<Grid.Effect>
|
||||
<BlurEffect Radius="25" />
|
||||
</Grid.Effect>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Opacity" Value="0" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0.6"
|
||||
Duration="0:0:0.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
</Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
Kind="CloudDownloadAltSolid">
|
||||
<icon:PackIconFontAwesome.Style>
|
||||
<Style TargetType="icon:PackIconFontAwesome">
|
||||
<Setter Property="Foreground" Value="{StaticResource DimForegroundBrush}" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource ForegroundColor}"
|
||||
Duration="0:0:0.0" />
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource LightSecondary}"
|
||||
Duration="0:0:2.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource DimForegroundColor}"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</icon:PackIconFontAwesome.Style>
|
||||
</icon:PackIconFontAwesome>
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
FontSize="25"
|
||||
Text="Browse Modlists">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Opacity" Value="0.2" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Opacity" Value="1" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Button>
|
||||
<Button
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="15,0"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
ClipToBounds="False"
|
||||
Command="{Binding InstallCommand}">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}">
|
||||
<ContentPresenter />
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
<Grid ClipToBounds="False">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Viewbox Grid.Row="1">
|
||||
<Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||
Kind="HddSolid"
|
||||
Opacity="0.6" />
|
||||
<Grid.Style>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="50" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="75" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Style>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Kind="HddSolid" />
|
||||
<Grid.Effect>
|
||||
<BlurEffect Radius="25" />
|
||||
</Grid.Effect>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Opacity" Value="0" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0.6"
|
||||
Duration="0:0:0.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
</Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
Kind="HddSolid">
|
||||
<icon:PackIconFontAwesome.Style>
|
||||
<Style TargetType="icon:PackIconFontAwesome">
|
||||
<Setter Property="Foreground" Value="{StaticResource DimForegroundBrush}" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource ForegroundColor}"
|
||||
Duration="0:0:0.0" />
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource LightSecondary}"
|
||||
Duration="0:0:2.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource DimForegroundColor}"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</icon:PackIconFontAwesome.Style>
|
||||
</icon:PackIconFontAwesome>
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
FontSize="25"
|
||||
Text="Install From Disk">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Opacity" Value="0.2" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Opacity" Value="1" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Button>
|
||||
<Button
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Margin="15,0"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
ClipToBounds="False"
|
||||
Command="{Binding CompileCommand}">
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}">
|
||||
<ContentPresenter />
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
<Grid ClipToBounds="False">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Viewbox Grid.Row="1">
|
||||
<Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource PrimaryVariantBrush}"
|
||||
Kind="PlusCircleSolid"
|
||||
Opacity="0.6" />
|
||||
<Grid.Style>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="50" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Effect">
|
||||
<Setter.Value>
|
||||
<BlurEffect Radius="75" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Style>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
ClipToBounds="False"
|
||||
Foreground="{StaticResource SecondaryBrush}"
|
||||
Kind="PlusCircleSolid" />
|
||||
<Grid.Effect>
|
||||
<BlurEffect Radius="25" />
|
||||
</Grid.Effect>
|
||||
<Grid.Resources>
|
||||
<Style TargetType="Grid">
|
||||
<Setter Property="Opacity" Value="0" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0.6"
|
||||
Duration="0:0:0.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="0"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Grid.Resources>
|
||||
</Grid>
|
||||
<icon:PackIconFontAwesome
|
||||
Width="140"
|
||||
Height="140"
|
||||
Margin="0,0,0,10"
|
||||
HorizontalAlignment="Center"
|
||||
Kind="PlusCircleSolid">
|
||||
<icon:PackIconFontAwesome.Style>
|
||||
<Style TargetType="icon:PackIconFontAwesome">
|
||||
<Setter Property="Foreground" Value="{StaticResource DimForegroundBrush}" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<DataTrigger.EnterActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource ForegroundColor}"
|
||||
Duration="0:0:0.0" />
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource LightSecondary}"
|
||||
Duration="0:0:2.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.EnterActions>
|
||||
<DataTrigger.ExitActions>
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<ColorAnimation
|
||||
Storyboard.TargetProperty="(icon:PackIconFontAwesome.Foreground).(SolidColorBrush.Color)"
|
||||
To="{StaticResource DimForegroundColor}"
|
||||
Duration="0:0:4.0" />
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</DataTrigger.ExitActions>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</icon:PackIconFontAwesome.Style>
|
||||
</icon:PackIconFontAwesome>
|
||||
</Grid>
|
||||
</Viewbox>
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Top"
|
||||
FontSize="25"
|
||||
Text="Create a Modlist">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Opacity" Value="0.2" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type Button}}}" Value="True">
|
||||
<Setter Property="Opacity" Value="1" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@ -169,7 +169,11 @@
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Converters\EqualsToBoolConverter.cs" />
|
||||
<Compile Include="View Models\ModListGalleryVM.cs" />
|
||||
<Compile Include="View Models\ModListMetadataVM.cs" />
|
||||
<Compile Include="Views\Common\HeatedBackgroundView.xaml.cs">
|
||||
<DependentUpon>HeatedBackgroundView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\LinksView.xaml.cs">
|
||||
<DependentUpon>LinksView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -184,9 +188,6 @@
|
||||
<Compile Include="View Models\Compilers\MO2CompilerVM.cs" />
|
||||
<Compile Include="View Models\Compilers\ModlistSettingsEditorVM.cs" />
|
||||
<Compile Include="View Models\Compilers\VortexCompilerVM.cs" />
|
||||
<Compile Include="Views\Common\BorderFadeDownView.xaml.cs">
|
||||
<DependentUpon>BorderFadeDownView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Converters\InverseBooleanConverter.cs" />
|
||||
<Compile Include="Converters\BoolToVisibilityHiddenConverter.cs" />
|
||||
<Compile Include="Views\Common\RadioButtonView.xaml.cs">
|
||||
@ -240,6 +241,10 @@
|
||||
<Compile Include="Views\Compilers\VortexCompilerConfigView.xaml.cs">
|
||||
<DependentUpon>VortexCompilerConfigView.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Page Include="Views\Common\HeatedBackgroundView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\LinksView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -252,10 +257,6 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\Common\BorderFadeDownView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\Common\RadioButtonView.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -475,7 +476,7 @@
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources\Wabba_Mouth.png" />
|
||||
<Resource Include="Resources\Wabba_Mouth.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\MO2Button.png" />
|
||||
@ -489,5 +490,8 @@
|
||||
<Resource Include="Resources\Icons\github.png" />
|
||||
<Resource Include="Resources\Icons\patreon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\Wabba_Mouth_No_Text.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
Loading…
Reference in New Issue
Block a user